⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 networkconfig.cpp

📁 IEEE802.11 a/b/g 客户端应用程序源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	wep1Edit->setEnabled(enabled);	wep2Edit->setEnabled(enabled);	wep3Edit->setEnabled(enabled);	wep0Radio->setEnabled(enabled);	wep1Radio->setEnabled(enabled);	wep2Radio->setEnabled(enabled);	wep3Radio->setEnabled(enabled);}void NetworkConfig::writeWepKey(int network_id, QLineEdit *edit, int id){	char buf[10];	bool hex;	const char *txt, *pos;	size_t len;	if (!edit->isEnabled() || edit->text().isEmpty())		return;	/*	 * Assume hex key if only hex characters are present and length matches	 * with 40, 104, or 128-bit key	 */	txt = edit->text().toAscii().constData();	if (strcmp(txt, WPA_GUI_KEY_DATA) == 0)		return;	len = strlen(txt);	if (len == 0)		return;	pos = txt;	hex = true;	while (*pos) {		if (!((*pos >= '0' && *pos <= '9') ||		      (*pos >= 'a' && *pos <= 'f') ||		      (*pos >= 'A' && *pos <= 'F'))) {			hex = false;			break;		}		pos++;	}	if (hex && len != 10 && len != 26 && len != 32)		hex = false;	snprintf(buf, sizeof(buf), "wep_key%d", id);	setNetworkParam(network_id, buf, txt, !hex);}static int key_value_isset(const char *reply, size_t reply_len){    return reply_len > 0 && (reply_len < 4 || memcmp(reply, "FAIL", 4) != 0);}void NetworkConfig::paramsFromConfig(int network_id){	int i, res;	edit_network_id = network_id;	getEapCapa();	char reply[1024], cmd[256], *pos;	size_t reply_len;	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d ssid", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 &&	    reply_len >= 2 && reply[0] == '"') {		reply[reply_len] = '\0';		pos = strchr(reply + 1, '"');		if (pos)			*pos = '\0';		ssidEdit->setText(reply + 1);	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d proto", network_id);	reply_len = sizeof(reply) - 1;	int wpa = 0;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0) {		reply[reply_len] = '\0';		if (strstr(reply, "RSN") || strstr(reply, "WPA2"))			wpa = 2;		else if (strstr(reply, "WPA"))			wpa = 1;	}	int auth = AUTH_NONE, encr = 0;	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d key_mgmt", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0) {		reply[reply_len] = '\0';		if (strstr(reply, "WPA-EAP"))			auth = wpa & 2 ? AUTH_WPA2_EAP : AUTH_WPA_EAP;		else if (strstr(reply, "WPA-PSK"))			auth = wpa & 2 ? AUTH_WPA2_PSK : AUTH_WPA_PSK;		else if (strstr(reply, "IEEE8021X")) {			auth = AUTH_IEEE8021X;			encr = 1;		}	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d pairwise", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0) {		reply[reply_len] = '\0';		if (strstr(reply, "CCMP") && auth != AUTH_NONE)			encr = 1;		else if (strstr(reply, "TKIP"))			encr = 0;		else if (strstr(reply, "WEP"))			encr = 1;		else			encr = 0;	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d psk", network_id);	reply_len = sizeof(reply) - 1;	res = wpagui->ctrlRequest(cmd, reply, &reply_len);	if (res >= 0 && reply_len >= 2 && reply[0] == '"') {		reply[reply_len] = '\0';		pos = strchr(reply + 1, '"');		if (pos)			*pos = '\0';		pskEdit->setText(reply + 1);	} else if (res >= 0 && key_value_isset(reply, reply_len)) {		pskEdit->setText(WPA_GUI_KEY_DATA);	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d identity", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 &&	    reply_len >= 2 && reply[0] == '"') {		reply[reply_len] = '\0';		pos = strchr(reply + 1, '"');		if (pos)			*pos = '\0';		identityEdit->setText(reply + 1);	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d password", network_id);	reply_len = sizeof(reply) - 1;	res = wpagui->ctrlRequest(cmd, reply, &reply_len);	if (res >= 0 && reply_len >= 2 && reply[0] == '"') {		reply[reply_len] = '\0';		pos = strchr(reply + 1, '"');		if (pos)			*pos = '\0';		passwordEdit->setText(reply + 1);	} else if (res >= 0 && key_value_isset(reply, reply_len)) {		passwordEdit->setText(WPA_GUI_KEY_DATA);	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d ca_cert", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 &&	    reply_len >= 2 && reply[0] == '"') {		reply[reply_len] = '\0';		pos = strchr(reply + 1, '"');		if (pos)			*pos = '\0';		cacertEdit->setText(reply + 1);	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d eap", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 &&	    reply_len >= 1) {		reply[reply_len] = '\0';		for (i = 0; i < eapSelect->count(); i++) {			if (eapSelect->itemText(i).compare(reply) == 0) {				eapSelect->setCurrentIndex(i);				break;			}		}	}	for (i = 0; i < 4; i++) {		QLineEdit *wepEdit;		switch (i) {		default:		case 0:			wepEdit = wep0Edit;			break;		case 1:			wepEdit = wep1Edit;			break;		case 2:			wepEdit = wep2Edit;			break;		case 3:			wepEdit = wep3Edit;			break;		}		snprintf(cmd, sizeof(cmd), "GET_NETWORK %d wep_key%d",			 network_id, i);		reply_len = sizeof(reply) - 1;		res = wpagui->ctrlRequest(cmd, reply, &reply_len);		if (res >= 0 && reply_len >= 2 && reply[0] == '"') {			reply[reply_len] = '\0';			pos = strchr(reply + 1, '"');			if (pos)				*pos = '\0';			if (auth == AUTH_NONE || auth == AUTH_IEEE8021X)				encr = 1;			wepEdit->setText(reply + 1);		} else if (res >= 0 && key_value_isset(reply, reply_len)) {			if (auth == AUTH_NONE || auth == AUTH_IEEE8021X)				encr = 1;			wepEdit->setText(WPA_GUI_KEY_DATA);		}	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d wep_tx_keyidx", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 && reply_len >= 1)	{		reply[reply_len] = '\0';		switch (atoi(reply)) {		case 0:			wep0Radio->setChecked(true);			break;		case 1:			wep1Radio->setChecked(true);			break;		case 2:			wep2Radio->setChecked(true);			break;		case 3:			wep3Radio->setChecked(true);			break;		}	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d id_str", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 &&	    reply_len >= 2 && reply[0] == '"') {		reply[reply_len] = '\0';		pos = strchr(reply + 1, '"');		if (pos)			*pos = '\0';		idstrEdit->setText(reply + 1);	}	snprintf(cmd, sizeof(cmd), "GET_NETWORK %d priority", network_id);	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest(cmd, reply, &reply_len) >= 0 && reply_len >= 1)	{		reply[reply_len] = '\0';		prioritySpinBox->setValue(atoi(reply));	}	authSelect->setCurrentIndex(auth);	authChanged(auth);	encrSelect->setCurrentIndex(encr);	if (auth == AUTH_NONE || auth == AUTH_IEEE8021X)		wepEnabled(encr == 1);	removeButton->setEnabled(true);	addButton->setText("Save");}void NetworkConfig::removeNetwork(){	char reply[10], cmd[256];	size_t reply_len;	if (QMessageBox::information(this, "wpa_gui",				     "This will permanently remove the "				     "network\n"				     "from the configuration. Do you really "				     "want\n"				     "to remove this network?", "Yes", "No")	    != 0)		return;	snprintf(cmd, sizeof(cmd), "REMOVE_NETWORK %d", edit_network_id);	reply_len = sizeof(reply);	wpagui->ctrlRequest(cmd, reply, &reply_len);	if (strncmp(reply, "OK", 2) != 0) {		QMessageBox::warning(this, "wpa_gui",				     "Failed to remove network from "				     "wpa_supplicant\n"				     "configuration.");	} else {		wpagui->triggerUpdate();		wpagui->ctrlRequest("SAVE_CONFIG", reply, &reply_len);	}	close();}void NetworkConfig::newNetwork(){	new_network = true;	getEapCapa();}void NetworkConfig::getEapCapa(){	char reply[256];	size_t reply_len;	if (wpagui == NULL)		return;	reply_len = sizeof(reply) - 1;	if (wpagui->ctrlRequest("GET_CAPABILITY eap", reply, &reply_len) < 0)		return;	reply[reply_len] = '\0';	QString res(reply);	QStringList types = res.split(QChar(' '));	eapSelect->insertItems(-1, types);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -