⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sipd.h

📁 sip代理服务器源码
💻 H
字号:
/***********************************************************************\	SIP Server		Date		Ver		Author		MemoRandom	Jul 3,2002	1.0		Hiroaki Hata	Created	(C) 2002 All Copyrights reserved. *************************************************************************/#define DEBUG	if(debug==1){#define FORE	if(fore==1){#define DEND	}#define	YES	1#define NO	0	#define	OK	0#define	NG	-1#define	SCLEN		80	#define	CLEN		1024	#define	USER_MAX	512#define	DOMAIN_MAX	16#define MAX_BUFF	4096	#define	REG_NG		-1#define	REG_ADD		1#define	REG_RENEW	2#define	REG_DEL		3#define	REG_NONE	9#define	DB_WATCH	60#define	RECV_TIME_OUT	5#define	PROCESS_TIME_OUT	10#define	SIP_PORT	5060#define HASH_LEN	16	#define CRLF	1#define	BRACE	2		extern int debug;extern int fore;#define	REQUEST		1#define	RESPONSE	2/*-------------------------------METHODS*/#define	M_INVITE	1#define	M_ACK		2#define	M_OPTIONS	3#define	M_BYE		4#define	M_CANCEL	5#define M_REGISTER	6#define M_INFO	7#define	M_SUBSCRIBE	101#define	M_MESSAGE	111/*--------------------------------Error Code */#define	E_OK		200#define	E_BADREQ	400#define	E_UNAUTH	401#define	E_NOTFOUND	404#define	E_NOTALLOW	405#define	E_NOTACCEPT	406#define E_PROXYAUTH	407#define	E_TIMEOUT	408#define	E_GONE		410#define	E_MEDIATYPE	415#define	E_URI		416#define	E_TRANSACTION	481#define	E_MANYHOP	483#define	E_BUSY		486#define	E_REQTERM	487#define	E_SERVER	500#define	E_IMPLEMENT	501#define	E_GATEWAY	502#define	E_VERSION	505/*--------------------------------HEADER*///Mandatory#define	CALLID_H	1#define	CSEQ_H		2#define	TO_H		3#define	FROM_H		4#define	VIA_H		5/*----------------------------------------*///Optional#define	CONTACT_H	6#define	EXPIRES_H	7#define	CONTENTENC_H	8#define	CONTENTTYPE_H	9#define	CONTENTLEN_H	10#define	USERAGENT_H	11#define	MAXFORWARDS_H	12#define	ROUTE_H		13#define	RECORDROUTE_H	14#define PROXY_AUTHRZ_H	15#define PROXY_AUTHTC_H	16#define ELSE_H		9999#define	Blank		8888/*--------------------------------Params*/#define	PTAG		"tag="#define	PTTL		"ttl="#define	PMADDR		"maddr="#define	PTRANSPORT	"transport="#define	PMETHOD		"method="#define	PUSER		"user="#define	PBRANCH		"branch="#define	PLR		"lr"//-------------------------------PAuth#define	PAUTH_REALM	"realm="#define	PAUTH_USER	"username="#define	PAUTH_DOMAIN	"domain="#define PAUTH_QOP	"qop="#define PAUTH_OPAQUE	"opaque="#define PAUTH_NONCE	"nonce="#define PAUTH_CNONCE	"cnonce="#define	PAUTH_NC	"nc="#define	PAUTH_URI	"uri="#define	PAUTH_ALGORITHM	"algorithm="#define	PAUTH_STALE	"stale="#define	PAUTH_RESPONSE	"response="/*--------------------------------TYPEDEF*/typedef struct {	char	transport[SCLEN];	char	user[SCLEN];	char	method[CLEN];	char	maddr[CLEN];	int	ttl;	int	lr;	char	branch[CLEN];	char	tag[CLEN];	char	aux[CLEN];}URIPARAM;typedef struct sipurl_t{	char	display[CLEN];	char	username[CLEN];	char	password[CLEN];	char	host[CLEN];	unsigned short int port;	URIPARAM	param;	char		tag[CLEN];	char		aux[CLEN];	struct sipurl_t	*next;}URI;typedef struct {	int	type;	int	message;	char	method[SCLEN];	URI	requri;		char	proto[SCLEN];	int	ver;	int	code;	char	response[SCLEN];}START;typedef struct cseq_t{	int	seq;	char	method[SCLEN];}CSEQ;typedef struct via_t{	char	proto[SCLEN];	char	ver[SCLEN];	char	trans[SCLEN];	char	host[CLEN];	unsigned short int port;	URIPARAM	param;	struct via_t 	*next;}VIA;typedef struct pauth_t{	char	realm[SCLEN];	char	domain[SCLEN];	char	qop[SCLEN];	char	opaque[SCLEN];	char	nonce[SCLEN];	char	cnonce[SCLEN];	char	nc[SCLEN];	char	uri[SCLEN];	char	username[SCLEN];	char	algorithm[SCLEN];	char	stale[SCLEN];	char	response[CLEN];	char	aux[CLEN];	char	passwd[SCLEN];	char	method[SCLEN];}PAUTH;	typedef struct general_t{	char	body[CLEN];	struct general_t *next;} GENERAL;typedef struct {	CSEQ	cseq;	int	expires;	int	maxforwards;	URI	from;	URI	to;	URI	*contact;	URI	*route;	URI	*recordroute;	VIA	*via;	int	contentLength;	PAUTH	*authtc;	PAUTH	*authrz;	char	contentType[CLEN];	char	callid[CLEN];	char	userAgent[CLEN];	GENERAL	*general;}HEADER;typedef	struct {	START	start;	HEADER	header;	char	*contents;	char	*buff;	int	len;	char	ip[SCLEN];	int	port;	char	to_ip[SCLEN];	int	to_port;}MESSAGE;typedef struct container_t{	char	mes[128];	URI	to;	PAUTH	auth;}CONTAINER;//------------------------------------------------------------//Proto Typevoid syserr(char *);int Register(MESSAGE *);int Subscribe(MESSAGE *);void  Response(int code,MESSAGE *);int InitializeUDP(int);int	ClearDB(void);int InitDB(void);int  GetREGDB(MESSAGE *);int  GetSUBDB(MESSAGE *,MESSAGE**);int  UpdateREGDB(MESSAGE *);int  UpdateSUBDB(MESSAGE *);int  AddNSeqSUBDB(MESSAGE *);int  ExpiredSUBDB(MESSAGE *);void SubscribeNotify(MESSAGE *);void RegisterNotify(MESSAGE *);//util.cint SeparateLex(char *buff,char c,char **optr,int n);char * SeparateLex1(char *buff,char c,char *optr,int *n);char *SkipChars(char *ptr,char c);void initialize_message_buffer(MESSAGE *mes);void free_message_buffer(MESSAGE *mes);int  CalcHash(MESSAGE *,unsigned char *);int CalcResponse(PAUTH *pauth);//parser.cint AnalyzePDU(char *rbuff,int rlen,MESSAGE *mes);//header.cint AnalyzeIntHeader(char *buff,int *val);int AnalyzeCharHeader(char *buff,char *mes);int AnalyzeURI(char *buff,URI *url );int AnalyzeCSeq(char *buff,CSEQ *);int AnalyzeVia(char *buff,VIA *via);int AddVia(VIA **,unsigned char *);int AddURI(URI **);int SearchVia(VIA **,char *,int *);int DeleteURI(URI **);void DisplayURI(int level, URI *);void DisplayPAUTH(PAUTH *);int AnalyzePAUTH(char *buff,PAUTH *pauth);//transferint Transfer(MESSAGE *mes);//Hostsvoid InitHosts(char *fname);int SearchTransferAddress(MESSAGE *mes,char *ip, int *port,int *auth,char *passwd);//void logging(int,char *);int MakeSendBuffer(MESSAGE *,char *);int MakeURItoASC(URI *,char *,int);//authint  GetAuthentication(MESSAGE *mes,char *passwd);//processvoid CheckProcess(void);int RegisterProcess(pid_t pid, int fd,char *to,unsigned char *hash);void InitProcess(void);int SendCoProcess(CONTAINER  *buffer, char *to,unsigned char *hash);extern char HOSTID[];extern  int f_spec;extern  int debug;extern char domain[DOMAIN_MAX][CLEN];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -