Brak opisu

Michał Słomkowski 35f70f3195 Update URI validation regex to be more generic. 8 lat temu
.gitignore 3267329a63 Refactor PJSUA callbacks. 8 lat temu
AudioFramesMixer.cpp 0e69e9cc94 Implement AudioFramesMixer class. #1 8 lat temu
AudioFramesMixer.hpp 0e69e9cc94 Implement AudioFramesMixer class. #1 8 lat temu
CMakeLists.txt 4ba63178b3 Allow joining specific channel on start 8 lat temu
Configuration.cpp b87e1f840d Clean up CMakeFiles.txt and includes. 8 lat temu
Configuration.hpp b87e1f840d Clean up CMakeFiles.txt and includes. 8 lat temu
IncomingConnectionValidator.cpp 35f70f3195 Update URI validation regex to be more generic. 8 lat temu
IncomingConnectionValidator.hpp b6de7842b8 Use boost::regex instead of std::regex 8 lat temu
LICENSE 47ecacab4b Add license and README. 8 lat temu
MumbleChannelJoiner.cpp fc917fca7d Forgot MumbleChannelJoiner component 8 lat temu
MumbleChannelJoiner.hpp fc917fca7d Forgot MumbleChannelJoiner component 8 lat temu
MumbleCommunicator.cpp 4ba63178b3 Allow joining specific channel on start 8 lat temu
MumbleCommunicator.hpp 4ba63178b3 Allow joining specific channel on start 8 lat temu
PjsuaCommunicator.cpp 0e69e9cc94 Implement AudioFramesMixer class. #1 8 lat temu
PjsuaCommunicator.hpp 45f8536e09 Refactor current Mumble->SIP audio stream to separate AudioFramesMixer class. #1 8 lat temu
README.md 298b5ff500 Update README with issues and supervisor info. 8 lat temu
config.ini.example 94932e3159 Add start channel field to example config 8 lat temu
main.cpp cfec9f354c Fix irrelevant stack dump when no commandline arguments specified. 8 lat temu

README.md

mumsi - SIP to Mumble gateway

SIP to Mumble gateway based on PJSIP stack and mumlib library. It registers to SIP registrar and listens for incoming connections on the SIP account.

This enables the user to participate in Mumble conference using SIP client or perhaps ordinary telephone, by VoIP provider.

Dependencies

Build and usage

  • Install all needed dependencies

  • Clone and compile Mumlib library. Since it doesn't have any installer, clone it to common directory:

    mkdir mumsi-dist && cd mumsi-dist
    git clone https://github.com/slomkowski/mumlib.git
    mkdir mumlib/build && cd mumlib/build
    cmake ..
    make
    cd -
    
  • Then clone and build mumsi:

    git clone https://github.com/slomkowski/mumsi.git
    mkdir mumsi/build && cd mumsi/build
    cmake ..
    make
    
  • Copy example config.ini file and edit it according to your needs:

    cp config.ini.example config.ini
    

Remember to add URIs which you want to make calls from. Calls from other URIs won't be answered.

  • To run the service, type:

    ./mumsi config.ini
    

Start at boot

mumsi provides no init.d scripts, but you can use great daemon mangaer, Supervisor. The sample configuration file:

[program:mumsi]
command=/home/mumsi/mumsi-dist/mumsi/build/mumsi config.ini
directory=/home/mumsi/mumsi-dist/mumsi
user=mumsi

stdout_logfile=/home/mumsi/console.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=4
stdout_capture_maxbytes=1MB
redirect_stderr=true

Issues

Port and NAT

Remember to allow incoming connections on port 5060 UDP in your firewall. If you're connecting to public SIP provider from machine behind NAT, make sure your setup works using some generic SIP client. Since SIP is not NAT-friendly by design, PJSIP usually takes care of connection negotiation and NAT traversal, but might fail. The most reliable solution is to configure port forwarding on your home router to your PC.

PJ_EINVALIDOP error

You may encounter following error when running mumsi on older distros

pjsua_conf_add_port(mediaPool, (pjmedia_port *)port, &id) error: Invalid operation (PJ_EINVALIDOP)

Some older versions of PJSIP are affected (confirmed for 2.3). In this case you have to update PJSIP to most recent version (2.4.5).

TODO:

  • multiple simultaneous connections
  • outgoing connections
  • text chat commands

Credits

2015, 2016 Michał Słomkowski. The code is published under the terms of Apache License 2.0.