예제 #1
0
bool EQLConfig::SetDynamicCount(int count) {
	char errbuf[MYSQL_ERRMSG_SIZE];
	char *query = 0;

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';

	if (!database.RunQuery(query, MakeAnyLenString(&query,
		"UPDATE launcher SET dynamics=%d WHERE name='%s'",
		count, namebuf), errbuf)) {
		LogFile->write(EQEMuLog::Error, "Error in SetDynamicCount query: %s", errbuf);
		safe_delete_array(query);
		return false;
	}
	safe_delete_array(query);

	//update in-memory version.
	m_dynamics = count;

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->BootDynamics(count);
	}

	return(false);
}
예제 #2
0
bool EQLConfig::DeleteStaticZone(Const_char *short_name) {
	//check internal state
	std::map<std::string, LauncherZone>::iterator res;
	res = m_zones.find(short_name);
	if(res == m_zones.end()) {
		//not found.
		Log.Out(Logs::General, Logs::Error, "Update for unknown zone %s", short_name);
		return false;
	}

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';
	char zonebuf[32];
	database.DoEscapeString(zonebuf, short_name, strlen(short_name)&0xF);	//limit len to 16
	zonebuf[31] = '\0';

    std::string query = StringFormat("DELETE FROM launcher_zones WHERE "
                                    "launcher = '%s' AND zone = '%s'", namebuf, zonebuf);
    auto results = database.QueryDatabase(query);
	if (!results.Success()) {
		return false;
	}

	//internal update.
	m_zones.erase(res);

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->StopZone(short_name);
	}

	return true;
}
예제 #3
0
bool EQLConfig::BootStaticZone(Const_char *short_name, uint16 port) {
	//make sure the short name is valid.
	if(database.GetZoneID(short_name) == 0)
		return false;

	//database update
	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';
	char zonebuf[32];
	database.DoEscapeString(zonebuf, short_name, strlen(short_name)&0xF);	//limit len to 16
	zonebuf[31] = '\0';

    std::string query = StringFormat("INSERT INTO launcher_zones (launcher, zone, port) "
                                    "VALUES('%s', '%s', %d)", namebuf, zonebuf, port);
    auto results = database.QueryDatabase(query);
	if (!results.Success()) {
		return false;
	}

	//update our internal state.
	LauncherZone lz;
	lz.name = short_name;
	lz.port = port;
	m_zones[lz.name] = lz;

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->BootZone(short_name, port);
	}

	return true;
}
예제 #4
0
std::map<std::string,std::string> EQLConfig::GetZoneDetails(Const_char *zone_ref) {
	std::map<std::string,std::string> res;

	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll == nullptr) {
		res["name"] = zone_ref;
		res["up"] = "0";
		res["starts"] = "0";
		res["port"] = "0";
	} else {
		ll->GetZoneDetails(zone_ref, res);
	}

	return(res);
}
예제 #5
0
bool EQLConfig::ChangeStaticZone(Const_char *short_name, uint16 port) {
	//make sure the short name is valid.
	if(database.GetZoneID(short_name) == 0)
		return(false);

	//check internal state
	std::map<std::string, LauncherZone>::iterator res;
	res = m_zones.find(short_name);
	if(res == m_zones.end()) {
		//not found.
		LogFile->write(EQEMuLog::Error, "Update for unknown zone %s", short_name);
		return(false);
	}


	//database update
	char errbuf[MYSQL_ERRMSG_SIZE];
	char *query = 0;

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';
	char zonebuf[32];
	database.DoEscapeString(zonebuf, short_name, strlen(short_name)&0xF);	//limit len to 16
	zonebuf[31] = '\0';

	if (!database.RunQuery(query, MakeAnyLenString(&query,
		"UPDATE launcher_zones SET port=%d WHERE launcher='%s' AND zone='%s'",
		port, namebuf, zonebuf), errbuf)) {
		LogFile->write(EQEMuLog::Error, "Error in ChangeStaticZone query: %s", errbuf);
		safe_delete_array(query);
		return false;
	}
	safe_delete_array(query);


	//update internal state
	res->second.port = port;

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->RestartZone(short_name);
	}

	return(true);
}
예제 #6
0
std::vector<std::string> EQLConfig::ListZones() {
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	std::vector<std::string> res;
	if(ll == nullptr) {
		//if the launcher isnt connected, use the list from the database.
		std::map<std::string, LauncherZone>::iterator cur, end;
		cur = m_zones.begin();
		end = m_zones.end();
		for(; cur != end; cur++) {
			res.push_back(cur->first);
		}
	} else {
		//otherwise, use the zone list from the launcher link.
		ll->GetZoneList(res);
	}
	return(res);
}
예제 #7
0
bool EQLConfig::DeleteStaticZone(Const_char *short_name) {
	//check internal state
	std::map<std::string, LauncherZone>::iterator res;
	res = m_zones.find(short_name);
	if(res == m_zones.end()) {
		//not found.
		LogFile->write(EQEMuLog::Error, "Update for unknown zone %s", short_name);
		return(false);
	}

	//database update
	char errbuf[MYSQL_ERRMSG_SIZE];
	char *query = 0;

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';
	char zonebuf[32];
	database.DoEscapeString(zonebuf, short_name, strlen(short_name)&0xF);	//limit len to 16
	zonebuf[31] = '\0';

	if (!database.RunQuery(query, MakeAnyLenString(&query,
		"DELETE FROM launcher_zones WHERE launcher='%s' AND zone='%s'",
		namebuf, zonebuf), errbuf)) {
		LogFile->write(EQEMuLog::Error, "Error in DeleteStaticZone query: %s", errbuf);
		safe_delete_array(query);
		return false;
	}
	safe_delete_array(query);

	//internal update.
	m_zones.erase(res);

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->StopZone(short_name);
	}

	return true;
}
예제 #8
0
bool EQLConfig::BootStaticZone(Const_char *short_name, uint16 port) {
	//make sure the short name is valid.
	if(database.GetZoneID(short_name) == 0)
		return(false);

	//database update
	char errbuf[MYSQL_ERRMSG_SIZE];
	char *query = 0;

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';
	char zonebuf[32];
	database.DoEscapeString(zonebuf, short_name, strlen(short_name)&0xF);	//limit len to 16
	zonebuf[31] = '\0';

	if (!database.RunQuery(query, MakeAnyLenString(&query,
		"INSERT INTO launcher_zones (launcher,zone,port) VALUES('%s', '%s', %d)",
		namebuf, zonebuf, port), errbuf)) {
		LogFile->write(EQEMuLog::Error, "Error in BootStaticZone query: %s", errbuf);
		safe_delete_array(query);
		return false;
	}
	safe_delete_array(query);

	//update our internal state.
	LauncherZone lz;
	lz.name = short_name;
	lz.port = port;
	m_zones[lz.name] = lz;

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->BootZone(short_name, port);
	}

	return(true);
}
예제 #9
0
bool EQLConfig::ChangeStaticZone(Const_char *short_name, uint16 port) {
	//make sure the short name is valid.
	if(database.GetZoneID(short_name) == 0)
		return false;

	//check internal state
	std::map<std::string, LauncherZone>::iterator res;
	res = m_zones.find(short_name);
	if(res == m_zones.end()) {
		//not found.
		Log.Out(Logs::General, Logs::Error, "Update for unknown zone %s", short_name);
		return false;
	}

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';
	char zonebuf[32];
	database.DoEscapeString(zonebuf, short_name, strlen(short_name)&0xF);	//limit len to 16
	zonebuf[31] = '\0';

    std::string query = StringFormat("UPDATE launcher_zones SET port=%d WHERE "
                                    "launcher = '%s' AND zone = '%s'",port, namebuf, zonebuf);
    auto results = database.QueryDatabase(query);
	if (!results.Success()) {
		return false;
	}

	//update internal state
	res->second.port = port;

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->RestartZone(short_name);
	}

	return true;
}
예제 #10
0
bool EQLConfig::SetDynamicCount(int count) {

	char namebuf[128];
	database.DoEscapeString(namebuf, m_name.c_str(), m_name.length()&0x3F);	//limit len to 64
	namebuf[127] = '\0';

    std::string query = StringFormat("UPDATE launcher SET dynamics=%d WHERE name='%s'", count, namebuf);
    auto results = database.QueryDatabase(query);
	if (!results.Success()) {
		return false;
	}

	//update in-memory version.
	m_dynamics = count;

	//if the launcher is connected, update it.
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll != nullptr) {
		ll->BootDynamics(count);
	}

	return false;
}
예제 #11
0
void EQLConfig::StartZone(Const_char *zone_ref) {
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll == nullptr)
		return;
	ll->StartZone(zone_ref);
}
예제 #12
0
bool EQLConfig::IsConnected() const {
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	return(ll != nullptr);
}
예제 #13
0
파일: EQLConfig.cpp 프로젝트: Vaion/Server
void EQLConfig::RestartZone(Const_char *zone_ref) {
	LauncherLink *ll = launcher_list.Get(m_name.c_str());
	if(ll == NULL)
		return;
	ll->RestartZone(zone_ref);
}