This commit is contained in:
Akkadius
2014-08-03 01:20:19 -05:00
parent 4e1fcfb7e5
commit 7c3cfd43de
6 changed files with 76 additions and 0 deletions
+29
View File
@@ -6,6 +6,7 @@ extern WorldServer *worldserver;
extern std::map<std::string, std::pair<int, MethodHandler>> authorized_methods;
extern std::map<std::string, MethodHandler> unauthorized_methods;
/* Web Interface */
void register_authorized_methods()
{
authorized_methods["WebInterface.Authorize"] = std::make_pair(0, handle_method_token_auth);
@@ -13,6 +14,7 @@ void register_authorized_methods()
authorized_methods["World.GetZoneDetails"] = std::make_pair(10, handle_method_get_zone_info);
authorized_methods["Zone.Subscribe"] = std::make_pair(10, handle_method_subscribe);
authorized_methods["Zone.Unsubscribe"] = std::make_pair(10, handle_method_subscribe);
authorized_methods["Zone.GetInitialEntityPositions"] = std::make_pair(10, handle_method_void_event);
}
void register_unauthorized_methods()
@@ -108,3 +110,30 @@ void handle_method_subscribe(per_session_data_eqemu *session, rapidjson::Documen
worldserver->SendPacket(pack);
safe_delete(pack);
}
void handle_method_void_event(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method) {
CheckParams(2, "[zone_id, instance_id]");
VerifyID();
CalculateSize();
ServerPacket *pack = new ServerPacket(ServerOP_WIRemoteCall, sz);
pack->WriteUInt32((uint32)id.size());
pack->WriteString(id.c_str());
pack->WriteUInt32((uint32)session->uuid.size());
pack->WriteString(session->uuid.c_str());
pack->WriteUInt32((uint32)method.size());
pack->WriteString(method.c_str());
pack->WriteUInt32(2);
auto &params = document["params"];
auto &param = params[(rapidjson::SizeType)0];
pack->WriteUInt32((uint32)strlen(param.GetString()));
pack->WriteString(param.GetString());
param = params[1];
pack->WriteUInt32((uint32)strlen(param.GetString()));
pack->WriteString(param.GetString());
worldserver->SendPacket(pack);
safe_delete(pack);
}
+1
View File
@@ -61,6 +61,7 @@ void handle_method_token_auth(per_session_data_eqemu *session, rapidjson::Docume
void handle_method_no_args(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_get_zone_info(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_subscribe(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
void handle_method_void_event(per_session_data_eqemu *session, rapidjson::Document &document, std::string &method);
#endif