// List saved logins
std::vector<std::string> LLSecAPIBasicHandler::listCredentials()
{
	if (mProtectedDataMap.has("credential") && mProtectedDataMap["credential"].isMap())
	{
		std::vector<std::string> logins(mProtectedDataMap["credential"].size());
		int i = 0;
		for (LLSD::map_const_iterator it = mProtectedDataMap["credential"].beginMap(); it !=  mProtectedDataMap["credential"].endMap(); ++it)
		{
			logins[i++] = it->first;
		}
		return logins;
	}
	else return std::vector<std::string>();
}
		void ReservationUserUpdateAction::run(Request& request)
		{
			stringstream s;
			DBLogModule::appendToLogIfChange(s, "Login", _user->getLogin(), _login);
			DBLogModule::appendToLogIfChange(s, "Adresse", _user->getAddress(), _address);
			DBLogModule::appendToLogIfChange(s, "E-mail", _user->getEMail(), _email);
			DBLogModule::appendToLogIfChange(s, "Code postal", _user->getPostCode(), _postalCode);
			DBLogModule::appendToLogIfChange(s, "Ville", _user->getCityText(), _city);
			DBLogModule::appendToLogIfChange(s, "Téléphone", _user->getPhone(), _phone);
			if(_authorizedLogin)
			{
				DBLogModule::appendToLogIfChange(s, "Autorisation de connexion", lexical_cast<string>(_user->getConnectionAllowed()), lexical_cast<string>(*_authorizedLogin));
			}
			DBLogModule::appendToLogIfChange(s, "Nom", _user->getName(), _name);
			DBLogModule::appendToLogIfChange(s, "Prénom", _user->getSurname(), _surname);

			_user->setLogin(_login);
			_user->setAddress(_address);
			_user->setEMail(_email);
			_user->setPostCode(_postalCode);
			_user->setCityText(_city);
			_user->setPhone(_phone);
			if(_authorizedLogin)
			{
				_user->setConnectionAllowed(*_authorizedLogin);
			}
			_user->setName(_name);
			_user->setSurname(_surname);

			if(!s.str().empty())
			{
				SecurityLog::addUserAdmin(request.getUser().get(), _user.get(), s.str());
				ResaDBLog::AddUserAdminEntry(*request.getSession(), *_user, s.str());
			}


			if(	_autoResaActivated &&
				(	_user->getProfile()->getKey() == ResaModule::GetBasicResaCustomerProfile()->getKey() ||
					_user->getProfile()->getKey() == ResaModule::GetAutoResaResaCustomerProfile()->getKey()
			)	){
				stringstream s2;
				DBLogModule::appendToLogIfChange(
					s2,
					"Activation auto-réservation",
					_user->getProfile()->getKey() == ResaModule::GetAutoResaResaCustomerProfile()->getKey() ? "OUI" : "NON",
					*_autoResaActivated ? "OUI" : "NON"
				);
				_user->setProfile(
					(*_autoResaActivated ? ResaModule::GetAutoResaResaCustomerProfile() : ResaModule::GetBasicResaCustomerProfile()).get()
				);

				// Change detection
				if(!s2.str().empty())
				{
					ResaDBLog::AddUserChangeAutoResaActivationEntry(*request.getSession(), *_user);

					// Send confirmation e-mail to the customer
					if(_autoResaActivated)
					{
						// Create a login if empty
						if(_user->getLogin().empty())
						{
							string idealLogin(_user->getSurname().substr(0,1) + _user->getName());
							algorithm::replace_all(idealLogin, " ", string());
							algorithm::replace_all(idealLogin, "'", string());
							algorithm::to_lower(idealLogin);

							UserTableSync::SearchResult logins(UserTableSync::Search(*_env, idealLogin));

							if(logins.empty())
							{
								_user->setLogin(idealLogin);
							}
							else
							{
								for(int i=0; i<999999; ++i)
								{
									UserTableSync::SearchResult logins(UserTableSync::Search(*_env, idealLogin + lexical_cast<string>(i)));

									if(logins.empty())
									{
										_user->setLogin(idealLogin + lexical_cast<string>(i));
										break;
									}
								}
							}
						}

						// Create random password if empty
						if(_user->getPassword().empty())
						{
							_user->setRandomPassword();
						}

						// Send confirmation email
						if(ResaModule::GetReservationContact())
						{
							if(ResaModule::GetReservationContact()->sendCustomerEMail(*_user))
							{
								ResaDBLog::AddEMailEntry(*request.getSession(), *_user, "Message d'activation de réservation en ligne");
							}
						}
					}
				}
			}

			UserTableSync::Save(_user.get());
		}
