├── .gitignore ├── .gitreview ├── .readthedocs.yaml ├── CMakeLists.txt ├── Makefile ├── Makefile.defs ├── README.md ├── apps ├── CMakeLists.txt ├── Makefile ├── ann_b2b │ ├── AnnounceB2B.cpp │ ├── AnnounceB2B.h │ ├── CMakeLists.txt │ ├── Makefile │ └── etc │ │ ├── ann_b2b.conf │ │ └── ann_b2b.conf.cmake ├── announce_transfer │ ├── AnnounceTransfer.cpp │ ├── AnnounceTransfer.h │ ├── CMakeLists.txt │ ├── Makefile │ └── etc │ │ ├── announce_transfer.conf │ │ └── announce_transfer.conf.cmake ├── announcement │ ├── Announcement.cpp │ ├── Announcement.h │ ├── CMakeLists.txt │ ├── Makefile │ └── etc │ │ ├── announcement.conf │ │ └── announcement.conf.cmake ├── annrecorder │ ├── AnnRecorder.cpp │ ├── AnnRecorder.h │ ├── CMakeLists.txt │ ├── Makefile │ ├── etc │ │ ├── annrecorder.conf │ │ └── annrecorder.conf.cmake │ └── wav │ │ ├── beep.wav │ │ ├── bye.wav │ │ ├── confirm.wav │ │ ├── greeting_set.wav │ │ ├── to_record.wav │ │ ├── welcome.wav │ │ └── your_prompt.wav ├── callback │ ├── CMakeLists.txt │ ├── CallBack.cpp │ ├── CallBack.h │ ├── Makefile │ └── etc │ │ ├── callback.conf │ │ └── callback.conf.cmake ├── click2dial │ ├── CMakeLists.txt │ ├── Click2Dial.cpp │ ├── Click2Dial.h │ ├── Makefile │ ├── TODO │ ├── etc │ │ ├── click2dial.conf │ │ └── click2dial.conf.cmake │ └── example.py ├── conf_auth │ ├── CMakeLists.txt │ ├── Makefile │ ├── conf_auth.py │ └── etc │ │ ├── conf_auth.conf │ │ └── conf_auth.conf.cmake ├── conference │ ├── CMakeLists.txt │ ├── Conference.cpp │ ├── Conference.h │ ├── Makefile │ ├── etc │ │ ├── conference.conf │ │ └── conference.conf.cmake │ └── wav │ │ ├── beep.wav │ │ └── first_participant.wav ├── confpin │ ├── confpin.conf │ ├── lib │ │ ├── confpin.dsm │ │ ├── sw_audio.dsm │ │ └── sw_audio_api.dsm │ ├── prompts │ │ ├── Makefile │ │ ├── conference_first.txt │ │ ├── conference_greeting.txt │ │ ├── conference_join.txt │ │ ├── conference_joined.txt │ │ ├── conference_leave.txt │ │ ├── conference_music.txt │ │ ├── conference_pin_wrong.txt │ │ └── goodbye.txt │ └── tools │ │ ├── clear_file │ │ ├── fetch_file │ │ └── push_file ├── db_reg_agent │ ├── CMakeLists.txt │ ├── DBRegAgent.cpp │ ├── DBRegAgent.h │ ├── Makefile │ ├── RegistrationTimer.h │ └── etc │ │ └── db_reg_agent.conf ├── diameter_client │ ├── CMakeLists.txt │ ├── DiameterClient.cpp │ ├── DiameterClient.h │ ├── Makefile │ ├── ServerConnection.cpp │ ├── ServerConnection.h │ └── lib_dbase │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── avp.c │ │ ├── avp.h │ │ ├── defs.h │ │ ├── diameter_client.h │ │ ├── diameter_msg.c │ │ ├── diameter_msg.h │ │ ├── mem.h │ │ ├── str.h │ │ ├── tcp_comm.c │ │ └── tcp_comm.h ├── dsm │ ├── CMakeLists.txt │ ├── DSM.cpp │ ├── DSM.h │ ├── DSMCall.cpp │ ├── DSMCall.h │ ├── DSMChartReader.cpp │ ├── DSMChartReader.h │ ├── DSMCoreModule.cpp │ ├── DSMCoreModule.h │ ├── DSMElemContainer.cpp │ ├── DSMElemContainer.h │ ├── DSMModule.cpp │ ├── DSMModule.h │ ├── DSMSession.cpp │ ├── DSMSession.h │ ├── DSMStateDiagramCollection.cpp │ ├── DSMStateDiagramCollection.h │ ├── DSMStateEngine.cpp │ ├── DSMStateEngine.h │ ├── Makefile │ ├── SystemDSM.cpp │ ├── SystemDSM.h │ ├── etc │ │ ├── dsm.conf │ │ ├── dsm.conf.cmake │ │ ├── dsm_in_prompts.conf │ │ ├── dsm_in_prompts.conf.cmake │ │ ├── dsm_out_prompts.conf │ │ └── dsm_out_prompts.conf.cmake │ ├── fsmc │ │ ├── fsmc-1.0.4-dsm-00.patch │ │ └── readme.txt │ ├── lib │ │ ├── CMakeLists.txt │ │ ├── inbound_call.dsm │ │ └── outbound_call.dsm │ └── mods │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── Makefile.dsm_module │ │ ├── lib │ │ └── .placeholder │ │ ├── mod_aws │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModAws.cpp │ │ ├── ModAws.h │ │ └── etc │ │ │ └── aws.conf │ │ ├── mod_conference │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModConference.cpp │ │ └── ModConference.h │ │ ├── mod_curl │ │ ├── Makefile │ │ ├── ModCurl.cpp │ │ └── ModCurl.h │ │ ├── mod_dlg │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModDlg.cpp │ │ └── ModDlg.h │ │ ├── mod_groups │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModGroups.cpp │ │ └── ModGroups.h │ │ ├── mod_monitoring │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModMonitoring.cpp │ │ └── ModMonitoring.h │ │ ├── mod_mysql │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModMysql.cpp │ │ ├── ModMysql.h │ │ └── test │ │ │ ├── test_db.mysql │ │ │ └── test_modmysql.dsm │ │ ├── mod_py │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModPy.cpp │ │ ├── ModPy.h │ │ ├── PyDSM.cpp │ │ ├── PyDSM.h │ │ ├── PyDSMSession.cpp │ │ ├── PyDSMSession.h │ │ ├── python_inc.py │ │ └── python_lib.py │ │ ├── mod_redis │ │ ├── DBTypes.h │ │ ├── DRedisConnection.cpp │ │ ├── DRedisConnection.h │ │ ├── Makefile │ │ ├── ModRedis.cpp │ │ └── ModRedis.h │ │ ├── mod_regex │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModRegex.cpp │ │ ├── ModRegex.h │ │ └── etc │ │ │ └── mod_regex.conf │ │ ├── mod_sbc │ │ ├── Makefile │ │ ├── ModSbc.cpp │ │ └── ModSbc.h │ │ ├── mod_subscription │ │ ├── Makefile │ │ ├── ModSubscription.cpp │ │ └── ModSubscription.h │ │ ├── mod_sys │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModSys.cpp │ │ └── ModSys.h │ │ ├── mod_uri │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModUri.cpp │ │ └── ModUri.h │ │ ├── mod_utils │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── ModUtils.cpp │ │ └── ModUtils.h │ │ ├── mod_xml │ │ ├── Makefile │ │ ├── ModXml.cpp │ │ └── ModXml.h │ │ └── mod_zrtp │ │ ├── Makefile │ │ ├── ModZrtp.cpp │ │ └── ModZrtp.h ├── early_announce │ ├── CMakeLists.txt │ ├── EarlyAnnounce.cpp │ ├── EarlyAnnounce.h │ ├── Makefile │ └── etc │ │ ├── early_announce.conf │ │ └── early_announce.conf.cmake ├── early_dbprompt │ ├── Makefile │ ├── early_dbprompt.dsm │ └── etc │ │ └── early_dbprompt.conf ├── examples │ ├── Makefile │ ├── Readme.examples │ ├── announce_auth │ │ ├── AnnounceAuth.cpp │ │ ├── AnnounceAuth.h │ │ ├── Makefile │ │ ├── Readme.announce_auth │ │ └── etc │ │ │ └── announce_auth.conf │ ├── b2b_connect │ │ ├── Makefile │ │ ├── Readme.b2b_connect │ │ ├── b2b_connect.cpp │ │ ├── b2b_connect.h │ │ ├── etc │ │ │ └── b2b_connect.conf │ │ └── test │ │ │ ├── g711a.pcap │ │ │ └── uac_pcap_relay.xml │ ├── cacheannounce │ │ ├── CacheAnnounce.cpp │ │ ├── CacheAnnounce.h │ │ ├── Makefile │ │ ├── Readme.cacheannounce │ │ └── etc │ │ │ └── cacheannounce.conf │ ├── call_gen │ │ ├── CallGen.cpp │ │ ├── CallGen.h │ │ ├── Makefile │ │ ├── Readme.callgen │ │ ├── etc │ │ │ └── callgen.conf │ │ └── wav │ │ │ ├── 0.wav │ │ │ ├── 1.wav │ │ │ ├── 2.wav │ │ │ ├── 3.wav │ │ │ ├── 4.wav │ │ │ ├── 5.wav │ │ │ ├── 6.wav │ │ │ ├── 7.wav │ │ │ ├── 8.wav │ │ │ ├── 9.wav │ │ │ ├── p.wav │ │ │ └── s.wav │ ├── db_announce │ │ ├── Makefile │ │ ├── Readme.db_announce │ │ ├── announcement.conf │ │ └── announcement.py │ ├── di_dialer │ │ ├── DIDial.cpp │ │ ├── DIDial.h │ │ ├── Makefile │ │ ├── Readme.di_dial │ │ ├── etc │ │ │ └── di_dial.conf │ │ └── test_sh │ ├── di_log │ │ ├── DILog.cpp │ │ ├── DILog.h │ │ ├── Makefile │ │ └── Readme.di_log │ ├── dtmftester │ │ ├── DtmfTester.cpp │ │ ├── DtmfTester.h │ │ ├── Makefile │ │ ├── Readme.dtmftester │ │ ├── etc │ │ │ └── dtmf_tester.conf │ │ └── wav │ │ │ ├── 0.wav │ │ │ ├── 1.wav │ │ │ ├── 10.wav │ │ │ ├── 11.wav │ │ │ ├── 12.wav │ │ │ ├── 13.wav │ │ │ ├── 14.wav │ │ │ ├── 15.wav │ │ │ ├── 2.wav │ │ │ ├── 3.wav │ │ │ ├── 4.wav │ │ │ ├── 5.wav │ │ │ ├── 6.wav │ │ │ ├── 7.wav │ │ │ ├── 8.wav │ │ │ ├── 9.wav │ │ │ └── prompt.wav │ ├── early_record │ │ ├── EarlyRecord.cpp │ │ ├── EarlyRecord.h │ │ ├── Makefile │ │ └── Readme.earlyrecord │ ├── ivr_examples │ │ ├── Readme.ivr_examples │ │ ├── b2b_out.py │ │ ├── b2bua.py │ │ ├── call_center.py │ │ ├── db_balance.py │ │ ├── play.py │ │ ├── rec.py │ │ ├── test_mp3.py │ │ └── tmpfile.py │ ├── jukecall │ │ ├── Jukecall.cpp │ │ ├── Jukecall.h │ │ ├── Makefile │ │ ├── Readme.jukecall │ │ └── wav │ │ │ ├── 1.wav │ │ │ ├── 2.wav │ │ │ ├── 3.wav │ │ │ ├── 4.wav │ │ │ └── greeting.wav │ ├── mixin_announce │ │ ├── Makefile │ │ ├── Readme.mixin_announce │ │ ├── etc │ │ │ └── mix_announce.conf │ │ ├── mix_announce.py │ │ └── py_comp │ ├── out_of_tree │ │ ├── Makefile │ │ ├── MyApp.cpp │ │ ├── MyApp.h │ │ └── Readme.myapp │ ├── pinauthconference │ │ ├── Makefile │ │ ├── PinAuthConference.cpp │ │ ├── PinAuthConference.h │ │ ├── Readme.pinauthconference │ │ ├── etc │ │ │ └── pinauthconference.conf │ │ └── wav │ │ │ └── beep.wav │ ├── py_sems_ex │ │ ├── Makefile │ │ ├── early_media.py │ │ └── jukecall.py │ ├── serviceline │ │ ├── Makefile │ │ ├── Readme.serviceline │ │ ├── ServiceLine.cpp │ │ ├── ServiceLine.h │ │ └── etc │ │ │ └── serviceline.conf │ ├── simple_conference │ │ ├── Makefile │ │ ├── Readme.simple_conference │ │ ├── SimpleConference.cpp │ │ ├── SimpleConference.h │ │ └── wav │ │ │ └── beep.wav │ ├── tutorial │ │ ├── Makefile │ │ ├── Readme.tutorial │ │ ├── annc_service │ │ │ ├── Makefile │ │ │ ├── Readme.annc_service │ │ │ ├── annc_service.py │ │ │ └── py_comp │ │ ├── cc_acc │ │ │ ├── CCAcc.cpp │ │ │ ├── CCAcc.h │ │ │ ├── Makefile │ │ │ └── Readme.cc_acc │ │ ├── cc_acc_xmlrpc │ │ │ ├── CCAcc.cpp │ │ │ ├── CCAcc.h │ │ │ ├── Makefile │ │ │ ├── Readme.cc_acc_xmlrpc │ │ │ └── server │ │ │ │ └── xmlrpcserver.py │ │ ├── ivr_announce │ │ │ ├── Makefile │ │ │ ├── Readme.ivr_announce │ │ │ ├── etc │ │ │ │ └── ivr_announce.conf │ │ │ ├── ivr_announce.py │ │ │ └── py_comp │ │ ├── myannounceapp │ │ │ ├── Makefile │ │ │ ├── MyAnnounceApp.cpp │ │ │ ├── MyAnnounceApp.h │ │ │ ├── Readme.myannounceapp │ │ │ └── etc │ │ │ │ └── myannounceapp.conf │ │ ├── myapp │ │ │ ├── Makefile │ │ │ ├── MyApp.cpp │ │ │ ├── MyApp.h │ │ │ └── Readme.myapp │ │ ├── mycc │ │ │ ├── Makefile │ │ │ ├── MyCC.cpp │ │ │ ├── MyCC.h │ │ │ ├── Readme.mycc │ │ │ └── etc │ │ │ │ └── mycc.conf │ │ ├── myconfigurableapp │ │ │ ├── Makefile │ │ │ ├── MyConfigurableApp.cpp │ │ │ ├── MyConfigurableApp.h │ │ │ ├── Readme.myconfigurableapp │ │ │ └── etc │ │ │ │ └── myconfigurableapp.conf │ │ └── myjukebox │ │ │ ├── Makefile │ │ │ ├── MyJukebox.cpp │ │ │ ├── MyJukebox.h │ │ │ ├── Readme.myjukebox │ │ │ └── etc │ │ │ └── myjukebox.conf │ └── urlcatcher │ │ ├── Makefile │ │ ├── Readme.urlcatcher │ │ ├── UrlCatcher.cpp │ │ ├── UrlCatcher.h │ │ └── etc │ │ └── urlcatcher.conf ├── gateway │ ├── CMakeLists.txt │ ├── GWSession.cpp │ ├── GWSession.h │ ├── GatewayFactory.cpp │ ├── GatewayFactory.h │ ├── Makefile │ ├── etc │ │ ├── gateway.conf │ │ └── gateway.conf.cmake │ ├── globals.h │ ├── mISDNChannel.cpp │ ├── mISDNChannel.h │ ├── mISDNNames.cpp │ ├── mISDNNames.h │ ├── mISDNStack.cpp │ └── mISDNStack.h ├── ivr │ ├── CMakeLists.txt │ ├── IVRInterface.txt │ ├── Ivr.cpp │ ├── Ivr.h │ ├── IvrAudio.cpp │ ├── IvrAudio.h │ ├── IvrAudioMixIn.cpp │ ├── IvrAudioMixIn.h │ ├── IvrDialogBase.cpp │ ├── IvrDialogBase.h │ ├── IvrSipDialog.cpp │ ├── IvrSipDialog.h │ ├── IvrSipReply.cpp │ ├── IvrSipReply.h │ ├── IvrSipRequest.cpp │ ├── IvrSipRequest.h │ ├── IvrUAC.cpp │ ├── IvrUAC.h │ ├── Makefile │ ├── Makefile.defs │ ├── Makefile.ivr_application │ ├── etc │ │ ├── ivr.conf │ │ └── ivr.conf.cmake │ ├── moc │ │ ├── ivr.py │ │ └── log.py │ ├── py │ │ └── log.py │ ├── py_comp │ ├── python_inc.py │ └── python_lib.py ├── jsonrpc │ ├── CMakeLists.txt │ ├── JsonRPC.cpp │ ├── JsonRPC.h │ ├── JsonRPCEvents.h │ ├── JsonRPCServer.cpp │ ├── JsonRPCServer.h │ ├── Makefile │ ├── RpcPeer.cpp │ ├── RpcPeer.h │ ├── RpcServerLoop.cpp │ ├── RpcServerLoop.h │ ├── RpcServerThread.cpp │ ├── RpcServerThread.h │ └── etc │ │ ├── jsonrpc.conf │ │ └── jsonrpc.conf.cmake ├── mailbox │ ├── CMakeLists.txt │ ├── Makefile │ ├── etc │ │ ├── mailbox.conf │ │ ├── mailbox.conf.cmake │ │ ├── mailbox_query.conf │ │ └── mailbox_query.conf.cmake │ ├── imap_mailbox │ │ ├── MailboxURL.py │ │ ├── __init__.py │ │ └── imap4ext.py │ ├── mailbox.py │ ├── mailbox_query.py │ └── wav │ │ ├── and.wav │ │ ├── beep.wav │ │ ├── bye.wav │ │ ├── default_en.wav │ │ ├── first_msg.wav │ │ ├── msg_deleted.wav │ │ ├── msg_menu.wav │ │ ├── msg_saved.wav │ │ ├── new_msg.wav │ │ ├── next_msg.wav │ │ ├── no_msg.wav │ │ ├── saved_msg.wav │ │ └── you_have.wav ├── mobile_push │ ├── Makefile │ ├── etc │ │ └── mobile_push.conf │ ├── load_test │ │ ├── call_gen.py │ │ ├── example_server.py │ │ ├── mobilepush_loadtest.txt │ │ ├── reg_client.py │ │ └── sems_cfg │ │ │ └── core │ │ │ └── etc │ │ │ ├── callgen.conf │ │ │ ├── db_reg_agent.conf │ │ │ ├── sems.conf │ │ │ └── xmlrpc2di.conf │ └── mobile_push.dsm ├── monitoring │ ├── CMakeLists.txt │ ├── Makefile │ ├── Monitoring.cpp │ ├── Monitoring.h │ ├── etc │ │ ├── monitoring.conf │ │ └── monitoring.conf.cmake │ └── tools │ │ ├── Makefile │ │ ├── sems-get-callproperties │ │ ├── sems-list-active-calls │ │ ├── sems-list-calls │ │ └── sems-list-finished-calls ├── mp3 │ ├── CMakeLists.txt │ ├── Makefile │ └── mp3.c ├── msg_storage │ ├── CMakeLists.txt │ ├── Makefile │ ├── MsgStorage.cpp │ ├── MsgStorage.h │ ├── MsgStorageAPI.h │ └── etc │ │ ├── msg_storage.conf │ │ └── msg_storage.conf.cmake ├── mwi │ ├── CMakeLists.txt │ ├── Makefile │ ├── etc │ │ └── mwi.conf │ ├── mwi.cpp │ └── mwi.h ├── pin_collect │ ├── CMakeLists.txt │ ├── Makefile │ ├── etc │ │ ├── pin_collect.conf │ │ └── pin_collect.conf.cmake │ ├── pin_collect.py │ ├── test │ │ └── authserver.py │ └── wav │ │ ├── enter_pin.wav │ │ └── welcome.wav ├── precoded_announce │ ├── CMakeLists.txt │ ├── Makefile │ ├── PrecodedAnnounce.cpp │ ├── PrecodedAnnounce.h │ ├── etc │ │ ├── precoded_announce.conf │ │ └── precoded_announce.conf.cmake │ └── wav │ │ └── test.predef ├── py_sems │ ├── CMakeLists.txt │ ├── Makefile │ ├── Makefile.defs │ ├── Makefile.py_sems_application │ ├── PySems.cpp │ ├── PySems.h │ ├── PySemsAudio.cpp │ ├── PySemsAudio.h │ ├── PySemsB2ABDialog.cpp │ ├── PySemsB2ABDialog.h │ ├── PySemsB2BDialog.cpp │ ├── PySemsB2BDialog.h │ ├── PySemsDialog.cpp │ ├── PySemsDialog.h │ ├── PySemsUtils.cpp │ ├── PySemsUtils.h │ ├── etc │ │ ├── py_sems.conf │ │ └── py_sems.conf.cmake │ ├── py │ │ └── py_sems_log.py │ ├── py_comp │ ├── python_inc.py │ ├── python_lib.py │ └── sip │ │ ├── AmAudio.sip │ │ ├── AmMimeBody.sip │ │ ├── AmSipDialog.sip │ │ ├── AmSipReply.sip │ │ ├── AmSipRequest.sip │ │ ├── AmUtils.sip │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── PySemsB2ABDialog.sip │ │ ├── PySemsB2BDialog.sip │ │ ├── PySemsDialog.sip │ │ ├── configure.py │ │ ├── py_sems.sip │ │ └── string.sip ├── reg_agent │ ├── CMakeLists.txt │ ├── Makefile │ ├── RegistrationAgent.cpp │ ├── RegistrationAgent.h │ └── etc │ │ ├── reg_agent.conf │ │ └── reg_agent.conf.cmake ├── registrar_client │ ├── CMakeLists.txt │ ├── Makefile │ ├── SIPRegistrarClient.cpp │ └── SIPRegistrarClient.h ├── rtmp │ ├── CMakeLists.txt │ ├── Makefile │ ├── Rtmp.cpp │ ├── Rtmp.h │ ├── RtmpAudio.cpp │ ├── RtmpAudio.h │ ├── RtmpConnection.cpp │ ├── RtmpConnection.h │ ├── RtmpSender.cpp │ ├── RtmpSender.h │ ├── RtmpServer.cpp │ ├── RtmpServer.h │ ├── RtmpSession.cpp │ ├── RtmpSession.h │ ├── RtmpUtils.cpp │ ├── RtmpUtils.h │ ├── etc │ │ └── rtmp.conf │ ├── flash_phone │ │ ├── Makefile │ │ ├── sono.as │ │ └── sono.mxml │ ├── librtmp │ │ ├── COPYING │ │ ├── Makefile │ │ ├── amf.c │ │ ├── amf.h │ │ ├── bytes.h │ │ ├── dh.h │ │ ├── dhgroups.h │ │ ├── handshake.h │ │ ├── hashswf.c │ │ ├── http.h │ │ ├── librtmp.3 │ │ ├── librtmp.3.html │ │ ├── librtmp.pc.in │ │ ├── log.c │ │ ├── log.h │ │ ├── parseurl.c │ │ ├── rtmp.c │ │ ├── rtmp.h │ │ └── rtmp_sys.h │ ├── speex2pcm.cxx │ └── test_srv.cxx ├── sbc │ ├── CMakeLists.txt │ ├── CallLeg.cpp │ ├── CallLeg.h │ ├── CallLegEvents.h │ ├── ExtendedCCInterface.h │ ├── HeaderFilter.cpp │ ├── HeaderFilter.h │ ├── Makefile │ ├── ParamReplacer.cpp │ ├── ParamReplacer.h │ ├── RTPParameters.cpp │ ├── RTPParameters.h │ ├── RateLimit.cpp │ ├── RateLimit.h │ ├── RegexMapper.cpp │ ├── RegexMapper.h │ ├── RegisterCache.cpp │ ├── RegisterCache.h │ ├── RegisterDialog.cpp │ ├── RegisterDialog.h │ ├── ReplacesMapper.cpp │ ├── ReplacesMapper.h │ ├── SBC.cpp │ ├── SBC.h │ ├── SBCCallControlAPI.h │ ├── SBCCallLeg.cpp │ ├── SBCCallLeg.h │ ├── SBCCallProfile.cpp │ ├── SBCCallProfile.h │ ├── SBCCallRegistry.cpp │ ├── SBCCallRegistry.h │ ├── SBCEventLog.cpp │ ├── SBCEventLog.h │ ├── SBCSimpleRelay.cpp │ ├── SBCSimpleRelay.h │ ├── SDPFilter.cpp │ ├── SDPFilter.h │ ├── SessionUpdate.cpp │ ├── SessionUpdate.h │ ├── SubscriptionDialog.cpp │ ├── SubscriptionDialog.h │ ├── arg_conversion.cpp │ ├── arg_conversion.h │ ├── call_control │ │ ├── Makefile │ │ ├── bl_redis │ │ │ ├── BLRedis.cpp │ │ │ ├── BLRedis.h │ │ │ ├── Makefile │ │ │ ├── RedisConnectionPool.cpp │ │ │ ├── RedisConnectionPool.h │ │ │ └── etc │ │ │ │ └── bl_redis.conf │ │ ├── call_timer │ │ │ ├── CallTimer.cpp │ │ │ ├── CallTimer.h │ │ │ ├── Makefile │ │ │ └── etc │ │ │ │ └── cc_call_timer.conf │ │ ├── ctl │ │ │ ├── CCCtl.cpp │ │ │ ├── CCCtl.h │ │ │ └── Makefile │ │ ├── dsm │ │ │ ├── CCDSM.cpp │ │ │ ├── CCDSM.h │ │ │ ├── Makefile │ │ │ ├── SBCDSMInstance.cpp │ │ │ ├── SBCDSMInstance.h │ │ │ └── SBCDSMParams.h │ │ ├── parallel_calls │ │ │ ├── CCParallelCalls.cpp │ │ │ ├── CCParallelCalls.h │ │ │ ├── Makefile │ │ │ └── etc │ │ │ │ └── cc_pcalls.conf │ │ ├── prepaid │ │ │ ├── Makefile │ │ │ ├── Prepaid.cpp │ │ │ └── Prepaid.h │ │ ├── prepaid_xmlrpc │ │ │ ├── Makefile │ │ │ ├── PrepaidXMLRPC.cpp │ │ │ ├── PrepaidXMLRPC.h │ │ │ ├── etc │ │ │ │ └── cc_prepaid_xmlrpc.conf │ │ │ └── server │ │ │ │ └── xmlrpcserver.py │ │ ├── registrar │ │ │ ├── Makefile │ │ │ ├── Registrar.cpp │ │ │ └── Registrar.h │ │ ├── rest │ │ │ ├── Makefile │ │ │ ├── RestModule.cpp │ │ │ ├── RestModule.h │ │ │ ├── RestParams.cpp │ │ │ └── RestParams.h │ │ ├── syslog_cdr │ │ │ ├── Makefile │ │ │ ├── SyslogCDR.cpp │ │ │ ├── SyslogCDR.h │ │ │ └── etc │ │ │ │ └── cc_syslog_cdr.conf │ │ └── template │ │ │ ├── CCTemplate.cpp │ │ │ ├── CCTemplate.h │ │ │ ├── Makefile │ │ │ ├── Readme.cc_template.txt │ │ │ └── etc │ │ │ └── cc_template.conf │ ├── etc │ │ ├── auth_b2b.sbcprofile.conf │ │ ├── auth_b2b.sbcprofile.conf.cmake │ │ ├── call_timer.sbcprofile.conf │ │ ├── call_timer.sbcprofile.conf.cmake │ │ ├── codecfilter.sbcprofile.conf │ │ ├── codecfilter.sbcprofile.conf.cmake │ │ ├── prepaid.sbcprofile.conf │ │ ├── prepaid.sbcprofile.conf.cmake │ │ ├── refuse.sbcprofile.conf │ │ ├── refuse.sbcprofile.conf.cmake │ │ ├── replytranslate.sbcprofile.conf │ │ ├── replytranslate.sbcprofile.conf.cmake │ │ ├── sbc.conf │ │ ├── sbc.conf.cmake │ │ ├── src_ipmap.conf │ │ ├── src_ipmap.conf.cmake │ │ ├── sst_b2b.sbcprofile.conf │ │ ├── sst_b2b.sbcprofile.conf.cmake │ │ ├── symmetricrtp.sbcprofile.conf │ │ ├── symmetricrtp.sbcprofile.conf.cmake │ │ ├── transparent.sbcprofile.conf │ │ └── transparent.sbcprofile.conf.cmake │ ├── sbc_events.h │ └── tools │ │ ├── Makefile │ │ ├── sems-sbc-get-activeprofile │ │ ├── sems-sbc-get-regex-map-names │ │ ├── sems-sbc-list-profiles │ │ ├── sems-sbc-load-callcontrol-modules │ │ ├── sems-sbc-load-profile │ │ ├── sems-sbc-reload-profile │ │ ├── sems-sbc-reload-profiles │ │ ├── sems-sbc-set-activeprofile │ │ ├── sems-sbc-set-regex-map │ │ └── sems-sbc-teardown-call ├── sw_vsc │ ├── Makefile │ ├── SW_Vsc.cpp │ ├── SW_Vsc.h │ └── etc │ │ └── sw_vsc.conf ├── twit │ ├── CMakeLists.txt │ ├── Makefile │ ├── etc │ │ ├── twit.conf │ │ └── twit.conf.cmake │ ├── twit.py │ └── wav │ │ ├── twit_account_msg.wav │ │ ├── twit_err_msg.wav │ │ ├── twit_ok_msg.wav │ │ ├── twit_posting_msg.wav │ │ └── twit_welcome.wav ├── voicebox │ ├── CMakeLists.txt │ ├── Makefile │ ├── PromptOptions.h │ ├── Voicebox.cpp │ ├── Voicebox.h │ ├── VoiceboxDialog.cpp │ ├── VoiceboxDialog.h │ ├── etc │ │ ├── voicebox.conf │ │ └── voicebox.conf.cmake │ ├── test │ │ └── ser_main.cfg │ └── wav │ │ ├── 0.wav │ │ ├── 1.wav │ │ ├── 10.wav │ │ ├── 11.wav │ │ ├── 12.wav │ │ ├── 13.wav │ │ ├── 14.wav │ │ ├── 15.wav │ │ ├── 16.wav │ │ ├── 17.wav │ │ ├── 18.wav │ │ ├── 19.wav │ │ ├── 2.wav │ │ ├── 20.wav │ │ ├── 3.wav │ │ ├── 30.wav │ │ ├── 4.wav │ │ ├── 40.wav │ │ ├── 5.wav │ │ ├── 50.wav │ │ ├── 6.wav │ │ ├── 60.wav │ │ ├── 7.wav │ │ ├── 70.wav │ │ ├── 8.wav │ │ ├── 80.wav │ │ ├── 9.wav │ │ ├── 90.wav │ │ ├── and.wav │ │ ├── bye.wav │ │ ├── first_new_msg.wav │ │ ├── first_saved_msg.wav │ │ ├── in_your_voicebox.wav │ │ ├── msg_deleted.wav │ │ ├── msg_end_menu.wav │ │ ├── msg_menu.wav │ │ ├── msg_saved.wav │ │ ├── new_msg.wav │ │ ├── new_msgs.wav │ │ ├── next_new_msg.wav │ │ ├── next_saved_msg.wav │ │ ├── no_more_msg.wav │ │ ├── no_msg.wav │ │ ├── pin_prompt.wav │ │ ├── saved_msg.wav │ │ ├── saved_msgs.wav │ │ ├── x1.wav │ │ ├── x2.wav │ │ ├── x3.wav │ │ ├── x4.wav │ │ ├── x5.wav │ │ ├── x6.wav │ │ ├── x7.wav │ │ ├── x8.wav │ │ ├── x9.wav │ │ └── you_have.wav ├── voicemail │ ├── AmMail.cpp │ ├── AmMail.h │ ├── AmSmtpClient.cpp │ ├── AmSmtpClient.h │ ├── AnswerMachine.cpp │ ├── AnswerMachine.h │ ├── CMakeLists.txt │ ├── EmailTemplate.cpp │ ├── EmailTemplate.h │ ├── Makefile │ ├── default.template │ ├── default.template.sample │ ├── etc │ │ ├── voicemail.conf │ │ └── voicemail.conf.cmake │ └── wav │ │ ├── beep.wav │ │ └── default_en.wav ├── webconference │ ├── CMakeLists.txt │ ├── CallStats.cpp │ ├── CallStats.h │ ├── Makefile │ ├── RoomInfo.cpp │ ├── RoomInfo.h │ ├── WebConference.cpp │ ├── WebConference.h │ ├── WebConferenceDialog.cpp │ ├── WebConferenceDialog.h │ ├── etc │ │ ├── webconference.conf │ │ └── webconference.conf.cmake │ ├── pyqtgui │ │ ├── Makefile │ │ ├── README │ │ ├── account.py │ │ ├── account.ui │ │ ├── accountconfig.py.sample │ │ ├── callbox.py │ │ ├── callbox.ui │ │ ├── conftable.py │ │ ├── conftable.ui │ │ ├── participant.py │ │ ├── participant.ui │ │ └── webconference.py │ ├── tools │ │ ├── Makefile │ │ ├── sems-webconference-addparticipant │ │ ├── sems-webconference-roomcreate │ │ └── sems-webconference-roominfo │ └── wav │ │ ├── 0.wav │ │ ├── 1.wav │ │ ├── 2.wav │ │ ├── 3.wav │ │ ├── 4.wav │ │ ├── 5.wav │ │ ├── 6.wav │ │ ├── 7.wav │ │ ├── 8.wav │ │ ├── 9.wav │ │ ├── beep.wav │ │ ├── entering_conference.wav │ │ ├── first_participant.wav │ │ ├── pin_prompt.wav │ │ ├── wrong_pin.wav │ │ └── wrong_pin_bye.wav └── xmlrpc2di │ ├── CMakeLists.txt │ ├── Makefile │ ├── MultithreadXmlRpcServer.cpp │ ├── MultithreadXmlRpcServer.h │ ├── TOXmlRpcClient.cpp │ ├── TOXmlRpcClient.h │ ├── XMLRPC2DI.cpp │ ├── XMLRPC2DI.h │ ├── etc │ ├── xmlrpc2di.conf │ └── xmlrpc2di.conf.cmake │ ├── xmlrpc++ │ ├── .cvsignore │ ├── CMakeLists.txt │ ├── COPYING │ ├── Makefile │ ├── README.html │ ├── XmlRpc.sln │ ├── XmlRpc.vcproj │ ├── src │ │ ├── CMakeLists.txt │ │ ├── Doxyfile │ │ ├── XmlRpc.h │ │ ├── XmlRpcClient.cpp │ │ ├── XmlRpcClient.h │ │ ├── XmlRpcDispatch.cpp │ │ ├── XmlRpcDispatch.h │ │ ├── XmlRpcException.h │ │ ├── XmlRpcMutex.cpp │ │ ├── XmlRpcMutex.h │ │ ├── XmlRpcServer.cpp │ │ ├── XmlRpcServer.h │ │ ├── XmlRpcServerConnection.cpp │ │ ├── XmlRpcServerConnection.h │ │ ├── XmlRpcServerMethod.cpp │ │ ├── XmlRpcServerMethod.h │ │ ├── XmlRpcSocket.cpp │ │ ├── XmlRpcSocket.h │ │ ├── XmlRpcSource.cpp │ │ ├── XmlRpcSource.h │ │ ├── XmlRpcThread.cpp │ │ ├── XmlRpcThread.h │ │ ├── XmlRpcThreadedServer.cpp │ │ ├── XmlRpcThreadedServer.h │ │ ├── XmlRpcUtil.cpp │ │ ├── XmlRpcUtil.h │ │ ├── XmlRpcValue.cpp │ │ ├── XmlRpcValue.h │ │ └── base64.h │ ├── test │ │ ├── .cvsignore │ │ ├── FileClient.cpp │ │ ├── FileClient.dsp │ │ ├── FileClient.vcproj │ │ ├── HelloClient.cpp │ │ ├── HelloClient.dsp │ │ ├── HelloClient.vcproj │ │ ├── HelloServer.cpp │ │ ├── HelloServer.dsp │ │ ├── HelloServer.vcproj │ │ ├── Makefile │ │ ├── TestBase64Client.cpp │ │ ├── TestBase64Client.dsp │ │ ├── TestBase64Client.vcproj │ │ ├── TestBase64Server.cpp │ │ ├── TestBase64Server.dsp │ │ ├── TestBase64Server.vcproj │ │ ├── TestEGroupwareSSLClient.cpp │ │ ├── TestValues.cpp │ │ ├── TestValues.dsp │ │ ├── TestValues.vcproj │ │ ├── TestValuesWin32.cpp │ │ ├── TestXml.cpp │ │ ├── TestXml.dsp │ │ ├── TestXml.vcproj │ │ ├── Validator.cpp │ │ ├── Validator.dsp │ │ ├── Validator.vcproj │ │ ├── arrayOfStructsTest.xml │ │ ├── countTheEntities.xml │ │ ├── easyStructTest.xml │ │ ├── echo.xml │ │ ├── echoStructTest.xml │ │ └── pngnow.png │ ├── xmlrpc.dsp │ └── xmlrpc.dsw │ └── xmlrpcpp07_sems.patch ├── cmake ├── CheckSymbolExists.cmake ├── FindFlite.cmake ├── FindGsm.cmake ├── FindIlbc.cmake ├── FindLame.cmake ├── FindLibev.cmake ├── FindLibevent2.cmake ├── FindLibrtmp.cmake ├── FindLibsamplerate.cmake ├── FindLibzrtp.cmake ├── FindMISDN.cmake ├── FindMySQLpp.cmake ├── FindSIP.cmake ├── FindSpandsp.cmake ├── FindSpeex.cmake ├── audio.rules.txt ├── config.rules.txt ├── doc.rules.txt ├── dsm.lib.rules.txt ├── dsm.script.rules.txt ├── module.rules.txt └── python.rules.txt ├── core ├── Am100rel.cpp ├── Am100rel.h ├── AmAdvancedAudio.cpp ├── AmAdvancedAudio.h ├── AmApi.cpp ├── AmApi.h ├── AmAppTimer.cpp ├── AmAppTimer.h ├── AmArg.cpp ├── AmArg.h ├── AmAudio.cpp ├── AmAudio.h ├── AmAudioFile.cpp ├── AmAudioFile.h ├── AmAudioMixIn.cpp ├── AmAudioMixIn.h ├── AmAudioMixer.cpp ├── AmAudioMixer.h ├── AmB2ABSession.cpp ├── AmB2ABSession.h ├── AmB2BMedia.cpp ├── AmB2BMedia.h ├── AmB2BSession.cpp ├── AmB2BSession.h ├── AmBasicSipDialog.cpp ├── AmBasicSipDialog.h ├── AmBufferedAudio.cpp ├── AmBufferedAudio.h ├── AmCachedAudioFile.cpp ├── AmCachedAudioFile.h ├── AmCallWatcher.cpp ├── AmCallWatcher.h ├── AmConferenceChannel.cpp ├── AmConferenceChannel.h ├── AmConferenceStatus.cpp ├── AmConferenceStatus.h ├── AmConfig.cpp ├── AmConfig.h ├── AmConfigReader.cpp ├── AmConfigReader.h ├── AmDtmfDetector.cpp ├── AmDtmfDetector.h ├── AmDtmfSender.cpp ├── AmDtmfSender.h ├── AmEvent.cpp ├── AmEvent.h ├── AmEventDispatcher.cpp ├── AmEventDispatcher.h ├── AmEventProcessingThread.cpp ├── AmEventProcessingThread.h ├── AmEventQueue.cpp ├── AmEventQueue.h ├── AmEventQueueProcessor.cpp ├── AmEventQueueProcessor.h ├── AmJitterBuffer.cpp ├── AmJitterBuffer.h ├── AmMediaProcessor.cpp ├── AmMediaProcessor.h ├── AmMimeBody.cpp ├── AmMimeBody.h ├── AmMultiPartyMixer.cpp ├── AmMultiPartyMixer.h ├── AmOfferAnswer.cpp ├── AmOfferAnswer.h ├── AmPeriodicThread.cpp ├── AmPeriodicThread.h ├── AmPlaylist.cpp ├── AmPlaylist.h ├── AmPlayoutBuffer.cpp ├── AmPlayoutBuffer.h ├── AmPlugIn.cpp ├── AmPlugIn.h ├── AmPrecodedFile.cpp ├── AmPrecodedFile.h ├── AmPromptCollection.cpp ├── AmPromptCollection.h ├── AmRingTone.cpp ├── AmRingTone.h ├── AmRtpAudio.cpp ├── AmRtpAudio.h ├── AmRtpPacket.cpp ├── AmRtpPacket.h ├── AmRtpReceiver.cpp ├── AmRtpReceiver.h ├── AmRtpStream.cpp ├── AmRtpStream.h ├── AmSdp.cpp ├── AmSdp.h ├── AmSession.cpp ├── AmSession.h ├── AmSessionContainer.cpp ├── AmSessionContainer.h ├── AmSessionEventHandler.cpp ├── AmSessionEventHandler.h ├── AmSessionProcessor.cpp ├── AmSessionProcessor.h ├── AmSipDialog.cpp ├── AmSipDialog.h ├── AmSipDispatcher.cpp ├── AmSipDispatcher.h ├── AmSipEvent.cpp ├── AmSipEvent.h ├── AmSipHeaders.h ├── AmSipMsg.cpp ├── AmSipMsg.h ├── AmSipRegistration.cpp ├── AmSipRegistration.h ├── AmSipSubscription.cpp ├── AmSipSubscription.h ├── AmSipSubscriptionContainer.cpp ├── AmSipSubscriptionContainer.h ├── AmStats.h ├── AmThread.cpp ├── AmThread.h ├── AmUAC.cpp ├── AmUAC.h ├── AmUACAuth.cpp ├── AmUACAuth.h ├── AmUriParser.cpp ├── AmUriParser.h ├── AmUtils.cpp ├── AmUtils.h ├── AmZRTP.cpp ├── AmZRTP.h ├── CMakeLists.txt ├── LowcFE.cpp ├── LowcFE.h ├── Makefile ├── SampleArray.cc ├── SampleArray.h ├── SdNotify.cpp ├── SdNotify.h ├── SipCtrlInterface.cpp ├── SipCtrlInterface.h ├── amci │ ├── amci.h │ └── codecs.h ├── ampi │ ├── DiameterClientAPI.h │ ├── MonitoringAPI.h │ ├── SIPRegistrarClientAPI.h │ └── UACAuthAPI.h ├── atomic_types.h ├── compat │ ├── getarch.c │ ├── getos.c │ └── solaris.h ├── config.h ├── etc │ ├── app_mapping.conf.sample │ ├── sems.conf.cmake │ ├── sems.conf.sample │ └── zrtp.conf ├── global_defs.h ├── hash_table.h ├── jsonArg.cpp ├── jsonArg.h ├── jsonxx.cpp ├── jsonxx.h ├── lib │ └── .placeholder ├── log.cpp ├── log.h ├── md5.cpp ├── md5.h ├── md5global.h ├── plug-in │ ├── CMakeLists.txt │ ├── Makefile │ ├── Makefile.app_module │ ├── Makefile.audio_module │ ├── adpcm │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── README_G711 │ │ ├── adpcm.c │ │ ├── g711.c │ │ ├── g711.h │ │ ├── g721.c │ │ ├── g723_16.c │ │ ├── g723_24.c │ │ ├── g723_40.c │ │ ├── g72x.c │ │ └── g72x.h │ ├── echo │ │ ├── AmAudioEcho.cpp │ │ ├── AmAudioEcho.h │ │ ├── CMakeLists.txt │ │ ├── Echo.cpp │ │ ├── Echo.h │ │ ├── Makefile │ │ └── etc │ │ │ ├── echo.conf │ │ │ └── echo.conf.cmake │ ├── g722 │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── Readme.g722codec │ │ └── g722.c │ ├── g729 │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── Readme.g729.txt │ │ └── g729.c │ ├── gsm │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── gsm-1.0-pl10 │ │ │ ├── COPYRIGHT │ │ │ ├── ChangeLog │ │ │ ├── INSTALL │ │ │ ├── MACHINES │ │ │ ├── MANIFEST │ │ │ ├── Makefile │ │ │ ├── README.gsm-1.0 │ │ │ ├── add-test │ │ │ │ ├── add_test.c │ │ │ │ └── add_test.dta │ │ │ ├── inc │ │ │ │ ├── config.h │ │ │ │ ├── gsm.h │ │ │ │ ├── private.h │ │ │ │ ├── proto.h │ │ │ │ ├── toast.h │ │ │ │ └── unproto.h │ │ │ ├── man │ │ │ │ ├── bitter.1 │ │ │ │ ├── gsm.3 │ │ │ │ ├── gsm_explode.3 │ │ │ │ ├── gsm_option.3 │ │ │ │ ├── gsm_print.3 │ │ │ │ └── toast.1 │ │ │ ├── src │ │ │ │ ├── add.c │ │ │ │ ├── code.c │ │ │ │ ├── debug.c │ │ │ │ ├── decode.c │ │ │ │ ├── gsm_create.c │ │ │ │ ├── gsm_decode.c │ │ │ │ ├── gsm_destroy.c │ │ │ │ ├── gsm_encode.c │ │ │ │ ├── gsm_explode.c │ │ │ │ ├── gsm_implode.c │ │ │ │ ├── gsm_option.c │ │ │ │ ├── gsm_print.c │ │ │ │ ├── long_term.c │ │ │ │ ├── lpc.c │ │ │ │ ├── preprocess.c │ │ │ │ ├── rpe.c │ │ │ │ ├── short_term.c │ │ │ │ ├── table.c │ │ │ │ ├── toast.c │ │ │ │ ├── toast_alaw.c │ │ │ │ ├── toast_audio.c │ │ │ │ ├── toast_lin.c │ │ │ │ └── toast_ulaw.c │ │ │ ├── tls │ │ │ │ ├── bitter.c │ │ │ │ ├── bitter.dta │ │ │ │ ├── ginger.c │ │ │ │ ├── sour.c │ │ │ │ ├── sour1.dta │ │ │ │ ├── sour2.dta │ │ │ │ ├── sweet.c │ │ │ │ ├── taste.c │ │ │ │ └── taste.h │ │ │ └── tst │ │ │ │ ├── cod2lin.c │ │ │ │ ├── cod2txt.c │ │ │ │ ├── gsm2cod.c │ │ │ │ ├── lin2cod.c │ │ │ │ └── lin2txt.c │ │ └── gsm.c │ ├── ilbc │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── iLBC_rfc3951 │ │ │ ├── CMakeLists.txt │ │ │ ├── FrameClassify.c │ │ │ ├── FrameClassify.h │ │ │ ├── LPCdecode.c │ │ │ ├── LPCdecode.h │ │ │ ├── LPCencode.c │ │ │ ├── LPCencode.h │ │ │ ├── Makefile │ │ │ ├── StateConstructW.c │ │ │ ├── StateConstructW.h │ │ │ ├── StateSearchW.c │ │ │ ├── StateSearchW.h │ │ │ ├── anaFilter.c │ │ │ ├── anaFilter.h │ │ │ ├── constants.c │ │ │ ├── constants.h │ │ │ ├── createCB.c │ │ │ ├── createCB.h │ │ │ ├── doCPLC.c │ │ │ ├── doCPLC.h │ │ │ ├── enhancer.c │ │ │ ├── enhancer.h │ │ │ ├── filter.c │ │ │ ├── filter.h │ │ │ ├── gainquant.c │ │ │ ├── gainquant.h │ │ │ ├── getCBvec.c │ │ │ ├── getCBvec.h │ │ │ ├── helpfun.c │ │ │ ├── helpfun.h │ │ │ ├── hpInput.c │ │ │ ├── hpInput.h │ │ │ ├── hpOutput.c │ │ │ ├── hpOutput.h │ │ │ ├── iCBConstruct.c │ │ │ ├── iCBConstruct.h │ │ │ ├── iCBSearch.c │ │ │ ├── iCBSearch.h │ │ │ ├── iLBC_decode.c │ │ │ ├── iLBC_decode.h │ │ │ ├── iLBC_define.h │ │ │ ├── iLBC_encode.c │ │ │ ├── iLBC_encode.h │ │ │ ├── iLBC_test │ │ │ │ └── iLBC_test.c │ │ │ ├── lsf.c │ │ │ ├── lsf.h │ │ │ ├── packing.c │ │ │ ├── packing.h │ │ │ ├── syntFilter.c │ │ │ └── syntFilter.h │ │ └── ilbc.c │ ├── isac │ │ ├── Makefile │ │ ├── isac.c │ │ └── libisac │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── PATENTS │ │ │ ├── arith_routines.c │ │ │ ├── arith_routines.h │ │ │ ├── arith_routines_hist.c │ │ │ ├── arith_routines_logist.c │ │ │ ├── auto_corr_to_refl_coef.c │ │ │ ├── auto_correlation.c │ │ │ ├── bandwidth_estimator.c │ │ │ ├── bandwidth_estimator.h │ │ │ ├── codec.h │ │ │ ├── complex_bit_reverse.c │ │ │ ├── complex_fft.c │ │ │ ├── copy_set_operations.c │ │ │ ├── crc.c │ │ │ ├── crc.h │ │ │ ├── cross_correlation.c │ │ │ ├── decode.c │ │ │ ├── decode_bwe.c │ │ │ ├── division_operations.c │ │ │ ├── dot_product_with_scale.c │ │ │ ├── downsample_fast.c │ │ │ ├── encode.c │ │ │ ├── encode_lpc_swb.c │ │ │ ├── encode_lpc_swb.h │ │ │ ├── energy.c │ │ │ ├── entropy_coding.c │ │ │ ├── entropy_coding.h │ │ │ ├── fft.c │ │ │ ├── fft.h │ │ │ ├── filter_ar.c │ │ │ ├── filter_ar_fast_q12.c │ │ │ ├── filter_functions.c │ │ │ ├── filter_ma_fast_q12.c │ │ │ ├── filterbank_tables.c │ │ │ ├── filterbank_tables.h │ │ │ ├── filterbanks.c │ │ │ ├── get_hanning_window.c │ │ │ ├── get_scaling_square.c │ │ │ ├── ilbc_specific_functions.c │ │ │ ├── intialize.c │ │ │ ├── isac.c │ │ │ ├── isac.gypi │ │ │ ├── isac.h │ │ │ ├── lattice.c │ │ │ ├── levinson_durbin.c │ │ │ ├── lpc_analysis.c │ │ │ ├── lpc_analysis.h │ │ │ ├── lpc_gain_swb_tables.c │ │ │ ├── lpc_gain_swb_tables.h │ │ │ ├── lpc_shape_swb12_tables.c │ │ │ ├── lpc_shape_swb12_tables.h │ │ │ ├── lpc_shape_swb16_tables.c │ │ │ ├── lpc_shape_swb16_tables.h │ │ │ ├── lpc_tables.c │ │ │ ├── lpc_tables.h │ │ │ ├── lpc_to_refl_coef.c │ │ │ ├── min_max_operations.c │ │ │ ├── min_max_operations_neon.c │ │ │ ├── os_specific_inline.h │ │ │ ├── pitch_estimator.c │ │ │ ├── pitch_estimator.h │ │ │ ├── pitch_filter.c │ │ │ ├── pitch_gain_tables.c │ │ │ ├── pitch_gain_tables.h │ │ │ ├── pitch_lag_tables.c │ │ │ ├── pitch_lag_tables.h │ │ │ ├── randomization_functions.c │ │ │ ├── refl_coef_to_lpc.c │ │ │ ├── resample.c │ │ │ ├── resample_48khz.c │ │ │ ├── resample_by_2.c │ │ │ ├── resample_by_2_internal.c │ │ │ ├── resample_by_2_internal.h │ │ │ ├── resample_fractional.c │ │ │ ├── settings.h │ │ │ ├── signal_processing_library.h │ │ │ ├── spectrum_ar_model_tables.c │ │ │ ├── spectrum_ar_model_tables.h │ │ │ ├── spl_inl.h │ │ │ ├── spl_inl_armv7.h │ │ │ ├── spl_sqrt.c │ │ │ ├── spl_sqrt_floor.c │ │ │ ├── spl_version.c │ │ │ ├── splitting_filter.c │ │ │ ├── sqrt_of_one_minus_x_squared.c │ │ │ ├── structs.h │ │ │ ├── transform.c │ │ │ ├── typedefs.h │ │ │ ├── vector_scaling_operations.c │ │ │ ├── webrtc_fft_t_1024_8.c │ │ │ └── webrtc_fft_t_rad.c │ ├── l16 │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ └── l16.c │ ├── opus │ │ ├── Makefile │ │ └── opus.c │ ├── session_timer │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── SessionTimer.cpp │ │ └── SessionTimer.h │ ├── silk │ │ ├── Makefile │ │ └── silk.c │ ├── speex │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ └── speex.c │ ├── stats │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── README.stats │ │ ├── Statistics.cpp │ │ ├── Statistics.h │ │ ├── StatsUDPServer.cpp │ │ ├── StatsUDPServer.h │ │ ├── etc │ │ │ ├── stats.conf │ │ │ └── stats.conf.cmake │ │ └── query_stats.cxx │ ├── uac_auth │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── UACAuth.cpp │ │ └── UACAuth.h │ └── wav │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── g711.c │ │ ├── g711.h │ │ ├── wav.c │ │ ├── wav_hdr.c │ │ └── wav_hdr.h ├── resample │ ├── Makefile │ ├── resample.cpp │ └── resample.h ├── rtp │ ├── rtp.h │ └── telephone_event.h ├── sems.cpp ├── sems.h ├── sems.h.cmake ├── singleton.h ├── sip │ ├── Makefile │ ├── async_file.cpp │ ├── async_file.h │ ├── async_file_writer.cpp │ ├── async_file_writer.h │ ├── cstring.h │ ├── defs.h │ ├── exclusive_file.cpp │ ├── exclusive_file.h │ ├── fifo_buffer.cpp │ ├── fifo_buffer.h │ ├── hash.cpp │ ├── hash.h │ ├── ip_util.cpp │ ├── ip_util.h │ ├── msg_fline.cpp │ ├── msg_fline.h │ ├── msg_hdrs.cpp │ ├── msg_hdrs.h │ ├── msg_logger.cpp │ ├── msg_logger.h │ ├── parse_100rel.cpp │ ├── parse_100rel.h │ ├── parse_common.cpp │ ├── parse_common.h │ ├── parse_cseq.cpp │ ├── parse_cseq.h │ ├── parse_dns.cpp │ ├── parse_dns.h │ ├── parse_extensions.cpp │ ├── parse_extensions.h │ ├── parse_from_to.cpp │ ├── parse_from_to.h │ ├── parse_header.cpp │ ├── parse_header.h │ ├── parse_nameaddr.cpp │ ├── parse_nameaddr.h │ ├── parse_next_hop.cpp │ ├── parse_next_hop.h │ ├── parse_route.cpp │ ├── parse_route.h │ ├── parse_uri.cpp │ ├── parse_uri.h │ ├── parse_via.cpp │ ├── parse_via.h │ ├── pcap_logger.cpp │ ├── pcap_logger.h │ ├── raw_sender.cpp │ ├── raw_sender.h │ ├── raw_sock.cpp │ ├── raw_sock.h │ ├── resolver.cpp │ ├── resolver.h │ ├── sip_parser.cpp │ ├── sip_parser.h │ ├── sip_parser_async.cpp │ ├── sip_parser_async.h │ ├── sip_timers.cpp │ ├── sip_timers.h │ ├── sip_trans.cpp │ ├── sip_trans.h │ ├── sip_ua.h │ ├── tcp_trsp.cpp │ ├── tcp_trsp.h │ ├── tr_blacklist.cpp │ ├── tr_blacklist.h │ ├── trans_layer.cpp │ ├── trans_layer.h │ ├── trans_table.cpp │ ├── trans_table.h │ ├── transport.cpp │ ├── transport.h │ ├── udp_trsp.cpp │ ├── udp_trsp.h │ ├── wheeltimer.cpp │ └── wheeltimer.h ├── tests │ ├── .gitignore │ ├── Makefile │ ├── fct.h │ ├── sems_tests.cpp │ ├── sems_tests.h │ ├── test_auth.cpp │ ├── test_auth.h │ ├── test_headers.cpp │ ├── test_headers.h │ ├── test_jsonarg.cpp │ ├── test_jsonarg.h │ ├── test_replaces.cpp │ ├── test_replaces.h │ ├── test_sdp.cpp │ ├── test_sdp.h │ ├── test_uriparser.cpp │ └── test_uriparser.h └── wav │ ├── beep.wav │ └── default_en.wav ├── debian ├── .gitignore ├── changelog ├── control ├── copyright ├── ngcp-sems.dirs ├── ngcp-sems.links ├── ngcp-sems.lintian-overrides ├── ngcp-sems.maintscript ├── ngcp-sems.postinst ├── ngcp-sems.service ├── ngcp-sems.tmpfiles ├── rules └── source │ ├── format │ ├── include-binaries │ └── options ├── doc ├── Applications.txt ├── CHANGELOG ├── COMPILING ├── COPYING ├── ComponentModules.txt ├── Howtostart_noproxy.txt ├── Howtostart_simpleproxy.txt ├── Howtostart_voicemail.txt ├── Makefile ├── Readme.ann_b2b.txt ├── Readme.announce_transfer.txt ├── Readme.announcement.txt ├── Readme.annrecorder.txt ├── Readme.auth_b2b.txt ├── Readme.call_timer.txt ├── Readme.callback.txt ├── Readme.click2dial.txt ├── Readme.conf_auth.txt ├── Readme.conference.txt ├── Readme.db_reg_agent.txt ├── Readme.diameter_client.txt ├── Readme.early_announce.txt ├── Readme.echo.txt ├── Readme.iLBC.txt ├── Readme.ivr.txt ├── Readme.jsonrpc ├── Readme.mailbox.txt ├── Readme.monitoring.txt ├── Readme.mp3plugin.txt ├── Readme.msg_storage.txt ├── Readme.pin_collect.txt ├── Readme.py_sems.txt ├── Readme.reg_agent.txt ├── Readme.registrar_client.txt ├── Readme.sbc.txt ├── Readme.sbc_call_control.txt ├── Readme.sst_b2b.txt ├── Readme.sw_prepaid_sip.txt ├── Readme.twit.txt ├── Readme.uac_auth.txt ├── Readme.voicebox.txt ├── Readme.voicemail.txt ├── Readme.webconference.txt ├── Readme.xmlrpc2di.txt ├── Tuning.txt ├── ZRTP.txt ├── doxygen_fulldoc_proj ├── doxygen_proj ├── dsm │ ├── Readme.dsm.txt │ ├── dsm_errorhandling.txt │ ├── dsm_sbc_syntax.txt │ ├── dsm_syntax.txt │ ├── dsm_todo.txt │ ├── examples │ │ ├── 183_early_establish.dsm │ │ ├── b2b_connect_audio │ │ │ ├── aas_callee.dsm │ │ │ └── aas_caller.dsm │ │ ├── b2b_connect_extension │ │ │ ├── connect_extension.dsm │ │ │ └── wav │ │ │ │ ├── Makefile │ │ │ │ ├── connecting.txt │ │ │ │ ├── enter_extension.txt │ │ │ │ ├── failed_enter_extension.txt │ │ │ │ └── sorry_problems.txt │ │ ├── call │ │ │ ├── callsub.dsm │ │ │ └── calltest.dsm │ │ ├── dsm_di_monit │ │ │ ├── Readme_ddm.txt │ │ │ ├── dsm_di_monitoring.dsm │ │ │ └── wav │ │ │ │ ├── change.wav │ │ │ │ ├── taken.wav │ │ │ │ └── welcome.wav │ │ ├── early_media.dsm │ │ ├── handle_cancel.dsm │ │ ├── late_reply.dsm │ │ ├── moddlg_late_early.dsm │ │ ├── pin │ │ │ ├── main.dsm │ │ │ └── ok_pin.dsm │ │ ├── play_file.dsm │ │ ├── sbc │ │ │ └── sbc_test_app │ │ │ │ ├── howto.txt │ │ │ │ ├── profile │ │ │ │ └── sbc_test_app_profile.sbcprofile.conf │ │ │ │ ├── sbc_test_app.conf │ │ │ │ └── test_sbc.dsm │ │ ├── test.dsm │ │ ├── test_b2b.dsm │ │ ├── test_byehdr.dsm │ │ ├── test_conference.dsm │ │ ├── test_conference_mute.dsm │ │ ├── test_dbfile.dsm │ │ ├── test_exception.dsm │ │ ├── test_popen.dsm │ │ ├── test_remoteunreachable.dsm │ │ ├── test_request_events.dsm │ │ ├── test_rtptimeout.dsm │ │ ├── test_system_dsm.dsm │ │ ├── test_systemevents.dsm │ │ └── test_teeconf.dsm │ ├── mods │ │ ├── Readme.mod_aws.txt │ │ ├── Readme.mod_conference.txt │ │ ├── Readme.mod_curl.txt │ │ ├── Readme.mod_dlg.txt │ │ ├── Readme.mod_groups.txt │ │ ├── Readme.mod_monitoring.txt │ │ ├── Readme.mod_mysql.txt │ │ ├── Readme.mod_py.txt │ │ ├── Readme.mod_regex.txt │ │ ├── Readme.mod_subscription.txt │ │ ├── Readme.mod_sys.txt │ │ ├── Readme.mod_uri.txt │ │ ├── Readme.mod_utils.txt │ │ ├── Readme.mod_xml.txt │ │ └── Readme.mod_zrtp.txt │ └── tutorials │ │ └── quizconnect │ │ ├── Readme.quizconnect_tutorial.txt │ │ ├── prompts │ │ ├── Makefile │ │ ├── sorry_pin_wrong.txt │ │ ├── sorry_pin_wrong.wav │ │ ├── welcome_callee.txt │ │ ├── welcome_callee.wav │ │ ├── welcome_caller.txt │ │ └── welcome_caller.wav │ │ ├── quizconnect.conf │ │ ├── quizconnect_callee.dsm │ │ ├── quizconnect_caller.dsm │ │ ├── quizconnect_tutorial.pdf │ │ └── quizconnect_tutorial.txt ├── figures │ ├── conference.dia │ ├── png │ │ ├── conference.png │ │ ├── service_invocation.png │ │ ├── singleinstance.png │ │ ├── two_instances_app_fixed.png │ │ ├── two_instances_app_param.png │ │ ├── voicemail.png │ │ ├── webconference.png │ │ └── webconference_dialout.png │ ├── service_invocation.dia │ ├── singleinstance.dia │ ├── two_instances_app_fixed.dia │ ├── two_instances_app_param.dia │ ├── voicemail.dia │ ├── webconference.dia │ └── webconference_dialout.dia ├── index.txt ├── munin-sems-stats-monitoring.pl ├── sbc │ ├── Readme.bl_redis.txt │ ├── Readme.cc_acc_xmlrpc │ ├── Readme.cc_ctl.txt │ ├── Readme.cc_dsm.txt │ ├── Readme.cc_registrar.txt │ ├── Readme.cc_rest.txt │ └── sample_config_regcache │ │ ├── exin.sbcprofile.conf │ │ ├── inex.sbcprofile.conf │ │ ├── interface_map.conf │ │ ├── method_map.conf │ │ ├── readme.txt │ │ ├── reg.sbcprofile.conf │ │ ├── sbc.conf │ │ └── sems.conf └── src │ ├── doc_applications.h │ ├── doc_componentmods.h │ ├── doc_exampleapps.h │ ├── doc_howtostart_noproxy.h │ ├── doc_howtostart_simpleproxy.h │ ├── doc_howtostart_voicemail.h │ ├── doc_sbc.h │ ├── doc_signals.h │ ├── doc_tutorialapps.h │ ├── doc_zrtp.h │ └── doxyref.h ├── docs ├── Makefile ├── conf.py ├── index.rst ├── installation.md ├── make.bat ├── overview.md ├── packaging.md ├── requirements.txt └── usage.md ├── pkg ├── deb │ └── debian │ │ ├── changelog │ │ ├── compat │ │ ├── control │ │ ├── copyright │ │ ├── libsems1-dev.install │ │ ├── rules │ │ ├── sems.default │ │ ├── sems.init │ │ ├── sems.lintian-overrides │ │ ├── sems.postinst │ │ ├── sems.postrm │ │ ├── shlibs.local │ │ └── source │ │ └── format ├── gentoo │ ├── files │ │ ├── sems-1.0.0_pre20080412-exclude_modules_colon.patch │ │ ├── sems.confd │ │ └── sems.rc6 │ ├── sems-1.0.0_pre20080412.ebuild │ └── spandsp-0.0.4_pre18.ebuild └── rpm │ ├── README.rpm │ ├── sems.init │ ├── sems.spec │ ├── sems.sysconfig │ ├── sems.systemd.service │ └── sems.systemd.tmpfiles.d.conf ├── t ├── auto-test-helper ├── basic.conf ├── basic │ ├── sbc.conf │ └── xmlrpc2di.conf ├── register-cache.conf ├── register-cache │ ├── registrar.sbcprofile.conf │ └── sbc.conf ├── sems_tester.py ├── test-basic.py ├── test-register-cache.py └── tests-preload.c └── tools ├── CMakeLists.txt ├── Makefile └── logfile-splitter.cpp /.gitignore: -------------------------------------------------------------------------------- 1 | *.d 2 | *.o 3 | *.a 4 | *.so 5 | *.so.* 6 | *.pyc 7 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=gerrit.mgm.sipwise.com 3 | port=29418 4 | project=sems 5 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | build: 4 | os: ubuntu-22.04 5 | tools: 6 | python: "3.10" 7 | 8 | sphinx: 9 | configuration: docs/conf.py 10 | 11 | python: 12 | install: 13 | - requirements: docs/requirements.txt 14 | 15 | -------------------------------------------------------------------------------- /apps/ann_b2b/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (ann_b2b_SRCS 2 | AnnounceB2B.cpp 3 | ) 4 | 5 | SET(sems_module_name ann_b2b) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/ann_b2b/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = ann_b2b 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | -------------------------------------------------------------------------------- /apps/ann_b2b/etc/ann_b2b.conf: -------------------------------------------------------------------------------- 1 | announce_path=/usr/local/lib/sems/audio/ 2 | default_announce=default_en.wav 3 | 4 | # if you add custom announcement for 5 | # ann_b2b module change path to 6 | # announce_path=/usr/local/lib/sems/audio/ann_b2b 7 | # 8 | 9 | -------------------------------------------------------------------------------- /apps/ann_b2b/etc/ann_b2b.conf.cmake: -------------------------------------------------------------------------------- 1 | announce_path=${SEMS_AUDIO_PREFIX}/sems/audio/ 2 | default_announce=default_en.wav 3 | 4 | # if you add custom announcement for 5 | # ann_b2b module change path to 6 | # announce_path=${SEMS_AUDIO_PREFIX}/sems/audio/ann_b2b 7 | # 8 | 9 | -------------------------------------------------------------------------------- /apps/announce_transfer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (announce_transfer_SRCS 2 | AnnounceTransfer.cpp 3 | ) 4 | 5 | SET(sems_module_name announce_transfer) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/announce_transfer/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = announce_transfer 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/announce_transfer/etc/announce_transfer.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_ANNOUNCEPATH 2 | announce_path=/usr/local/lib/sems/audio/ 3 | #ENDCFGOPTION 4 | 5 | #CFGOPTION_SEMS_ANNOUNCEMENT 6 | default_announce=default_en.wav 7 | #ENDCFGOPTION 8 | -------------------------------------------------------------------------------- /apps/announce_transfer/etc/announce_transfer.conf.cmake: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_ANNOUNCEPATH 2 | announce_path=${SEMS_AUDIO_PREFIX}/sems/audio/ 3 | #ENDCFGOPTION 4 | 5 | #CFGOPTION_SEMS_ANNOUNCEMENT 6 | default_announce=default_en.wav 7 | #ENDCFGOPTION 8 | -------------------------------------------------------------------------------- /apps/announcement/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (announcement_SRCS 2 | Announcement.cpp 3 | ) 4 | 5 | SET(sems_module_name announcement) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/announcement/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = announcement 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/announcement/etc/announcement.conf: -------------------------------------------------------------------------------- 1 | # File to be played: 2 | # 1) [announce_path]/[Domain]/[User].wav 3 | # 2) [announce_path]/[User].wav 4 | # 3) [announce_path]/[default_announce] 5 | # first found is played 6 | 7 | announce_path=/usr/local/lib/sems/audio/ 8 | 9 | default_announce=default_en.wav 10 | 11 | # optional parameter: loop 12 | # set to "true" to make the announcement loop 13 | # (indefinitely) 14 | # 15 | # loop=true 16 | -------------------------------------------------------------------------------- /apps/announcement/etc/announcement.conf.cmake: -------------------------------------------------------------------------------- 1 | # File to be played: 2 | # 1) [announce_path]/[Domain]/[User].wav 3 | # 2) [announce_path]/[User].wav 4 | # 3) [announce_path]/[default_announce] 5 | # first found is played 6 | 7 | announce_path=${SEMS_AUDIO_PREFIX}/sems/audio/ 8 | 9 | default_announce=default_en.wav 10 | 11 | # optional parameter: loop 12 | # set to "true" to make the announcement loop 13 | # (indefinitely) 14 | # 15 | # loop=true 16 | -------------------------------------------------------------------------------- /apps/annrecorder/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (annrecorder_SRCS 2 | AnnRecorder.cpp 3 | ) 4 | 5 | set (annrecorder_audio_files 6 | beep.wav 7 | bye.wav 8 | confirm.wav 9 | greeting_set.wav 10 | to_record.wav 11 | welcome.wav 12 | your_prompt.wav 13 | ) 14 | 15 | SET(sems_module_name annrecorder) 16 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 17 | -------------------------------------------------------------------------------- /apps/annrecorder/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = annrecorder 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/annrecorder/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/beep.wav -------------------------------------------------------------------------------- /apps/annrecorder/wav/bye.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/bye.wav -------------------------------------------------------------------------------- /apps/annrecorder/wav/confirm.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/confirm.wav -------------------------------------------------------------------------------- /apps/annrecorder/wav/greeting_set.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/greeting_set.wav -------------------------------------------------------------------------------- /apps/annrecorder/wav/to_record.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/to_record.wav -------------------------------------------------------------------------------- /apps/annrecorder/wav/welcome.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/welcome.wav -------------------------------------------------------------------------------- /apps/annrecorder/wav/your_prompt.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/annrecorder/wav/your_prompt.wav -------------------------------------------------------------------------------- /apps/callback/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (callback_SRCS 2 | CallBack.cpp 3 | ) 4 | 5 | SET(sems_module_name callback) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/callback/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = callback 2 | 3 | module_ldflags = 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/callback/etc/callback.conf: -------------------------------------------------------------------------------- 1 | # "please type in the number you want to call, followed by the pund key" 2 | welcome_prompt=/usr/local/lib/sems/audio/webconference/pin_prompt.wav 3 | 4 | digits_dir=/usr/local/lib/sems/audio/webconference/ 5 | 6 | playout_type=adaptive_playout 7 | 8 | # regexp of allowed cb numbers 9 | accept_caller_re=016213* 10 | 11 | # n sec wait before calling back 12 | cb_wait=10 13 | 14 | # GW used to call back 15 | gw_user=somegwuser 16 | gw_domain=sparvoip.de 17 | auth_pwd=somesecret 18 | #auth_user=neededifdifferentfromgw_user 19 | -------------------------------------------------------------------------------- /apps/callback/etc/callback.conf.cmake: -------------------------------------------------------------------------------- 1 | # "please type in the number you want to call, followed by the pund key" 2 | welcome_prompt=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/pin_prompt.wav 3 | 4 | digits_dir=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/ 5 | 6 | playout_type=adaptive_playout 7 | 8 | # regexp of allowed cb numbers 9 | accept_caller_re=016213* 10 | 11 | # n sec wait before calling back 12 | cb_wait=10 13 | 14 | # GW used to call back 15 | gw_user=somegwuser 16 | gw_domain=sparvoip.de 17 | auth_pwd=somesecret 18 | #auth_user=neededifdifferentfromgw_user 19 | -------------------------------------------------------------------------------- /apps/click2dial/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (click2dial_SRCS 2 | Click2Dial.cpp 3 | ) 4 | 5 | SET(sems_module_name click2dial) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/click2dial/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = click2dial 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | -------------------------------------------------------------------------------- /apps/click2dial/TODO: -------------------------------------------------------------------------------- 1 | 2007-10-13 agranig: 2 | Add a mechanism to kind of poll for the status 3 | of the current call (e.g. to be used to visualize 4 | the progress on a web site). 5 | -------------------------------------------------------------------------------- /apps/click2dial/etc/click2dial.conf: -------------------------------------------------------------------------------- 1 | announce_path=/usr/local/lib/sems/audio/ 2 | default_announce=default_en.wav 3 | 4 | # relay_early_media=[yes|no] 5 | # sends early media from callee leg into caller leg 6 | # default: yes 7 | relay_early_media=yes 8 | -------------------------------------------------------------------------------- /apps/click2dial/etc/click2dial.conf.cmake: -------------------------------------------------------------------------------- 1 | announce_path=${SEMS_AUDIO_PREFIX}/sems/audio/ 2 | default_announce=default_en.wav 3 | 4 | # relay_early_media=[yes|no] 5 | # sends early media from callee leg into caller leg 6 | # default: yes 7 | relay_early_media=yes 8 | -------------------------------------------------------------------------------- /apps/conf_auth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET(sems_module_name conf_auth) 2 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/config.rules.txt) 3 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/python.rules.txt) 4 | 5 | PYTHON_SOURCES_COMPILE(conf_auth.py ivr) 6 | SEMS_INSTALL_CONFIGS(conf_auth) 7 | -------------------------------------------------------------------------------- /apps/conf_auth/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=conf_auth 3 | VERSION=2.2.0-1 4 | 5 | LIBDIR=. 6 | 7 | include ../ivr/Makefile.ivr_application 8 | 9 | -------------------------------------------------------------------------------- /apps/conf_auth/etc/conf_auth.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/conf_auth/etc/conf_auth.conf -------------------------------------------------------------------------------- /apps/conf_auth/etc/conf_auth.conf.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/conf_auth/etc/conf_auth.conf.cmake -------------------------------------------------------------------------------- /apps/conference/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/conference/wav/beep.wav -------------------------------------------------------------------------------- /apps/conference/wav/first_participant.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/conference/wav/first_participant.wav -------------------------------------------------------------------------------- /apps/confpin/prompts/Makefile: -------------------------------------------------------------------------------- 1 | SRCS=$(wildcard *.txt) 2 | WAVS=$(SRCS:.txt=.wav) 3 | DBS=$(SRCS:.txt=.dbs) 4 | 5 | all: $(WAVS) 6 | 7 | db_upload: $(DBS) 8 | 9 | %.wav : %.txt Makefile 10 | flite -f $< -o $(basename $@)_16k.wav 11 | ## text2wave $< -o $(basename $@)_16k.wav 12 | sox $(basename $@)_16k.wav -r 8000 $@ 13 | rm $(basename $@)_16k.wav 14 | 15 | %.dbs: %.wav Makefile 16 | mkdir -p ../cache/1 17 | cp $(basename $@).wav ../cache/1 18 | ../tools/push_file $(basename $@) 1 19 | touch $(basename $@).dbs 20 | 21 | clean: 22 | rm -f *.dbs *.wav -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_first.txt: -------------------------------------------------------------------------------- 1 | you are the first participant in the conference. 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_greeting.txt: -------------------------------------------------------------------------------- 1 | welcome to the conference, please enter your pin number 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_join.txt: -------------------------------------------------------------------------------- 1 | someone joined the conference 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_joined.txt: -------------------------------------------------------------------------------- 1 | you joined the conference 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_leave.txt: -------------------------------------------------------------------------------- 1 | someone left the conference 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_music.txt: -------------------------------------------------------------------------------- 1 | bum bada bum bum bamm, bamm bada bamm bamm bamm, hum di dum di dum dum dumm 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/conference_pin_wrong.txt: -------------------------------------------------------------------------------- 1 | sorry, that pin is wrong. please try again 2 | -------------------------------------------------------------------------------- /apps/confpin/prompts/goodbye.txt: -------------------------------------------------------------------------------- 1 | good bye 2 | -------------------------------------------------------------------------------- /apps/confpin/tools/clear_file: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpclib import * 5 | 6 | if len(sys.argv) != 3: 7 | print "usage: %s " % sys.argv[0] 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print "Active calls: %d" % s.calls() 12 | #p ={ 'name' : sys.argv[1], 'path' : sys.argv[2] } 13 | #print s.di('sbc','loadProfile',p) 14 | print s.di('dsm', 'postDSMEvent', 'sw_audio', [['cmd', 'clearFile'],['audio_id', sys.argv[1]],['sound_set_id', sys.argv[2]]]) -------------------------------------------------------------------------------- /apps/confpin/tools/fetch_file: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpclib import * 5 | 6 | if len(sys.argv) != 3: 7 | print "usage: %s " % sys.argv[0] 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print "Active calls: %d" % s.calls() 12 | #p ={ 'name' : sys.argv[1], 'path' : sys.argv[2] } 13 | #print s.di('sbc','loadProfile',p) 14 | print s.di('dsm', 'postDSMEvent', 'sw_audio', [['cmd', 'fetchFile'],['audio_id', sys.argv[1]],['sound_set_id', sys.argv[2]]]) -------------------------------------------------------------------------------- /apps/confpin/tools/push_file: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpclib import * 5 | 6 | if len(sys.argv) != 3: 7 | print "usage: %s " % sys.argv[0] 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print "Active calls: %d" % s.calls() 12 | #p ={ 'name' : sys.argv[1], 'path' : sys.argv[2] } 13 | #print s.di('sbc','loadProfile',p) 14 | print s.di('dsm','postDSMEvent', 'sw_audio', [['cmd', 'pushFile'],['audio_id', sys.argv[1]],['sound_set_id', sys.argv[2]]]) 15 | -------------------------------------------------------------------------------- /apps/db_reg_agent/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (db_reg_agent_SRCS 2 | DBRegAgent.cpp 3 | ) 4 | 5 | INCLUDE_DIRECTORIES(/usr/include/mysql) 6 | INCLUDE_DIRECTORIES(${MYSQLPP_INCLUDE_DIR}/mysql++) 7 | ADD_DEFINITIONS(-DHAS_OFFER_ANSWER) 8 | SET(sems_module_libs ${sems_module_libs} mysqlpp) 9 | 10 | SET(sems_module_name db_reg_agent) 11 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 12 | -------------------------------------------------------------------------------- /apps/db_reg_agent/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = db_reg_agent 2 | 3 | MYSQLPP_DEFS = -DMYSQLPP_MYSQL_HEADERS_BURIED 4 | 5 | module_ldflags = -lmysqlpp 6 | module_cflags = -DHAS_OFFER_ANSWER -DMOD_NAME=\"$(plug_in_name)\" $(MYSQLPP_DEFS) 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/diameter_client/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (diameter_client_SRCS 2 | DiameterClient.cpp 3 | ServerConnection.cpp 4 | ) 5 | 6 | ADD_SUBDIRECTORY (lib_dbase) 7 | INCLUDE_DIRECTORIES (lib_dbase) 8 | 9 | SET(sems_module_name diameter_client) 10 | SET(sems_module_libs libdbase) 11 | 12 | IF(OPENSSL_FOUND) 13 | ADD_DEFINITIONS(-DWITH_OPENSSL) 14 | SET(sems_module_libs ${sems_module_libs} ssl crypto) 15 | ENDIF(OPENSSL_FOUND) 16 | 17 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 18 | -------------------------------------------------------------------------------- /apps/diameter_client/lib_dbase/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (libdbase_SRCS 2 | avp.c 3 | diameter_msg.c 4 | tcp_comm.c 5 | ) 6 | 7 | IF(OPENSSL_FOUND) 8 | ADD_DEFINITIONS(-DWITH_OPENSSL) 9 | ENDIF(OPENSSL_FOUND) 10 | 11 | ADD_LIBRARY(libdbase STATIC ${libdbase_SRCS}) 12 | 13 | # FIXME 14 | IF(SEMS_WORKAROUND_FOR_OLD_CMAKE_2_4_FOR_STATIC_LIBS) 15 | ADD_CUSTOM_COMMAND(TARGET libdbase POST_BUILD COMMAND cp ARGS liblibdbase.a libliblibdbase.a) 16 | ENDIF(SEMS_WORKAROUND_FOR_OLD_CMAKE_2_4_FOR_STATIC_LIBS) 17 | -------------------------------------------------------------------------------- /apps/diameter_client/lib_dbase/diameter_client.h: -------------------------------------------------------------------------------- 1 | #ifndef _DIAMETER_CLIENT_LIB_H 2 | #define _DIAMETER_CLIENT_LIB_H 3 | 4 | extern "C" { 5 | 6 | #include "str.h" 7 | #include "defs.h" 8 | #include "diameter_msg.h" 9 | #include "avp.h" 10 | #include "tcp_comm.h" 11 | } 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /apps/diameter_client/lib_dbase/mem.h: -------------------------------------------------------------------------------- 1 | #ifndef _MEM_H_ 2 | #define _MEM_H_ 3 | 4 | // use malloc/free 5 | #define pkg_malloc malloc 6 | #define pkg_free free 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /apps/dsm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE (GLOB dsm_SRCS "*.cpp") 2 | 3 | ADD_SUBDIRECTORY (lib) 4 | ADD_SUBDIRECTORY (mods) 5 | 6 | SET(sems_module_name dsm) 7 | SET(dsm_config_files dsm dsm_in_prompts dsm_out_prompts) 8 | SET(dsm_doc_files 9 | ../../doc/dsm/Readme.dsm.txt 10 | ../../doc/dsm/dsm_syntax.txt 11 | ../../doc/dsm/dsm_todo.txt 12 | ) 13 | SET(dsm_doc_dirs ../../doc/dsm) 14 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 15 | -------------------------------------------------------------------------------- /apps/dsm/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = dsm 2 | 3 | module_ldflags = 4 | module_cflags = 5 | #-DMOD_NAME=\"$(plug_in_name)\" 6 | 7 | extra_target = make_dsm_mods 8 | extra_install = $(plug_in_name)_lib install_dsm_mods 9 | extra_clean = clean_dsm_mods 10 | 11 | COREPATH ?=../../core 12 | include $(COREPATH)/plug-in/Makefile.app_module 13 | 14 | make_dsm_mods: 15 | @$(MAKE) -C mods 16 | 17 | install_dsm_mods: 18 | @$(MAKE) -C mods/ install 19 | 20 | clean_dsm_mods: 21 | @$(MAKE) -C mods/ clean 22 | -------------------------------------------------------------------------------- /apps/dsm/etc/dsm_in_prompts.conf: -------------------------------------------------------------------------------- 1 | 1=/usr/local/lib/sems/audio/webconference/1.wav 2 | 2=/usr/local/lib/sems/audio/webconference/2.wav 3 | 3=/usr/local/lib/sems/audio/webconference/3.wav 4 | 4=/usr/local/lib/sems/audio/webconference/4.wav 5 | 5=/usr/local/lib/sems/audio/webconference/5.wav 6 | 6=/usr/local/lib/sems/audio/webconference/6.wav 7 | -------------------------------------------------------------------------------- /apps/dsm/etc/dsm_in_prompts.conf.cmake: -------------------------------------------------------------------------------- 1 | 1=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/1.wav 2 | 2=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/2.wav 3 | 3=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/3.wav 4 | 4=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/4.wav 5 | 5=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/5.wav 6 | 6=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/6.wav 7 | -------------------------------------------------------------------------------- /apps/dsm/etc/dsm_out_prompts.conf: -------------------------------------------------------------------------------- 1 | 1=/usr/local/lib/sems/audio/webconference/1.wav 2 | 2=/usr/local/lib/sems/audio/webconference/2.wav 3 | 3=/usr/local/lib/sems/audio/webconference/3.wav 4 | -------------------------------------------------------------------------------- /apps/dsm/etc/dsm_out_prompts.conf.cmake: -------------------------------------------------------------------------------- 1 | 1=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/1.wav 2 | 2=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/2.wav 3 | 3=${SEMS_AUDIO_PREFIX}/sems/audio/webconference/3.wav 4 | -------------------------------------------------------------------------------- /apps/dsm/fsmc/readme.txt: -------------------------------------------------------------------------------- 1 | Note: This is just rather a proof of concept. Improvements are welcome. 2 | 3 | You will need qt3 (not 4) to compile fsme/fsmc. As of july 08, 4 | the current version is 1.0.4. 5 | 6 | DSM Conditions are "Events" in fsme. To make a new state, click on the 7 | empty leaf in the treeview on the left side. Sub-leafs are transitions, 8 | open the tree and click on one to make a new transition. 9 | 10 | It would actually be nice to print the condition name as comment, and 11 | use the event body as condition (the same for actions). 12 | -------------------------------------------------------------------------------- /apps/dsm/lib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | SET(sems_dsm_script_names 3 | inbound_call.dsm 4 | outbound_call.dsm 5 | ) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.script.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/dsm/lib/outbound_call.dsm: -------------------------------------------------------------------------------- 1 | -- another nonsensical fsm... 2 | initial state start; 3 | transition "just an example" start - / { playPrompt(1); playPrompt(2); playPrompt(3); } -> end; 4 | state end; 5 | transition "stop it" end - noAudioTest() / stop(true) -> end; 6 | transition "bye recvd" (start, end) - hangup() / stop(false) -> end; 7 | -------------------------------------------------------------------------------- /apps/dsm/mods/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #ADD_SUBDIRECTORY (mod_aws) 2 | ADD_SUBDIRECTORY (mod_conference) 3 | ADD_SUBDIRECTORY (mod_dlg) 4 | IF(SEMS_USE_MONITORING) 5 | ADD_SUBDIRECTORY (mod_monitoring) 6 | ENDIF(SEMS_USE_MONITORING) 7 | IF(MYSQLPP_FOUND) 8 | ADD_SUBDIRECTORY (mod_mysql) 9 | ENDIF(MYSQLPP_FOUND) 10 | ADD_SUBDIRECTORY (mod_py) 11 | ADD_SUBDIRECTORY (mod_sys) 12 | ADD_SUBDIRECTORY (mod_uri) 13 | ADD_SUBDIRECTORY (mod_utils) 14 | 15 | -------------------------------------------------------------------------------- /apps/dsm/mods/lib/.placeholder: -------------------------------------------------------------------------------- 1 | Please do not delete this file (Git does not like empty directories). -------------------------------------------------------------------------------- /apps/dsm/mods/mod_aws/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_aws_SRCS 2 | ModAws.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_aws) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_aws/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_aws 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = -laws 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_aws/etc/aws.conf: -------------------------------------------------------------------------------- 1 | # 2 | # AWS access key (see aws website) 3 | aws_access_key=YOUR_AWS_ACCESS_KEY_HERE 4 | 5 | # 6 | # AWS secret (see aws website) 7 | aws_secret_access_key=YOUR_AWS_ACCESS_SECRET_HERE 8 | 9 | # how many connections to S3 to create initially 10 | # (connectionpool creates connections on demand) 11 | # 12 | # Default:s3_initial_connections=0 13 | # 14 | #s3_initial_connections=3 15 | 16 | # how many connections to SQS to create initially 17 | # (connectionpool creates connections on demand) 18 | # 19 | # Default:sqs_initial_connections=0 20 | # 21 | #sqs_initial_connections=3 22 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_conference/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_conference_SRCS 2 | ModConference.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_conference) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_conference/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_conference 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_curl/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_curl 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = `curl-config --libs` 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) `curl-config --cflags` 7 | 8 | # for local libcurl: 9 | #module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) -Icurl-7.15.5/include 10 | #module_ldflags = curl-7.15.5/lib/.libs/libcurl.a 11 | 12 | COREPATH ?=$(DSMPATH)/../../core 13 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 14 | include $(DSMPATH)/mods/Makefile.dsm_module 15 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_dlg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_dlg_SRCS 2 | ModDlg.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_dlg) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_dlg/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_dlg 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_groups/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_groups_SRCS 2 | ModGroups.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_groups) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_groups/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_groups 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_monitoring/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_monitoring_SRCS 2 | ModMonitoring.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_monitoring) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_monitoring/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_monitoring 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_mysql/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_mysql_SRCS 2 | ModMysql.cpp 3 | ) 4 | 5 | INCLUDE_DIRECTORIES(/usr/include/mysql) 6 | INCLUDE_DIRECTORIES(${MYSQLPP_INCLUDE_DIR}/mysql++) 7 | 8 | SET(sems_dsm_module_name mod_mysql) 9 | SET(sems_dsm_module_libs mysqlpp) 10 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 11 | 12 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_mysql/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_mysql 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = -lmysqlpp 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) -I/usr/include/mysql++ -I/usr/include/mysql 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_py/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_py_SRCS 2 | ModPy.cpp 3 | PyDSM.cpp 4 | PyDSMSession.cpp 5 | ) 6 | 7 | INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) 8 | 9 | EXECUTE_PROCESS(COMMAND python-config --libs OUTPUT_VARIABLE PYTHON_LIB_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) 10 | SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PYTHON_LIB_FLAGS}") 11 | 12 | SET(sems_dsm_module_name mod_py) 13 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 14 | 15 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_py/python_inc.py: -------------------------------------------------------------------------------- 1 | import distutils.sysconfig 2 | 3 | print(distutils.sysconfig.get_python_inc(True)) 4 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_py/python_lib.py: -------------------------------------------------------------------------------- 1 | import distutils.sysconfig 2 | 3 | print(distutils.sysconfig.get_python_lib(True,True)) 4 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_redis/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_redis 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = -lhiredis 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_regex/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_regex_SRCS 2 | ModRegex.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_regex) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_regex/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_regex 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_regex/etc/mod_regex.conf: -------------------------------------------------------------------------------- 1 | # list of regex's to compile on start 2 | # use preload_mods=mod_regex in dsm.conf if you want to use those 3 | 4 | # ex: 5 | #my_r1=^sip: 6 | #my_r2=mydomain\.net -------------------------------------------------------------------------------- /apps/dsm/mods/mod_sbc/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_sbc 2 | 3 | DSMPATH ?= ../.. 4 | SBCPATH ?= $(DSMPATH)/../sbc 5 | 6 | module_ldflags = 7 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) \ 8 | -I$(SBCPATH) -I$(SBCPATH)/call_control/dsm 9 | 10 | COREPATH ?=$(DSMPATH)/../../core 11 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 12 | include $(DSMPATH)/mods/Makefile.dsm_module 13 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_subscription/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_subscription 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_sys/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_sys_SRCS 2 | ModSys.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_sys) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_sys/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_sys 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_uri/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_uri_SRCS 2 | ModUri.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_uri) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_uri/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_uri 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_utils/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mod_utils_SRCS 2 | ModUtils.cpp 3 | ) 4 | 5 | SET(sems_dsm_module_name mod_utils) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/dsm.lib.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_utils/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_utils 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = -lssl -lcrypto 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_xml/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_xml 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = `xml2-config --libs` 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) \ 7 | `xml2-config --cflags` 8 | 9 | COREPATH ?=$(DSMPATH)/../../core 10 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 11 | include $(DSMPATH)/mods/Makefile.dsm_module 12 | -------------------------------------------------------------------------------- /apps/dsm/mods/mod_zrtp/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mod_zrtp 2 | 3 | DSMPATH ?= ../.. 4 | 5 | module_ldflags = 6 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(DSMPATH) 7 | 8 | COREPATH ?=$(DSMPATH)/../../core 9 | lib_full_name = $(DSMPATH)/mods/lib/$(lib_name) 10 | include $(DSMPATH)/mods/Makefile.dsm_module 11 | -------------------------------------------------------------------------------- /apps/early_announce/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (early_announce_SRCS 2 | EarlyAnnounce.cpp 3 | ) 4 | 5 | IF(MYSQLPP_FOUND) 6 | INCLUDE_DIRECTORIES(/usr/include/mysql) 7 | INCLUDE_DIRECTORIES(${MYSQLPP_INCLUDE_DIR}/mysql++) 8 | ADD_DEFINITIONS(-DUSE_MYSQL) 9 | SET(sems_module_libs mysqlpp) 10 | ENDIF(MYSQLPP_FOUND) 11 | 12 | SET(sems_module_name early_announce) 13 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 14 | -------------------------------------------------------------------------------- /apps/early_announce/etc/early_announce.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_ANNOUNCEPATH 2 | announce_path=/usr/local/lib/sems/audio/ 3 | #ENDCFGOPTION 4 | 5 | #CFGOPTION_SEMS_ANNOUNCEMENT 6 | default_announce=default_en.wav 7 | #ENDCFGOPTION 8 | 9 | # 10 | # continue the call in B2BUA mode ? [yes | no | app-param] 11 | # if continue_b2b=app-param, continuation is controlled by 12 | # 'B2B' app param, e.g. P-App-Param: B2B=yes 13 | # 14 | # default: 15 | # continue_b2b=no 16 | -------------------------------------------------------------------------------- /apps/early_announce/etc/early_announce.conf.cmake: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_ANNOUNCEPATH 2 | announce_path=${SEMS_AUDIO_PREFIX}/sems/audio/ 3 | #ENDCFGOPTION 4 | 5 | #CFGOPTION_SEMS_ANNOUNCEMENT 6 | default_announce=default_en.wav 7 | #ENDCFGOPTION 8 | 9 | # 10 | # continue the call in B2BUA mode ? [yes | no | app-param] 11 | # if continue_b2b=app-param, continuation is controlled by 12 | # 'B2B' app param, e.g. P-App-Param: B2B=yes 13 | # 14 | # default: 15 | # continue_b2b=no 16 | -------------------------------------------------------------------------------- /apps/early_dbprompt/etc/early_dbprompt.conf: -------------------------------------------------------------------------------- 1 | 2 | # configuration for early_dbprompt app 3 | 4 | # DSM configuration 5 | diag_path=/usr/lib/sems/early_dbprompt 6 | mod_path=/usr/lib/sems/plug-in/ 7 | load_diags=early_dbprompt 8 | register_apps=early_dbprompt 9 | run_invite_event=yes 10 | set_param_variables=yes 11 | 12 | # application configuration: 13 | 14 | # database connection: 15 | db_url="mysql://root:frafos@localhost/provisioning" 16 | 17 | 18 | # local testing: 19 | #diag_path=../apps/early_dbprompt 20 | #mod_path=../apps/dsm/mods/lib 21 | -------------------------------------------------------------------------------- /apps/examples/Readme.examples: -------------------------------------------------------------------------------- 1 | These examples illustrate how to make use certain aspects of 2 | the SEMS framework rather than be complete ready-to-use applications. 3 | The examples given there can be a good start for further development, 4 | though. 5 | 6 | In each directory you will find a separate Readme file describing 7 | the purpose of the example. 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/examples/announce_auth/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = announce_auth 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | -------------------------------------------------------------------------------- /apps/examples/announce_auth/Readme.announce_auth: -------------------------------------------------------------------------------- 1 | announce_auth 2 | 3 | This is a sample application demonstrating how to place calls 4 | as UAC with authentication. realm, username and password as well as 5 | number to dial from/to is configured in config file (see 6 | etc/announce_auth.conf) 7 | 8 | After 5 seconds it calls a number and plays an announcement to it. 9 | It does that again every 10 minutes. 10 | 11 | Please don't use SEMS for SPIT. Thanks. -------------------------------------------------------------------------------- /apps/examples/announce_auth/etc/announce_auth.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_ANNOUNCEPATH 2 | announce_path=/usr/local/lib/sems/audio/ 3 | #ENDCFGOPTION 4 | 5 | #CFGOPTION_SEMS_ANNOUNCEMENT 6 | default_announce=default_en.wav 7 | #ENDCFGOPTION 8 | 9 | ## authentication information 10 | auth_realm=iptel.org 11 | auth_user=myusername 12 | auth_pwd=mypassword 13 | 14 | ## dial out to this number 15 | dial_ruri=sip:123@example.com 16 | dial_to= 17 | ## from here 18 | dial_from= 19 | dial_fromuri=sip:myusername@iptel.org 20 | -------------------------------------------------------------------------------- /apps/examples/b2b_connect/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = b2b_connect 2 | 3 | module_ldflags = 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" 5 | 6 | COREPATH ?= ../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/b2b_connect/etc/b2b_connect.conf: -------------------------------------------------------------------------------- 1 | # 2 | # transparent_headers = [true|false] 3 | # 4 | # relay headers from initial INVITE into callee leg? 5 | # 6 | # default: 7 | # transparent_headers = true 8 | 9 | # transparent_destination = [true|false] 10 | # 11 | # relay Request URI and To URI from initial INVITE into callee leg? 12 | # 13 | # default: 14 | # transparent_destination = false 15 | -------------------------------------------------------------------------------- /apps/examples/b2b_connect/test/g711a.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/b2b_connect/test/g711a.pcap -------------------------------------------------------------------------------- /apps/examples/cacheannounce/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cacheannounce 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/examples/cacheannounce/etc/cacheannounce.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_ANNOUNCEPATH 2 | announce_path=/usr/local/lib/sems/audio/ 3 | #ENDCFGOPTION 4 | 5 | #CFGOPTION_SEMS_ANNOUNCEMENT 6 | default_announce=default_en.wav 7 | #ENDCFGOPTION 8 | -------------------------------------------------------------------------------- /apps/examples/call_gen/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = callgen 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/examples/call_gen/etc/callgen.conf: -------------------------------------------------------------------------------- 1 | play_file=../apps/examples/call_gen/wav/default.wav 2 | digits_dir=../apps/examples/call_gen/wav/ 3 | from_host=callgen.example.net 4 | -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/0.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/0.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/1.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/2.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/3.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/4.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/5.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/6.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/7.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/8.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/9.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/p.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/p.wav -------------------------------------------------------------------------------- /apps/examples/call_gen/wav/s.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/call_gen/wav/s.wav -------------------------------------------------------------------------------- /apps/examples/db_announce/Makefile: -------------------------------------------------------------------------------- 1 | NAME=announcement 2 | VERSION=0.10.0-1 3 | 4 | LIBDIR=. 5 | COREPATH=../../../core 6 | IVRPATH=../../ivr 7 | 8 | include $(IVRPATH)/Makefile.ivr_application 9 | -------------------------------------------------------------------------------- /apps/examples/db_announce/announcement.conf: -------------------------------------------------------------------------------- 1 | # MySQL server host 2 | # (default localhost) 3 | #mysql_host=localhost 4 | 5 | # MySQL user id 6 | # (default sems) 7 | #mysql_user=sems 8 | 9 | # MySQL password 10 | # (default empty string) 11 | #mysql_passwd=secret 12 | 13 | # MySQL database 14 | # (default sems) 15 | # mysql_db=sems 16 | -------------------------------------------------------------------------------- /apps/examples/di_dialer/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = di_dial 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/di_dialer/etc/di_dial.conf: -------------------------------------------------------------------------------- 1 | dialout_pin0=1234;username;auth_name;domain.net;secret; 2 | dialout_pin0=135;username2;auth_name2;domain2.net;verysecret; 3 | -------------------------------------------------------------------------------- /apps/examples/di_dialer/test_sh: -------------------------------------------------------------------------------- 1 | while true; do ./query_stats -c DI di_dial dial announcement 123 sip:ann@10.0.0.45 sip:123@83.246.121.43; sleep 1; done 2 | -------------------------------------------------------------------------------- /apps/examples/di_log/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = di_log 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/dtmftester/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = dtmftester 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/examples/dtmftester/Readme.dtmftester: -------------------------------------------------------------------------------- 1 | dtmf detection tester 2 | 3 | this app records the file to /tmp/dtmftest_.wav, and 4 | plays all detected digits in a playlist. 5 | 6 | this comes in handy to tune/check the dtmf detection. 7 | 8 | -------------------------------------------------------------------------------- /apps/examples/dtmftester/etc/dtmf_tester.conf: -------------------------------------------------------------------------------- 1 | announce_path=../apps/examples/dtmftester/wav/ 2 | default_announce=prompt.wav 3 | -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/0.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/0.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/1.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/10.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/10.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/11.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/11.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/12.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/12.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/13.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/13.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/14.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/14.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/15.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/15.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/2.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/3.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/4.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/5.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/6.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/7.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/8.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/9.wav -------------------------------------------------------------------------------- /apps/examples/dtmftester/wav/prompt.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/dtmftester/wav/prompt.wav -------------------------------------------------------------------------------- /apps/examples/early_record/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = early_record 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/early_record/Readme.earlyrecord: -------------------------------------------------------------------------------- 1 | EarlyRecord 2 | 3 | This example demonstrates how to use the early media 4 | receiving mode. It records received early media of an 5 | authenticated call in a file in /tmp folder, and when 6 | the callee picks up, it plays the recorded file. 7 | -------------------------------------------------------------------------------- /apps/examples/ivr_examples/Readme.ivr_examples: -------------------------------------------------------------------------------- 1 | Here there are some ivr script examples that illustrate 2 | certain ivr functionality. -------------------------------------------------------------------------------- /apps/examples/ivr_examples/rec.py: -------------------------------------------------------------------------------- 1 | # 2 | # just recording to file 3 | # 4 | from log import * 5 | from ivr import * 6 | 7 | class IvrDialog(IvrDialogBase) : 8 | 9 | def onSessionStart(self) : 10 | 11 | self.audio_msg = IvrAudioFile() 12 | self.audio_msg.open("record.wav", AUDIO_WRITE) 13 | self.enqueue(None,self.audio_msg) 14 | -------------------------------------------------------------------------------- /apps/examples/ivr_examples/test_mp3.py: -------------------------------------------------------------------------------- 1 | # 2 | # testing mp3: play play.mp3, then record record.mp3 3 | # 4 | 5 | from log import * 6 | from ivr import * 7 | class IvrDialog(IvrDialogBase): 8 | 9 | def onSessionStart(self): 10 | self.voice_msg = IvrAudioFile() 11 | self.voice_msg.open("play.mp3", AUDIO_READ, False) 12 | self.enqueue(self.voice_msg, None) 13 | self.voice_msg.open("record.mp3", AUDIO_WRITE, False) 14 | self.enqueue(None, self.voice_msg) 15 | 16 | -------------------------------------------------------------------------------- /apps/examples/jukecall/Makefile: -------------------------------------------------------------------------------- 1 | 2 | plug_in_name = jukecall 3 | 4 | module_ldflags = 5 | module_cflags = 6 | 7 | module_extra_objs = 8 | extra_install = jukecall_audio 9 | 10 | extra_clean = 11 | 12 | COREPATH ?=../../../core 13 | include $(COREPATH)/plug-in/Makefile.app_module 14 | 15 | -------------------------------------------------------------------------------- /apps/examples/jukecall/wav/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/jukecall/wav/1.wav -------------------------------------------------------------------------------- /apps/examples/jukecall/wav/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/jukecall/wav/2.wav -------------------------------------------------------------------------------- /apps/examples/jukecall/wav/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/jukecall/wav/3.wav -------------------------------------------------------------------------------- /apps/examples/jukecall/wav/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/jukecall/wav/4.wav -------------------------------------------------------------------------------- /apps/examples/jukecall/wav/greeting.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/jukecall/wav/greeting.wav -------------------------------------------------------------------------------- /apps/examples/mixin_announce/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=mix_announce 3 | VERSION=0.0.1 4 | 5 | COREPATH=../../../core 6 | IVRPATH=../../ivr 7 | 8 | # general python app Makefile 9 | include $(IVRPATH)/Makefile.ivr_application 10 | 11 | -------------------------------------------------------------------------------- /apps/examples/mixin_announce/etc/mix_announce.conf: -------------------------------------------------------------------------------- 1 | announcement=../apps/voicemail/wav/default_en.wav 2 | beep=../apps/voicemail/wav/beep.wav 3 | -------------------------------------------------------------------------------- /apps/examples/mixin_announce/py_comp: -------------------------------------------------------------------------------- 1 | import compileall 2 | compileall.main() 3 | -------------------------------------------------------------------------------- /apps/examples/out_of_tree/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = myapp 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=$(CURDIR)/../../../core 7 | DEFSPATH ?=$(COREPATH)/.. 8 | app_module_dir=. 9 | 10 | include $(COREPATH)/plug-in/Makefile.app_module 11 | -------------------------------------------------------------------------------- /apps/examples/out_of_tree/MyApp.h: -------------------------------------------------------------------------------- 1 | #ifndef _MYAPP_H_ 2 | #define _MYAPP_H_ 3 | 4 | #include "AmSession.h" 5 | 6 | class MyAppFactory: public AmSessionFactory 7 | { 8 | public: 9 | MyAppFactory(const string& _app_name); 10 | 11 | int onLoad(); 12 | AmSession* onInvite(const AmSipRequest& req, const string& app_name, 13 | const map& app_params); 14 | }; 15 | 16 | class MyAppDialog : public AmSession 17 | { 18 | 19 | public: 20 | MyAppDialog(); 21 | ~MyAppDialog(); 22 | 23 | void onSessionStart(); 24 | void onBye(const AmSipRequest& req); 25 | }; 26 | 27 | #endif 28 | 29 | -------------------------------------------------------------------------------- /apps/examples/out_of_tree/Readme.myapp: -------------------------------------------------------------------------------- 1 | 2 | MyApp 3 | 4 | This is an empty template for a SEMS application plug-in written in C++. 5 | 6 | It can reside out of the SEMS source tree and just needs the libsems1-dev 7 | package installed to be compiled. For this to work, in the Makefile the 8 | following needs to be defined: 9 | plug_in_name = myapp 10 | COREPATH ?=/usr/include/sems 11 | DEFSPATH ?=/usr/include/sems 12 | app_module_dir=. 13 | include $(COREPATH)/plug-in/Makefile.app_module 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/examples/pinauthconference/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = pinauthconference 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/examples/pinauthconference/Readme.pinauthconference: -------------------------------------------------------------------------------- 1 | pinauthconference example application 2 | ------------------------------------- 3 | 4 | This application example does collect the PIN=conference 5 | room number via DTMF, plays the room number and then 6 | connects the caller to the conference room. 7 | 8 | It uses AmPromptCollection to load a set of needed prompts: 9 | "entering_conference" 10 | "first_participant" 11 | "join_sound" 12 | "drop_sound" 13 | "enter_pin" 14 | "wrong_pin" 15 | 16 | and 0.wav, 1.wav, 2.wav, ... 9.wav in digits_dir. 17 | 18 | These need to be set in the configuration. 19 | 20 | -------------------------------------------------------------------------------- /apps/examples/pinauthconference/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/pinauthconference/wav/beep.wav -------------------------------------------------------------------------------- /apps/examples/py_sems_ex/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=py_sems_examples 3 | VERSION=0.1.0-1 4 | 5 | LIBDIR=. 6 | 7 | COREPATH=../../../core 8 | PYSEMSPATH=../../py_sems 9 | 10 | include $(PYSEMSPATH)/Makefile.py_sems_application 11 | 12 | -------------------------------------------------------------------------------- /apps/examples/serviceline/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = serviceline 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | -------------------------------------------------------------------------------- /apps/examples/simple_conference/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = simple_conference 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/examples/simple_conference/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/examples/simple_conference/wav/beep.wav -------------------------------------------------------------------------------- /apps/examples/tutorial/annc_service/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=annc_service 3 | VERSION=0.0.1 4 | 5 | LIBDIR= 6 | 7 | COREPATH=../../../../core 8 | IVRPATH=../../../ivr 9 | 10 | # general python app Makefile 11 | include ../../../ivr/Makefile.ivr_application 12 | 13 | -------------------------------------------------------------------------------- /apps/examples/tutorial/annc_service/Readme.annc_service: -------------------------------------------------------------------------------- 1 | Simple IVR implementation of (a part) of RFC4240 2 | announcement service. 3 | 4 | supported parameters: 5 | play, repeat, duration, delay 6 | 7 | -------------------------------------------------------------------------------- /apps/examples/tutorial/annc_service/py_comp: -------------------------------------------------------------------------------- 1 | import compileall 2 | compileall.main() 3 | -------------------------------------------------------------------------------- /apps/examples/tutorial/cc_acc/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_acc 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH =../../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/cc_acc/Readme.cc_acc: -------------------------------------------------------------------------------- 1 | cc_acc 2 | 3 | This module implements the accounting functions for the calling 4 | card example, specifically the cc_acc interface. 5 | 6 | It maintains a local in memory map of credits. These can for example 7 | be set using the xmlrpc2di module from XMLRPC, or any other module 8 | by invoking the DI functions setCredit, getCredit, addCredit, 9 | subtractCredit. 10 | 11 | See the cc_acc_xmlrpc module and its Readme for another implementation 12 | of the cc_acc interface. -------------------------------------------------------------------------------- /apps/examples/tutorial/ivr_announce/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=ivr_announce 3 | VERSION=0.0.1 4 | 5 | LIBDIR= 6 | 7 | COREPATH=../../../../core 8 | IVRPATH=../../../ivr 9 | 10 | # general python app Makefile 11 | include $(IVRPATH)/Makefile.ivr_application 12 | 13 | -------------------------------------------------------------------------------- /apps/examples/tutorial/ivr_announce/Readme.ivr_announce: -------------------------------------------------------------------------------- 1 | ivr_announce 2 | 3 | this simple python IVR example is the Hello World of the ivr module 4 | - it just plays an announcement to the caller and then hangs up. -------------------------------------------------------------------------------- /apps/examples/tutorial/ivr_announce/etc/ivr_announce.conf: -------------------------------------------------------------------------------- 1 | announcement=/usr/local/lib/sems/audio/default.wav 2 | -------------------------------------------------------------------------------- /apps/examples/tutorial/ivr_announce/ivr_announce.py: -------------------------------------------------------------------------------- 1 | 2 | from log import * 3 | from ivr import * 4 | 5 | class IvrDialog(IvrDialogBase): 6 | announcement = None 7 | 8 | def onSessionStart(self, hdrs): 9 | debug("onSessionStart of ivr announcement app") 10 | self.announcement = IvrAudioFile() 11 | self.announcement.open(config['announcement'], ivr.AUDIO_READ) 12 | self.enqueue(self.announcement, None) 13 | 14 | def onEmptyQueue(self): 15 | self.bye() 16 | self.stopSession() 17 | -------------------------------------------------------------------------------- /apps/examples/tutorial/ivr_announce/py_comp: -------------------------------------------------------------------------------- 1 | import compileall 2 | compileall.main() 3 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myannounceapp/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = myannounceapp 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myannounceapp/Readme.myannounceapp: -------------------------------------------------------------------------------- 1 | 2 | MyAnnouceapp 3 | 4 | This app plays a file back to the 5 | caller. The file is configured 6 | with the annoucement_file config 7 | option. 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myannounceapp/etc/myannounceapp.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MYCONFIGURABLEAPP_ANNFILE 2 | announcement_file=/tmp/test.wav 3 | #ENDCFGOPTION 4 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myapp/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = myapp 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myapp/MyApp.h: -------------------------------------------------------------------------------- 1 | #ifndef _MYAPP_H_ 2 | #define _MYAPP_H_ 3 | 4 | #include "AmSession.h" 5 | 6 | class MyAppFactory: public AmSessionFactory 7 | { 8 | public: 9 | MyAppFactory(const string& _app_name); 10 | 11 | int onLoad(); 12 | AmSession* onInvite(const AmSipRequest& req, const string& app_name, 13 | const map& app_params); 14 | }; 15 | 16 | class MyAppDialog : public AmSession 17 | { 18 | 19 | public: 20 | MyAppDialog(); 21 | ~MyAppDialog(); 22 | 23 | void onSessionStart(); 24 | void onBye(const AmSipRequest& req); 25 | }; 26 | 27 | #endif 28 | 29 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myapp/Readme.myapp: -------------------------------------------------------------------------------- 1 | 2 | MyApp 3 | 4 | This is an empty template for a SEMS 0.10.0 5 | application plug-in written in C++. 6 | 7 | -------------------------------------------------------------------------------- /apps/examples/tutorial/mycc/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mycc 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/mycc/Readme.mycc: -------------------------------------------------------------------------------- 1 | 2 | MyCC 3 | 4 | This is a calling card application. 5 | Caller is asked for a PIN which 6 | is verified against an accounting 7 | function provided by a cc_acc interface. 8 | If PIN is correct, the caller 9 | may enter a number to call, and is 10 | connected to it in b2bua mode. 11 | 12 | -------------------------------------------------------------------------------- /apps/examples/tutorial/mycc/etc/mycc.conf: -------------------------------------------------------------------------------- 1 | initial_announcement =/usr/local/lib/sems/audio/ccard_wav/hello.wav 2 | incorrect_pin =/usr/local/lib/sems/audio/ccard_wav/incorrect_pin.wav 3 | out_of_credit =/usr/local/lib/sems/audio/ccard_wav/out_of_credit.wav 4 | dialing =/usr/local/lib/sems/audio/ccard_wav/dialing.wav 5 | dial_failed =/usr/local/lib/sems/audio/ccard_wav/dial_failed.wav 6 | enter_number =/usr/local/lib/sems/audio/ccard_wav/enter_number.wav 7 | 8 | connect_suffix=@127.0.0.1 9 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myconfigurableapp/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = myconfigurableapp 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myconfigurableapp/Readme.myconfigurableapp: -------------------------------------------------------------------------------- 1 | 2 | MyConfigurableApp 3 | 4 | This is a template for a SEMS 0.10.0 5 | application plug-in written in C++. 6 | If can be configured with its own 7 | configuration file. 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myconfigurableapp/etc/myconfigurableapp.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MYCONFIGURABLEAPP_ANNFILE 2 | announcement_file=/usr/local/lib/sems/audio/default_en.wav 3 | #ENDCFGOPTION 4 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myjukebox/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = myjukebox 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/tutorial/myjukebox/Readme.myjukebox: -------------------------------------------------------------------------------- 1 | myjukebox 2 | 3 | This application demonstrates how to do simple IVR by reacting on DTMF 4 | input. It plays the file with the corresponding name (0.wav, 1.wav, ...) 5 | if a key on the phone is pressed. -------------------------------------------------------------------------------- /apps/examples/tutorial/myjukebox/etc/myjukebox.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MYCONFIGURABLEAPP_ANNFILE 2 | jukebox_dir=/tmp/jukebox/ 3 | #ENDCFGOPTION 4 | -------------------------------------------------------------------------------- /apps/examples/urlcatcher/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = urlcatcher 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/examples/urlcatcher/Readme.urlcatcher: -------------------------------------------------------------------------------- 1 | urlcatcher 2 | ---------- 3 | 4 | The urlcatcher demonstrates how to open a URL embedded in SDP 5 | when a call comes in, like the webconference application does. 6 | This way, e.g. a conference control web page can be shown which 7 | allows to list participants, dial in further users etc. 8 | 9 | How to use it: 10 | 11 | o register your SEMS at some registrar with reg_agent 12 | o direct calls to urlcatcher (application=urlcatcher) 13 | o call yourself from https://webconference.iptel.org or your 14 | own web interface 15 | -------------------------------------------------------------------------------- /apps/examples/urlcatcher/etc/urlcatcher.conf: -------------------------------------------------------------------------------- 1 | # execute this command when an invite with URL comes in 2 | # 3 | # default: firefox 4 | # 5 | # e.g. firefox 6 | # kfmclient exec 7 | # 8 | url_exec_cmd="firefox" 9 | -------------------------------------------------------------------------------- /apps/gateway/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (gateway_SRCS 2 | GWSession.cpp 3 | GatewayFactory.cpp 4 | mISDNChannel.cpp 5 | mISDNNames.cpp 6 | mISDNStack.cpp 7 | ) 8 | 9 | ADD_DEFINITIONS(-DGW_VERSION=\\\"0.1\\\") 10 | INCLUDE_DIRECTORIES(${MISDN_INCLUDE_DIR}/mISDNuser) 11 | 12 | SET(sems_module_name gateway) 13 | SET(sems_module_libs mISDN isdnnet) 14 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 15 | -------------------------------------------------------------------------------- /apps/gateway/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = gateway 2 | 3 | module_ldflags =-lmISDN -lisdnnet 4 | module_cflags = 5 | 6 | COREPATH ?=../../core 7 | module_cflags += -DGW_VERSION="\"0.1\"" 8 | # -I/usr/local/src/lcr/mISDN-2008_01_12/include -I/usr/local/src/lcr/mISDNuser-2008_01_12/include 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/gateway/etc/gateway.conf: -------------------------------------------------------------------------------- 1 | callerdomain=192.168.0.15 2 | calleddomain=netitel.pl 3 | msn=6240495,6240496,6240497,6233270 4 | outprefixes=0*,1*,2*,3*,4*,5*,6*,7*,8*,9*,* 5 | defaultmsn=6240495 6 | auth_enable=yes 7 | auth_realm=netitel.pl 8 | auth_user=semsgw 9 | auth_pwd=*** -------------------------------------------------------------------------------- /apps/gateway/etc/gateway.conf.cmake: -------------------------------------------------------------------------------- 1 | callerdomain=192.168.0.15 2 | calleddomain=netitel.pl 3 | msn=6240495,6240496,6240497,6233270 4 | outprefixes=0*,1*,2*,3*,4*,5*,6*,7*,8*,9*,* 5 | defaultmsn=6240495 6 | auth_enable=yes 7 | auth_realm=netitel.pl 8 | auth_user=semsgw 9 | auth_pwd=*** -------------------------------------------------------------------------------- /apps/gateway/globals.h: -------------------------------------------------------------------------------- 1 | #ifndef _GLOBALS_H_ 2 | #define _GLOBALS_H_ 3 | 4 | #define MODULE_NAME "gateway" 5 | #define FAIL 0 6 | #define OK 1 7 | #define MAX_NUM_LEN 20 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /apps/gateway/mISDNNames.h: -------------------------------------------------------------------------------- 1 | #ifndef _MISDNNAMES_H_ 2 | #define _MISDNNAMES_H_ 3 | class mISDNNames { 4 | public: 5 | static const char* Message(int i); 6 | static const char* NPI(int i); 7 | static const char* TON(int i); 8 | static const char* Presentation(int i); 9 | static const char* Screening(int i); 10 | static const char* isdn_prim[4]; 11 | static const char* IE_Names[37]; 12 | }; 13 | #endif 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/ivr/IvrAudioMixIn.h: -------------------------------------------------------------------------------- 1 | #ifndef IvrAudioMixIn_h 2 | #define IvrAudioMixIn_h 3 | 4 | // Python stuff 5 | #include 6 | #include 7 | 8 | #include "AmAudioMixIn.h" 9 | 10 | /** \brief python IVR wrapper for AmAudioMixIn */ 11 | typedef struct { 12 | 13 | PyObject_HEAD 14 | AmAudioMixIn* mix; 15 | 16 | } IvrAudioMixIn; 17 | 18 | extern PyTypeObject IvrAudioMixInType; 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /apps/ivr/IvrDialogBase.h: -------------------------------------------------------------------------------- 1 | #ifndef IvrDialogBase_h 2 | #define IvrDialogBase_h 3 | 4 | // Python stuff 5 | #include 6 | #include "structmember.h" 7 | 8 | extern PyTypeObject IvrDialogBaseType; 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /apps/ivr/IvrSipDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef IvrSipDialog_h 2 | #define IvrSipDialog_h 3 | 4 | // Python stuff 5 | #include 6 | #include "structmember.h" 7 | 8 | extern PyTypeObject IvrSipDialogType; 9 | 10 | class AmSipDialog; 11 | PyObject* IvrSipDialog_FromPtr(AmSipDialog* dlg); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /apps/ivr/Makefile.defs: -------------------------------------------------------------------------------- 1 | # Python version: 2.3, 2.4, 2.5, and 3.x 2 | # 3 | PYTHON_VERSION ?= $(shell python2 -c 'import sys;print sys.version[0:3]') 4 | PYTHON_VERSION ?= $(shell python -c 'import sys;print sys.version[0:3]') 5 | PYTHON_VERSION ?= $(shell python3 -c 'import sys;print("%d.%d" % (sys.version_info.major,sys.version_info.minor))') 6 | 7 | 8 | PY_VER = $(PYTHON_VERSION) 9 | PY_EXE = python$(PY_VER) 10 | 11 | # For flite text-to-speech set TTS = y 12 | # 13 | TTS ?= n 14 | 15 | FLITE_DIR = /usr/src/flite-1.2-release 16 | ALT_FLITE_DIR = /usr/include/flite 17 | -------------------------------------------------------------------------------- /apps/ivr/moc/ivr.py: -------------------------------------------------------------------------------- 1 | 2 | config = dict() 3 | 4 | AUDIO_READ = 0 5 | AUDIO_WRITE = 1 6 | 7 | def getHeader(str1,str2): 8 | pass 9 | 10 | class IvrDialogBase: 11 | 12 | def enqueue(self,a1,a2): 13 | pass 14 | 15 | def flush(self): 16 | pass 17 | 18 | def bye(self): 19 | pass 20 | 21 | def stopSession(self): 22 | pass 23 | 24 | class IvrAudioFile: 25 | 26 | def open(self,filename,mode): 27 | pass 28 | -------------------------------------------------------------------------------- /apps/ivr/moc/log.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/ivr/moc/log.py -------------------------------------------------------------------------------- /apps/ivr/py_comp: -------------------------------------------------------------------------------- 1 | import compileall 2 | compileall.main() 3 | -------------------------------------------------------------------------------- /apps/ivr/python_inc.py: -------------------------------------------------------------------------------- 1 | import distutils.sysconfig 2 | 3 | print(distutils.sysconfig.get_python_inc(True)) 4 | -------------------------------------------------------------------------------- /apps/ivr/python_lib.py: -------------------------------------------------------------------------------- 1 | import distutils.sysconfig 2 | 3 | print(distutils.sysconfig.get_python_lib(True,True)) 4 | -------------------------------------------------------------------------------- /apps/jsonrpc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (jsonrpc_SRCS 2 | JsonRPC.cpp 3 | JsonRPCServer.cpp 4 | RpcPeer.cpp 5 | RpcServerLoop.cpp 6 | RpcServerThread.cpp 7 | ) 8 | 9 | ADD_DEFINITIONS(-I${LIBEV_INCLUDE_DIR}) 10 | SET(sems_module_name jsonrpc) 11 | SET(sems_module_libs ${sems_module_libs} ev) 12 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 13 | -------------------------------------------------------------------------------- /apps/jsonrpc/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = jsonrpc 2 | 3 | module_ldflags = -lev 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -fno-strict-aliasing 5 | 6 | COREPATH ?=../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/jsonrpc/etc/jsonrpc.conf: -------------------------------------------------------------------------------- 1 | # jsonrpc_port - json-rpc server port to listen on 2 | # 3 | # optional; default: 7080 4 | # 5 | # jsonrpc_port=7080 6 | 7 | 8 | # server_threads - json-rpc server threads to start 9 | # 10 | # optional; default: 5 11 | # 12 | # server_threads=5 13 | 14 | -------------------------------------------------------------------------------- /apps/jsonrpc/etc/jsonrpc.conf.cmake: -------------------------------------------------------------------------------- 1 | # jsonrpc_port - json-rpc server port to listen on 2 | # 3 | # optional; default: 7080 4 | # 5 | # jsonrpc_port=7080 6 | 7 | 8 | # server_threads - json-rpc server threads to start 9 | # 10 | # optional; default: 5 11 | # 12 | # server_threads=5 13 | 14 | -------------------------------------------------------------------------------- /apps/mailbox/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=mailbox 3 | VERSION=2.2.0-1 4 | 5 | LIBDIR=imap_mailbox 6 | 7 | extra_install = $(NAME)_audio 8 | 9 | include ../ivr/Makefile.ivr_application 10 | 11 | -------------------------------------------------------------------------------- /apps/mailbox/etc/mailbox.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MAILBOX_ANNOUNCEFILE 2 | annoucement_file=/usr/lib/sems/audio/mailbox/default_en.wav 3 | #ENDCFGOPTION 4 | 5 | beep_file=/usr/lib/sems/audio/mailbox/beep.wav 6 | -------------------------------------------------------------------------------- /apps/mailbox/etc/mailbox.conf.cmake: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MAILBOX_ANNOUNCEFILE 2 | annoucement_file=${SEMS_AUDIO_PREFIX}/sems/audio/mailbox/default_en.wav 3 | #ENDCFGOPTION 4 | 5 | beep_file=${SEMS_AUDIO_PREFIX}/sems/audio/mailbox/beep.wav 6 | -------------------------------------------------------------------------------- /apps/mailbox/etc/mailbox_query.conf: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MAILBOX_QUERY_WAV_DIR 2 | wav_dir=/usr/lib/sems/audio/mailbox/ 3 | #ENDCFGOPTION 4 | 5 | beep_file=/usr/lib/sems/audio/mailbox/beep.wav 6 | -------------------------------------------------------------------------------- /apps/mailbox/etc/mailbox_query.conf.cmake: -------------------------------------------------------------------------------- 1 | #CFGOPTION_SEMS_MAILBOX_QUERY_WAV_DIR 2 | wav_dir=${SEMS_AUDIO_PREFIX}/sems/audio/mailbox/ 3 | #ENDCFGOPTION 4 | 5 | beep_file=${SEMS_AUDIO_PREFIX}/sems/audio/mailbox/beep.wav 6 | -------------------------------------------------------------------------------- /apps/mailbox/imap_mailbox/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/imap_mailbox/__init__.py -------------------------------------------------------------------------------- /apps/mailbox/wav/and.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/and.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/beep.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/bye.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/bye.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/default_en.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/default_en.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/first_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/first_msg.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/msg_deleted.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/msg_deleted.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/msg_menu.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/msg_menu.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/msg_saved.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/msg_saved.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/new_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/new_msg.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/next_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/next_msg.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/no_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/no_msg.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/saved_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/saved_msg.wav -------------------------------------------------------------------------------- /apps/mailbox/wav/you_have.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/mailbox/wav/you_have.wav -------------------------------------------------------------------------------- /apps/mobile_push/load_test/call_gen.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from xmlrpclib import * 3 | s = ServerProxy('http://127.0.0.1:8092') 4 | print s.setTarget(100, 1, 0, '4', '192.168.5.110', 2, 0, 30, 40) 5 | 6 | -------------------------------------------------------------------------------- /apps/mobile_push/load_test/reg_client.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from xmlrpclib import * 4 | from random import * 5 | import time 6 | 7 | s = ServerProxy('http://127.0.0.1:8092') 8 | 9 | r = set() 10 | 11 | while True: 12 | n = randint(400, 499) 13 | if n in r: 14 | print s.removeRegistration(n) 15 | r.remove(n) 16 | else: 17 | print s.createRegistration(n, str(n), str(n), '192.168.5.110') 18 | r.add(n) 19 | 20 | time.sleep(.1) -------------------------------------------------------------------------------- /apps/mobile_push/load_test/sems_cfg/core/etc/callgen.conf: -------------------------------------------------------------------------------- 1 | play_file=wav/default_en.wav 2 | digits_dir=../apps/examples/call_gen/wav/ 3 | from_host=callgen.example.net -------------------------------------------------------------------------------- /apps/monitoring/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (monitoring_SRCS 2 | Monitoring.cpp 3 | ) 4 | 5 | INSTALL(PROGRAMS 6 | tools/sems-list-calls 7 | tools/sems-list-active-calls 8 | tools/sems-list-finished-calls 9 | tools/sems-get-callproperties 10 | DESTINATION ${SEMS_EXEC_PREFIX}/sbin 11 | ) 12 | 13 | SET(sems_module_name monitoring) 14 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 15 | -------------------------------------------------------------------------------- /apps/monitoring/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = monitoring 2 | 3 | module_ldflags = 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" 5 | 6 | extra_install = install_tools 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | install_tools: 12 | @$(MAKE) -C tools/ install 13 | -------------------------------------------------------------------------------- /apps/monitoring/etc/monitoring.conf: -------------------------------------------------------------------------------- 1 | 2 | #run_garbage_collector=[yes | no] 3 | # 4 | # run garbage collection on expired session info? 5 | # Default: no 6 | # 7 | run_garbage_collector = yes 8 | 9 | #garbage_collector_interval=10 10 | # 11 | # run garbage collection every n seconds 12 | # Default: 10 13 | # 14 | #garbage_collector_interval = 20 15 | 16 | # retain_samples_s=10 17 | # 18 | # retain "sample" type values for n seconds 19 | # 20 | #retain_samples_s=20 21 | -------------------------------------------------------------------------------- /apps/monitoring/etc/monitoring.conf.cmake: -------------------------------------------------------------------------------- 1 | 2 | #run_garbage_collector=[yes | no] 3 | # 4 | # run garbage collection on expired session info? 5 | # Default: no 6 | # 7 | run_garbage_collector = yes 8 | 9 | #garbage_collector_interval=10 10 | # 11 | # run garbage collection every n seconds 12 | # Default: 10 13 | # 14 | #garbage_collector_interval = 20 15 | -------------------------------------------------------------------------------- /apps/monitoring/tools/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH_TOOLS ?= ../../../core 2 | include $(COREPATH_TOOLS)/../Makefile.defs 3 | 4 | monitoring_scripts = $(wildcard sems-*) 5 | 6 | all: install_tools 7 | install: install_tools 8 | 9 | install_tools: $(DESTDIR)$(bin_prefix)/$(bin_dir) 10 | @set -e; \ 11 | for r in $(monitoring_scripts) ; do \ 12 | x=`echo $$r | sed s/sems-/$(APP_NAME)-/g` ; \ 13 | echo "installing $$r -> $$x" ; \ 14 | $(INSTALL_BIN) $$r $(DESTDIR)$(bin_prefix)/$(bin_dir)/$$x ; \ 15 | done 16 | 17 | 18 | -------------------------------------------------------------------------------- /apps/monitoring/tools/sems-get-callproperties: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | from xmlrpclib import * 4 | import sys 5 | import pprint 6 | 7 | if len(sys.argv) != 2: 8 | print "usage: %s " % sys.argv[0] 9 | sys.exit(1) 10 | 11 | s = ServerProxy('http://localhost:8090') 12 | print "Active calls: %d" % s.calls() 13 | pp = pprint.PrettyPrinter(indent=4) 14 | res = s.di('monitoring','get', sys.argv[1]) 15 | pp.pprint(res) -------------------------------------------------------------------------------- /apps/monitoring/tools/sems-list-finished-calls: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | from xmlrpclib import * 5 | s = ServerProxy('http://localhost:8090') 6 | print "Active calls: %d" % s.calls() 7 | print s.di('monitoring','listFinished') 8 | -------------------------------------------------------------------------------- /apps/mp3/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mp3_SRCS 2 | mp3.c 3 | ) 4 | 5 | #ifeq ($(WITH_MPG123DECODER), yes) 6 | # module_ldflags += -lmpg123 7 | # module_cflags += -DWITH_MPG123DECODER 8 | 9 | SET(sems_module_name mp3) 10 | SET(sems_module_libs mp3lame) 11 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 12 | -------------------------------------------------------------------------------- /apps/msg_storage/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (msg_storage_SRCS 2 | MsgStorage.cpp 3 | ) 4 | 5 | #extra_install = spooldir 6 | #spooldir: 7 | # mkdir -p $(DESTDIR)/var/spool/voicebox 8 | 9 | SET(sems_module_name msg_storage) 10 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 11 | -------------------------------------------------------------------------------- /apps/msg_storage/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = msg_storage 2 | 3 | module_ldflags = 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" 5 | 6 | extra_install = spooldir 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | spooldir: 12 | mkdir -p $(DESTDIR)/var/spool/voicebox 13 | -------------------------------------------------------------------------------- /apps/msg_storage/MsgStorageAPI.h: -------------------------------------------------------------------------------- 1 | #ifndef _MSG_STORAGE_API_H 2 | #define _MSG_STORAGE_API_H 3 | 4 | #include 5 | 6 | #define MSG_OK 0 7 | #define MSG_EMSGEXISTS 1 8 | #define MSG_EUSRNOTFOUND 2 9 | #define MSG_EMSGNOTFOUND 3 10 | #define MSG_EALREADYCLOSED 4 11 | #define MSG_EREADERROR 5 12 | #define MSG_ENOSPC 6 13 | #define MSG_ESTORAGE 7 14 | 15 | #include "AmArg.h" 16 | 17 | class MessageDataFile 18 | : public AmObject { 19 | public: 20 | FILE* fp; 21 | MessageDataFile(FILE* fp) 22 | : fp(fp) { } 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /apps/msg_storage/etc/msg_storage.conf: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # storage_dir is where messages are saved on disk. this 4 | # folder must be writable. 5 | # 6 | # default: /var/spool/voicebox/ 7 | # 8 | #storage_dir=/var/spool/voicebox/ 9 | -------------------------------------------------------------------------------- /apps/msg_storage/etc/msg_storage.conf.cmake: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # storage_dir is where messages are saved on disk. this 4 | # folder must be writable. 5 | # 6 | # default: /var/spool/voicebox/ 7 | # 8 | #storage_dir=/var/spool/voicebox/ 9 | -------------------------------------------------------------------------------- /apps/mwi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (mwi_SRCS 2 | mwi.cpp 3 | ) 4 | 5 | SET(sems_module_name mwi) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/config.rules.txt) 8 | -------------------------------------------------------------------------------- /apps/mwi/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = mwi 2 | 3 | module_ldflags = 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" 5 | 6 | COREPATH ?=../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/mwi/etc/mwi.conf: -------------------------------------------------------------------------------- 1 | # Presence Server: 2 | presence_server=127.0.0.1 -------------------------------------------------------------------------------- /apps/pin_collect/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (pin_collect_audio_files 2 | enter_pin.wav 3 | welcome.wav 4 | ) 5 | 6 | SET(sems_module_name pin_collect) 7 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/config.rules.txt) 8 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/audio.rules.txt) 9 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/python.rules.txt) 10 | 11 | PYTHON_SOURCES_COMPILE(pin_collect.py ivr) 12 | SEMS_INSTALL_CONFIGS(pin_collect) 13 | SEMS_INSTALL_AUDIO("${sems_module_name}" "${${sems_module_name}_audio_files}") 14 | -------------------------------------------------------------------------------- /apps/pin_collect/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=pincollect 3 | VERSION=2.3.0-1 4 | 5 | LIBDIR=. 6 | 7 | extra_install = $(NAME)_audio 8 | 9 | include ../ivr/Makefile.ivr_application 10 | 11 | -------------------------------------------------------------------------------- /apps/pin_collect/test/authserver.py: -------------------------------------------------------------------------------- 1 | import SimpleXMLRPCServer 2 | 3 | #The server object 4 | class AuthServer: 5 | def __init__(self): 6 | self.keys = {} 7 | 8 | def authorize(self, room, pin): 9 | if self.keys.has_key(room): 10 | if self.keys[room] == pin: 11 | return 'OK' 12 | else: 13 | return 'FAIL' 14 | else: 15 | self.keys[room] = pin 16 | return 'OK' 17 | 18 | authsrv = AuthServer() 19 | server = SimpleXMLRPCServer.SimpleXMLRPCServer(("127.0.0.1", 9090)) 20 | server.register_instance(authsrv) 21 | 22 | #Go into the main listener loop 23 | print "Listening on port 9090" 24 | server.serve_forever() 25 | -------------------------------------------------------------------------------- /apps/pin_collect/wav/enter_pin.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/pin_collect/wav/enter_pin.wav -------------------------------------------------------------------------------- /apps/pin_collect/wav/welcome.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/pin_collect/wav/welcome.wav -------------------------------------------------------------------------------- /apps/precoded_announce/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (precoded_announce_SRCS 2 | PrecodedAnnounce.cpp 3 | ) 4 | 5 | set (precoded_announce_audio_files 6 | test.predef 7 | ) 8 | 9 | SET(sems_module_name precoded_announce) 10 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 11 | -------------------------------------------------------------------------------- /apps/precoded_announce/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = precoded_announce 2 | 3 | module_ldflags = 4 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/precoded_announce/etc/precoded_announce.conf: -------------------------------------------------------------------------------- 1 | # file played (predef definition file only, which references 2 | # the actual audio files for the payloads) 3 | # 4 | announcement_file=/usr/local/lib/sems/audio/precoded_announce/test.predef 5 | -------------------------------------------------------------------------------- /apps/precoded_announce/etc/precoded_announce.conf.cmake: -------------------------------------------------------------------------------- 1 | # file played (predef definition file only, which references 2 | # the actual audio files for the payloads) 3 | # 4 | announcement_file=${SEMS_AUDIO_PREFIX}/sems/audio/precoded_announce/test.predef 5 | -------------------------------------------------------------------------------- /apps/precoded_announce/wav/test.predef: -------------------------------------------------------------------------------- 1 | # format: 2 | # codec id;payload name;samplerate;channels;format parameters;frame milliseconds;frame bytes;filename (full path) 3 | # 4 | # to create e.g. .gsm file: 5 | # sox test.wav -r 8000 -c 1 -g test8k.gsm 6 | # 7 | 0;PCMU;8000;1;;20;160;test8k.pcmu; 8 | 8;PCMA;8000;1;;20;160;test8k.pcma; 9 | 96;iLBC;8000;1;;30;50;test8k.ilbc30; 10 | 97;iLBC;8000;1;mode=30;30;50;test8k.ilbc30; 11 | 98;iLBC;8000;1;mode=20;20;33;test8k.ilbc20; 12 | 3;GSM;8000;1;;20;33;test8k.gsm; 13 | 18;G729;8000;1;;20;20;test8k.g729; 14 | -------------------------------------------------------------------------------- /apps/py_sems/etc/py_sems.conf: -------------------------------------------------------------------------------- 1 | script_path=/usr/local/lib/sems/py_sems/ 2 | -------------------------------------------------------------------------------- /apps/py_sems/etc/py_sems.conf.cmake: -------------------------------------------------------------------------------- 1 | script_path=${SEMS_EXEC_PREFIX}/${SEMS_LIBDIR}/sems/py_sems/ 2 | -------------------------------------------------------------------------------- /apps/py_sems/py_comp: -------------------------------------------------------------------------------- 1 | import compileall 2 | compileall.main() 3 | -------------------------------------------------------------------------------- /apps/py_sems/python_inc.py: -------------------------------------------------------------------------------- 1 | import distutils.sysconfig 2 | 3 | print(distutils.sysconfig.get_python_inc(True)) 4 | -------------------------------------------------------------------------------- /apps/py_sems/python_lib.py: -------------------------------------------------------------------------------- 1 | import distutils.sysconfig 2 | 3 | print(distutils.sysconfig.get_python_lib(True,True)) 4 | -------------------------------------------------------------------------------- /apps/py_sems/sip/AmSipReply.sip: -------------------------------------------------------------------------------- 1 | 2 | struct AmSipReply 3 | { 4 | private: 5 | %TypeHeaderCode 6 | #include "../../../core/AmSipMsg.h" 7 | %End 8 | 9 | 10 | public: 11 | 12 | unsigned int code; 13 | string reason; 14 | string next_request_uri; 15 | string route; 16 | string hdrs; 17 | string body; 18 | 19 | // Parsed from the hdrs 20 | string callid; 21 | string remote_tag; 22 | string local_tag; 23 | unsigned int cseq; 24 | 25 | AmSipReply(); 26 | }; 27 | -------------------------------------------------------------------------------- /apps/py_sems/sip/AmUtils.sip: -------------------------------------------------------------------------------- 1 | 2 | %ModuleHeaderCode 3 | #include "AmUtils.h" 4 | %End 5 | 6 | // get a header parameter value 7 | string get_header_param(const string& /*hdr_string*/, const string& /*param_name*/); 8 | -------------------------------------------------------------------------------- /apps/py_sems/sip/py_sems.sip: -------------------------------------------------------------------------------- 1 | %Module py_sems_lib 0 2 | 3 | %Include string.sip 4 | %Include AmSipRequest.sip 5 | %Include AmSipReply.sip 6 | %Include AmSipDialog.sip 7 | %Include AmAudio.sip 8 | %Include PySemsDialog.sip 9 | %Include PySemsB2BDialog.sip 10 | %Include PySemsB2ABDialog.sip 11 | %Include AmUtils.sip 12 | %Include AmMimeBody.sip 13 | -------------------------------------------------------------------------------- /apps/reg_agent/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (reg_agent_SRCS 2 | RegistrationAgent.cpp 3 | ) 4 | 5 | SET(sems_module_name reg_agent) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/reg_agent/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = reg_agent 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/registrar_client/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (registrar_client_SRCS 2 | SIPRegistrarClient.cpp 3 | ) 4 | 5 | SET(sems_module_name registrar_client) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | -------------------------------------------------------------------------------- /apps/registrar_client/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = registrar_client 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | COREPATH ?=../../core 7 | include $(COREPATH)/plug-in/Makefile.app_module 8 | -------------------------------------------------------------------------------- /apps/rtmp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (rtmp_SRCS 2 | Rtmp.cpp 3 | RtmpAudio.cpp 4 | RtmpConnection.cpp 5 | RtmpSender.cpp 6 | RtmpServer.cpp 7 | RtmpSession.cpp 8 | RtmpUtils.cpp 9 | ) 10 | 11 | ADD_DEFINITIONS(-DNO_CRYPTO) 12 | SET(sems_module_libs ${sems_module_libs} rtmp speex) 13 | 14 | SET(sems_module_name rtmp) 15 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 16 | -------------------------------------------------------------------------------- /apps/rtmp/RtmpAudio.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/rtmp/RtmpAudio.cpp -------------------------------------------------------------------------------- /apps/rtmp/RtmpConnection.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/rtmp/RtmpConnection.cpp -------------------------------------------------------------------------------- /apps/rtmp/librtmp/librtmp.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=${prefix} 3 | libdir=${exec_prefix}/lib 4 | incdir=${prefix}/include 5 | 6 | Name: librtmp 7 | Description: RTMP implementation 8 | Version: @VERSION@ 9 | Requires: @CRYPTO_REQ@ 10 | URL: http://rtmpdump.mplayerhq.hu 11 | Libs: -L${libdir} -lrtmp -lz 12 | Cflags: -I${incdir} 13 | -------------------------------------------------------------------------------- /apps/sbc/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = sbc 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_target = make_call_control_mods 7 | extra_install = install_tools install_call_control_mods 8 | extra_clean = clean_call_control_mods 9 | 10 | COREPATH ?= ../../core 11 | include $(COREPATH)/plug-in/Makefile.app_module 12 | 13 | install_tools: 14 | @$(MAKE) -C tools/ install 15 | 16 | make_call_control_mods: 17 | @$(MAKE) -C call_control 18 | 19 | install_call_control_mods: 20 | @$(MAKE) -C call_control/ install 21 | 22 | clean_call_control_mods: 23 | @$(MAKE) -C call_control/ clean 24 | 25 | 26 | -------------------------------------------------------------------------------- /apps/sbc/arg_conversion.h: -------------------------------------------------------------------------------- 1 | #ifndef __ARG_CONVERSION 2 | #define __ARG_CONVERSION 3 | 4 | #include "AmArg.h" 5 | 6 | std::string arg2username(const AmArg &a); 7 | bool username2arg(const std::string &src, AmArg &dst); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /apps/sbc/call_control/bl_redis/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_bl_redis 2 | sbc_app_path = ../.. 3 | 4 | #HIREDIS_DIR?=hiredis/ 5 | #module_extra_objs = $(HIREDIS_DIR)libhiredis.a 6 | #module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) -I$(HIREDIS_DIR) 7 | 8 | module_ldflags = -lhiredis 9 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 10 | 11 | COREPATH =../../../../core 12 | include $(COREPATH)/plug-in/Makefile.app_module 13 | 14 | $(HIREDIS_DIR)libhiredis.a: $(HIREDIS_DIR) 15 | $(SH) $(MAKE) -C $(HIREDIS_DIR) libhiredis.a 16 | -------------------------------------------------------------------------------- /apps/sbc/call_control/bl_redis/etc/bl_redis.conf: -------------------------------------------------------------------------------- 1 | 2 | # REDIS server, default 127.0.0.1 3 | #redis_server=localhost 4 | 5 | # REDIS port, default 6379 6 | #redis_port=8094 7 | 8 | # reconnect timers (in milliseconds), separated by comma (,) 9 | #redis_reconnect_timers=5,10,20,50,100,500,1000 10 | 11 | # number of connections, default 10 12 | #redis_connections=10 13 | 14 | # enable full logging? (all responses) [no] 15 | #redis_full_logging=yes 16 | 17 | # pass (let call through) if server is unavailable? [no] 18 | #pass_on_bl_unavailable=yes 19 | -------------------------------------------------------------------------------- /apps/sbc/call_control/call_timer/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_call_timer 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/call_timer/etc/cc_call_timer.conf: -------------------------------------------------------------------------------- 1 | #the value of default_timer is used if no 'timer' 2 | #is configured in the SBC profile, or the value is empty 3 | # 4 | #default_timer=60 -------------------------------------------------------------------------------- /apps/sbc/call_control/ctl/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_ctl 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/dsm/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_dsm 2 | 3 | SEMSPATH ?= ../../../.. 4 | COREPATH ?= $(SEMSPATH)/core 5 | sbc_app_path = $(SEMSPATH)/apps/sbc 6 | dsm_app_path = $(SEMSPATH)/apps/dsm 7 | 8 | module_ldflags = 9 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) -I$(dsm_app_path) 10 | 11 | include $(COREPATH)/plug-in/Makefile.app_module 12 | -------------------------------------------------------------------------------- /apps/sbc/call_control/parallel_calls/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_pcalls 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/parallel_calls/etc/cc_pcalls.conf: -------------------------------------------------------------------------------- 1 | #refuse with code: 2 | #refuse_code=403 3 | 4 | #refuse with reason: 5 | #refuse_reason="Sorry, Too Many Calls" 6 | -------------------------------------------------------------------------------- /apps/sbc/call_control/prepaid/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_prepaid 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/prepaid_xmlrpc/etc/cc_prepaid_xmlrpc.conf: -------------------------------------------------------------------------------- 1 | # server address= 2 | # default: localhost 3 | #server_address=accserver.internal.mynet.net 4 | 5 | # server port= 6 | # default: 8000 7 | #server_port=8970 8 | 9 | # server_uri= 10 | # default: /RPC2 11 | #server_uri=/xmlrpc_acc 12 | -------------------------------------------------------------------------------- /apps/sbc/call_control/registrar/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_registrar 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/rest/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_rest 2 | sbc_app_path = ../.. 3 | 4 | # for libcurl version 7.17.1 works this: 5 | curl_prefix = `curl-config --prefix` 6 | curl_libs = `curl-config --libs` # -L$(curl_prefix)/lib 7 | curl_cflags = `curl-config --cflags` # -I$(curl_prefix)/includes 8 | 9 | module_ldflags = $(curl_libs) 10 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) $(curl_cflags) 11 | 12 | COREPATH =../../../../core 13 | include $(COREPATH)/plug-in/Makefile.app_module 14 | -------------------------------------------------------------------------------- /apps/sbc/call_control/syslog_cdr/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_syslog_cdr 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/template/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = cc_template 2 | sbc_app_path = ../.. 3 | 4 | module_ldflags = 5 | module_cflags = -DMOD_NAME=\"$(plug_in_name)\" -I$(sbc_app_path) 6 | 7 | COREPATH =../../../../core 8 | include $(COREPATH)/plug-in/Makefile.app_module 9 | -------------------------------------------------------------------------------- /apps/sbc/call_control/template/Readme.cc_template.txt: -------------------------------------------------------------------------------- 1 | CCTemplate - call control template module 2 | 3 | This is a template to start a call control module. It contains all 4 | the boilerplate and interface code. 5 | Just change: 6 | - cp -r to new directory (which will be built with default make target) 7 | - MOD_NAME in Makefile 8 | - rename .cpp, .h files 9 | - replace all "CCTemplate" with "MyName" in .cpp/.h 10 | -------------------------------------------------------------------------------- /apps/sbc/call_control/template/etc/cc_template.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/sbc/call_control/template/etc/cc_template.conf -------------------------------------------------------------------------------- /apps/sbc/etc/refuse.sbcprofile.conf: -------------------------------------------------------------------------------- 1 | # refuse SBC profile 2 | # 3 | # This refuses calls with "403 Forbidden" and adds a 4 | # Warning header with "Incoming calls not allowed". 5 | # 6 | # note: warning code 393 might not be the proper one for this usage. 7 | refuse_with="403 Forbidden" 8 | append_headers="Warning: 393 $rd \"Incoming calls not allowed\"" 9 | -------------------------------------------------------------------------------- /apps/sbc/etc/refuse.sbcprofile.conf.cmake: -------------------------------------------------------------------------------- 1 | # refuse SBC profile 2 | # 3 | # This refuses calls with "403 Forbidden" and adds a 4 | # Warning header with "Incoming calls not allowed". 5 | # 6 | # note: warning code 393 might not be the proper one for this usage. 7 | refuse_with="403 Forbidden" 8 | append_headers="Warning: 393 $rd \"Incoming calls not allowed\"" 9 | -------------------------------------------------------------------------------- /apps/sbc/etc/replytranslate.sbcprofile.conf: -------------------------------------------------------------------------------- 1 | # swap 603 and 488 replies: 2 | reply_translations="603=>488 Not acceptable here|488=>603 Decline" 3 | -------------------------------------------------------------------------------- /apps/sbc/etc/replytranslate.sbcprofile.conf.cmake: -------------------------------------------------------------------------------- 1 | # swap 603 and 488 replies: 2 | reply_translations="603=>488 Not acceptable here|488=>603 Decline" 3 | -------------------------------------------------------------------------------- /apps/sbc/etc/src_ipmap.conf: -------------------------------------------------------------------------------- 1 | # this is a sample regex mapping to map source address 10.0.* to internal1 profile 2 | # and 10.1.* to internal2 profile. 3 | # For example, used with this active_profile setting: 4 | # active_profile=$M($si=>src_ipmap),refuse 5 | # all other calls would be blocked. 6 | ^10\.0\..*=>internal1 7 | ^10\.1\..*=>internal2 8 | -------------------------------------------------------------------------------- /apps/sbc/etc/src_ipmap.conf.cmake: -------------------------------------------------------------------------------- 1 | # this is a sample regex mapping to map source address 10.0.* to internal1 profile 2 | # and 10.1.* to internal2 profile. 3 | # For example, used with this active_profile setting: 4 | # active_profile=$M($si=>src_ipmap),refuse 5 | # all other calls would be blocked. 6 | ^10\.0\..*=>internal1 7 | ^10\.1\..*=>internal2 8 | -------------------------------------------------------------------------------- /apps/sbc/sbc_events.h: -------------------------------------------------------------------------------- 1 | #ifndef __SBC_EVENTS_H 2 | #define __SBC_EVENTS_H 3 | 4 | #include "CallLeg.h" 5 | 6 | enum { 7 | /** This ID should be used by all CC modules that produce B2B events. Because 8 | * CC modules are developped indepenedently it is not possible to synchronize 9 | * their B2B event IDs so only this one should be used. */ 10 | CCB2BEventId = LAST_B2B_CALL_LEG_EVENT_ID + 1 11 | }; 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /apps/sbc/tools/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH_TOOLS ?= ../../../core 2 | COREPATH?=$(COREPATH_TOOLS) 3 | include $(COREPATH_TOOLS)/../Makefile.defs 4 | 5 | 6 | sbc_scripts = $(wildcard sems-sbc-*) 7 | 8 | all: install_tools 9 | install: install_tools 10 | 11 | install_tools: $(DESTDIR)$(bin_prefix)/$(bin_dir) 12 | @set -e; \ 13 | for r in $(sbc_scripts) ; do \ 14 | x=`echo $$r | sed s/sems-/$(APP_NAME)-/g` ; \ 15 | echo "installing $$r -> $$x" ; \ 16 | $(INSTALL_BIN) $$r $(DESTDIR)$(bin_prefix)/$(bin_dir)/$$x ; \ 17 | done 18 | 19 | 20 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-get-activeprofile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from xmlrpc.client import * 5 | s = ServerProxy('http://localhost:8090') 6 | print("Active calls: %d" % s.calls()) 7 | print(s.di('sbc','getActiveProfile')) 8 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-get-regex-map-names: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | s = ServerProxy('http://localhost:8090') 7 | print(s.di('sbc','getRegexMapNames')) 8 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-list-profiles: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from xmlrpc.client import * 5 | s = ServerProxy('http://localhost:8090') 6 | print("Active calls: %d" % s.calls()) 7 | print(s.di('sbc','listProfiles')) 8 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-load-callcontrol-modules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | if len(sys.argv) != 2: 7 | print("usage: %s " % sys.argv[0]) 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print("Active calls: %d" % s.calls()) 12 | print(s.di('sbc','loadCallcontrolModules',sys.argv[1])) 13 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-load-profile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | if len(sys.argv) != 3: 7 | print("usage: %s " % sys.argv[0]) 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print("Active calls: %d" % s.calls()) 12 | p ={ 'name' : sys.argv[1], 'path' : sys.argv[2] } 13 | print(s.di('sbc','loadProfile',p)) 14 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-reload-profile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | if len(sys.argv) != 2: 7 | print("usage: %s " % sys.argv[0]) 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print("Active calls: %d" % s.calls()) 12 | p ={ 'name' : sys.argv[1] } 13 | print(s.di('sbc','reloadProfile',p)) 14 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-reload-profiles: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from xmlrpc.client import * 5 | s = ServerProxy('http://localhost:8090') 6 | print(s.calls()) 7 | print(s.di('sbc','reloadProfiles')) 8 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-set-activeprofile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | if len(sys.argv) != 2: 7 | print("usage: %s " % sys.argv[0]) 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print("Active calls: %d" % s.calls()) 12 | print(s.di('sbc','setActiveProfile',sys.argv[1])) 13 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-set-regex-map: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | if len(sys.argv) != 3: 7 | print("usage: %s " % sys.argv[0]) 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print("Active calls: %d" % s.calls()) 12 | p ={ 'name' : sys.argv[1], 'file' : sys.argv[2] } 13 | print(s.di('sbc','setRegexMap',p)) 14 | -------------------------------------------------------------------------------- /apps/sbc/tools/sems-sbc-teardown-call: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpc.client import * 5 | 6 | if len(sys.argv) != 2: 7 | print("usage: %s " % sys.argv[0]) 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print("Active calls: %d" % s.calls()) 12 | res = s.di('sbc', 'postControlCmd', sys.argv[1], "teardown") 13 | 14 | if res[0] >= 200 and res[0] < 300: 15 | print("OK") 16 | sys.exit(0) 17 | else: 18 | print("Error: %s" % str(res)) 19 | sys.exit(2) 20 | -------------------------------------------------------------------------------- /apps/sw_vsc/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = sw_vsc 2 | 3 | module_ldflags = -lmysqlclient `pkg-config --libs re2` 4 | module_cflags = -I/usr/include/mysql `pkg-config --cflags re2` 5 | module_extra_objs = 6 | 7 | extra_install = $(plug_in_name)_audio 8 | 9 | COREPATH ?=../../core 10 | include $(COREPATH)/plug-in/Makefile.app_module 11 | -------------------------------------------------------------------------------- /apps/twit/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (twit_audio_files 2 | twit_account_msg.wav 3 | twit_err_msg.wav 4 | twit_ok_msg.wav 5 | twit_posting_msg.wav 6 | welcome_msg.wav 7 | ) 8 | 9 | SET(sems_module_name twit) 10 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/config.rules.txt) 11 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/audio.rules.txt) 12 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/python.rules.txt) 13 | 14 | PYTHON_SOURCES_COMPILE(twit.py ivr) 15 | SEMS_INSTALL_CONFIGS(twit) 16 | SEMS_INSTALL_AUDIO("${sems_module_name}" "${${sems_module_name}_audio_files}") 17 | -------------------------------------------------------------------------------- /apps/twit/Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME=twit 3 | VERSION=0.0.2 4 | 5 | LIBDIR= 6 | 7 | extra_install = $(NAME)_audio 8 | 9 | include ../ivr/Makefile.ivr_application 10 | 11 | -------------------------------------------------------------------------------- /apps/twit/etc/twit.conf: -------------------------------------------------------------------------------- 1 | # url where recordings will be available 2 | base_url = https://zaraa.iptel.org/twits/ 3 | 4 | #path to record, should then show up at the above url 5 | rec_path = /var/www/twits/ 6 | 7 | # prompts 8 | welcome_msg = /usr/local/lib/sems/audio/twit/twit_welcome.wav 9 | twit_err_msg = /usr/local/lib/sems/audio/twit/twit_err_msg.wav 10 | twit_account_msg = /usr/local/lib/sems/audio/twit/twit_account_msg.wav 11 | twit_ok_msg = /usr/local/lib/sems/audio/twit/twit_ok.wav 12 | twit_posting_msg = /usr/local/lib/sems/audio/twit/twit_posting_msg.wav 13 | -------------------------------------------------------------------------------- /apps/twit/etc/twit.conf.cmake: -------------------------------------------------------------------------------- 1 | # url where recordings will be available 2 | base_url = https://zaraa.iptel.org/twit/ 3 | 4 | #path to record, should then show up at the above url 5 | rec_path = /var/www/twits/ 6 | 7 | # prompts 8 | welcome_msg = ${SEMS_AUDIO_PREFIX}/sems/audio/twit/twit_welcome.wav 9 | twit_err_msg = ${SEMS_AUDIO_PREFIX}/sems/audio/twit/twit_error.wav 10 | twit_account_msg = ${SEMS_AUDIO_PREFIX}/sems/audio/twit/twit_account_msg.wav 11 | twit_ok_msg = ${SEMS_AUDIO_PREFIX}/sems/audio/twit/twit_ok.wav 12 | twit_posting_msg = ${SEMS_AUDIO_PREFIX}/sems/audio/twit/twit_posting.wav 13 | -------------------------------------------------------------------------------- /apps/twit/wav/twit_account_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/twit/wav/twit_account_msg.wav -------------------------------------------------------------------------------- /apps/twit/wav/twit_err_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/twit/wav/twit_err_msg.wav -------------------------------------------------------------------------------- /apps/twit/wav/twit_ok_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/twit/wav/twit_ok_msg.wav -------------------------------------------------------------------------------- /apps/twit/wav/twit_posting_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/twit/wav/twit_posting_msg.wav -------------------------------------------------------------------------------- /apps/twit/wav/twit_welcome.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/twit/wav/twit_welcome.wav -------------------------------------------------------------------------------- /apps/voicebox/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = voicebox 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | -------------------------------------------------------------------------------- /apps/voicebox/PromptOptions.h: -------------------------------------------------------------------------------- 1 | #ifndef _PROMPT_OPTIONS_H 2 | #define _PROMPT_OPTIONS_H 3 | 4 | struct PromptOptions { 5 | bool has_digits; 6 | bool digits_right; 7 | 8 | PromptOptions(bool has_digits, 9 | bool digits_right) 10 | : has_digits(has_digits), 11 | digits_right(digits_right) { } 12 | PromptOptions() 13 | : has_digits(false), 14 | digits_right(false) { } 15 | }; 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /apps/voicebox/wav/0.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/0.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/1.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/10.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/10.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/11.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/11.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/12.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/12.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/13.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/13.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/14.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/14.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/15.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/15.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/16.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/16.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/17.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/17.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/18.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/18.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/19.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/19.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/2.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/20.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/20.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/3.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/30.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/30.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/4.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/40.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/40.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/5.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/50.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/50.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/6.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/60.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/60.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/7.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/70.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/70.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/8.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/80.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/80.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/9.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/90.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/90.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/and.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/and.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/bye.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/bye.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/first_new_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/first_new_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/first_saved_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/first_saved_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/in_your_voicebox.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/in_your_voicebox.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/msg_deleted.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/msg_deleted.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/msg_end_menu.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/msg_end_menu.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/msg_menu.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/msg_menu.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/msg_saved.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/msg_saved.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/new_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/new_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/new_msgs.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/new_msgs.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/next_new_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/next_new_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/next_saved_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/next_saved_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/no_more_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/no_more_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/no_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/no_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/pin_prompt.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/pin_prompt.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/saved_msg.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/saved_msg.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/saved_msgs.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/saved_msgs.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x1.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x2.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x3.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x4.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x5.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x6.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x7.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x8.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/x9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/x9.wav -------------------------------------------------------------------------------- /apps/voicebox/wav/you_have.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicebox/wav/you_have.wav -------------------------------------------------------------------------------- /apps/voicemail/default.template: -------------------------------------------------------------------------------- 1 | subject: Voice message from: %from% 2 | from:voicemail@%domain% 3 | to:%email% 4 | header:X-Content: Voicemail 5 | 6 | Hello %user%@%domain%, 7 | 8 | %from% left a voice message for you. 9 | 10 | Thank you for using 's Voicemail. 11 | 12 | Your voicemail system. 13 | 14 | ------------------------------------------------------------- 15 | This message was created by 's voicemail system. 16 | Please review www. for more information. 17 | ------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /apps/voicemail/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicemail/wav/beep.wav -------------------------------------------------------------------------------- /apps/voicemail/wav/default_en.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/voicemail/wav/default_en.wav -------------------------------------------------------------------------------- /apps/webconference/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (webconference_SRCS 2 | CallStats.cpp 3 | RoomInfo.cpp 4 | WebConference.cpp 5 | WebConferenceDialog.cpp 6 | ) 7 | 8 | set (webconference_audio_files 9 | 0.wav 10 | 1.wav 11 | 2.wav 12 | 3.wav 13 | 4.wav 14 | 5.wav 15 | 6.wav 16 | 7.wav 17 | 8.wav 18 | 9.wav 19 | beep.wav 20 | entering_conference.wav 21 | first_participant.wav 22 | pin_prompt.wav 23 | wrong_pin.wav 24 | ) 25 | 26 | SET(sems_module_name webconference) 27 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 28 | -------------------------------------------------------------------------------- /apps/webconference/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = webconference 2 | 3 | module_ldflags = 4 | module_cflags = 5 | 6 | extra_install = $(plug_in_name)_audio install_tools 7 | 8 | COREPATH ?=../../core 9 | include $(COREPATH)/plug-in/Makefile.app_module 10 | 11 | install_tools: 12 | @$(MAKE) -C tools/ install 13 | -------------------------------------------------------------------------------- /apps/webconference/pyqtgui/Makefile: -------------------------------------------------------------------------------- 1 | 2 | all: participant.py conftable.py callbox.py account.py 3 | 4 | install: all 5 | cp *.py tablet/conf 6 | 7 | %.py: %.ui 8 | pyuic4 $< -o $@ 9 | -------------------------------------------------------------------------------- /apps/webconference/pyqtgui/accountconfig.py.sample: -------------------------------------------------------------------------------- 1 | # set this to the SIP account you want to use to make calls 2 | DOMAIN="iptel.org" 3 | USER="someuser" 4 | PASSWORD="somepassword" 5 | 6 | # usually the same as USER 7 | AUTH_USER=USER 8 | -------------------------------------------------------------------------------- /apps/webconference/tools/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH_TOOLS ?= ../../../core 2 | COREPATH ?= ../../../core 3 | include $(COREPATH_TOOLS)/../Makefile.defs 4 | 5 | wc_scripts = $(wildcard sems-webconference-*) 6 | 7 | all: install_tools 8 | install: install_tools 9 | 10 | install_tools: $(DESTDIR)$(bin_prefix)/$(bin_dir) 11 | @set -e; \ 12 | for r in $(wc_scripts) ; do \ 13 | x=`echo $$r | sed s/sems-/$(APP_NAME)-/g` ; \ 14 | echo "installing $$r -> $$x" ; \ 15 | $(INSTALL_BIN) $$r $(DESTDIR)$(bin_prefix)/$(bin_dir)/$$x ; \ 16 | done 17 | 18 | 19 | -------------------------------------------------------------------------------- /apps/webconference/tools/sems-webconference-addparticipant: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpclib import * 5 | 6 | if len(sys.argv) != 4: 7 | print "usage: %s " % sys.argv[0] 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print "Active calls: %d" % s.calls() 12 | print s.di('webconference','addParticipant', sys.argv[1], sys.argv[2], sys.argv[3]) 13 | -------------------------------------------------------------------------------- /apps/webconference/tools/sems-webconference-roomcreate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpclib import * 5 | 6 | if len(sys.argv) != 2: 7 | print "usage: %s " % sys.argv[0] 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print "Active calls: %d" % s.calls() 12 | print s.di('webconference','roomCreate', sys.argv[1]) 13 | -------------------------------------------------------------------------------- /apps/webconference/tools/sems-webconference-roominfo: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | from xmlrpclib import * 5 | 6 | if len(sys.argv) != 3: 7 | print "usage: %s " % sys.argv[0] 8 | sys.exit(1) 9 | 10 | s = ServerProxy('http://localhost:8090') 11 | print "Active calls: %d" % s.calls() 12 | print s.di('webconference','roomInfo', sys.argv[1], sys.argv[2]) 13 | -------------------------------------------------------------------------------- /apps/webconference/wav/0.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/0.wav -------------------------------------------------------------------------------- /apps/webconference/wav/1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/1.wav -------------------------------------------------------------------------------- /apps/webconference/wav/2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/2.wav -------------------------------------------------------------------------------- /apps/webconference/wav/3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/3.wav -------------------------------------------------------------------------------- /apps/webconference/wav/4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/4.wav -------------------------------------------------------------------------------- /apps/webconference/wav/5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/5.wav -------------------------------------------------------------------------------- /apps/webconference/wav/6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/6.wav -------------------------------------------------------------------------------- /apps/webconference/wav/7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/7.wav -------------------------------------------------------------------------------- /apps/webconference/wav/8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/8.wav -------------------------------------------------------------------------------- /apps/webconference/wav/9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/9.wav -------------------------------------------------------------------------------- /apps/webconference/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/beep.wav -------------------------------------------------------------------------------- /apps/webconference/wav/entering_conference.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/entering_conference.wav -------------------------------------------------------------------------------- /apps/webconference/wav/first_participant.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/first_participant.wav -------------------------------------------------------------------------------- /apps/webconference/wav/pin_prompt.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/pin_prompt.wav -------------------------------------------------------------------------------- /apps/webconference/wav/wrong_pin.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/wrong_pin.wav -------------------------------------------------------------------------------- /apps/webconference/wav/wrong_pin_bye.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/webconference/wav/wrong_pin_bye.wav -------------------------------------------------------------------------------- /apps/xmlrpc2di/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (xmlrpc2di_SRCS 2 | MultithreadXmlRpcServer.cpp 3 | TOXmlRpcClient.cpp 4 | XMLRPC2DI.cpp 5 | ) 6 | 7 | ADD_SUBDIRECTORY (xmlrpc++) 8 | INCLUDE_DIRECTORIES (xmlrpc++/src) 9 | 10 | SET(sems_module_name xmlrpc2di) 11 | SET(sems_module_libs xmlrpcpp) 12 | 13 | IF(OPENSSL_FOUND) 14 | ADD_DEFINITIONS(-DHAVE_XMLRPCPP_SSL -DXMLRPCPP_SUPPORT_STRUCT_ACCESS) 15 | SET(sems_module_libs ${sems_module_libs} ssl) 16 | ENDIF(OPENSSL_FOUND) 17 | 18 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 19 | -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/.cvsignore: -------------------------------------------------------------------------------- 1 | Debug Release doc *.ncb *.opt *.plg *.suo -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY (src) 2 | -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/README.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/xmlrpc2di/xmlrpc++/README.html -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/src/XmlRpcServerMethod.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "XmlRpcServerMethod.h" 3 | #include "XmlRpcServer.h" 4 | 5 | namespace XmlRpc { 6 | 7 | 8 | XmlRpcServerMethod::XmlRpcServerMethod(std::string const& name, XmlRpcServer* server) 9 | { 10 | _name = name; 11 | _server = server; 12 | if (_server) _server->addMethod(this); 13 | } 14 | 15 | XmlRpcServerMethod::~XmlRpcServerMethod() 16 | { 17 | if (_server) _server->removeMethod(this); 18 | } 19 | 20 | 21 | } // namespace XmlRpc 22 | -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/src/base64.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/xmlrpc2di/xmlrpc++/src/base64.h -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/test/.cvsignore: -------------------------------------------------------------------------------- 1 | Debug 2 | Release 3 | doc 4 | *.ncb 5 | *.opt 6 | *.plg 7 | *.suo 8 | -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/test/countTheEntities.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | validator1.countTheEntities 4 | 5 | 6 | &''<&"'>ehv<>iu'<<qo>"z"f 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/test/echo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | echo 4 | 5 | Hello Chris 6 | 123 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/xmlrpc2di/xmlrpc++/test/pngnow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/apps/xmlrpc2di/xmlrpc++/test/pngnow.png -------------------------------------------------------------------------------- /cmake/FindGsm.cmake: -------------------------------------------------------------------------------- 1 | FIND_PATH(GSM_INCLUDE_DIR gsm.h) 2 | FIND_LIBRARY(GSM_LIBRARIES NAMES gsm) 3 | 4 | IF(GSM_INCLUDE_DIR AND GSM_LIBRARIES) 5 | SET(GSM_FOUND TRUE) 6 | ENDIF(GSM_INCLUDE_DIR AND GSM_LIBRARIES) 7 | 8 | IF(GSM_FOUND) 9 | IF (NOT Gsm_FIND_QUIETLY) 10 | MESSAGE(STATUS "Found gsm includes: ${GSM_INCLUDE_DIR}/gsm.h") 11 | MESSAGE(STATUS "Found gsm library: ${GSM_LIBRARIES}") 12 | ENDIF (NOT Gsm_FIND_QUIETLY) 13 | ELSE(GSM_FOUND) 14 | IF (Gsm_FIND_REQUIRED) 15 | MESSAGE(FATAL_ERROR "Could NOT find gsm development files") 16 | ENDIF (Gsm_FIND_REQUIRED) 17 | ENDIF(GSM_FOUND) 18 | -------------------------------------------------------------------------------- /cmake/FindIlbc.cmake: -------------------------------------------------------------------------------- 1 | FIND_PATH(ILBC_INCLUDE_DIR ilbc.h) 2 | FIND_LIBRARY(ILBC_LIBRARIES NAMES ilbc) 3 | 4 | IF(ILBC_INCLUDE_DIR AND ILBC_LIBRARIES) 5 | SET(ILBC_FOUND TRUE) 6 | ENDIF(ILBC_INCLUDE_DIR AND ILBC_LIBRARIES) 7 | 8 | IF(ILBC_FOUND) 9 | IF (NOT Ilbc_FIND_QUIETLY) 10 | MESSAGE(STATUS "Found ilbc includes: ${ILBC_INCLUDE_DIR}/ilbc.h") 11 | MESSAGE(STATUS "Found ilbc library: ${ILBC_LIBRARIES}") 12 | ENDIF (NOT Ilbc_FIND_QUIETLY) 13 | ELSE(ILBC_FOUND) 14 | IF (Ilbc_FIND_REQUIRED) 15 | MESSAGE(FATAL_ERROR "Could NOT find ilbc development files") 16 | ENDIF (Ilbc_FIND_REQUIRED) 17 | ENDIF(ILBC_FOUND) 18 | -------------------------------------------------------------------------------- /cmake/FindLame.cmake: -------------------------------------------------------------------------------- 1 | FIND_PATH(LAME_INCLUDE_DIR lame/lame.h) 2 | FIND_LIBRARY(LAME_LIBRARIES NAMES mp3lame) 3 | 4 | IF(LAME_INCLUDE_DIR AND LAME_LIBRARIES) 5 | SET(LAME_FOUND TRUE) 6 | ENDIF(LAME_INCLUDE_DIR AND LAME_LIBRARIES) 7 | 8 | IF(LAME_FOUND) 9 | IF (NOT Lame_FIND_QUIETLY) 10 | MESSAGE(STATUS "Found lame includes: ${LAME_INCLUDE_DIR}/lame/lame.h") 11 | MESSAGE(STATUS "Found lame library: ${LAME_LIBRARIES}") 12 | ENDIF (NOT Lame_FIND_QUIETLY) 13 | ELSE(LAME_FOUND) 14 | IF (Lame_FIND_REQUIRED) 15 | MESSAGE(FATAL_ERROR "Could NOT find lame development files") 16 | ENDIF (Lame_FIND_REQUIRED) 17 | ENDIF(LAME_FOUND) 18 | -------------------------------------------------------------------------------- /cmake/audio.rules.txt: -------------------------------------------------------------------------------- 1 | MACRO(SEMS_INSTALL_AUDIO module_name audio_files) 2 | FOREACH (audio_file ${audio_files}) 3 | INSTALL( 4 | FILES wav/${audio_file} DESTINATION ${SEMS_AUDIO_PREFIX}/sems/audio/${sems_module_name} 5 | ) 6 | ENDFOREACH(audio_file ${audio_files}) 7 | ENDMACRO(SEMS_INSTALL_AUDIO) 8 | -------------------------------------------------------------------------------- /cmake/doc.rules.txt: -------------------------------------------------------------------------------- 1 | MACRO(SEMS_INSTALL_DOCS doc_files doc_dirs) 2 | 3 | FOREACH (doc_file ${doc_files}) 4 | INSTALL( 5 | FILES ${doc_file} DESTINATION ${SEMS_DOC_PREFIX}/sems-${SEMS_VERSION} 6 | ) 7 | ENDFOREACH(doc_file ${doc_files}) 8 | 9 | FOREACH (doc_dir ${doc_dirs}) 10 | INSTALL( 11 | DIRECTORY ${doc_dir} 12 | DESTINATION ${SEMS_DOC_PREFIX}/sems-${SEMS_VERSION} 13 | ) 14 | ENDFOREACH(doc_dir ${doc_dirs}) 15 | 16 | ENDMACRO(SEMS_INSTALL_DOCS) 17 | -------------------------------------------------------------------------------- /cmake/dsm.script.rules.txt: -------------------------------------------------------------------------------- 1 | # A place for common parts of SEMS DSM script rules 2 | 3 | INSTALL( 4 | FILES ${sems_dsm_script_names} DESTINATION ${SEMS_EXEC_PREFIX}/${SEMS_LIBDIR}/sems/dsm/ 5 | ) 6 | -------------------------------------------------------------------------------- /cmake/python.rules.txt: -------------------------------------------------------------------------------- 1 | MACRO(PYTHON_SOURCES_COMPILE python_files sems_python_dir) 2 | FOREACH (python_file ${python_files}) 3 | EXECUTE_PROCESS(COMMAND python -c "import py_compile; py_compile.compile('${CMAKE_CURRENT_SOURCE_DIR}/${python_file}')") 4 | EXECUTE_PROCESS(COMMAND python -O -c "import py_compile; py_compile.compile('${CMAKE_CURRENT_SOURCE_DIR}/${python_file}')") 5 | INSTALL (FILES ${python_file} ${python_file}c ${python_file}o DESTINATION ${SEMS_EXEC_PREFIX}/${SEMS_LIBDIR}/sems/${sems_python_dir}) 6 | ENDFOREACH(python_file ${python_files}) 7 | ENDMACRO(PYTHON_SOURCES_COMPILE python_files sems_python_dir) 8 | -------------------------------------------------------------------------------- /core/AmRingTone.h: -------------------------------------------------------------------------------- 1 | #ifndef _AmRingTone_h_ 2 | #define _AmRingTone_h_ 3 | 4 | #include "AmAudio.h" 5 | 6 | /** \brief audio device that generates ring tones with uesr specified period, f and f2 */ 7 | class AmRingTone: public AmAudio 8 | { 9 | int on_period; // ms 10 | int off_period;// ms 11 | int freq; // Hz 12 | int freq2; // Hz 13 | 14 | int length; 15 | 16 | public: 17 | AmRingTone(int length, int on, int off, int f, int f2=0); 18 | ~AmRingTone(); 19 | 20 | int read(unsigned int user_ts, unsigned int size); 21 | int write(unsigned int user_ts, unsigned int size); 22 | }; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /core/AmSipHeaders.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __AMSIPHEADERS_H__ 3 | #define __AMSIPHEADERS_H__ 4 | 5 | #include "sip/defs.h" 6 | 7 | #endif /* __AMSIPHEADERS_H__ */ 8 | -------------------------------------------------------------------------------- /core/AmUACAuth.h: -------------------------------------------------------------------------------- 1 | #ifndef _UACAuth_h_ 2 | #define _UACAuth_h_ 3 | #include "ampi/UACAuthAPI.h" 4 | #include "AmSession.h" 5 | #include "AmArg.h" 6 | 7 | class AmUACAuth { 8 | protected: 9 | AmUACAuth(); 10 | ~AmUACAuth(); 11 | public: 12 | /** 13 | unpack UAC auth credentials from an AmArg 14 | @return UACAuthCred object, NULL if failed 15 | */ 16 | 17 | static UACAuthCred* unpackCredentials(const AmArg& arg); 18 | 19 | /** 20 | enable SIP UAC authentication 21 | @return true if successful 22 | */ 23 | static bool enable(AmSession* s); 24 | 25 | }; 26 | #endif 27 | -------------------------------------------------------------------------------- /core/SdNotify.h: -------------------------------------------------------------------------------- 1 | #ifndef _SdNotify_h_ 2 | #define _SdNotify_h_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class SdNotifier 9 | { 10 | public: 11 | void ready(); 12 | void stopping(); 13 | void status(const std::string &s); 14 | 15 | void waiter(); // increases waiter count by one 16 | void running(); // decreases waiter count by one 17 | 18 | private: 19 | std::mutex _lock; 20 | std::condition_variable _cond; 21 | unsigned int waiters = 0; 22 | }; 23 | 24 | #endif // _SdNotify_h_ 25 | 26 | -------------------------------------------------------------------------------- /core/config.h: -------------------------------------------------------------------------------- 1 | #ifndef CONFIG_H 2 | #define CONFIG_H 3 | 4 | #define SEMS_VERSION "1.1.0-dev" 5 | #define OS "Linux" 6 | #define ARCH "32" 7 | 8 | #endif // CONFIG_H 9 | -------------------------------------------------------------------------------- /core/global_defs.h: -------------------------------------------------------------------------------- 1 | #ifndef _global_defs_h_ 2 | #define _global_defs_h_ 3 | 4 | /** 5 | * @brief Global definitions. 6 | * 7 | * Use this file only to #define global definitions 8 | * or macroses, not specificially related to the content 9 | * of the SIP message. 10 | * 11 | * If is related to the SIP message - then use core/sip/defs.h 12 | */ 13 | 14 | /** 15 | * DSM applications related block 16 | */ 17 | #define DSM_APP_OH "office-hours" 18 | #define DSM_APP_PRE_AN "pre-announce" 19 | #define DSM_APP_EARLYDB_PR "early-dbprompt" 20 | #define DSM_APP_P_L_CALLER "play-last-caller" 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /core/lib/.placeholder: -------------------------------------------------------------------------------- 1 | Please do not delete this file (Git does not like empty directories). -------------------------------------------------------------------------------- /core/plug-in/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY (adpcm) 2 | ADD_SUBDIRECTORY (echo) 3 | IF(SEMS_USE_SPANDSP) 4 | ADD_SUBDIRECTORY (g722) 5 | ENDIF(SEMS_USE_SPANDSP) 6 | #ADD_SUBDIRECTORY (g729) 7 | IF(GSM_FOUND) 8 | ADD_SUBDIRECTORY (gsm) 9 | ENDIF(GSM_FOUND) 10 | IF(SEMS_USE_ILBC) 11 | ADD_SUBDIRECTORY (ilbc) 12 | ENDIF(SEMS_USE_ILBC) 13 | #ADD_SUBDIRECTORY (isac) 14 | ADD_SUBDIRECTORY (l16) 15 | ADD_SUBDIRECTORY (session_timer) 16 | #ADD_SUBDIRECTORY (silk) 17 | IF(SPEEX_FOUND) 18 | ADD_SUBDIRECTORY (speex) 19 | ENDIF(SPEEX_FOUND) 20 | ADD_SUBDIRECTORY (stats) 21 | ADD_SUBDIRECTORY (uac_auth) 22 | ADD_SUBDIRECTORY (wav) 23 | -------------------------------------------------------------------------------- /core/plug-in/adpcm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (adpcm_SRCS 2 | adpcm.c 3 | g711.c 4 | g721.c 5 | g723_16.c 6 | g723_24.c 7 | g723_40.c 8 | g72x.c 9 | ) 10 | 11 | SET(sems_module_name adpcm) 12 | SET(adpcm_doc_files README_G711) 13 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 14 | -------------------------------------------------------------------------------- /core/plug-in/adpcm/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | plug_in_name = adpcm 3 | 4 | module_ldflags = 5 | module_cflags = 6 | 7 | include ../Makefile.audio_module 8 | -------------------------------------------------------------------------------- /core/plug-in/adpcm/g711.h: -------------------------------------------------------------------------------- 1 | #ifndef _G711_H 2 | #define _G711_H 3 | 4 | // The linear PCM codes are signed 16 bit values 5 | 6 | // G.711 A-law 7 | unsigned char linear2alaw(short pcm_val); 8 | short alaw2linear(unsigned char a_val); 9 | 10 | // G.711 u-law 11 | unsigned char linear2ulaw(short pcm_val); 12 | short ulaw2linear(unsigned char u_val); 13 | 14 | // A-law <-> u-law conversions 15 | unsigned char alaw2ulaw(unsigned char aval); 16 | unsigned char ulaw2alaw(unsigned char uval); 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /core/plug-in/echo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (echo_SRCS 2 | AmAudioEcho.cpp 3 | Echo.cpp 4 | ) 5 | 6 | SET(sems_module_name echo) 7 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 8 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/config.rules.txt) 9 | -------------------------------------------------------------------------------- /core/plug-in/echo/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | plug_in_name = echo 3 | 4 | module_ldflags = 5 | module_cflags = 6 | 7 | include ../Makefile.app_module 8 | -------------------------------------------------------------------------------- /core/plug-in/g722/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (g722_SRCS 2 | g722.c 3 | ) 4 | 5 | #module_cflags = -ansi # -DNOFPU 6 | 7 | SET(sems_module_name g722) 8 | SET(sems_module_libs spandsp) 9 | SET(g722_doc_files Readme.g722codec) 10 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 11 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/doc.rules.txt) 12 | -------------------------------------------------------------------------------- /core/plug-in/g722/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | 3 | plug_in_name = g722 4 | 5 | SPANDSP_INC= 6 | #/usr/include/ 7 | SPANDSP_LIB = -lspandsp 8 | 9 | module_ldflags = $(SPANDSP_LIB) 10 | module_cflags = -ansi # -DNOFPU 11 | 12 | ifdef NOFPU 13 | module_cflags += -DNOFPU 14 | endif 15 | 16 | include ../Makefile.audio_module 17 | -------------------------------------------------------------------------------- /core/plug-in/g722/Readme.g722codec: -------------------------------------------------------------------------------- 1 | This is a wrapper around the g722 codec from the spandsp library. 2 | 3 | G.722 is an ADPCM wideband (16khz) codec. Here the NB compatibility 4 | mode is used - it is decoded in and encoded from 8khz. 5 | 6 | See 7 | http://www.soft-switch.org/spandsp-modules.html 8 | and 9 | http://www.soft-switch.org/spandsp-doc/g722_page.html 10 | for details about spandsp. -------------------------------------------------------------------------------- /core/plug-in/g729/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (g729_SRCS 2 | g729.c 3 | ) 4 | 5 | SET(sems_module_name g729) 6 | SET(sems_module_libs speech core) 7 | SET(g729_doc_files Readme.g729.txt) 8 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 9 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/doc.rules.txt) 10 | -------------------------------------------------------------------------------- /core/plug-in/gsm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (gsm_SRCS 2 | gsm.c 3 | ) 4 | 5 | INCLUDE_DIRECTORIES(${GSM_INCLUDE_DIR}) 6 | 7 | SET(sems_module_name gsm) 8 | SET(sems_module_libs gsm) 9 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 10 | -------------------------------------------------------------------------------- /core/plug-in/gsm/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | 3 | plug_in_name = gsm 4 | 5 | module_ldflags = 6 | module_cflags = -I gsm-1.0-pl10/inc -DHAS_STDLIB_H 7 | 8 | module_extra_objs = gsm-1.0-pl10/lib/libgsm.a 9 | 10 | extra_clean = clean_gsmlib 11 | 12 | include ../Makefile.audio_module 13 | 14 | gsm-1.0-pl10/lib/libgsm.a:: 15 | cd gsm-1.0-pl10; $(MAKE) ./lib/libgsm.a 16 | 17 | .PHONY: clean_gsmlib 18 | clean_gsmlib: 19 | cd gsm-1.0-pl10; $(MAKE) clean 20 | -------------------------------------------------------------------------------- /core/plug-in/gsm/gsm-1.0-pl10/MACHINES: -------------------------------------------------------------------------------- 1 | The gsm library has been tested successfully on the following platforms: 2 | 3 | - Various Sun4's running SunOS 4.1.2 4 | - SPARC1 (SunOS 4.1.1) 5 | - Integrated Solutions 68k Optimum running 4.3BSD UNIX with a Green Hills cc 6 | - NeXTstation running NeXT-OS/Mach 3.0 7 | - No-name AT/386 with Xenix 2.3.2 (using -DSTUPID_COMPILER) 8 | - RS/6000-350 running AIX 3.2.0 9 | - RS/6000-320 running AIX 3.1.5 10 | - Alliant FX80 (Concentrix 5.7) 11 | - SGI Indigo XS4000 (IRIX 4.0.5F) 12 | -------------------------------------------------------------------------------- /core/plug-in/gsm/gsm-1.0-pl10/inc/unproto.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische 3 | * Universitaet Berlin. See the accompanying file "COPYRIGHT" for 4 | * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. 5 | */ 6 | 7 | /*$Header: /cvsroot/sems/answer_machine/plug-in/gsm/gsm-1.0-pl10/inc/unproto.h,v 1.1 2003/02/03 15:04:56 rco Exp $*/ 8 | 9 | #ifdef PROTO_H /* sic */ 10 | #undef PROTO_H 11 | 12 | #undef P 13 | #undef P0 14 | #undef P1 15 | #undef P2 16 | #undef P3 17 | #undef P4 18 | #undef P5 19 | #undef P6 20 | #undef P7 21 | #undef P8 22 | 23 | #endif /* PROTO_H */ 24 | -------------------------------------------------------------------------------- /core/plug-in/gsm/gsm-1.0-pl10/tls/taste.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische 3 | * Universitaet Berlin. See the accompanying file "COPYRIGHT" for 4 | * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. 5 | */ 6 | 7 | /* 8 | * common code to sweet.c and bitter.c 9 | */ 10 | 11 | #ifndef TASTE_H 12 | #define TASTE_H 13 | 14 | struct spex { 15 | 16 | char * var; 17 | int varsize; 18 | } ; 19 | 20 | #endif /* TASTE_H */ 21 | -------------------------------------------------------------------------------- /core/plug-in/ilbc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (ilbc_SRCS 2 | ilbc.c 3 | ) 4 | 5 | SET(sems_module_name ilbc) 6 | IF(ILBC_FOUND) 7 | SET(sems_module_libs ilbc) 8 | ELSE(ILBC_FOUND) 9 | ADD_SUBDIRECTORY (iLBC_rfc3951) 10 | INCLUDE_DIRECTORIES (iLBC_rfc3951) 11 | SET(sems_module_libs libilbc) 12 | ENDIF(ILBC_FOUND) 13 | 14 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 15 | 16 | -------------------------------------------------------------------------------- /core/plug-in/ilbc/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | 3 | plug_in_name = ilbc 4 | ILBC_DIR = ./iLBC_rfc3951 5 | 6 | module_ldflags = -lm -fPIC 7 | module_extra_objs = $(ILBC_DIR)/libilbc.a 8 | module_cflags = -I$(ILBC_DIR) 9 | 10 | extra_clean = clean_ilbclib 11 | 12 | include ../Makefile.audio_module 13 | 14 | $(ILBC_DIR)/libilbc.a: 15 | $(MAKE) -C $(ILBC_DIR) 16 | 17 | .PHONY: clean_ilbclib 18 | clean_ilbclib: 19 | $(MAKE) -C $(ILBC_DIR) clean 20 | -------------------------------------------------------------------------------- /core/plug-in/isac/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = isac 2 | COREPATH =../.. 3 | 4 | ISAC_DIR = libisac 5 | ISAC_LIB = $(ISAC_DIR)/libisac.a 6 | 7 | module_extra_objs = $(ISAC_LIB) 8 | extra_clean = clean_isac 9 | 10 | include ../Makefile.audio_module 11 | 12 | $(ISAC_LIB): 13 | $(MAKE) -C $(ISAC_DIR) lib 14 | 15 | .PHONY: clean_isac 16 | clean_isac: 17 | $(MAKE) -C $(ISAC_DIR) clean 18 | -------------------------------------------------------------------------------- /core/plug-in/l16/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (l16_SRCS 2 | l16.c 3 | ) 4 | 5 | SET(sems_module_name l16) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /core/plug-in/l16/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | plug_in_name = l16 3 | 4 | module_ldflags = 5 | module_cflags = 6 | 7 | ifeq ($(OS),solaris) 8 | # For ntohs and friends. 9 | module_ldflags += -lsocket -lnsl 10 | endif 11 | 12 | include ../Makefile.audio_module 13 | -------------------------------------------------------------------------------- /core/plug-in/opus/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | 3 | plug_in_name = opus 4 | 5 | #module_cflags = -I /opt/include 6 | module_ldflags = -lm -fPIC -lopus 7 | 8 | include ../Makefile.audio_module 9 | -------------------------------------------------------------------------------- /core/plug-in/session_timer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (session_timer_SRCS 2 | SessionTimer.cpp 3 | ) 4 | 5 | SET(sems_module_name session_timer) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /core/plug-in/session_timer/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | 3 | plug_in_name = session_timer 4 | 5 | module_ldflags = 6 | module_cflags = 7 | 8 | include ../Makefile.app_module 9 | -------------------------------------------------------------------------------- /core/plug-in/silk/Makefile: -------------------------------------------------------------------------------- 1 | plug_in_name = silk 2 | COREPATH =../.. 3 | 4 | SILK_DIR=SILK_SDK_SRC_v1.0.8/SILK_SDK_SRC_FIX_v1.0.8 5 | SILK_INC=$(SILK_DIR)/interface 6 | SILK_LIB = $(SILK_DIR)/libSKP_SILK_SDK.a 7 | 8 | module_cflags = -I $(SILK_INC) 9 | module_extra_objs = $(SILK_LIB) 10 | extra_clean = clean_silk 11 | 12 | include ../Makefile.audio_module 13 | 14 | $(SILK_LIB): 15 | $(MAKE) -C $(SILK_DIR) lib 16 | 17 | .PHONY: clean_silk 18 | clean_silk: 19 | $(MAKE) -C $(SILK_DIR) clean 20 | -------------------------------------------------------------------------------- /core/plug-in/speex/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (speex_SRCS 2 | speex.c 3 | ) 4 | 5 | INCLUDE_DIRECTORIES(${SPEEX_INCLUDE_DIR}) 6 | 7 | # module_cflags = -ansi # -DNOFPU 8 | 9 | add_library(speex SHARED IMPORTED) 10 | set_property(TARGET speex PROPERTY IMPORTED_LOCATION ${SPEEX_LIBRARIES}) 11 | 12 | SET(sems_module_name speex) 13 | SET(sems_module_libs speex) 14 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 15 | -------------------------------------------------------------------------------- /core/plug-in/stats/README.stats: -------------------------------------------------------------------------------- 1 | ***************************** 2 | * Statistics plug-in README * 3 | ***************************** 4 | 5 | Description: 6 | 7 | This module enables you to monitor Sems. It offers its 8 | informations through UDP. At the moment, only the number 9 | of active calls is available. 10 | 11 | 12 | Using sample program: 13 | 14 | 1. compile query_stats.c with: 15 | g++ -o query_stats query_stats.c 16 | 17 | 2. use: 18 | ./query_stats -s m.y.i.p -p port 19 | 20 | 21 | -------------------------------------------------------------------------------- /core/plug-in/stats/etc/stats.conf: -------------------------------------------------------------------------------- 1 | # IP of the monitoring interface: 2 | monit_udp_ip=127.0.0.1 3 | 4 | # port the statistics server should listen to: 5 | monit_udp_port=5040 6 | -------------------------------------------------------------------------------- /core/plug-in/stats/etc/stats.conf.cmake: -------------------------------------------------------------------------------- 1 | # IP of the monitoring interface: 2 | monit_udp_ip=127.0.0.1 3 | 4 | # port the statistics server should listen to: 5 | monit_udp_port=5040 6 | -------------------------------------------------------------------------------- /core/plug-in/uac_auth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (uac_auth_SRCS 2 | UACAuth.cpp 3 | ) 4 | 5 | SET(sems_module_name uac_auth) 6 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 7 | 8 | -------------------------------------------------------------------------------- /core/plug-in/uac_auth/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | plug_in_name = uac_auth 3 | 4 | #module_extra_objs = md5.o 5 | 6 | #extra_depends = md5.d 7 | #extra_clean = clean_md5 8 | 9 | module_ldflags = 10 | module_cflags = 11 | 12 | ifeq ($(OS),solaris) 13 | module_ldflags += -shared 14 | module_cflags += -shared 15 | endif 16 | 17 | #%.o : %.c %.d 18 | # $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ 19 | 20 | #%.d : %.c %.h Makefile 21 | # $(CC) -MM $< $(CFLAGS) $(CPPFLAGS) > $@ 22 | 23 | #.PHONY: clean_md5 24 | #clean_md5: 25 | # rm -f md5.o md5.d 26 | 27 | include ../Makefile.app_module 28 | -------------------------------------------------------------------------------- /core/plug-in/wav/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (wav_SRCS 2 | g711.c 3 | wav.c 4 | wav_hdr.c 5 | ) 6 | 7 | SET(sems_module_name wav) 8 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt) 9 | 10 | -------------------------------------------------------------------------------- /core/plug-in/wav/Makefile: -------------------------------------------------------------------------------- 1 | COREPATH =../.. 2 | plug_in_name = wav 3 | 4 | module_ldflags = 5 | module_cflags = 6 | 7 | include ../Makefile.audio_module 8 | -------------------------------------------------------------------------------- /core/sip/parse_extensions.h: -------------------------------------------------------------------------------- 1 | #ifndef __PARSE_EXTENSIONS_H__ 2 | #define __PARSE_EXTENSIONS_H__ 3 | 4 | 5 | enum { 6 | SIP_EXTENSION_100REL = 1<<0, 7 | #define SIP_EXTENSION_100REL SIP_EXTENSION_100REL 8 | }; 9 | 10 | bool parse_extensions(unsigned *extensions, const char *start, int len); 11 | 12 | #endif /* __PARSE_EXTENSIONS_H__ */ 13 | -------------------------------------------------------------------------------- /core/sip/parse_next_hop.h: -------------------------------------------------------------------------------- 1 | #ifndef _parse_next_hop_h_ 2 | #define _parse_next_hop_h_ 3 | 4 | #include "cstring.h" 5 | 6 | #include 7 | using std::list; 8 | 9 | struct sip_destination 10 | { 11 | cstring host; 12 | unsigned short port; 13 | cstring trsp; 14 | 15 | sip_destination() 16 | : host(), port(0), trsp() 17 | {} 18 | }; 19 | 20 | int parse_next_hop(const cstring& next_hop, 21 | list& dest_list); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /core/sip/raw_sender.h: -------------------------------------------------------------------------------- 1 | #ifndef _raw_sender_h_ 2 | #define _raw_sender_h_ 3 | 4 | struct sockaddr_storage; 5 | 6 | class raw_sender 7 | { 8 | static int rsock; 9 | 10 | raw_sender() {} 11 | ~raw_sender() {} 12 | 13 | public: 14 | static int init(); 15 | static int send(const char* buf, unsigned int len, int sys_if_idx, 16 | const sockaddr_storage* from, const sockaddr_storage* to); 17 | }; 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /core/tests/.gitignore: -------------------------------------------------------------------------------- 1 | sems_tests 2 | -------------------------------------------------------------------------------- /core/tests/sems_tests.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/core/tests/sems_tests.h -------------------------------------------------------------------------------- /core/tests/test_auth.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/tests/test_headers.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/tests/test_jsonarg.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/tests/test_replaces.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/tests/test_sdp.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/tests/test_uriparser.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/core/tests/test_uriparser.h -------------------------------------------------------------------------------- /core/wav/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/core/wav/beep.wav -------------------------------------------------------------------------------- /core/wav/default_en.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/core/wav/default_en.wav -------------------------------------------------------------------------------- /debian/.gitignore: -------------------------------------------------------------------------------- 1 | *.debhelper 2 | *.log 3 | *.substvars 4 | /.debhelper/ 5 | /debhelper-build-stamp 6 | /files 7 | /ngcp-sems/ 8 | -------------------------------------------------------------------------------- /debian/ngcp-sems.dirs: -------------------------------------------------------------------------------- 1 | var/cache/ngcp-sems 2 | var/cache/ngcp-sems/audio_cache 3 | var/cache/ngcp-sems/callingcard 4 | -------------------------------------------------------------------------------- /debian/ngcp-sems.links: -------------------------------------------------------------------------------- 1 | usr/lib/systemd/system/ngcp-sems.service usr/lib/systemd/system/sems.service 2 | -------------------------------------------------------------------------------- /debian/ngcp-sems.lintian-overrides: -------------------------------------------------------------------------------- 1 | ngcp-sems: possible-gpl-code-linked-with-openssl 2 | ngcp-sems: init.d-script-not-included-in-package etc/init.d/ngcp-sems 3 | ngcp-sems: service-file-is-not-a-file [usr/lib/systemd/system/sems.service] 4 | -------------------------------------------------------------------------------- /debian/ngcp-sems.maintscript: -------------------------------------------------------------------------------- 1 | rm_conffile /etc/default/ngcp-sems 1:1.6.0-1+0~mr6.3.0.0+0~ ngcp-sems 2 | rm_conffile /etc/init.d/ngcp-sems 1:1.6.0-1+0~mr6.3.0.0+0~ ngcp-sems 3 | -------------------------------------------------------------------------------- /debian/ngcp-sems.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | case "$1" in 6 | configure) 7 | # add sems user 8 | adduser --quiet --system --group --disabled-password --shell /bin/false \ 9 | --gecos "SIP Express Media Server" --home /var/run/ngcp-sems sems || true 10 | 11 | # Remove obsolete rc.d links. 12 | update-rc.d ngcp-sems remove 13 | ;; 14 | abort-upgrade|abort-remove|abort-deconfigure) 15 | exit 0 16 | ;; 17 | *) 18 | echo "postinst called with unknown argument '$1'" >&2 19 | exit 1 20 | ;; 21 | esac 22 | 23 | #DEBHELPER# 24 | 25 | exit 0 26 | -------------------------------------------------------------------------------- /debian/ngcp-sems.tmpfiles: -------------------------------------------------------------------------------- 1 | d /run/ngcp-sems 0755 sems sems 2 | d /ngcp-data/cache/ngcp-sems 0755 sems sems 3 | d /ngcp-data/cache/ngcp-sems/audio_cache 0755 sems sems 4 | d /ngcp-data/cache/ngcp-sems/callingcard 0755 sems sems 5 | L+ /var/cache/ngcp-sems - - - - /ngcp-data/cache/ngcp-sems 6 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /debian/source/include-binaries: -------------------------------------------------------------------------------- 1 | core/compat/getarch 2 | core/compat/getos 3 | -------------------------------------------------------------------------------- /debian/source/options: -------------------------------------------------------------------------------- 1 | extend-diff-ignore=.gitreview 2 | -------------------------------------------------------------------------------- /doc/Readme.ann_b2b.txt: -------------------------------------------------------------------------------- 1 | ******************************************************* 2 | * Pre-Call announcement with B2BUA Application Module * 3 | ******************************************************* 4 | 5 | Description: 6 | ------------ 7 | 8 | The annoucement server plays a wav file to the caller. 9 | It searches for files to play following these rules: 10 | 11 | 1) [AnnouncePath]/[Domain]/[User].wav 12 | 2) [AnnouncePath]/[User].wav 13 | 14 | Then it connects the caller to the r_uri in Back-To-Back 15 | User Agent (B2BUA) mode, thus staying in the signalling path 16 | of the call. 17 | -------------------------------------------------------------------------------- /doc/Readme.announcement.txt: -------------------------------------------------------------------------------- 1 | ****************************** 2 | * Announcement Server Module * 3 | ****************************** 4 | 5 | Description: 6 | ------------ 7 | 8 | The annoucement server plays a wav file to the caller. 9 | It searches for files to play following these rules: 10 | 11 | 1) [announce_path]/[Domain]/[User].wav 12 | 2) [announce_path]/[User].wav 13 | 3) [announce_path]/[default_announce] 14 | 15 | That's it. 16 | 17 | It can also loop the file if configured to do so. 18 | 19 | Now that really is it. 20 | -------------------------------------------------------------------------------- /doc/Readme.auth_b2b.txt: -------------------------------------------------------------------------------- 1 | 2 | auth_b2b application 3 | 4 | ------------------------------------------------- 5 | This application has been obsoleted by the sbc 6 | module. 7 | Please use the sbc module with the auth_b2b call 8 | profile for the same functionality. 9 | ------------------------------------------------- 10 | -------------------------------------------------------------------------------- /doc/Readme.diameter_client.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/Readme.diameter_client.txt -------------------------------------------------------------------------------- /doc/Readme.jsonrpc: -------------------------------------------------------------------------------- 1 | This plugin implements JSON-RPC protocol version 2.0 2 | (http://www.jsonrpc.org/specification) operating over TCP/Netstrings. 3 | Each request and response is of form : where 4 | tells the number of bytes in . 5 | 6 | Configuration file jsonrpc.conf can contain parameters jsonrpc_port 7 | (default 7080) and server_threads (default 5). 8 | -------------------------------------------------------------------------------- /doc/Readme.reg_agent.txt: -------------------------------------------------------------------------------- 1 | Readme for reg_agent module 2 | 3 | This module uses the registrar_client to register SEMS 4 | at a SIP registrar. The accounts (identities) are set in 5 | the config file. 6 | 7 | If the registration is not successful, it tries to 8 | re-register. 9 | 10 | This module depends on the registrar_client module. 11 | 12 | Loading uac_auth module is needed if the registration should 13 | be authenticated! 14 | -------------------------------------------------------------------------------- /doc/Readme.sst_b2b.txt: -------------------------------------------------------------------------------- 1 | SIP Session Timers (SST) enabled B2B application. 2 | 3 | ------------------------------------------------- 4 | This application has been obsoleted by the sbc 5 | module. 6 | Please use the sbc module with the sst_b2b call 7 | profile for the same functionality. 8 | ------------------------------------------------- 9 | -------------------------------------------------------------------------------- /doc/Readme.sw_prepaid_sip.txt: -------------------------------------------------------------------------------- 1 | ------------------------------------------------- 2 | This application has been obsoleted by the sbc 3 | module. 4 | Please use the sbc module with the prepaid call 5 | profile for the same functionality. 6 | ------------------------------------------------- 7 | -------------------------------------------------------------------------------- /doc/Readme.voicebox.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/Readme.voicebox.txt -------------------------------------------------------------------------------- /doc/dsm/examples/b2b_connect_extension/wav/Makefile: -------------------------------------------------------------------------------- 1 | SRCS=$(wildcard *.txt) 2 | WAVS=$(SRCS:.txt=.wav) 3 | 4 | all: 5 | 6 | @echo "use 'make tts' to generate prompts." 7 | tts: $(WAVS) 8 | 9 | %.wav : %.txt Makefile 10 | flite -f $< -o $(basename $@)_16k.wav 11 | sox $(basename $@)_16k.wav -r 8000 $@ 12 | -------------------------------------------------------------------------------- /doc/dsm/examples/b2b_connect_extension/wav/connecting.txt: -------------------------------------------------------------------------------- 1 | Now connecting to your party 2 | -------------------------------------------------------------------------------- /doc/dsm/examples/b2b_connect_extension/wav/enter_extension.txt: -------------------------------------------------------------------------------- 1 | Please enter the extension you want to connect, followed by the pound key. 2 | -------------------------------------------------------------------------------- /doc/dsm/examples/b2b_connect_extension/wav/failed_enter_extension.txt: -------------------------------------------------------------------------------- 1 | The extension you entered could not be reached. Please enter the extension you want to call. 2 | -------------------------------------------------------------------------------- /doc/dsm/examples/b2b_connect_extension/wav/sorry_problems.txt: -------------------------------------------------------------------------------- 1 | I am sorry you are having problems. If you can't resolve that issue, please call the customer care at 555. Good Bye. 2 | -------------------------------------------------------------------------------- /doc/dsm/examples/call/callsub.dsm: -------------------------------------------------------------------------------- 1 | initial state START 2 | enter { 3 | log(3, $pin); 4 | returnFSM(); 5 | }; 6 | -------------------------------------------------------------------------------- /doc/dsm/examples/call/calltest.dsm: -------------------------------------------------------------------------------- 1 | 2 | initial state START 3 | enter { 4 | playPrompt(hello); 5 | }; 6 | 7 | state ADDKEY; 8 | state FIN; 9 | 10 | transition "start pin entry" START - / set($pin = "") -> ADDKEY; 11 | 12 | transition "add a key" ADDKEY - keyTest(#key < 10) / 13 | { 14 | flushPlaylist(); 15 | append($pin, #key); 16 | playPrompt(#key); 17 | callFSM(callsub) 18 | } -> ADDKEY; 19 | 20 | 21 | transition bye_recvd ADDKEY - hangup() / stop(false) -> FIN; 22 | 23 | -------------------------------------------------------------------------------- /doc/dsm/examples/dsm_di_monit/wav/change.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/examples/dsm_di_monit/wav/change.wav -------------------------------------------------------------------------------- /doc/dsm/examples/dsm_di_monit/wav/taken.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/examples/dsm_di_monit/wav/taken.wav -------------------------------------------------------------------------------- /doc/dsm/examples/dsm_di_monit/wav/welcome.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/examples/dsm_di_monit/wav/welcome.wav -------------------------------------------------------------------------------- /doc/dsm/examples/handle_cancel.dsm: -------------------------------------------------------------------------------- 1 | -- handle cancel correctly 2 | -- by replying with 487 3 | -- 4 | -- this is only necessary if run_invite_event=yes 5 | -- and final reply to INVITE is delayed 6 | -- so CANCEL can happen while call setup is proceeding 7 | import(mod_dlg); 8 | initial state BEGIN; 9 | 10 | transition "inv got" BEGIN - invite / { 11 | set($connect_session=0); 12 | dlg.reply(101, Still Trying); 13 | } -> WAIT; 14 | 15 | transition "cancel" BEGIN - hangup / { 16 | dlg.reply(487, canceled); 17 | stop(false); 18 | } -> END; 19 | 20 | state WAIT; 21 | state END; -------------------------------------------------------------------------------- /doc/dsm/examples/pin/ok_pin.dsm: -------------------------------------------------------------------------------- 1 | -- this is a commend 2 | -- this is a comment 3 | 4 | -- this is a comment 5 | 6 | initial state START 7 | enter { 8 | playPrompt(ok_pin); 9 | }; 10 | -------------------------------------------------------------------------------- /doc/dsm/examples/play_file.dsm: -------------------------------------------------------------------------------- 1 | 2 | initial state START 3 | enter { 4 | playFile(/home/stefan/sub_nautilus.wav); 5 | }; 6 | 7 | transition "file ends" START - noAudioTest / stop(true) -> END; 8 | 9 | transition "file ends" START - hangup / stop(false) -> END; 10 | state END; 11 | -------------------------------------------------------------------------------- /doc/dsm/examples/sbc/sbc_test_app/sbc_test_app.conf: -------------------------------------------------------------------------------- 1 | 2 | # configuration for SBC DSM app 3 | 4 | # DSM configuration 5 | diag_path=../doc/dsm/examples/sbc/sbc_test_app 6 | load_diags=test_sbc 7 | register_apps=test_sbc 8 | 9 | mod_path=../apps/dsm/mods/lib/ 10 | run_invite_event=yes 11 | set_param_variables=yes 12 | 13 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- --- ---- 14 | # application configuration: 15 | 16 | my_config_var=val 17 | -------------------------------------------------------------------------------- /doc/dsm/examples/test_byehdr.dsm: -------------------------------------------------------------------------------- 1 | 2 | initial state START; 3 | 4 | transition "sess start" START - sessionStart / { 5 | playFile(wav/default_en.wav); 6 | } -> session_started; 7 | state session_started; 8 | 9 | transition "got bye" (START,session_started) - hangup / { 10 | log(1, #headers); 11 | stop; 12 | } -> end; 13 | state end; -------------------------------------------------------------------------------- /doc/dsm/examples/test_exception.dsm: -------------------------------------------------------------------------------- 1 | 2 | initial state START; 3 | 4 | 5 | transition "got to lobby" START - sessionStart -> lobby; 6 | state lobby 7 | enter { 8 | playFile(wav/default_en.wav); 9 | throw(bla,blub=blu;i=somevalue); 10 | }; 11 | 12 | transition "thrown error" lobby - exception; test(#blub=="blu"); / 13 | log(1, #i); stop(true) -> end; 14 | 15 | transition "file error" lobby - exception; test(#type="file") / stop(true) -> end; 16 | -------------------------------------------------------------------------------- /doc/dsm/examples/test_popen.dsm: -------------------------------------------------------------------------------- 1 | -- test popen 2 | import(mod_sys); 3 | import(mod_utils); 4 | 5 | initial state START 6 | enter { 7 | log(1,"Got into START state."); 8 | sys.popen($myresult="/bin/ls wav/*"); 9 | logVars(2); 10 | utils.splitStringCR($myresult); 11 | logVars(2); 12 | stop(true); 13 | }; 14 | 15 | transition "error executing" START - exception; test(#type==popen) / logParams(1); stop(true) -> END; 16 | transition "error closing" START - exception; test(#type==pclose) / logParams(1); stop(true) -> END; 17 | state END; -------------------------------------------------------------------------------- /doc/dsm/examples/test_remoteunreachable.dsm: -------------------------------------------------------------------------------- 1 | import(mod_dlg); 2 | 3 | initial state START 4 | enter { playFile(wav/default_en.wav) }; 5 | 6 | transition "remote unreachable" START - remoteDisappeared / { 7 | log(1, "oh, that's sad, the far end disappeared..."); 8 | -- handle it ourselves 9 | set(#processed="true"); 10 | stop(true); 11 | } -> END; 12 | 13 | state END; 14 | -------------------------------------------------------------------------------- /doc/dsm/examples/test_rtptimeout.dsm: -------------------------------------------------------------------------------- 1 | import(mod_dlg); 2 | 3 | initial state START 4 | enter { playFile(wav/default_en.wav) }; 5 | 6 | transition "remote unreachable" START - rtpTimeout / { 7 | log(1, "oh, that's sad, the far end seems to have disappeared..."); 8 | -- handle it ourselves 9 | set(#processed="true"); 10 | stop(true); 11 | } -> END; 12 | 13 | state END; 14 | -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/Makefile: -------------------------------------------------------------------------------- 1 | SRCS=$(wildcard *.txt) 2 | WAVS=$(SRCS:.txt=.wav) 3 | 4 | all: $(WAVS) 5 | 6 | %.wav : %.txt Makefile 7 | ## flite -f $< -o $(basename $@)_16k.wav 8 | text2wave $< -o $(basename $@)_16k.wav 9 | sox $(basename $@)_16k.wav -r 8000 $@ 10 | rm $(basename $@)_16k.wav 11 | -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.txt: -------------------------------------------------------------------------------- 1 | sorry, the pin you entered is wrong. please try again 2 | -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.wav -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/welcome_callee.txt: -------------------------------------------------------------------------------- 1 | welcome to quizconnect. please enter the PIN number 2 | -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/welcome_callee.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/tutorials/quizconnect/prompts/welcome_callee.wav -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/welcome_caller.txt: -------------------------------------------------------------------------------- 1 | welcome to quizconnect. the callees will try to get the right PIN number now 2 | -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/prompts/welcome_caller.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/tutorials/quizconnect/prompts/welcome_caller.wav -------------------------------------------------------------------------------- /doc/dsm/tutorials/quizconnect/quizconnect_tutorial.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/dsm/tutorials/quizconnect/quizconnect_tutorial.pdf -------------------------------------------------------------------------------- /doc/figures/conference.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/conference.dia -------------------------------------------------------------------------------- /doc/figures/png/conference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/conference.png -------------------------------------------------------------------------------- /doc/figures/png/service_invocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/service_invocation.png -------------------------------------------------------------------------------- /doc/figures/png/singleinstance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/singleinstance.png -------------------------------------------------------------------------------- /doc/figures/png/two_instances_app_fixed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/two_instances_app_fixed.png -------------------------------------------------------------------------------- /doc/figures/png/two_instances_app_param.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/two_instances_app_param.png -------------------------------------------------------------------------------- /doc/figures/png/voicemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/voicemail.png -------------------------------------------------------------------------------- /doc/figures/png/webconference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/webconference.png -------------------------------------------------------------------------------- /doc/figures/png/webconference_dialout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/png/webconference_dialout.png -------------------------------------------------------------------------------- /doc/figures/service_invocation.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/service_invocation.dia -------------------------------------------------------------------------------- /doc/figures/singleinstance.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/singleinstance.dia -------------------------------------------------------------------------------- /doc/figures/two_instances_app_fixed.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/two_instances_app_fixed.dia -------------------------------------------------------------------------------- /doc/figures/two_instances_app_param.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/two_instances_app_param.dia -------------------------------------------------------------------------------- /doc/figures/voicemail.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/voicemail.dia -------------------------------------------------------------------------------- /doc/figures/webconference.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/webconference.dia -------------------------------------------------------------------------------- /doc/figures/webconference_dialout.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/doc/figures/webconference_dialout.dia -------------------------------------------------------------------------------- /doc/sbc/Readme.cc_dsm.txt: -------------------------------------------------------------------------------- 1 | DSM extended call control module - see DSM documentation in dsm/dsm_sbc_syntax.txt 2 | -------------------------------------------------------------------------------- /doc/sbc/sample_config_regcache/exin.sbcprofile.conf: -------------------------------------------------------------------------------- 1 | 2 | # SIP NAT handling: recommended if dealing with far end NATs 3 | dlg_nat_handling=yes 4 | 5 | # destination IP[:port] for outgoing requests 6 | next_hop=192.168.5.110:5060 7 | #10.99.250.26:5060 8 | 9 | ## RTP relay 10 | # enable RTP relaying (bridging): 11 | enable_rtprelay=yes 12 | 13 | # setting RURI domain here to proxy (in case of domain name, not necessary...) 14 | RURI=sip:$rU@192.168.5.110 -------------------------------------------------------------------------------- /doc/sbc/sample_config_regcache/inex.sbcprofile.conf: -------------------------------------------------------------------------------- 1 | enable_reg_caching=yes -------------------------------------------------------------------------------- /doc/sbc/sample_config_regcache/interface_map.conf: -------------------------------------------------------------------------------- 1 | 192\.168\.5\.110=>inex 2 | 192\.168\.6\.110=>exin 3 | -------------------------------------------------------------------------------- /doc/sbc/sample_config_regcache/method_map.conf: -------------------------------------------------------------------------------- 1 | REGISTER=>reg -------------------------------------------------------------------------------- /doc/sbc/sample_config_regcache/reg.sbcprofile.conf: -------------------------------------------------------------------------------- 1 | # registration cache 2 | enable_reg_caching=yes 3 | # register upstream every 3600 sec 4 | min_reg_expires=3600 5 | # and make UA re-register every 60 sec 6 | max_ua_expires=60 7 | 8 | next_hop=192.168.5.110:5060 9 | 10 | # setting RURI here to registrar, in order to make my registrar accept it 11 | # if it's DNS name, the registrar should accept it without modification 12 | RURI=sip:192.168.5.110 -------------------------------------------------------------------------------- /doc/sbc/sample_config_regcache/sbc.conf: -------------------------------------------------------------------------------- 1 | profiles=exin,inex,reg 2 | # load one regex-mapping for method, one for interface (here: received IP) 3 | regex_maps=method_map,interface_map 4 | 5 | # first try method (REGISTER), then map on received interface (here: received IP) 6 | active_profile=$M($m=>method_map),$M($Ri=>interface_map) -------------------------------------------------------------------------------- /doc/src/doc_componentmods.h: -------------------------------------------------------------------------------- 1 | 2 | /*! \page ComponentDoc Component Modules Documentation 3 | * 4 | * SEMS is extensible with modules. Component modules are modules which 5 | * implement functionality which can be used by other modules, e.g. by 6 | * application modules. 7 | * 8 | *
  • \ref ModuleDoc_registrar_client : registrar_client
