1#include "phglobal.h"
2
3#include <sys/types.h>
4#include <sys/stat.h>
5#include <fcntl.h>      /* Needed only for _O_RDWR definition */
6#include <stdlib.h>
7#include <stdio.h>
8
9#ifndef WIN32
10#include <termios.h>
11#endif
12
13#include <time.h>
14
15const char *convert_status_code(int nCode)
16{
17	const char* p = "";
18	switch (nCode)
19	{
20	case okConnecting:
21		p = "okConnecting";
22		break;
23	case okConnected:
24		p = "okConnected";
25		break;
26	case okAuthpassed:
27		p = "okAuthpassed";
28		break;
29	case okDomainListed:
30		p = "okDomainListed";
31		break;
32	case okDomainsRegistered:
33		p = "okDomainsRegistered";
34		break;
35	case okKeepAliveRecved:
36		p = "okKeepAliveRecved";
37		break;
38	case okRetrievingMisc:
39		p = "okRetrievingMisc";
40		break;
41	case errorConnectFailed:
42		p = "errorConnectFailed";
43		break;
44	case errorSocketInitialFailed:
45		p = "errorSocketInitialFailed";
46		break;
47	case errorAuthFailed:
48		p = "errorAuthFailed";
49		break;
50	case errorDomainListFailed:
51		p = "errorDomainListFailed";
52		break;
53	case errorDomainRegisterFailed:
54		p = "errorDomainRegisterFailed";
55		break;
56	case errorUpdateTimeout:
57		p = "errorUpdateTimeout";
58		break;
59	case errorKeepAliveError:
60		p = "errorKeepAliveError";
61		break;
62	case errorRetrying:
63		p = "errorRetrying";
64		break;
65	case okNormal:
66		p = "okNormal";
67		break;
68	case okNoData:
69		p = "okNoData";
70		break;
71	case okServerER:
72		p = "okServerER";
73		break;
74	case errorOccupyReconnect:
75		p = "errorOccupyReconnect";
76		break;
77	case okRedirecting:
78		p = "okRedirecting";
79		break;
80	case errorAuthBusy:
81		p = "errorAuthBusy";
82		break;
83	case errorStatDetailInfoFailed:
84		p = "errorAuthBusy";
85		break;
86	}
87
88	return p;
89}
90
91
92const char *my_inet_ntoa(int ip)
93{
94	struct in_addr addr;
95	addr.s_addr = ip;
96	return inet_ntoa(addr);
97}
98
99void reverse_byte_order(int *in_array,int arraysize)
100{
101
102	unsigned int   i,k;
103	signed char *p_data;   /*data pointer*/
104	signed char *p_temp;   /*temporaty data pointer */
105	int temp;
106
107	/*printf("before %d %d\n",input_data[0],input_data[1]);*/
108	p_data = (signed char *) in_array - 1;
109	for ( k = 0 ; k < arraysize ; k++ )
110	{
111		temp = *( in_array + k );
112		p_temp = ( signed char * ) ( &temp ) + 4;
113
114		for  ( i = 0 ; i < 4 ; i++ )
115		{
116			*(++p_data) = *(--p_temp);
117		}
118	}
119	/*printf("after %d %d\n",input_data[0],input_data[1]);*/
120
121	/*free(start_ptr);*/
122}
123
124void reverse_byte_order_short(short *in_array,int arraysize)
125{
126
127	unsigned int   i,k;
128	signed char *p_data;   /*data pointer*/
129	signed char *p_temp;   /*temporaty data pointer */
130	short temp;
131
132	/*printf("before %d %d\n",input_data[0],input_data[1]);*/
133	p_data = (signed char *) in_array - 1;
134	for ( k = 0 ; k < arraysize ; k++ )
135	{
136		temp = *( in_array + k );
137		p_temp = ( signed char * ) ( &temp ) + 2;
138
139		for  ( i = 0 ; i < 2 ; i++ )
140		{
141			*(++p_data) = *(--p_temp);
142		}
143	}
144	/*printf("after %d %d\n",input_data[0],input_data[1]);*/
145
146	/*free(start_ptr);*/
147}
148
149
150static void defOnStatusChanged(PHGlobal* global, int status, int data)
151{
152	printf("defOnStatusChanged %s", convert_status_code(status));
153	if (status == okKeepAliveRecved)
154	{
155		printf(", IP: %d", data);
156	}
157	if (status == okDomainsRegistered)
158	{
159		printf(", UserType: %d", data);
160	}
161	printf("\n");
162}
163
164static void defOnDomainRegistered(PHGlobal* global, char *domain)
165{
166	printf("defOnDomainRegistered %s\n", domain);
167}
168
169static void defOnUserInfo(PHGlobal* global, char *userInfo, int len)
170{
171	printf("defOnUserInfo %s\n", userInfo);
172}
173
174static void defOnAccountDomainInfo(PHGlobal* global, char *domainInfo, int len)
175{
176	printf("defOnAccountDomainInfo %s\n", domainInfo);
177}
178
179void init_global(PHGlobal *global)
180{
181	int x = 1;
182	char *p = (char *)&x;
183	if (*p) global->bBigEndian = FALSE;
184	else global->bBigEndian = TRUE;
185
186	strcpy(global->szHost,"phddns60.oray.net");
187	strcpy(global->szUserID,"");
188	strcpy(global->szUserPWD,"");
189	strcpy(global->szBindAddress,"");
190	global->nUserType = 0;
191	global->nPort = 6060;
192
193	global->bTcpUpdateSuccessed = FALSE;
194	strcpy(global->szChallenge,"");
195	global->nChallengeLen = 0;
196	global->nChatID = global->nStartID = global->nLastResponseID = global->nAddressIndex = 0;
197	global->tmLastResponse = -1;
198	global->ip = 0;
199	strcpy(global->szTcpConnectAddress,"");
200
201	global->cLastResult = -1;
202
203	global->uptime = time(0);
204	global->lasttcptime = 0;
205
206	strcpy(global->szActiveDomains[0],".");
207
208	global->bNeed_connect = TRUE;
209	global->tmLastSend = 0;
210
211	global->m_tcpsocket = global->m_udpsocket = INVALID_SOCKET;
212	global->user_data = NULL;
213	global->cbOnStatusChanged = NULL;
214	global->cbOnDomainRegistered = NULL;
215	global->cbOnUserInfo = NULL;
216	global->cbOnAccountDomainInfo = NULL;
217}
218
219void set_default_callback(PHGlobal *global)
220{
221	global->cbOnStatusChanged = defOnStatusChanged;
222	global->cbOnDomainRegistered = defOnDomainRegistered;
223	global->cbOnUserInfo = defOnUserInfo;
224	global->cbOnAccountDomainInfo = defOnAccountDomainInfo;
225}
226
227