config_file.c
来自「WLAN无线网络管理的最新程序」· C语言 代码 · 共 725 行 · 第 1/2 页
C
725 行
== 0) { config->dot11RSNAConfigPMKReauthThreshold = atoi(pos + 34); wpa_printf(MSG_DEBUG, "dot11RSNAConfigPMKReauthThreshold=%d", config->dot11RSNAConfigPMKReauthThreshold); } else if (os_strncmp(pos, "dot11RSNAConfigSATimeout=", 25) == 0) { config->dot11RSNAConfigSATimeout = atoi(pos + 25); wpa_printf(MSG_DEBUG, "dot11RSNAConfigSATimeout=%d", config->dot11RSNAConfigSATimeout); } else if (os_strncmp(pos, "update_config=", 14) == 0) { config->update_config = atoi(pos + 14); wpa_printf(MSG_DEBUG, "update_config=%d", config->update_config); } else if (os_strncmp(pos, "load_dynamic_eap=", 17) == 0) { char *so = pos + 17; int ret; wpa_printf(MSG_DEBUG, "load_dynamic_eap=%s", so); ret = eap_peer_method_load(so); if (ret == -2) { wpa_printf(MSG_DEBUG, "This EAP type was " "already loaded - not reloading."); } else if (ret) { wpa_printf(MSG_ERROR, "Line %d: Failed to " "load dynamic EAP method '%s'.", line, so); errors++; } } else { wpa_printf(MSG_ERROR, "Line %d: Invalid configuration " "line '%s'.", line, pos); errors++; continue; } } fclose(f); config->ssid = head; wpa_config_debug_dump_networks(config); if (errors) { wpa_config_free(config); config = NULL; head = NULL; } return config;}static void write_str(FILE *f, const char *field, struct wpa_ssid *ssid){ char *value = wpa_config_get(ssid, field); if (value == NULL) return; fprintf(f, "\t%s=%s\n", field, value); os_free(value);}static void write_int(FILE *f, const char *field, int value, int def){ if (value == def) return; fprintf(f, "\t%s=%d\n", field, value);}static void write_bssid(FILE *f, struct wpa_ssid *ssid){ char *value = wpa_config_get(ssid, "bssid"); if (value == NULL) return; fprintf(f, "\tbssid=%s\n", value); os_free(value);}static void write_psk(FILE *f, struct wpa_ssid *ssid){ char *value = wpa_config_get(ssid, "psk"); if (value == NULL) return; fprintf(f, "\tpsk=%s\n", value); os_free(value);}static void write_proto(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->proto == DEFAULT_PROTO) return; value = wpa_config_get(ssid, "proto"); if (value == NULL) return; if (value[0]) fprintf(f, "\tproto=%s\n", value); os_free(value);}static void write_key_mgmt(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->key_mgmt == DEFAULT_KEY_MGMT) return; value = wpa_config_get(ssid, "key_mgmt"); if (value == NULL) return; if (value[0]) fprintf(f, "\tkey_mgmt=%s\n", value); os_free(value);}static void write_pairwise(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->pairwise_cipher == DEFAULT_PAIRWISE) return; value = wpa_config_get(ssid, "pairwise"); if (value == NULL) return; if (value[0]) fprintf(f, "\tpairwise=%s\n", value); os_free(value);}static void write_group(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->group_cipher == DEFAULT_GROUP) return; value = wpa_config_get(ssid, "group"); if (value == NULL) return; if (value[0]) fprintf(f, "\tgroup=%s\n", value); os_free(value);}static void write_auth_alg(FILE *f, struct wpa_ssid *ssid){ char *value; if (ssid->auth_alg == 0) return; value = wpa_config_get(ssid, "auth_alg"); if (value == NULL) return; if (value[0]) fprintf(f, "\tauth_alg=%s\n", value); os_free(value);}#ifdef IEEE8021X_EAPOLstatic void write_eap(FILE *f, struct wpa_ssid *ssid){ char *value; value = wpa_config_get(ssid, "eap"); if (value == NULL) return; if (value[0]) fprintf(f, "\teap=%s\n", value); os_free(value);}#endif /* IEEE8021X_EAPOL */static void write_wep_key(FILE *f, int idx, struct wpa_ssid *ssid){ char field[20], *value; os_snprintf(field, sizeof(field), "wep_key%d", idx); value = wpa_config_get(ssid, field); if (value) { fprintf(f, "\t%s=%s\n", field, value); os_free(value); }}static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid){ int i;#define STR(t) write_str(f, #t, ssid)#define INT(t) write_int(f, #t, ssid->t, 0)#define INT_DEF(t, def) write_int(f, #t, ssid->t, def) STR(ssid); INT(scan_ssid); write_bssid(f, ssid); write_psk(f, ssid); write_proto(f, ssid); write_key_mgmt(f, ssid); write_pairwise(f, ssid); write_group(f, ssid); write_auth_alg(f, ssid);#ifdef IEEE8021X_EAPOL write_eap(f, ssid); STR(identity); STR(anonymous_identity); STR(eappsk); STR(nai); STR(password); STR(ca_cert); STR(ca_path); STR(client_cert); STR(private_key); STR(private_key_passwd); STR(dh_file); STR(subject_match); STR(altsubject_match); STR(ca_cert2); STR(ca_path2); STR(client_cert2); STR(private_key2); STR(private_key2_passwd); STR(dh_file2); STR(subject_match2); STR(altsubject_match2); STR(phase1); STR(phase2); STR(pcsc); STR(pin); STR(engine_id); STR(key_id); INT(engine); INT_DEF(eapol_flags, DEFAULT_EAPOL_FLAGS);#endif /* IEEE8021X_EAPOL */ for (i = 0; i < 4; i++) write_wep_key(f, i, ssid); INT(wep_tx_keyidx); INT(priority);#ifdef IEEE8021X_EAPOL INT_DEF(eap_workaround, DEFAULT_EAP_WORKAROUND); STR(pac_file); INT_DEF(fragment_size, DEFAULT_FRAGMENT_SIZE);#endif /* IEEE8021X_EAPOL */ INT(mode); INT(proactive_key_caching); INT(disabled); INT(peerkey);#ifdef CONFIG_IEEE80211W INT(ieee80211w);#endif /* CONFIG_IEEE80211W */ STR(id_str);#undef STR#undef INT#undef INT_DEF}static int wpa_config_write_blob(FILE *f, struct wpa_config_blob *blob){ unsigned char *encoded; encoded = base64_encode(blob->data, blob->len, NULL); if (encoded == NULL) return -1; fprintf(f, "\nblob-base64-%s={\n%s}\n", blob->name, encoded); os_free(encoded); return 0;}static void wpa_config_write_global(FILE *f, struct wpa_config *config){#ifdef CONFIG_CTRL_IFACE if (config->ctrl_interface) fprintf(f, "ctrl_interface=%s\n", config->ctrl_interface); if (config->ctrl_interface_group) fprintf(f, "ctrl_interface_group=%s\n", config->ctrl_interface_group);#endif /* CONFIG_CTRL_IFACE */ if (config->eapol_version != DEFAULT_EAPOL_VERSION) fprintf(f, "eapol_version=%d\n", config->eapol_version); if (config->ap_scan != DEFAULT_AP_SCAN) fprintf(f, "ap_scan=%d\n", config->ap_scan); if (config->fast_reauth != DEFAULT_FAST_REAUTH) fprintf(f, "fast_reauth=%d\n", config->fast_reauth); if (config->opensc_engine_path) fprintf(f, "opensc_engine_path=%s\n", config->opensc_engine_path); if (config->pkcs11_engine_path) fprintf(f, "pkcs11_engine_path=%s\n", config->pkcs11_engine_path); if (config->pkcs11_module_path) fprintf(f, "pkcs11_module_path=%s\n", config->pkcs11_module_path); if (config->driver_param) fprintf(f, "driver_param=%s\n", config->driver_param); if (config->dot11RSNAConfigPMKLifetime) fprintf(f, "dot11RSNAConfigPMKLifetime=%d\n", config->dot11RSNAConfigPMKLifetime); if (config->dot11RSNAConfigPMKReauthThreshold) fprintf(f, "dot11RSNAConfigPMKReauthThreshold=%d\n", config->dot11RSNAConfigPMKReauthThreshold); if (config->dot11RSNAConfigSATimeout) fprintf(f, "dot11RSNAConfigSATimeout=%d\n", config->dot11RSNAConfigSATimeout); if (config->update_config) fprintf(f, "update_config=%d\n", config->update_config);}int wpa_config_write(const char *name, struct wpa_config *config){ FILE *f; struct wpa_ssid *ssid; struct wpa_config_blob *blob; int ret = 0; wpa_printf(MSG_DEBUG, "Writing configuration file '%s'", name); f = fopen(name, "w"); if (f == NULL) { wpa_printf(MSG_DEBUG, "Failed to open '%s' for writing", name); return -1; } wpa_config_write_global(f, config); for (ssid = config->ssid; ssid; ssid = ssid->next) { fprintf(f, "\nnetwork={\n"); wpa_config_write_network(f, ssid); fprintf(f, "}\n"); } for (blob = config->blobs; blob; blob = blob->next) { ret = wpa_config_write_blob(f, blob); if (ret) break; } fclose(f); wpa_printf(MSG_DEBUG, "Configuration file '%s' written %ssuccessfully", name, ret ? "un" : ""); return ret;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?