9 | *
  • \ref ModuleDoc_uac_auth : uac_auth
10 | */ 11 | -------------------------------------------------------------------------------- /docs/overview.md: -------------------------------------------------------------------------------- 1 | ../README.md -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | myst-parser==2.0.0 2 | sphinx-rtd-theme>=1.2 -------------------------------------------------------------------------------- /pkg/deb/debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /pkg/deb/debian/libsems1-dev.install: -------------------------------------------------------------------------------- 1 | Makefile.defs usr/include/sems/ 2 | core/*.h usr/include/sems/ 3 | core/SampleArray.cc usr/include/sems/ 4 | core/amci usr/include/sems/ 5 | core/ampi usr/include/sems/ 6 | core/compat/*.c usr/include/sems/compat/ 7 | core/compat/*.h usr/include/sems/compat/ 8 | core/compat/getarch usr/include/sems/compat/ 9 | core/compat/getos usr/include/sems/compat/ 10 | core/plug-in/Makefile.app_module usr/include/sems/plug-in/ 11 | core/plug-in/Makefile.audio_module usr/include/sems/plug-in/ 12 | core/rtp usr/include/sems/ 13 | core/sip/*.h usr/include/sems/sip/ 14 | -------------------------------------------------------------------------------- /pkg/deb/debian/sems.lintian-overrides: -------------------------------------------------------------------------------- 1 | sems: possible-gpl-code-linked-with-openssl 2 | -------------------------------------------------------------------------------- /pkg/deb/debian/sems.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | # don't do anything when called with other argument than configure 6 | case "$1" in 7 | configure) 8 | ;; 9 | abort-upgrade|abort-remove|abort-deconfigure) 10 | exit 0 11 | ;; 12 | *) 13 | echo "postinst called with unknown argument \$1'" >&2 14 | exit 1 15 | ;; 16 | esac 17 | 18 | # add sems user 19 | adduser --quiet --system --group --disabled-password --shell /bin/false \ 20 | --gecos "SIP Express Media Server" --home /var/run/sems sems || true 21 | 22 | #DEBHELPER# 23 | 24 | exit 0 25 | 26 | -------------------------------------------------------------------------------- /pkg/deb/debian/sems.postrm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | #DEBHELPER# 6 | 7 | if [ "$1" = "purge" ] ; then 8 | # remove user/group on purge 9 | if [ -x "$(command -v deluser)" ]; then 10 | deluser --quiet --remove-home sems >/dev/null 2>&1 || true 11 | else 12 | echo >&2 "not removing sems system account because deluser command was not found" 13 | fi 14 | # remove /etc/sems if empty 15 | rmdir /etc/sems || true 16 | fi 17 | 18 | exit 0 19 | -------------------------------------------------------------------------------- /pkg/deb/debian/shlibs.local: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sipwise/sems/5cca07f2488e2e7ccf5bb1a99466b168c5377dd5/pkg/deb/debian/shlibs.local -------------------------------------------------------------------------------- /pkg/deb/debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /pkg/gentoo/files/sems.confd: -------------------------------------------------------------------------------- 1 | # /etc/conf.d/sems: config file for /etc/init.d/sems 2 | 3 | # sems configuration file 4 | #SEMS_CFG_FILE="/etc/sems/sems.conf" 5 | 6 | # user to run sems as 7 | #SEMS_USER="sems" 8 | 9 | # group to run sems as 10 | #SEMS_GROUP="sems" 11 | 12 | # sems pidfile 13 | #SEMS_PIDFILE="/var/run/sems.pid" 14 | 15 | # set to true if you want to create core files 16 | #SEMS_CREATE_CORE="true" 17 | 18 | # path to use for core files 19 | #SEMS_COREDIR="/var/cores" 20 | 21 | # must be absolute path 22 | #SEMS_BINARY="/usr/sbin/sems" 23 | 24 | 25 | -------------------------------------------------------------------------------- /pkg/rpm/sems.sysconfig: -------------------------------------------------------------------------------- 1 | OPTIONS="" 2 | -------------------------------------------------------------------------------- /pkg/rpm/sems.systemd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=SIP Media Server 3 | After=network.target 4 | 5 | [Service] 6 | Type=simple 7 | User=sems 8 | Group=sems 9 | EnvironmentFile=-/etc/sysconfig/sems 10 | PIDFile=/var/run/sems/sems.pid 11 | Restart=always 12 | StartLimitInterval=10 13 | StartLimitBurst=5 14 | ExecStart=/usr/sbin/sems -E -u sems -g sems -P /var/run/sems/sems.pid $OPTIONS 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /pkg/rpm/sems.systemd.tmpfiles.d.conf: -------------------------------------------------------------------------------- 1 | d /var/run/sems 0755 sems sems 2 | -------------------------------------------------------------------------------- /t/auto-test-helper: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | set -x 5 | 6 | NAME=$1 7 | shift 8 | BINARY=$1 9 | shift 10 | 11 | export BINARY 12 | 13 | rm -rf fake-"$NAME"-sockets 14 | mkdir fake-"$NAME"-sockets 15 | LD_PRELOAD=t/tests-preload.so TEST_SOCKET_PATH=./fake-"$NAME"-sockets \ 16 | G_DEBUG=fatal-warnings "$@" 17 | test "$(ls fake-"$NAME"-sockets)" = "" 18 | rmdir fake-"$NAME"-sockets 19 | -------------------------------------------------------------------------------- /t/basic.conf: -------------------------------------------------------------------------------- 1 | fork=no 2 | stderr=yes 3 | loglevel=3 4 | 5 | sip_ip=127.0.0.1 6 | media_ip=127.0.0.1 7 | sip_port=5080 8 | rtp_low_port=10000 9 | rtp_high_port=20000 10 | 11 | plugin_path=core/lib 12 | plugin_config_path=t/basic/ 13 | load_plugins=wav;gsm;opus;xmlrpc2di;sbc 14 | -------------------------------------------------------------------------------- /t/basic/sbc.conf: -------------------------------------------------------------------------------- 1 | profiles=ngcp,ngcp_cf,ngcp_push 2 | active_profile=$(paramhdr),ngcp 3 | -------------------------------------------------------------------------------- /t/basic/xmlrpc2di.conf: -------------------------------------------------------------------------------- 1 | xmlrpc_port=8090 2 | server_ip=127.0.0.1 3 | export_di=yes 4 | debug_server_params=yes 5 | debug_server_result=yes 6 | debug_log_level=3 7 | -------------------------------------------------------------------------------- /t/register-cache.conf: -------------------------------------------------------------------------------- 1 | fork=no 2 | stderr=yes 3 | loglevel=3 4 | 5 | sip_ip=127.0.0.1 6 | media_ip=127.0.0.1 7 | sip_port=5060 8 | rtp_low_port=10000 9 | rtp_high_port=20000 10 | 11 | plugin_path=core/lib 12 | plugin_config_path=t/register-cache/ 13 | load_plugins=wav;gsm;opus;sbc 14 | 15 | application=sbc 16 | -------------------------------------------------------------------------------- /t/register-cache/registrar.sbcprofile.conf: -------------------------------------------------------------------------------- 1 | enable_auth=no 2 | force_outbound_proxy=no 3 | call_control=registrar 4 | registrar_module=cc_registrar 5 | registrar_sticky_iface=yes 6 | registrar_nat_handling=yes 7 | -------------------------------------------------------------------------------- /t/register-cache/sbc.conf: -------------------------------------------------------------------------------- 1 | load_cc_plugins=cc_registrar 2 | profiles=registrar 3 | active_profile=registrar 4 | -------------------------------------------------------------------------------- /tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # executable 2 | 3 | set (sems-logfile-callextract_SRCS 4 | logfile-splitter.cpp 5 | ) 6 | 7 | ADD_EXECUTABLE (sems-logfile-callextract ${sems-logfile-callextract_SRCS}) 8 | #TARGET_LINK_LIBRARIES(sems-stats ${CMAKE_DL_LIBS} stdc++) 9 | 10 | INSTALL(TARGETS sems-logfile-callextract 11 | RUNTIME DESTINATION ${SEMS_EXEC_PREFIX}/sbin 12 | ) 13 | 14 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/config.rules.txt) 15 | --------------------------------------------------------------------------------