private bool Unban(string[] args) { if (UserSupplied(args)) { string user = rebuildString(args); ZNet zNet = ZNet.instance; print("Unbanning user: "******"m_bannedList").GetValue(zNet); bannedPlayers.Remove(user); AccessTools.Field(typeof(ZNet), "m_bannedList").SetValue(zNet, bannedPlayers); return(true); } return(false); }
private bool UnPermit(string[] args) { if (UserSupplied(args)) { string user = rebuildString(args); ZNet zNet = ZNet.instance; print("Removing user from permited user list: " + user); SyncedList permittedPlayers = (SyncedList)AccessTools.Field(typeof(ZNet), "m_permittedList").GetValue(zNet); permittedPlayers.Remove(user); AccessTools.Field(typeof(ZNet), "m_permittedList").SetValue(zNet, permittedPlayers); return(true); } return(false); }
private bool RemoveAdmin(string[] args) { if (UserSupplied(args)) { string user = rebuildString(args); ZNet zNet = ZNet.instance; ZNetPeer peerByPlayerName = zNet.GetPeerByPlayerName(user); if (peerByPlayerName != null) { user = peerByPlayerName.m_socket.GetHostName(); } print("Removing player from the admin list: " + user); SyncedList adminList = (SyncedList)AccessTools.Field(typeof(ZNet), "m_adminList").GetValue(zNet); adminList.Remove(user); AccessTools.Field(typeof(ZNet), "m_adminList").SetValue(zNet, adminList); return(true); } return(false); }
protected virtual void ServerMainTask() { if (Listener == null) { return; } WebServerLog.Add(ServerLogType.Information, GetType(), "StartUp", "Server successfully started"); var watch = new Stopwatch(); while (ServerExecution) { watch.Restart(); //request pending connections int step = 0; while (step < 10) { if (!Listener.Pending()) { break; } step++; ClientConnected(Listener.AcceptTcpClient()); } //request keep alive connections for (int i = 0; i < KeepAliveConnections.Count; ++i) { HttpConnection kas; try { kas = KeepAliveConnections[i]; } catch { continue; } if (kas == null) { continue; } if ((kas.NetworkClient != null && !kas.NetworkClient.Connected) || (kas.LastWorkTime != -1 && kas.LastWorkTime + Settings.ConnectionTimeout < Environment.TickCount ) ) { kas.NetworkClient?.Close(); kas.NetworkStream?.Dispose(); AllConnections.Remove(kas); KeepAliveConnections.Remove(kas); --i; continue; } if (kas.NetworkClient != null && kas.NetworkClient.Available > 0 && kas.LastWorkTime != -1 ) { _ = Task.Run(() => SafeClientStartListen(kas)); } } //Warten if (Listener.Pending()) { continue; } var delay = Settings.ConnectionDelay; if (delay > TimeSpan.Zero) { var time = delay - watch.Elapsed; if (time <= TimeSpan.Zero) { time = delay; } Thread.Sleep(time); } } watch.Stop(); Listener.Stop(); for (int i = 0; i < AllConnections.Count; ++i) { AllConnections[i].NetworkClient?.Close(); } AllConnections.Clear(); KeepAliveConnections.Clear(); WebServerLog.Add(ServerLogType.Information, GetType(), "StartUp", "Server successfully stopped"); }