版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1引言21.1编写目的21.2背景21.3范围31.4文档约定31.5参考资料32总体设计32.1软件描述32.2设计约束32.2.1运行环境约束32.2.2性能约束32.2.3功能约束32.2.4界面约束32.2.5开发工具约束32.3设计原则32.4体系构架42.4.1逻辑视图43模块设计53.1Main模块53.1.1功能结构53.1.2性能53.1.3内部接口53.2RegManagement模块53.2.1功能结构53.2.2性能83.2.3内部registar所实现的接口83.2.4内部SipServerAuthManager继承覆盖的接口103.3SubManagement模
2、块103.3.1功能结构103.3.2性能123.3.3内部Subscription继承覆盖的接口123.4PubManagement模块143.4.1功能结构143.4.2内部Publication继承覆盖的接口153.5SingleTargetProxy代理模块173.5.1功能结构173.5.2性能183.5.3内部SingleTargetProxy类提供的接口属性193.5.4内部RequestContext类提供的接口属性203.5.5内部ResponseContext类提供的接口属性213.6MulTargetsProxy模块213.6.1功能结构213.6.2性能213.6.3内
3、部MulTargetsProxy提供的接口213.7OfflineMsgProxy模块213.7.1功能结构213.7.2性能223.7.3内部OfflineMsgProxy提供的接口223.8DBAccessor模块223.8.1功能结构223.8.2性能233.8.3内部DBAccessor提供的接口233.9Store模块233.9.1功能结构233.9.2性能243.9.3内部Store提供的接口243.10ParameterParser模块253.10.1功能结构253.10.2使用策略263.10.3性能263.10.4内部接口263.11Heartbeat模块293.11.1功能
4、结构294数据结构设计295运行设计305.1运行模块的组合305.2运行控制操作306故障处理说明306.1故障信息306.2补救措施307安全保密设计308维护设计309需求追溯3010附录A:术语表3011附录B:分析模型301 引言1.1 编写目的本文档描述企业即时通讯系统的SipServer的概要设计说明书。1.2 背景产品/项目名称企业即时通讯系统项目代号项目任务提出者项目负责人、系统分析员、系统设计员程序设计员、程序员本项目开展工作直接有关的人员1.3 范围本文档涉及SipServer的总体设计、模块设计、运行设计、安全设计等。1.4 文档约定本文档依照以下文件标准进行编写:1)
5、概要设计说明书模板(xxxxBRDS.Doc)1.5 参考资料1) 即时通讯系统软件构架文档II.doc2) Resiprocate体系架构3) Sip协议RFC32614) spmp_interface.doc2 总体设计2.1 软件描述2.2 设计约束2.2.1 运行环境约束SipServer运行于Linux环境下:CPU:双CPU,Intel PIII以上内存:1GB以上硬盘:100G以上网络接口卡:100M以上操作系统:Linux (内核版本2.4.18以上)2.2.2 性能约束支持7x24小时可靠运行;支持10000并发用户,消息转发吞吐量在1000条SIP消息/秒以上。2.2.3
6、功能约束支持RFC3261协议。支持Digest Authenticate。支持通过SPMP访问配置服务器。2.2.4 界面约束SipServer的启动只支持命令行方式的启动,各种配置选项在命令行中设定或通过配置文件进行解析。2.2.5 开发工具约束 Windows上使用Visual stadio 2005进行编码编译,Linux上使用g+进行编译。2.3 设计原则可靠性:SipServer提供7x24小时可靠运行。安全性:SipServer支持Digest Authenticate和权限检查。可扩展性:服务器可方便快捷的添加其它功能处理,如对呼叫Invite的处理等。单台SipServer服
7、务器010000个注册用户间进行扩展。2.4 体系构架2.4.1 逻辑视图图1 SipServer模块结构图SipServer主要由上图中的模块组成,其中: Main模块是SipServer的启动模块,它是SipServer进程启动的入口,并且负责其它模块的初始化和启动。 ParameterParser模块负责SipServer配置选项的解析和访问,在程序初始化过程中,它解析系统的相关配置选安全信息、域信任列表、域内所有用户的订阅限额项(通过配置文件和命令行选项),系统运行过程中其它模块通过它获取相关的配置参数。 RegManagement模块基于dum框架接口开发,用于户登录注册,负责对用户
8、进行身份认证以及进行权限检查,认证通过后在在缓存中保存用户的登录注册后的相关信息如用户登录所用的TCP链接的IP地址和端口号。 SubManagement模块基于dum框架接口开发,用于登录注册后的用户对某种事件类型进行订阅,如其它客户在线状态事件的订阅。 PubManagerment模块基于dum框架接口开发,用于登录注册后的用户对自身某种事件信息进行发布,如其自身在线状态事件的发布。 SingleTargetProxy代理模块,主要用于处理page 模式下的message消息和session模式下的Invite消息的转发,以及这些消息相应的响应消息的转发。 MulTargetsProxy代
9、理模块,主要用于处理message等群发消息,模块设计结构和处理逻辑和SingleTargetProxy大致相同。 Store模块在内存中缓存用户的安全信息、域信任列表。减少和配置服务器交互的次数,它依赖于psLib模块实现缓存内容和配置服务器保存内容一致。注:域内所有用户的订阅限额(每个人的订阅限额是相同的,只需要域向配置服务器订阅一次即可)这部分信息暂时在配置参数中进行设置,从ParameterParser模块中获取。 HeartBeat模块负责检测配置服务器的运行状况,它依赖于PSLIB的实现。 psLib模块是SPMP协议的客户端实现部分,它负责对配置服务器所维护数据的访问(订阅安全信
10、息、域信任列表、域内所有用户的订阅限额),外部模块。 OfflineMsgProxy模块负责离线消息的接收、存储,以及当离线消息的目标用户登录时想目标用户发送离线消息。 DBAccessor模块负责向数据库中插入数据,从数据库中获取数据等等相关的数据库操作。目前sip服务器使用的数据库是嵌入式mysql数据库。每个单台的sip服务器有一个嵌入式的mysql数据库。3 模块设计3.1 Main模块3.1.1 功能结构Main模块是SipServer的启动模块,主要包含main()函数,该函数作为SipServer进程启动时的入口点,并负责其它相关模块的初始化工作。Main模块的初始化工作包括:
11、初始化ParameterParser对象,以便系统中的其它模块获取Sip Server的相关配置数据; 初始化psLib模块(通过SPMP访问Provision Server的客户端); 初始化HeartBeat模块并且启动之; 初始化resiprocate stack; 初始化dum框架,向dum注册registar、Subscription、Publication; 初始化 SingleTargetProxy、MulTargetsProxyCluster; 启动SipStack线程、dum线程、SingleTargetProxy线程、MulTargetsProxyCluster线程。3.1
12、.2 性能无。3.1.3 内部接口无。3.2 RegManagement模块3.2.1 功能结构RegManagement模块负责用户的登录注册。它具体负责对登录注册用户进行身份认证,以及本地登录注册用户在内存中的管理(添加、查找、更改和删除功能),给其它模块如SingleTargetProxy对目标用户进行定位。图2 RegManagement模块类结构图 其中: Registrar类是上层SipServer的具体应用,是对抽象接口ServerRegistrationHandler的具体实现,由ServerRegistration对其实现方法进行回调,由上层sipserver来实现。 Ser
13、verRegistrationHandler是DUM提供给上层应用的抽象接口。 RegistrationPersistenceManager是DUM提供的注册存储的抽象接口。 InMemoryRegistrationDatabase是上层SipServer的具体应用对抽象接口RegistrationPersistenceManager的具体实现,由上层sipserver来实现。 ServerAuthManager是DUM提供的抽象接口用于获取用户的安全信息。 SipServerAuthManager是上层SipServer的具体应用对抽象接口ServerAuthManager的具体实现,由上层
14、sipserver来实现。 UserStore是上层SipServer的应用类用于在缓存中存储用户的相关信息如安全信息等。 ServerRegistration是DUM提供注册的真正的实现类,对Registrar实现的方法进行回调,同时Registrar又通过ServerRegistration的句柄ServerRegistrationHandle对ServerRegistration中的方法进行操作。注:DUM中大量应用了Handle习惯用法。Handle的定义与SharedPtr的定义类似,但Handle的主要目的是分离接口与实现。分离的关键在于,“对类定义的依赖”被“对类声明的依赖”取代
15、了。这一思想直接深化后的含义:1、如果可以使用对象的引用和指针,就要避免使用对象本身。定义某个类型的引用和指针只会涉及到这个类型的声明。定义此类型的对象则需要类型定义的参与;2、尽可能使用类的声明,而不使用类的定义。因为在声明一个函数时,如果用到某个类,是绝对不需要这个类的定义的,即使函数是通过传值来传递和返回这个类。DUM使用Handle习惯用法来避免向应用层暴露DUM的内部实现。 图3 处理带认证的Register消息认证处理时序图图4 Register消息的注册处理时序图3.2.2 性能要求注册的认证相对其它模块的性能要高,优先处理用户的注册认证消息。3.2.3 内部registar所实
16、现的接口(1) void onRefresh(resip:ServerRegistrationHandle, const resip:SipMessage& reg);功能简介用户注册刷新时由ServerRegistration进行回调处理上层sipserver的需求。参数描述ServerRegistrationHandle 操作ServerRegistration的接口句柄;reg 收到的register类型消息。返回值 无(2) void onRemove(resip:ServerRegistrationHandle, const resip:SipMessage& reg);功能简介用户
17、注销时时由ServerRegistration进行回调处理上层sipserver的需求。参数描述ServerRegistrationHandle 操作ServerRegistration的接口句柄;reg 收到的register类型消息(expire=0)。返回值 无(3) void onRemoveAll(resip:ServerRegistrationHandle, const resip:SipMessage& reg);功能简介ServerRegistration删除所有注册用户时由ServerRegistration进行回调处理上层sipserver的需求。参数描述ServerReg
18、istrationHandle 操作ServerRegistration的接口句柄;reg 收到的SipMessage类型消息(这个接口暂时用不到,reg 的类型结构也不太明确)。返回值 无(4) void onAdd(resip:ServerRegistrationHandle, const resip:SipMessage& reg);功能简介一个用户新注册的用户注册时由ServerRegistration进行回调处理上层sipserver的需求。参数描述ServerRegistrationHandle 操作ServerRegistration的接口句柄;reg 收到的register类型
19、消息。返回值 无(5) void onQuery(resip:ServerRegistrationHandle, const resip:SipMessage& reg);功能简介当一个用户查询当前注册用户列表时由ServerRegistration进行回调处理上层sipserver的需求。参数描述ServerRegistrationHandle 操作ServerRegistration的接口句柄;reg 收到的SipMessage类型消息(这个接口暂时用不到,reg 的类型结构也不太明确)。返回值无;3.2.4 内部SipServerAuthManager继承覆盖的接口(1) void re
20、questCredential(const resip:Data& user, const resip:Data& realm, const resip:SipMessage& msg, const resip:Auth& auth, const resip:Data& transactionId );功能简介对客户的挑战ahth进行鉴别,对这个接口的调用最好为异步的,可以生成一个有关用户信息的一个ApplicationMessage应用message,post到一个事务用户如dum继续后续处理。参数描述user 需要认证的用户名;realm 需要认证的用户所在的域;msg 收到的需要认证的s
21、ip消息;transactionId 收到的msg消息的事务ID;auth 是服务器从收到的msg消息中解析出的Proxy-Authorization字段的内容。返回值 无(2) bool useAuthInt() const功能简介判断是否需要对用户进行认证参数描述无;返回值是返回true,否返回false(3) virtual bool requiresChallenge(const resip:SipMessage& msg);功能简介判断是收到的 msg消息是否需要挑战信息。参数描述msg 收到的sip消息;返回值是返回true,否返回false3.3 SubManagement模块3
22、.3.1 功能结构 SubManagerment模块基于dum框架接口开发,用于登录注册后的用户对某种事件类型进行订阅,如其它客户在线状态的订阅。图5 SubManagement模块类结构图其中: Subscription是类是上层SipServer的具体应用,是对抽象接口ServerSubscriptionHandler的具体实现,由ServerSubscription对其实现方法进行回调,由上层sipserver来实现。 ServerSubscriptionHandler是DUM提供给上层应用的抽象接口。 ServerSubscription是DUM提供订阅的真正实现类,对Subscrip
23、tion实现的方法进行回调,同时Subscription又通过ServerSubscription的句柄ServerSubscriptionHandle对ServerSubscription中的方法进行操作。图6 一个新订阅的Subscription消息的处理时序图3.3.2 性能无。3.3.3 内部Subscription继承覆盖的接口(1) void onNewSubscription(resip:ServerSubscriptionHandle, const resip:SipMessage& sub);功能简介当一个新的订阅到来,由ServerSubscription进行回调处理上层s
24、ipserver的需求。参数描述ServerSubscriptionHandle操作ServerSubscription的接口句柄;sub收到的Subscription类型消息;返回值 无(2) void onRefresh(resip:ServerSubscriptionHandle, const resip:SipMessage& sub);功能简介当一个订阅的刷新到来,由ServerSubscription进行回调处理上层sipserver的需求。参数描述ServerSubscriptionHandle操作ServerSubscription的接口句柄;sub收到的Subscriptio
25、n类型消息;返回值(3) void onPublished(resip:ServerSubscriptionHandle associated, resip:ServerPublicationHandle publication, const resip:Contents* contents,const resip:SecurityAttributes* attrs);功能简介当被订阅者的状态发送变化时由ServerSubscription进行回调处理上层sipserver的需求。参数描述associated操作ServerSubscription的接口句柄;publication操作Serv
26、erPublication的接口句柄;contents 存储body内容的实体,保存被订阅者的状态发送变化的内容。attrs 消息的安全属性,如是否进行了加密等等; 返回值无(4) void onError (resip:ServerSubscriptionHandle, const resip:SipMessage& sub);功能简介当某种原因发送错误时由ServerSubscription进行回调处理上层sipserver的需求。参数描述ServerSubscriptionHandle操作ServerSubscription的接口句柄;sub收到的Subscription类型消息;返回值
27、无(5) void onTerminated (resip:ServerSubscriptionHandle);功能简介当用户的订阅用例因某种原因被destory终止时由ServerSubscription进行回调处理上层sipserver的需求。参数描述ServerSubscriptionHandle操作ServerSubscription的接口句柄;返回值无(6) void onExpiredByClient (resip:ServerSubscriptionHandle, const resip:SipMessage& sub , resip:SipMessage& notify);功能
28、简介当用户注销一个订阅由ServerSubscription进行回调处理上层sipserver的需求。参数描述ServerSubscriptionHandle操作ServerSubscription的接口句柄;sub收到的Subscription类型消息;notify用于生成的通知处理消息;返回值 无3.4 PubManagement模块3.4.1 功能结构PubManagement模块基于dum框架接口开发,用于登录注册后的用户对自身某种事件信息进行发布,如其自身在线状态的发布图7 PubManagement模块类结构图其中: Publication是上层SipServer对ServerPu
29、blicationHandler抽象接口的具体实现,由ServerPublication对其实现方法进行回调,由上层sipserver来实现。 ServerPublicationHandler类是是DUM框架提供的抽象接口。 ServerPublication是DUM提供发布事件的真正实现类对Publication实现的方法进行回调,同时Publication又通过ServerPublication的句柄ServerPublicationHandle对ServerPublication中的方法进行操作。图8 一个新发布的publish消息处理时序图3.4.2 内部Publication继承覆盖
30、的接口(1) void onInitial(resip:ServerPublicationHandle, const resip:Data& etag, const resip:SipMessage& pub, const resip:Contents* contents, const resip:SecurityAttributes* attrs, UInt32 expires);功能简介当用户第一次发布一个事件时,由ServerPublication进行回调处理上层sipserver的需求。参数描述ServerPublicationHandle操作ServerPublication的接口句
31、柄;pub收到的publish类型消息;etag 对应标识收到的publish的一个随机字符串,etag和publish是一一对应关系;contents 对应收到的publish事件的body内容;attrs 对应的收到publish事件的安全属性;expires 对应收到publish事件的有效期时间;返回值 无(2) void onExpired(resip:ServerPublicationHandle, const resip:Data& etag);功能简介当某个发布事件有效期过期时由ServerPublication进行回调处理上层sipserver的需求。参数描述ServerPu
32、blicationHandle操作ServerPublication的接口句柄; etag 某个发布事件的标识值; 返回值 无(3) void onRefresh(resip:ServerPublicationHandle, const resip:Data& etag, const resip:SipMessage& pub, const resip:Contents* contents, const resip:SecurityAttributes* attrs, UInt32 expires);功能简介当某个发布事件被刷新时,由ServerPublication进行回调处理上层sipse
33、rver的需求。参数描述ServerPublicationHandle操作ServerPublication的接口句柄;etag pub发布事件的标识值;pub收到的publish类型消息;contents 存储用户发布事件刷新的内容,对应收到的publish事件的body内容;attrs 对应的收到publish事件的安全属性;expires 对应收到publish事件的有效期时间;返回值 无(4) void onUpdate(resip:ServerPublicationHandle, const resip:Data& etag, const resip:SipMessage& pub,
34、 const resip:Contents* contents, const resip:SecurityAttributes* attrs, UInt32 expires);功能简介当某个发布事件被更新时(如在线该离线事件),由ServerPublication进行回调处理上层sipserver的需求。参数描述ServerPublicationHandle操作ServerPublication的接口句柄;etag pub发布事件的标识值;pub收到的publish类型消息;contents 存储用户发布事件刷新的内容,对应收到的publish事件的body内容;attrs 对应的收到publ
35、ish事件的安全属性;expires 对应收到publish事件的有效期时间;返回值 无(5) void onRemoved(resip:ServerPublicationHandle, const resip:Data& etag, const resip:SipMessage& pub, UInt32 expires);功能简介当某个发布事件因超时或用户注销时由ServerPublication进行回调处理上层sipserver的需求。参数描述ServerPublicationHandle操作ServerPublication的接口句柄;etag pub发布事件的标识值;pub收到的pub
36、lish类型消息;expires 对应收到publish事件的有效期时间;返回值 无3.5 SingleTargetProxy代理模块3.5.1 功能结构SingleTargetProxy代理模块,主要用于处理page 模式下的message消息和session模式下的invite消息的转发,以及这些消息相应的响应消息的转发。SingleTargetProxy主要的类结构图如下:图9 SingleTargetProxy代理模块类结构图其中: SingleTargetProxy类是整个SingleTargetProxy模块处理的入口,其类似与DUM框架中的DialogUsageManager类,
37、继承于TransactionUser是一个事务User,需要向Resiprocate stack进行注册对其感兴趣的消息类型进行处理。同时SingleTargetProxy继承于resip:ThreadIf。 RequestContext类主要用于处理客户的请求消息。 ResponseContext类主要用于处理客户的响应消息。 ProcessorChain类用于对某些消息做一系列的特殊的处理或检查。3.5.2 性能无。3.5.3 内部SingleTargetProxy类提供的接口属性 图 10 SingleTargetProxy类的接口属性SingleTargetProxy中的主要属性:mS
38、erverRequestContexts 用于存储接收到的请求消息,存储服务端事务;mClientRequestContexts 用于存储转发出去的请求消息,存储客户端事务;mRequestProcessorChain 用于对收到的请求消息进行处理;mResponseProcessorChain 用于对收到的响应消息进行处理;mTargetProcessorChain 用于对收到的消息做路由处理。SingleTargetProxy中的主要方法:(1) void thread(); 功能简介SingleTargetProxy线程处理的入口,对收到的感兴趣消息的处理分发在这个线程方法中来做。参数描
39、述无;返回值无(2) bool isMyUri(const resip:Uri& uri); 功能简介检查请求消息的RequestLine中的uri是不是sipserver支持的uri。参数描述uri请求消息的RequestLine中的域;返回值 无(3) const resip:NameAddr& getRecordRoute() const;功能简介获取sipserver所支持的recordRoute。参数描述无;返回值 无(4) void send(const resip:SipMessage& msg);功能简介发送一个SipMessage消息。参数描述msg 要发送的sip msg消
40、息;返回值 无(5) void addClientTransaction(const resip:Data& transactionId, RequestContext* rc);功能简介保存sipserver发出去的request消息。参数描述transactionId request消息的事务ID;rc 对应的处理request(事务ID为transactionId)的处理类返回值 无(6) void postMS(std:auto_ptr msg, int msec);功能简介放入栈中的一个应用类型的消息如TimerCMessage类型消息、KeepAliveTimeout消息等在时间过
41、期时返回给代理的消息队列进行处理。参数描述msg ApplicationMessage类型消息;msec 消息的生成时间;返回值无3.5.4 内部RequestContext类提供的接口属性图 11 RequestContext类的接口属性3.5.5 内部ResponseContext类提供的接口属性图 12 ResponseContext类的接口属性3.6 MulTargetsProxy模块3.6.1 功能结构MulTargetsProxy模块主要代理处理客户发送过来的群发类型的消息,目前设计版本主要是针对用户对message消息的群发,以后根据实际需要可以扩展对其它类型消息的群发。 Mul
42、TargetsProxy模块负责将接收到群发短消息分别以page 模式下的message消息方式发送给该次群发目标范围中的每一个目标用户。目前群发消息是封装在SIP的Message消息的消息体中,SIP服务器接收到Message消息后,通过判断To头字段中UserId是否是系统内保留的群发账号,如果是,则通过解析消息体获取目标用户集合和具体的消息内容,然后向目标集合中的每个用户构造一个message消息分发出去,然后把发送的最终结果集返回给群发消息的发送用户。群发消息依赖外部模块DataModule中的imdatamodel模块用于生成和解析特定的xml消息的数据对象模型。3.6.2 性能无。
43、3.6.3 内部MulTargetsProxy提供的接口3.7 OfflineMsgProxy模块3.7.1 功能结构 OfflineMsgProxy模块主要代理接收当目标用户不在线的时候用户发送过来的离线消息;当目标用户登录的sip服务器的时候,sip服务器要把其他用户发送给此用户的理想消息发送给此用户。离线消息分为两种:一种是page模式的离线消息,一种是群发模式的离线消息。图13 page模式的离线消息时序图注:由于现在用户敲击键盘也是用Message消息来发送,键盘敲击的类型在Message请求消息的Content 内容的xml中设定,这就造成sip服务器对于离线消息要过滤这种敲击键盘
44、的消息。为过滤敲击键盘的Message消息服务器就需要对Content中的xml进行编码解码,这会对sip服务器的效率有些影响。这可能也是下步的一个优化点。3.7.2 性能无。3.7.3 内部OfflineMsgProxy提供的接口3.8 DBAccessor模块3.8.1 功能结构DBAccessor模块负责向数据库中插入数据,从数据库中获取数据等等相关的数据库操作。目前sip服务器准备采纳使用的数据库mysql数据库。 图 14 DBAccessor模块的类结构图3.8.2 性能无。3.8.3 内部DBAccessor提供的接口3.9 Store模块3.9.1 功能结构Store模块是用来
45、专门访问及缓存从配置服务器读取的用户或域的相关信息。从内容上区分为用户安全信息、域信任列表。需要注意域内用户订阅限额(一个值,域内所有用户的订阅限额是一样的)这部分暂时在不向配置服务器进行订阅获取,由sipserver在命令行或配置文件当中给出。远程信息的访问是通过外部模块psLib实现,关于通过psLib实现订阅、通知的接口请参阅具体的相关文档。图14 Store模块类结构图其中: Store类为其它模块访问用户或域的相关信息提供入口,Store类可考虑用单件模式来实现。 UserStore类用于存储用户的相关信息,如安全密码、权限等。 DomainStore类用于存储域的相关信息,如域的信
46、任列表等。 UserStoreTest和DomainStoreTest用于在测试是因配置服务器暂时不可用是数据在本地做些处理。3.9.2 性能无。3.9.3 内部Store提供的接口(1) static Store * instance();功能简介实例化、或者获取系统内唯一的Store单件对象。参数描述无返回值指向Store对象的指针。 (2) resip:Data getUserAuthInfo( const resip:Data& user,const resip:Data& domain ) const;功能简介用于获取用户的安全信息。参数描述User:用户的名称;Domain:用户所
47、在的域。返回值返回用户的安全信息。(3) std:vector getCreditDomains ( const resip:Data& domain ) const;功能简介获取域的信任域列表。参数描述Domain:域;返回值 返回一个vector类型的容器,存放的是Data类型的对象。(4) bool isDomainCreditDomain ( const resip:Data& creditdomain, const resip:Data& domain ) const;功能简介判断某域是不是某域的信任域。参数描述Creditdomain:被信任的域;Domain:域。返回值 如Cre
48、ditdomain是Domain信任的域返回true,否则返回false。3.10 ParameterParser模块3.10.1 功能结构ParameterParser模块用于解析SipServer运行所依赖的命令行参数或配置文件参数,并且保存各个参数选项。具体的命令行参数格式或配置文件参数格式待定。 图15 Store模块类结构图其中: ParameterParser类为其它模块访问Sipserver运行的相关配置参数提供入口,ParameterParser类可考虑用单件模式来实现。 ProfileParser类用于解析在文件中进行配置的相关参数。 CommandLineParser类用于
49、解析通过命令行进行配置的相关参数。注1:参数的配置要么是通过命令行进行配置,要么是通过配置文件进行配置,不可在命令行中配置一部分,在配置文件中配置一部分。注2:存在一个安全性的设计bug。 配置选项 pslib要打开一个Sip服务器的端口号从配置服务器上获取数据存在一个安全性的设计问题,Pslib要打开一个本地端口号对sip服务器中的缓存数据进行更新,如对用户的密码权限进行更新,而这时候Pslib没有对连接到这个端口号上的连接进行身份权限认证,这时这个连接可以通过分析包给sip服务器发送密码更新消息修改相应用户的密码权限等信息。造成这个bug的原因是pslib除了要和配置服务器建立一个主动连接
50、外,还要打开本地的一个端口号等待配置服务器来进行链接进行响应的更新,以后的修改可以采取把这个配置选项去掉,数据的更新都通过sip服务器和配置服务器间建立的连接进行更新。3.10.2 使用策略系统判断是从配置文件获取配置参数还是从命令行获取配置参数基于如下策略: 如果命令行参数个数为1,即只有启动进程的名字,那么系统从配置文件中获取配置参数,默认的配置文件名为“sipserver.conf”,默认路径在进程启动的当前目录下。 如果命令行参数为两个,这时查看第二个参事是否为“confFileName=*”,如过是如“confFileName=sipserver2.conf”,那么系统从配置文件中获
51、取配置数据,配置文件名为“sipserver2.conf”.如果配置文件和启动程序不在一个目录下面,只需在设置时在文件名前面加上路径即可。 如果命令行参数为两个,第二个参事不是“confFileName=*”,那么系统参数从命令 行中获取,如果相应的参数没有,使用默认值。 如果命令行参数大于两个,那么系统参数从命令 行中获取,如果相应的参数没有,使用默认值。3.10.3 性能无。3.10.4 内部接口(1) static ParameterParser * instance(int argc = 0, char* argv = 0);功能简介实例化、或者获取系统内唯一的ParameterParser单件对象。参数描述argc命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理学角度的幼儿教育方法
- 2025-2026学年归去来兮辞教学设计论文
- 2025-2026学年不懂就要问教学设计面试
- 2025-2026学年奥运颁奖音乐教案
- 12.3 二次根式的加减教学设计初中数学苏科版2012八年级下册-苏科版2012
- 2026湖南新五丰股份有限公司兽医管理岗招聘1人备考题库附参考答案详解【完整版】
- 2026新疆兵团第一师八团医院招聘3人备考题库附完整答案详解(易错题)
- 2026北京大旺食品有限公司丰台分公司招聘8人备考题库附参考答案详解【黄金题型】
- 2026青海海北州海晏县三角城镇卫生院招聘B超医生1人备考题库新版附答案详解
- 2026贵州黔东南州黄平县生态移民公益性岗位人员招聘1人备考题库及完整答案详解(考点梳理)
- 2026延安志丹县人力资源和社会保障局公益性岗位招聘(50人)笔试备考题库及答案解析
- 车间内部转运车管理制度
- 2026年山东省立第三医院初级岗位公开招聘人员(27人)笔试参考题库及答案解析
- 2026湖北武汉市江汉城市更新有限公司及其下属子公司招聘11人笔试备考题库及答案解析
- 《机械制图》电子教材
- 四年级下册语文第二单元 快乐读书吧十万个为什么 导读一等奖创新教学设计
- 平米三层综合楼框架结构计算书、结构图
- JJF 1458-2014磁轭式磁粉探伤机校准规范
- 环境工程专业考研复试个人陈述
- 中小学生防溺水安全教育PPT课件【爱生命防溺水】
- 常州注射器项目可行性研究报告范文参考
评论
0/150
提交评论