void CLuzj_ZTEDlg::OnTimer(UINT nIDEvent) { static char *csStatus[] = {"初始化完毕", "认证中", "认证成功", "正在获取IP地址", "成功获取IP地址", "网页认证中", "网页认证成功", "在线", "离线"}; static STATUS lastStatus = INIT; time_t t =time(NULL); char szTime[MAX_STRING]; strftime(szTime,MAX_STRING,"%H:%M:%S", localtime(&t)); m_StatusBar.SetText(szTime,0,0); if(m_bAuth && Config.m_bReauth && stricmp(szTime, Config.m_csReauthTime) == 0) { OnLogoff(); OnStart(); } if (m_bAuth) { t -= m_startTime; strftime(szTime,MAX_STRING,"在线时间%H:%M:%S",gmtime(&t)); m_StatusBar.SetText(szTime,1,0); } else { m_StatusBar.SetText("...",1,0); } m_StatusBar.SetText(csStatus[status],2,0); if(lastStatus != status) { lastStatus = status; SetBubble("状态", csStatus[status]); } CDialog::OnTimer(nIDEvent); }
void CLuzj_ZTEDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == SC_MINIMIZE || (nID & 0xFFF0) == SC_CLOSE) { ShowWindow(SW_HIDE); SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1); SetBubble("提示",STR_AppName" 正在后台运行着……",1); } else { CDialog::OnSysCommand(nID, lParam); } }
OP_STATUS OpBubbleHandler::CreateBubble(OpWindow *parent_window, const uni_char *text) { OpBubble *b = OP_NEW(OpBubble, (this)); if (!b) return OpStatus::ERR_NO_MEMORY; OP_STATUS status = b->Init(parent_window); if (OpStatus::IsError(status)) { OP_DELETE(b); return status; } status = b->SetText(text); if (OpStatus::IsError(status)) { OP_DELETE(b); return status; } SetBubble(b); return OpStatus::OK; }
void CLuzj_ZTEDlg::Log (int level, const char *fmt, ...) { if(level == I_INFO && !Config.m_bDebug) return; va_list args; char msg[MAX_STRING]; va_start (args, fmt); vsnprintf (msg, MAX_STRING, fmt, args); va_end (args); time_t t=time(NULL); char szTime[MAX_STRING]; strftime(szTime,MAX_STRING,"%H:%M:%S",localtime(&t)); strcat(szTime, " "); strcat(szTime, msg); strcat(szTime, "\r\n"); int nLength = editLog->SendMessage(WM_GETTEXTLENGTH); editLog->SetSel(nLength, nLength); editLog->ReplaceSel(szTime); editLog->SendMessage(WM_VSCROLL,SB_BOTTOM,0); if(level == I_WARN) SetBubble("Warnning", szTime); if(level == I_ERR) AfxMessageBox(szTime, MB_ICONSTOP, 0); }
void CLuzj_ZTEDlg::OnStart() { UpdateStatus(TRUE); ////////////////////////////////////////////////////////////////////////// // 先存放设置参数 CString strTemp; //取得用户名密码 GetDlgItem(IDC_USERNAME)->GetWindowText((char*)m_username, sizeof(m_username)); m_usernameLen=strlen((char*)m_username); GetDlgItem(IDC_PWD)->GetWindowText((char*)m_password, sizeof(m_password)); m_passwordLen=strlen((char*)m_password); if (m_usernameLen<1 || m_passwordLen<1) { this->Log(I_ERR, "用户名或者密码太短!"); UpdateStatus(FALSE); return; } Config.m_csNetCard=m_csAdapters[((CComboBox*)GetDlgItem(IDC_NETCARD))->GetCurSel()]; if (IsDlgButtonChecked(IDC_REMEMBER)) { Config.m_bRememberPWD=TRUE; } else { Config.m_bRememberPWD=FALSE; } Config.m_csLastUser=(char*)m_username; if(Config.m_bRememberPWD) Config.m_UserInfo[(char*)m_username]=(char*)m_password; Config.SaveConfig(); ////////////////////////////////////////////////////////////////////////// SetBubble("提示",STR_AppName" 开始联网认证……"); char m_errorBuffer[PCAP_ERRBUF_SIZE]; int retcode = 0; ///////////////////////////////////////////////////////////////////////// //寻找所选的网卡的MAC if (GetMacIP(Config.m_csNetCard, NULL, m_MacAdd) != 0) { if(m_MacAdd[0] == 0 && m_MacAdd[1] == 0 && m_MacAdd[2] == 0 && m_MacAdd[3] == 0 && m_MacAdd[4] == 0 && m_MacAdd[5] == 0) { Log(I_ERR, "GetMacIP:no mac address."); UpdateStatus(FALSE); return; } } else { Log(I_INFO, "MAC:%02X-%02X-%02X-%02X-%02X-%02X", m_MacAdd[0], m_MacAdd[1], m_MacAdd[2], m_MacAdd[3], m_MacAdd[4], m_MacAdd[5]); } ////////////////////////////////////////////////////////////////////////// // 打开指定适配器 m_adapterHandle=pcap_open_live(ToNPFName(Config.m_csNetCard),65536,1,Config.m_iTimeout,m_errorBuffer); if(m_adapterHandle == NULL) { Log(I_INFO, "pcap_open_live:%s", m_errorBuffer); UpdateStatus(FALSE); return; } char FilterStr[100]; //包过滤字符串 struct bpf_program mfcode; sprintf(FilterStr, "(ether proto 0x888e) and (ether dst host %02x:%02x:%02x:%02x:%02x:%02x)", m_MacAdd[0],m_MacAdd[1],m_MacAdd[2],m_MacAdd[3],m_MacAdd[4],m_MacAdd[5]); if((retcode=pcap_compile(m_adapterHandle, &mfcode, FilterStr, 1, 0xff))==-1 ||(retcode=pcap_setfilter(m_adapterHandle, &mfcode))==-1) { Log(I_INFO, "pcap_compile & pcap_setfilter:%s", pcap_strerror(retcode)); pcap_close(m_adapterHandle); UpdateStatus(FALSE); return; } status = AUTHING; CPacket packet; ////////////////////////////////////////////////////////////////////////// ///开始认证包 if(!(retcode=packet.send_packet_start(m_adapterHandle,m_MacAdd))) { Log(I_INFO, "send_packet_start:(%d)%s", retcode, pcap_geterr(m_adapterHandle)); UpdateStatus(FALSE); return; } Log(I_INFO, "Client:EAPOL_START..."); m_AuthThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)eap_thread, this, 0, 0); if(m_AuthThread == NULL) Log(I_INFO, "CreateThread:(%d)", GetLastError()); }
void OpBubbleHandler::Close() { // Just remove the current bubble for now (never reuse it) SetBubble(NULL); }