python实现⾃动打电话软件_⽤Python实现的Internet电话软件
(P2P-SIP)开源
由于GitHub原著为英⽂,且相当的啰嗦,本⽂为翻译内容并去除其啰嗦的部分
重点:代码只⽀持Python
Python版本开源互联⽹点对点软件
关键词:SIP, P2P, Python, p2psip, DHT, implementation
解释:⽹络电话可以是对等体系的应⽤,参与者不需要依赖昂贵或管理的服务提供者的情况下彼此定位和通讯。
本项⽬⽬标是使⽤Python语⾔中的会话启动协议(P2P-SIP)来实现开源的点对点(peer-tp-peer,简称P2P)的互联⽹通话软件,项⽬⽀持开放协议,如IETF SIP和RTP
peer-to-peer系统优点:具有⾼扩展性、容错性、针对灾难性故障的稳健性。因为它没有中央服务器,并且没有⽹络⾃我组织
代码结构
src/tools/htmlify.py⼯具⽤于⽣成带注释的web视图代码
src/app下⾯包含了,如SIP客户端(voip.py),使⽤Bamboo的DHT(dht.py)等等
src/std下⾯包含了各种IETF RFC实现的Internet草案,例如RFC 3261, RFC 3550, RFC 2617等等
有些模块是未完成的半成品
代码整体分为两部分 - standards和applications。 某些RFC和Internet-drafts中指定的standards在std包中实现,⽽⾼级应⽤程序在app包中实现。 构建此项⽬的主要优点之⼀是源代码在代码⾏⽅⾯要少得多。
下表总结了std包的内容,并允许使⽤从相应规范中提取的嵌⼊式⽂档来浏览源代码。
ModuleDescriptionLines
实现 RTP payload type for 冗余⾳频数据.
45
实现各种形式的地址 such as URI or SIP 地址
177
实现在 SIP 中可重⽤的 HTTP 基本和摘要式的⾝份验证
131
实现在 RTP 数据包中的 DTMF 按键⾳有效负载
40
实现会话启动协议(SIP)的⽤户代理部分
1558
会⽤ DNS NAPTR , SRV 和 A 实现 SIP 服务器发现
108
实现 SIP 中使⽤的单播会话的 SDP 提供答案模型
120
实现基本的 NAT 遍历技术 such as STUN, NAT discovery using STUN, TURN的变体
693
实现实时传输协议(RTP)及其配套控制协议RTCP。
687
定义RTP的静态有效内容类型。
48
实现客户端 XMPP 核⼼
435
实现IM和XMPP客户端的存在(不完整)。
373
实现会话描述协议(SDP)。
162
⾼级应⽤程序模块使⽤其中⼀些模块并构建其他应⽤程序或库,如下所述:ModuleDescriptionLines
实现 SIP ⽤户代理库,⽤于注册、呼叫、即时消息和会议
1261
实现 Bamboo/Pastry 分布式哈希表算法的变体
1983
实现客户端库,⽤来连接到现有的OpenDHT服务
71
p2p
使⽤ DHT 实现 peer-to-peer 的管道抽象(未完成)
642
p2psip
使⽤p2p和voip模块实现各种P2P-SIP应⽤场景(未完成)
285
crypto
实现在dht或p2p中使⽤的加密算法的抽象(未完成)
261
dhtgui
实现⼀个⽤来启动p2p / dht 模块的测试⼯具,并以圆形来显⽰节点
427
sipd
使⽤rfc3261模块实现⼀个⾮常简单的SIP注册和代理服务器。(不完全的)起⽀持作⽤的模块python新手适合的软件
ModuleDescriptionLines
会⽤⽅便的⽅法和运算符实现简单的 XML DOM,⽤来处理 XML 和 XMLList
420
在运⾏代码之前,需要⾃⾏配置Python的环境,下⾯的栗⼦是执⾏voip.py,这个脚本使⽤服务器执⾏编写SIP注册、呼叫和即时消息测试
#在download⽂件夹下
tar -zxvf source-*.tgz
cd p2p-sip/src
export PYTHONPATH=.:external:std:app
python app/voip.py
每个模块都有⼀个简单的测试⽤例,作者之后还会上传使⽤这些基本模块构建的应⽤程序。
dhtgui.py⽤于启动P2P模块的测试⽤户界⾯,它取决于wxPython的⽤户界⾯功能。运⾏会启动具有DHT圈的⽤户界⾯,我们可以在与安全中⼼附近单击添加新的节点
p2psip.py⽤于启动P2P-SIP结点
注意:第⼀个节点启动时需要加 -s ,以成为超级节点,后续启动的节点不要加 -s 以加⼊此P2Peye⽹络
第⼀个节点监听SIP端⼝5062,⽤ -d 参数可以查看节点之间交换的P2P消息。如果想要跨多个IP⽹络进⾏P2P⽹络,需要重新配置引到节点,因为多播发现通常只能在同⼀IP下运⾏
python app/p2psip.py -s #第⼀个节点作为启动服务器
python app/p2psip.py #其他终端/机器上的后续节点
X-lite v3配置
如果想要使⽤X-lite测试P2P-SIP,请使⽤以下X-lite v3配置。 在“帐户”(Account)选项卡下的⾸选项/选项
(preferences/options)中,选择“域代理”(Domain proxy)并将代理地址设置为端⼝5062上的引导服务器,或者具有正确端⼝的其他服务器之⼀,例如127.0.0.1:5062。 在“语⾳邮件”(Voicemail)选项卡中,取消选中所有内容以避免向P2P-SIP节点发送不必要的语⾳邮件相关消息。 在“拓扑”(Topology)选项卡的“防⽕墙遍历”(Firewall traversal)下,“IP address”设置为“使⽤本地IP地址”(Use local IP address)。 “STUN服务器”设置为“使⽤指定的服务器”(Use specified server),地址留空。 取消选中所有其他框并将“Use Xtunnels”设置为永不(never)。 在“存在”(Presence)选项卡中,“Mode”是peer-to-peer的。 所有其他值都保留为默认值。 在“⾼级”(Advanced)选项卡中,确保取消选中“发送SIP保持活动消息”(send SIP keep alive messages)。事实上,唯⼀的复选框是“Use rport”。 所有其他值都保留为默认值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。