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