安裝了wifidog 的linux系統,在啟動wifidog之后,可能會爆錯誤:"wifidog auth server is not set", 在wifidog的源碼conf.c中找到:
static void
config_notnull(const void *parm, const char *parmname)
{
? ? if (parm == NULL) {
? ? ? ? debug(LOG_ERR, "%s is not set", parmname);
? ? ? ? missing_parms = 1;
? ? }
}
這個函數在下面調用:
void
config_validate(void)
{
? ? config_notnull(config.gw_interface, "GatewayInterface");
? ? config_notnull(config.auth_servers, "AuthServer");
? ? if (missing_parms) {
? ? ? ? debug(LOG_ERR, "Configuration is not complete, exiting...");
? ? ? ?exit(-1);
? ? }
}
而config_validate是在gataway.c的main里被調用:
config_init();
parse_commandline(argc, argv);
/* Initialize the config */
config_read(config->configfile);
config_validate();
整個config 設置的流程就是,先把默認值設置給全局變量config,然后將wifidog 的命令行參數傳給config,然后是讀wifidog的配置文件設置config,最后檢查config參數是否有效,只要檢查gateway interface和AuthServer。
在config_init中gw_interface和auth_servers初始化為NULL,也就是沒有值;在命令行里也沒有支持gw_interface和auth_servers的命令參數,所以我們可以通過修改wifidog.conf 的配置來最簡單的解決上述問題。
GatewayInterface eth0
AuthServer {
? ? Hostname 192.168.33.131
? ? SSLAvailable no
? ? Path /
}
另外我們也可以通過給wifidog 添加命令行參數來實現,這里就不詳述了。
本文章由 http://www.wifidog.pro整理編輯,轉載請注明出處