private void Io_OnClientMessage(MasterControlClient session, RouterMessage msg) { if (session.authenticated) { //Authenticated commands if (msg.opcode == MasterConnectionOpcodes.OPCODE_MASTER_CONFIG) { HandleRequestConfigCommand(session, msg); } else if (msg.opcode == MasterConnectionOpcodes.OPCODE_MASTER_GETUSERCFG) { HandleGetUserConfigCmd(session, msg); } else if (msg.opcode == MasterConnectionOpcodes.OPCODE_MASTER_INSTANCE_LOG) { HandleInstanceLogCommand(session, msg); } else { logger.Log("Io_OnClientMessage", $"Client {session.GetDebugName()} sent an unknown command.", DeltaLogLevel.Debug); } } else { //Unauthenticated commands if (msg.opcode == MasterConnectionOpcodes.OPCODE_MASTER_LOGIN) { HandleLoginCommand(session, msg); } else { logger.Log("Io_OnClientMessage", $"Client {session.GetDebugName()} sent unauthenticated command that was not LOGIN.", DeltaLogLevel.Debug); } } }
private void Io_OnClientDropped(MasterControlClient session) { logger.Log("Io_OnClientConnected", $"Dropped client {session.GetDebugName()}", DeltaLogLevel.Low); if (session.server != null) { session.server.DisconnectTransport(); } }
private void HandleRequestConfigCommand(MasterControlClient session, RouterMessage msg) { msg.RespondJson(new LoginServerConfig { enviornment = Program.cfg.general.enviornment, mongodb_connection = Program.cfg.general.mongodb_connection, steam_api_key = Program.cfg.general.steam_api_token, steam_cache_expire_minutes = Program.cfg.general.steam_cache_expire_minutes, firebase_uc_bucket = Program.cfg.general.firebase_uc_bucket, log = Program.cfg.general.log, steam_token_key = Program.cfg.secrets.steam_token_key, hosts = Program.cfg.hosts }, true); }
private void HandleLoginCommand(MasterControlClient session, RouterMessage msg) { //Get details int loginId = BitConverter.ToInt16(msg.payload, 0); byte[] loginKey = new byte[16]; Array.Copy(msg.payload, 2, loginKey, 0, 16); //Search for a server DeltaManagerServer server = null; lock (Program.servers) { foreach (var s in Program.servers) { if (s.id == loginId) { //Authenticate key if (BinaryTool.CompareBytes(s.key, loginKey)) { server = s; } } } } //Check if it was successful if (server != null) { //Set server.SetTransport(session); session.authenticated = true; //Log logger.Log("HandleLoginCommand", $"Client {session.GetDebugName()} successfully logged in as server ID {server.id}.", DeltaLogLevel.Low); } else { //Failed logger.Log("HandleLoginCommand", $"Client {session.GetDebugName()} attempted login, but failed.", DeltaLogLevel.Low); } }
private void HandleGetUserConfigCmd(MasterControlClient session, RouterMessage msg) { //Read strings int nameLen = BitConverter.ToInt32(msg.payload, 0); string name = Encoding.UTF8.GetString(msg.payload, 4, nameLen); int defaultLen = BitConverter.ToInt32(msg.payload, nameLen + 4); string defaultValue = Encoding.UTF8.GetString(msg.payload, 4 + nameLen + 4, defaultLen); //Get file path string path = Program.cfg.general.sub_configs_directory + name; //Create default if needed if (!File.Exists(path)) { File.WriteAllText(path, defaultValue); } //Load and return string content = File.ReadAllText(path); msg.Respond(Encoding.UTF8.GetBytes(content), true); }
private void Io_OnClientConnected(MasterControlClient session) { logger.Log("Io_OnClientConnected", $"Connected client {session.GetDebugName()}", DeltaLogLevel.Low); }
private void HandleInstanceLogCommand(MasterControlClient session, RouterMessage msg) { session.DispatchInstanceLogEvent(msg.payload); }