/*
 * Function:    Constructor
 */
Server::Server(int port) {
	cout << "Running program as server" << endl;
    this->m_nListenPort = port;
    this->m_nLatestIndex = 0;
    this->m_nQueIx = 0;

    // initalize nodeList and its tracker
	for(int i=0; i<10; i++)
	{
		m_nodeList[i].id = i+1;
		m_nodeList[i].state=INACTIVE;
		m_nodeList[i].isServer=false;
	}
    updateIpAddress();
    printf("server IP: %s \n", m_ipAddress);

    // initalize server specific parameters
    FD_ZERO(&m_masterSet);
    FD_ZERO(&m_readSet);
    memset(&m_srvAddr, 0, sizeof(m_srvAddr));

    // starting event handler
    eventHandler();
}
Exemple #2
0
int networkConnect()
{
    switch(CurNetwork.mode)
    {
    case NMODE_MANAGED:
        sprintf(cmdSetMode, "iwconfig %s mode managed", CurNetwork.interface);
        break;
    case NMODE_ADHOC:
        sprintf(cmdSetMode, "iwconfig %s mode ad-hoc", CurNetwork.interface);
        break;
    case NMODE_MASTER:
        sprintf(cmdSetMode, "iwconfig %s mode master", CurNetwork.interface);
        break;

    default:
        break;
    }
    sprintf(cmdSetIfaceUp, "ifconfig %s up", CurNetwork.interface);
    sprintf(cmdSetIfaceDown, "ifconfig %s down", CurNetwork.interface);
    sprintf(cmdSetEssid, "iwconfig %s essid \"%s\"", CurNetwork.interface, CurNetwork.essid);
    sprintf(cmdSetDhcp, "udhcpc -i %s -n", CurNetwork.interface);
    switch(CurNetwork.encryption)
    {
    case ENC_WEP:
        sprintf(cmdSetWepKey, "iwconfig %s key s:%s", CurNetwork.interface, CurNetwork.key);
        break;
    case ENC_WEP_NUM:
        sprintf(cmdSetWepKey, "iwconfig %s key %s", CurNetwork.interface, CurNetwork.key);
        break;
    case ENC_WPA:
        sprintf(cmdSetWpaPassphrase, "wpa_passphrase \"%s\" \"%s\" > /tmp/wpa.conf", CurNetwork.essid, CurNetwork.key);
        sprintf(cmdSetWpaSup, "wpa_supplicant -B -Dwext -i%s -c/tmp/wpa.conf", CurNetwork.interface);
        break;

    default:
        break;
    }

    systemf("ifconfig %s down", CurNetwork.interface);

#if defined(DRIVER_WEXT)
    if(systemf("ifconfig %s up", CurNetwork.interface))
    {
        return 1;
    }
    if(system(cmdSetMode))
    {
        return 1;
    }
    if(system(cmdSetEssid))
    {
        return 1;
    }
    switch(CurNetwork.encryption)
    {
    case ENC_NONE:
        sleep(1);
        break;
    case ENC_WEP:
    case ENC_WEP_NUM:
        if(system(cmdSetWepKey))
        {
            return 1;
        }
        sleep(1);
        break;
    case ENC_WPA:
        sleep(1);
        if(system(cmdSetWpaPassphrase))
        {
            return 1;
        }
        if(system(cmdSetWpaSup))
        {
            return 1;
        }
        sleep(1);
        break;

    default:
        break;
    }
#elif defined(DRIVER_NL80211)
    systemf("killall -9 wpa_supplicant");
    if(systemf("ifconfig %s up", CurNetwork.interface))
    {
        return 1;
    }
    sleep(1);
    switch(CurNetwork.encryption)
    {
    case ENC_NONE:
        break;
    case ENC_WEP:
    case ENC_WEP_NUM:
        systemf("echo -e \"network={\\nssid=\\\"%s\\\"\\nscan_ssid=1\\npriority=5\\nkey_mgmt=NONE\\nwep_key0=\\\"%s\\\"\\nwep_tx_keyidx=0\\n}\" > /tmp/wpa.conf", CurNetwork.essid, CurNetwork.key);
        systemf("wpa_supplicant -B -Dnl80211 -i%s -c/tmp/wpa.conf", CurNetwork.interface);
        sleep(1);
        break;
    case ENC_WPA:
        systemf("wpa_passphrase \"%s\" \"%s\" > /tmp/wpa.conf", CurNetwork.essid, CurNetwork.key);
        systemf("wpa_supplicant -B -Dnl80211 -i%s -c/tmp/wpa.conf", CurNetwork.interface);
        sleep(1);
        break;

    default:
        break;
    }
#endif
    if(systemf("udhcpc -i %s -n", CurNetwork.interface))
    {

        return 1;
    }

    updateIpAddress();

    return 0;
}