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

📄 config.cc

📁 ap radar是一个Linux /基于GTK +基于图形netstumbler和无线档管理工具。这个项目使用了14个版的无线扩展在Linux 2.4.20和2.6提供接入点扫描功能
💻 CC
字号:
/* AP Radar * June 2002 * donald.g.park@iname.com * * Released under the MIT Open Source Licence * http://www.opensource.org/licenses/mit-license.php */#include <iostream>#include <fstream>#include <sys/socket.h>#include <sys/stat.h>#include <sys/types.h>#include "Config.h"#include "AccessPointList.h"using namespace std;Config::Config(){    dirname = new string("");    interface = NULL;    dhcpCommand = new string ("dhclient");    /* Create a channel to the NET kernel. */    int skfd;    if((skfd = socket(AF_INET, SOCK_DGRAM,0) ) < 0) {        cout << "socket creation error in Config::Config()" << endl;    }    setSkfd(skfd);}void Config::setMain(Main* m){    main = m;}Main* Config::getMain(){    return main;}void Config::setWindow(Window* w){    win = w;}Window* Config::getWindow(){    return win;}void Config::setSkfd(int s){    skfd = s;}int Config::getSkfd(){    return skfd;}void Config::setInterface(NetworkInterface* iface){    if(iface != NULL) {        cout << "config: setting interface to " << *(iface->getName()) <<            ". " << *(iface->getDriverName()) << " driver." << endl;    }    interface = iface;}NetworkInterface* Config::getInterface(){    return interface;}// return the first interface from /proc/net/wirelessNetworkInterface* Config::findInterface(){    NetworkInterface *ifn;    ifn = new NetworkInterface();    ifn->setConfig(this);    // Pull interface names out of /proc/net/wireless    ifstream *in;    in = new ifstream("/proc/net/wireless");    char line[128];    string *s;    string *nss;    while (in->getline(line,127)) {        s = new string(line);        string::size_type colonpos;        colonpos = s->find_first_of(':');        // 4294967295 -> this is size_type's idea of zero?        if(colonpos < 100000000 ) {            // We've got an interface            string::size_type nospacepos;            nospacepos = s->find_first_not_of(' ');            // I dont know how to assign this to s, a string*            // so i went with nss, a string            nss = new string(s->substr(nospacepos, colonpos-nospacepos));            ifn->setName(nss);            return ifn;        }        delete s;    }    delete in;    return NULL;}void Config::setAPs(AccessPointList* apl){    aplist = apl;}AccessPointList* Config::getAPs(){    return aplist;}void Config::syncAPList(AccessPointList* apl){    // mark all the APs as 'gone away'    // the mark any APs in apl as 'here'    // no need to sync a non-existant list    if (apl == NULL) return;    // Compare the incoming list with the existing AP List    AccessPointList::const_iterator newit;    newit = apl->begin();    for(;newit != apl->end(); ++newit) {        AccessPointList::const_iterator oldit;        oldit = aplist->begin();        bool addme = true;        for(;oldit != aplist->end(); ++oldit) {            if( (**oldit) == (**newit) ) {                // Already have this AP                cout << "Already have AP " << *((*newit)->getBssidString()) << " " << *((*newit)->getEssid()) << endl;                addme = false;                // Check for updates                if( (*oldit)->hasDifferences(*newit) == true) {                    (*oldit)->updateValues(*newit);                    win->refresh_AP(*oldit);                }            }        }        if(addme == true) {            //cout << "Adding AP Essid:" << *(*newit)->getEssid() << endl;            win->add_AP(*newit);            aplist->push_back((*newit));        }    }    cout << "SyncAPs finish.  aplist->size() " << aplist->size() << endl;}void Config::setPhantomAPs(bool pap){    PhantomAPs = pap;}bool Config::getPhantomAPs(){    return PhantomAPs;}void Config::setDirname(string* dn){    if(dn != 0) {        if(dn->length() > 0) {            dirname = dn;            //cout << "Config::setDirname setting " << *dn << endl;        }        else {            cout << "Config::setDirname given 0 length string" << endl;        }    }    else {        cout << "Config::setDirname given 0 pointer" << endl;    }}string* Config::getDirname(){    //cout << "Config::getDirname HERE returning " << " addr:" << dirname << endl;    //if(dirname != NULL) {    //	cout << "value: " << *dirname << endl;    //}    return dirname;}void Config::setDhcpCommand(string* dc){    dhcpCommand = dc;}string* Config::getDhcpCommand(){    return dhcpCommand;}void Config::setRunDhcp(bool yn){    config_run_dhcp = yn;}bool Config::getRunDhcp(){    return config_run_dhcp;}void Config::setPingGateway(bool yn){    config_ping_gateway = yn;}bool Config::getPingGateway(){    return config_ping_gateway;}void Config::saveConfigOptions(){    string homedir(getenv("HOME"));    string options_directory = homedir + "/.apradar";    struct stat buf;    int retval = stat(options_directory.c_str() , &buf);    if(retval != 0) {        cout << "creating " << options_directory << endl;        mkdir(options_directory.c_str(),0);        int retval = stat(options_directory.c_str() , &buf);        if(retval != 0) {            cout << "error creating " << options_directory << " errno=" << errno << endl;            return;        }    }    // write user-configurable options to disk    string options_filename = options_directory + "/options";    cout << "Saving options to " << options_filename << endl;    ofstream *out;    out = new ofstream(options_filename.c_str());    if(!out) {        cout << "error saving to " << options_filename << endl;;        return;    }    *out << "ping_gateway " << (config_ping_gateway ? "true" : "false") << endl;    *out << "run_dhcp " << (config_run_dhcp ? "true" : "false") << endl;    out->close();}void Config::loadConfigOptions(){    // load options from disk    string homedir(getenv("HOME"));    string options_filename = homedir + "/.apradar/options";    cout << "Loading options from " << options_filename << endl;    ifstream *in;    in = new ifstream(options_filename.c_str());    if(!in) {        cout << "error loading from " << options_filename << endl;;        return;    }    string f1, f2;    while (*in >> f1 >> f2 ) {        cout << "config read \"" << f1 << "\" \"" << f2 << "\"" << endl;        if(f1 == "ping_gateway") {            if(f2 == "true") {                config_ping_gateway = true;            }            else if(f2 == "false") {                config_ping_gateway = false;            }            else {                cout << "bogus setting on " << f1 << " of \"" << f2 << "\"" << endl;            }        }        if(f1 == "run_dhcp") {            if(f2 == "true") {                config_run_dhcp = true;            }            else if(f2 == "false") {                config_run_dhcp = false;            }            else {                cout << "bogus setting on " << f1 << " of \"" << f2 << "\"" << endl;            }        }    }}/* * Copyright (c) 2002 Donald G. Park * The MIT License * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */

⌨️ 快捷键说明

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