Описание ошибки =============== 1. # apt-get install -y freeswitch-{daemon,webui} 2. # sed -i "s/<\/modules>/<load module=\"mod_xml_rpc\"\/><\/modules>/" /etc/freeswitch/autoload_configs/modules.conf.xml 3. # sed -i 's/<param name="http-port" value="8080"\/>/<param name="http-port" value="1234"\/>/' /etc/freeswitch/autoload_configs/xml_rpc.conf.xml 4. # systemctl restart freeswitch; sleep 3; systemctl status freeswitch 5. Перейти по адресу # echo "http://$(hostname -i):1234/portal/index.html" Проверить работу: 6. Открыть вкладки: Users, Calls, Channels, Show (> Codecs), Sofia 7. Открыть вкладку Users > Add User > ввести User ID: test > нажать Create 9. Проверить поддержку WebSocket: - # sed -i 's/<\/settings>/<param name="enable-websocket" value="true"\/>\n<\/settings>/' /etc/freeswitch/autoload_configs/xml_rpc.conf.xml - # systemctl restart freeswitch; sleep 3; systemctl status freeswitch - Проверить, что в (# tail -f /var/log/freeswitch/freeswitch.log) появилось сообщение вида (c "with websocket"): > [NOTICE] mod_xml_rpc.c:1263 Starting HTTP Port 1234, DocRoot [/usr/share/freeswitch/htdocs] with websocket. - Проверить наличие надписи "Socket Disconnected!" в правом верхнем углу веб-интерфейса - Проверить работу интерфейса в соответствие с шагами 6-7 Фактический результат ===================== Веб-интерфейс не работает ни с WebSocket, ни без него (надпись "Socket Disconnected!" не исчезает даже при его включении). В консоли браузера ошибки 404 (Not Found) вида: > WebSocket connection to 'ws://<ip>:1234/socket' failed: Error during WebSocket handshake: Unexpected response code: 404 > GET http://<ip>:1234/api/event_sink?command=create-listener&events=ALL&format=json 404 (Not Found) На шаге 7 ошибка 405 (Method Not Allowed): > POST http://<ip>:1234/txtapi/lua?portal/create_user.lua%20test 405 (Method Not Allowed) При вызове API-методов через curl результат такой же, даже если предоставить Basic-аутентификацию (аналогично примерам в документации https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_xml_rpc_1048928/): > # curl 'http://localhost:1234/webapi/help' --user freeswitch:works > <HTML><HEAD><TITLE>Error 404</TITLE></HEAD><BODY><H1>Error 404</H1><P>Not Found</P><p><HR><b><i><a href="http://xmlrpc-c.sourceforge.net">ABYSS Web Server for XML-RPC For C/C++</a></i></b> version 1.54.6<br></p></BODY></HTML> Ожидаемый результат =================== Корректная работа веб-интерфейса (как с включённой поддержкой WebSocket, так и без неё). Ошибок нет. Воспроизводимость ================= Воспроизводится на виртуальных машинах: [p10] server-10.1-x86-64 freeswitch-daemon-1.10.9-alt1.x86_64 freeswitch-webui-1.10.9-alt1.x86_64 [sisyphus] server-10.1-x86-64 freeswitch-daemon-1.10.10-alt1.x86_64 freeswitch-webui-1.10.10-alt1.x86_64 Проверялось в браузерах на реальной машине [p10] kworkstation-10.1-x86-64: chromium-gost-110.0.5481.177-alt1.p10.1.x86_64 firefox-esr-102.12.0-alt2.x86_64
Воспроизводится на версиях: freeswitch-daemon-1.11.1-alt1.x86_64 freeswitch-webui-1.11.1-alt1.x86_64
freeswitch-1:1.11.2-alt1 -> sisyphus: Thu Aug 13 2026 Anton Farygin <rider@altlinux> 1:1.11.2-alt1 - 1.11.1 -> 1.11.2 - fs_encode: treat only the part after the last dot as the file extension (Closes: 56577) - fs_encode: only use the output extension as a codec when it names a real codec; formats encoded by the file module (wav, flac, ogg, ...) now work as output, wav -> wav included (Closes: 47345, 47348) - fs_encode: do not encode twice when the output extension is claimed by mod_sndfile (gsm, ...): the file was gsm-compressed by the codec and then again by libsndfile, producing short noise-only files (Closes: 47344) - fs_tts: fixed argument handling: the text argument was ignored unless an extra argument followed it, and -i FILE was unreachable so the tool hung on stdin instead of reading the file; extra arguments are rejected now (Closes: 54889) - switch_xml: do not abort on assert in switch_xml_open_cfg() when the main configuration could not be loaded; fixes fs_tts/fs_encode/ tone2wav crash under a regular user (Closes: 47334) - fs_tts: load mod_dptools (tts:// provider) instead of mod_ssml removed upstream, and load the module of the selected TTS engine (mod_flite by default), so text-to-speech actually works (Closes: 47335) - mod_imagick: bound the lazy loading thread by the real page count; fixes endless re-reading of GIF frames with lazy=1 ending in an OOM kill (Closes: 47382) - mod_xml_rpc: build against the bundled xmlrpc-c as upstream intends instead of mixing bundled private headers with the system library; fixes the HTTP server failing to start and every /api, /webapi, /portal request answered with 404, which broke freeswitch-webui (Closes: 47399, 54894) - added a native systemd unit ordered after network-online.target; the unit generated from the SysV script started freeswitch before the network was up, so after a reboot sofia bound to the wrong address and clients could not connect (Closes: 47333) - freeswitch-vlc: require vlc-mini: without the VLC core plugins libvlc_new() returns NULL and mod_vlc fails with "cannot initialise VLC handle" on every call (Closes: 47403) - freeswitch-lang-he: package mod_say_he.so; the subpackage shipped the Hebrew prompts without the module that speaks them - packaged gentls_cert, the TLS certificate helper for sofia and verto - dropped mod_say_hu, mod_say_it and mod_say_nl from the build: they were built and thrown away, upstream ships no lang data for them - do not install the switch_eavesdrop unit test into the bin dir, the unnamespaced /usr/include/test headers, and the Flash-era htdocs leftovers - run the network-free part of tests/unit at build time (switch_utils, switch_hash, switch_event, switch_xml, switch_console); the binaries were already being built and thrown away