std::string NFCMasterNet_ServerModule::GetServersStatus()
{
	rapidjson::Document doc;
	rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
	rapidjson::Value root(rapidjson::kObjectType);

	root.AddMember("code", 0, allocator);
	root.AddMember("errMsg", "", allocator);
	root.AddMember("nowTime", pPluginManager->GetNowTime(), allocator);

	rapidjson::Value master(rapidjson::kArrayType);
	std::shared_ptr<ServerData> pServerData = mMasterMap.First();
	while (pServerData)
	{
		rapidjson::Value server(rapidjson::kObjectType);
		server.AddMember("serverId", pServerData->pData->server_id(), allocator);
		server.AddMember("servrName", rapidjson::Value(pServerData->pData->server_name().c_str(), allocator), allocator);
		server.AddMember("ip", rapidjson::Value(pServerData->pData->server_ip().c_str(), allocator), allocator);
		server.AddMember("port", pServerData->pData->server_port(), allocator);
		server.AddMember("onlineCount", pServerData->pData->server_cur_count(), allocator);
		server.AddMember("status", (int)pServerData->pData->server_state(), allocator);
		/*
		rapidjson::Value server_info_ext(rapidjson::kArrayType);
		for (int i = 0; i < pServerData->pData->server_info_list_ext().key_size();i++)
		{
			rapidjson::Value extKeyValue(rapidjson::kObjectType);
			extKeyValue.AddMember(rapidjson::Value(pServerData->pData->server_info_list_ext().key(i).c_str(), allocator), rapidjson::Value(pServerData->pData->server_info_list_ext().value(i).c_str(), allocator), allocator);
			server_info_ext.PushBack(extKeyValue, allocator);
		}
		server.AddMember("info_ext", server_info_ext, allocator);
		*/
		master.PushBack(server, allocator);
		pServerData = mMasterMap.Next();
	}
	root.AddMember("master", master, allocator);

	rapidjson::Value logins(rapidjson::kArrayType);
	pServerData = mLoginMap.First();
	while (pServerData)
	{
		rapidjson::Value server(rapidjson::kObjectType);
		server.AddMember("serverId", pServerData->pData->server_id(), allocator);
		server.AddMember("servrName", rapidjson::Value(pServerData->pData->server_name().c_str(), allocator), allocator);
		server.AddMember("ip", rapidjson::Value(pServerData->pData->server_ip().c_str(), allocator), allocator);
		server.AddMember("port", pServerData->pData->server_port(), allocator);
		server.AddMember("onlineCount", pServerData->pData->server_cur_count(), allocator);
		server.AddMember("status", (int)pServerData->pData->server_state(), allocator);
		/*
		rapidjson::Value server_info_ext(rapidjson::kArrayType);
		for (int i = 0; i < pServerData->pData->server_info_list_ext().key_size();i++)
		{
			rapidjson::Value extKeyValue(rapidjson::kObjectType);
			extKeyValue.AddMember(rapidjson::Value(pServerData->pData->server_info_list_ext().key(i).c_str(), allocator), rapidjson::Value(pServerData->pData->server_info_list_ext().value(i).c_str(), allocator), allocator);
			server_info_ext.PushBack(extKeyValue, allocator);
		}
		server.AddMember("info_ext", server_info_ext, allocator);
		*/
		logins.PushBack(server, allocator);
		pServerData = mLoginMap.Next();
	}
	root.AddMember("logins", logins, allocator);

	rapidjson::Value worlds(rapidjson::kArrayType);
	pServerData = mWorldMap.First();
	while (pServerData.get())
	{
		rapidjson::Value server(rapidjson::kObjectType);
		server.AddMember("serverId", pServerData->pData->server_id(), allocator);
		server.AddMember("servrName", rapidjson::Value(pServerData->pData->server_name().c_str(), allocator), allocator);
		server.AddMember("ip", rapidjson::Value(pServerData->pData->server_ip().c_str(), allocator), allocator);
		server.AddMember("port", pServerData->pData->server_port(), allocator);
		server.AddMember("onlineCount", pServerData->pData->server_cur_count(), allocator);
		server.AddMember("status", (int)pServerData->pData->server_state(), allocator);
		/*
		rapidjson::Value server_info_ext(rapidjson::kArrayType);
		for (int i = 0; i < pServerData->pData->server_info_list_ext().key_size();i++)
		{
			rapidjson::Value extKeyValue(rapidjson::kObjectType);
			extKeyValue.AddMember(rapidjson::Value(pServerData->pData->server_info_list_ext().key(i).c_str(), allocator), rapidjson::Value(pServerData->pData->server_info_list_ext().value(i).c_str(), allocator), allocator);
			server_info_ext.PushBack(extKeyValue, allocator);
		}
		server.AddMember("info_ext", server_info_ext, allocator);
		*/
		worlds.PushBack(server, allocator);
		pServerData = mWorldMap.Next();
	}
	root.AddMember("worlds", worlds, allocator);

	rapidjson::Value proxys(rapidjson::kArrayType);
	pServerData = mProxyMap.First();
	while (pServerData.get())
	{
		rapidjson::Value server(rapidjson::kObjectType);
		server.AddMember("serverId", pServerData->pData->server_id(), allocator);
		server.AddMember("servrName", rapidjson::Value(pServerData->pData->server_name().c_str(), allocator), allocator);
		server.AddMember("ip", rapidjson::Value(pServerData->pData->server_ip().c_str(), allocator), allocator);
		server.AddMember("port", pServerData->pData->server_port(), allocator);
		server.AddMember("onlineCount", pServerData->pData->server_cur_count(), allocator);
		server.AddMember("status", (int)pServerData->pData->server_state(), allocator);

		/*
		rapidjson::Value server_info_ext(rapidjson::kArrayType);
		for (int i = 0; i < pServerData->pData->server_info_list_ext().key_size();i++)
		{
			rapidjson::Value extKeyValue(rapidjson::kObjectType);
			extKeyValue.AddMember(rapidjson::Value(pServerData->pData->server_info_list_ext().key(i).c_str(), allocator), rapidjson::Value(pServerData->pData->server_info_list_ext().value(i).c_str(), allocator), allocator);
			server_info_ext.PushBack(extKeyValue, allocator);
		}
		server.AddMember("info_ext", server_info_ext, allocator);
		*/
		proxys.PushBack(server, allocator);
		pServerData = mProxyMap.Next();
	}
	root.AddMember("proxys", proxys, allocator);

	rapidjson::Value games(rapidjson::kArrayType);
	pServerData = mGameMap.First();
	while (pServerData.get())
	{
		rapidjson::Value server(rapidjson::kObjectType);
		server.AddMember("serverId", pServerData->pData->server_id(), allocator);
		server.AddMember("servrName", rapidjson::Value(pServerData->pData->server_name().c_str(), allocator), allocator);
		server.AddMember("ip", rapidjson::Value(pServerData->pData->server_ip().c_str(), allocator), allocator);
		server.AddMember("port", pServerData->pData->server_port(), allocator);
		server.AddMember("onlineCount", pServerData->pData->server_cur_count(), allocator);
		server.AddMember("status", (int)pServerData->pData->server_state(), allocator);
		/*
		rapidjson::Value server_info_ext(rapidjson::kArrayType);
		for (int i = 0; i < pServerData->pData->server_info_list_ext().key_size();i++)
		{
			rapidjson::Value extKeyValue(rapidjson::kObjectType);
			extKeyValue.AddMember(rapidjson::Value(pServerData->pData->server_info_list_ext().key(i).c_str(), allocator), rapidjson::Value(pServerData->pData->server_info_list_ext().value(i).c_str(), allocator), allocator);
			server_info_ext.PushBack(extKeyValue, allocator);
		}
		server.AddMember("info_ext", server_info_ext, allocator);
		*/
		games.PushBack(server, allocator);
		pServerData = mGameMap.Next();
	}
	root.AddMember("games", games, allocator);

	rapidjson::StringBuffer jsonBuf;
	rapidjson::Writer<rapidjson::StringBuffer> jsonWriter(jsonBuf);
	root.Accept(jsonWriter);
	return jsonBuf.GetString();
}
Beispiel #4
0
void METHOD_MESSAGE_SEND::execute(xmlrpc_c::paramList const & paramList,
                                  xmlrpc_c::value *   const   retvalPtr)
{
std::string cookie = paramList.getString(0);
std::vector<xmlrpc_c::value> logins(paramList.getArray(1));
std::map<std::string, xmlrpc_c::value> msgInfo(paramList.getStruct(2));
paramList.verifyEnd(3);

ADMIN_INFO adminInfo;

if (config->GetAdminInfo(cookie, &adminInfo))
    {
    *retvalPtr = xmlrpc_c::value_boolean(false);
    return;
    }

STG_MSG message;

std::map<std::string, xmlrpc_c::value>::iterator it;

if ((it = msgInfo.find("version")) == msgInfo.end())
    {
    message.header.ver = 1; // Default value
    }
else
    {
    message.header.ver = xmlrpc_c::value_int(it->second);
    }

if ((it = msgInfo.find("type")) == msgInfo.end())
    {
    message.header.type = 1; // default value
    }
else
    {
    message.header.type = xmlrpc_c::value_int(it->second);
    }

if ((it = msgInfo.find("repeat")) == msgInfo.end())
    {
    *retvalPtr = xmlrpc_c::value_boolean(false);
    return;
    }
message.header.repeat = xmlrpc_c::value_int(it->second);

if ((it = msgInfo.find("repeat_period")) == msgInfo.end())
    {
    *retvalPtr = xmlrpc_c::value_boolean(false);
    return;
    }
message.header.repeatPeriod = xmlrpc_c::value_int(it->second);

if ((it = msgInfo.find("show_time")) == msgInfo.end())
    {
    *retvalPtr = xmlrpc_c::value_boolean(false);
    return;
    }
message.header.showTime = xmlrpc_c::value_int(it->second);

if ((it = msgInfo.find("text")) == msgInfo.end())
    {
    *retvalPtr = xmlrpc_c::value_boolean(false);
    return;
    }
message.text = IconvString(xmlrpc_c::value_string(it->second), "UTF-8", "CP1251");

message.header.creationTime = static_cast<int>(stgTime);
message.header.lastSendTime = 0;

std::vector<xmlrpc_c::value>::iterator lit;
for (lit = logins.begin(); lit != logins.end(); ++lit)
    {
    USER_PTR ui;
    if (users->FindByName(xmlrpc_c::value_string(*lit), &ui))
        {
        printfd(__FILE__, "METHOD_MESSAGE_SEND::execute(): 'User '%s' not found'\n", std::string(xmlrpc_c::value_string(*lit)).c_str());
        }
    else
        {
        ui->AddMessage(&message);
        }
    }

*retvalPtr = xmlrpc_c::value_boolean(true);
}