public override async Task HandleAuthenticatedAdminRequest() { //Get manager manager = null; lock (Program.servers) { foreach (var s in Program.servers) { if (s.id == managerId) { manager = s; } } } //Check if we found it if (manager == null) { await WriteString("<p style=\"color:red\">Could not find that manager server.</p>"); } else { await HandleManagerServer(); } }
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); } }
public static DeltaManagerServer CreateManagerServer(string label, IPAddress address) { //Prepare DeltaConfigManagerServer configEntry; lock (cfg.registered_servers) { //Create key byte[] key = SecureStringTool.GenerateSecureRandomBytes(16); //Create ID short id; Random rand = new Random(); do { id = (short)rand.Next(257, short.MaxValue - 1); } while (cfg.registered_servers.Where(x => x.id == id).Count() != 0); //Create config entry configEntry = new DeltaConfigManagerServer { label = label, ip_addr = address.ToString(), id = id, key = Convert.ToBase64String(key) }; //Add cfg.registered_servers.Add(configEntry); cfg.Save(); } //Create instance and add it DeltaManagerServer server = new DeltaManagerServer(configEntry); lock (servers) servers.Add(server); return(server); }