From 5e9b11ed64c5c2af6c0c20064514f83269762ea8 Mon Sep 17 00:00:00 2001 From: RaidMax Date: Tue, 8 Aug 2017 21:44:52 -0500 Subject: [PATCH] VERSION 1.4 CHANGELOG: -works: with COD, WaW, MW3, BO1 (preliminary without extensive testing) -fixed the issue with webfront chat history -fixed console issue of spamming 'polling rate decreased' when server goes offline -'unknown' admin in webfront defaults to 'IW4MAdmin' --- Admin/Main.cs | 18 ++---- Admin/Manager.cs | 4 +- Admin/Server.cs | 93 ++++++++++++++-------------- Admin/WebService.cs | 8 +-- Admin/lib/SharedLibrary.dll | Bin 95744 -> 96768 bytes Admin/version.txt | 11 +++- IW4MAdmin.sln | 118 +++++++++++++++++++----------------- SharedLibrary/RCON.cs | 13 +++- SharedLibrary/Server.cs | 24 ++++++-- SharedLibrary/Utilities.cs | 17 ++++++ 10 files changed, 175 insertions(+), 131 deletions(-) diff --git a/Admin/Main.cs b/Admin/Main.cs index b0d0b61f3..9c623f3d6 100644 --- a/Admin/Main.cs +++ b/Admin/Main.cs @@ -15,18 +15,15 @@ namespace IW4MAdmin static void Main(string[] args) { - Version = 1.3; + Version = 1.4; handler = new ConsoleEventDelegate(OnProcessExit); SetConsoleCtrlHandler(handler, true); - double.TryParse(CheckUpdate(), out double latestVersion); + //double.TryParse(CheckUpdate(), out double latestVersion); Console.WriteLine("====================================================="); Console.WriteLine(" IW4M ADMIN"); Console.WriteLine(" by RaidMax "); - if (latestVersion != 0) - Console.WriteLine(" Version " + Version + " (latest " + latestVersion + ")"); - else - Console.WriteLine(" Version " + Version + " (unable to retrieve latest)"); + Console.WriteLine($" Version {Version}"); Console.WriteLine("====================================================="); try @@ -45,7 +42,7 @@ namespace IW4MAdmin { userInput = Console.ReadLine(); - if (userInput.ToLower() == "quit") + if (userInput?.ToLower() == "quit") ServerManager.Stop(); if (ServerManager.Servers.Count == 0) @@ -92,13 +89,6 @@ namespace IW4MAdmin [DllImport("kernel32.dll", SetLastError = true)] private static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add); - static private String CheckUpdate() - { - //Connection Ver = new Connection("http://raidmax.org/IW4M/Admin/version.php"); - //return Ver.Read(); - return "0"; - } - static void CheckDirectories() { if (!Directory.Exists("Lib")) diff --git a/Admin/Manager.cs b/Admin/Manager.cs index 219279dc0..ac9b46711 100644 --- a/Admin/Manager.cs +++ b/Admin/Manager.cs @@ -95,7 +95,7 @@ namespace IW4MAdmin if (e.GetType() == typeof(DvarException)) Logger.WriteError($"Could not get the dvar value for {(e as DvarException).Data["dvar_name"]} (ensure the server has a map loaded)"); else if (e.GetType() == typeof(NetworkException)) - Logger.WriteError("Could not communicate with the server (ensure the configuration is correct)"); + Logger.WriteError(e.Message); } }); } @@ -121,7 +121,7 @@ namespace IW4MAdmin #endregion #region COMMANDS - if ((ClientDatabase as ClientsDB).GetOwner() != null) + if ((ClientDatabase as ClientsDB).GetOwner() == null) Commands.Add(new COwner("owner", "claim ownership of the server", "owner", Player.Permission.User, 0, false)); Commands.Add(new CQuit("quit", "quit IW4MAdmin", "q", Player.Permission.Owner, 0, false)); diff --git a/Admin/Server.cs b/Admin/Server.cs index 3ac34efc3..9300c186c 100644 --- a/Admin/Server.cs +++ b/Admin/Server.cs @@ -147,7 +147,6 @@ namespace IW4MAdmin } } - Players[NewPlayer.ClientID] = null; Players[NewPlayer.ClientID] = NewPlayer; Logger.WriteInfo($"Client {NewPlayer.Name}::{NewPlayer.NetworkID} connecting..."); // they're clean @@ -348,6 +347,9 @@ namespace IW4MAdmin try { await PollPlayersAsync(); + + if (ConnectionErrors > 0) + Logger.WriteInfo($"Connection has been reestablished with {IP}:{Port}"); ConnectionErrors = 0; LastPoll = DateTime.Now; } @@ -355,7 +357,7 @@ namespace IW4MAdmin catch(SharedLibrary.Exceptions.NetworkException e) { ConnectionErrors++; - if (ConnectionErrors > 1) + if (ConnectionErrors == 1) Logger.WriteError($"{e.Message} {IP}:{Port}, reducing polling rate"); } @@ -380,10 +382,7 @@ namespace IW4MAdmin if (LastMessage.TotalSeconds > MessageTime && BroadcastMessages.Count > 0 && Players.Count > 0) { await Broadcast(Utilities.ProcessMessageToken(Manager.GetMessageTokens(), BroadcastMessages[NextMessage])); - if (NextMessage == (BroadcastMessages.Count - 1)) - NextMessage = 0; - else - NextMessage++; + NextMessage = NextMessage == (BroadcastMessages.Count - 1) ? 0 : NextMessage++; start = DateTime.Now; } @@ -450,16 +449,27 @@ namespace IW4MAdmin public async Task Initialize() { + var version = await this.GetDvarAsync("version"); + GameName = Utilities.GetGame(version.Value); + + if (GameName == Game.UKN) + Logger.WriteWarning($"Game name not recognized: {version}"); + var shortversion = await this.GetDvarAsync("shortversion"); var hostname = await this.GetDvarAsync("sv_hostname"); var mapname = await this.GetDvarAsync("mapname"); - var maxplayers = await this.GetDvarAsync("party_maxplayers"); + var maxplayers = (GameName == Game.IW4) ? // gotta love IW4 idiosyncrasies + await this.GetDvarAsync("party_maxplayers") : + await this.GetDvarAsync("sv_maxclients"); var gametype = await this.GetDvarAsync("g_gametype"); var basepath = await this.GetDvarAsync("fs_basepath"); var game = await this.GetDvarAsync("fs_game"); var logfile = await this.GetDvarAsync("g_log"); var logsync = await this.GetDvarAsync("g_logsync"); - var onelog = await this.GetDvarAsync("iw4x_onelog"); + + DVAR onelog = null; + if (GameName == Game.IW4) + onelog = await this.GetDvarAsync("iw4x_onelog"); try { @@ -481,19 +491,26 @@ namespace IW4MAdmin await this.SetDvarAsync("sv_network_fps", 1000); await this.SetDvarAsync("com_maxfps", 1000); - if (logsync.Value != 1 || logfile.Value == string.Empty) + if (logsync.Value == 0 || logfile.Value == string.Empty) { // this DVAR isn't set until the a map is loaded - await this.SetDvarAsync("g_logsync", 1); - await this.SetDvarAsync("g_log", "logs/games_mp.log"); + await this.SetDvarAsync("logfile", 2); + await this.SetDvarAsync("g_logsync", 2); // set to 2 for continous in other games, clamps to 1 for IW4 + await this.SetDvarAsync("g_log", "games_mp.log"); Logger.WriteWarning("Game log file not properly initialized, restarting map..."); await this.ExecuteCommandAsync("map_restart"); logfile = await this.GetDvarAsync("g_log"); } #if DEBUG - basepath.Value = @"\\tsclient\K\MW2"; + basepath.Value = (GameName == Game.IW4) ? + @"\\tsclient\K\MW2" : + @"\\tsclient\G\Program Files (x86)\Steam\SteamApps\common\Call of Duty 4"; #endif - string logPath = (game.Value == "" || onelog.Value == 1) ? $"{basepath.Value.Replace("\\", "/")}/userraw/{logfile.Value}" : $"{basepath.Value.Replace("\\", "/")}/{game.Value}/{logfile.Value}"; + string mainPath = (GameName == Game.IW4) ? "userraw" : "main"; + + string logPath = (game.Value == "" || onelog?.Value == 1) ? + $"{ basepath.Value.Replace("\\", "/")}/{mainPath}/{logfile.Value}" : + $"{basepath.Value.Replace("\\", "/")}/{game.Value}/{logfile.Value}"; if (!File.Exists(logPath)) { @@ -521,12 +538,12 @@ namespace IW4MAdmin ChatHistory.Add(new Chat(E.Origin.Name, "CONNECTED", DateTime.Now)); } - if (E.Type == Event.GType.Disconnect) + else if (E.Type == Event.GType.Disconnect) { ChatHistory.Add(new Chat(E.Origin.Name, "DISCONNECTED", DateTime.Now)); } - if (E.Type == Event.GType.Kill) + else if (E.Type == Event.GType.Kill) { if (E.Origin != E.Target) await ExecuteEvent(new Event(Event.GType.Death, E.Data, E.Target, null, this)); @@ -535,20 +552,8 @@ namespace IW4MAdmin await ExecuteEvent(new Event(Event.GType.Death, "suicide", E.Target, null, this)); } - //todo: move - while (ChatHistory.Count > Math.Ceiling((double)ClientNum / 2)) - ChatHistory.RemoveAt(0); - - // the last client hasn't fully disconnected yet - // so there will still be at least 1 client left - if (ClientNum < 2) - ChatHistory.Clear(); - - if (E.Type == Event.GType.Say) + if (E.Type == Event.GType.Say && E.Data.Length >= 2) { - if (E.Data.Length < 2) // ITS A LIE! - return; - if (E.Data.Substring(0, 1) == "!" || E.Data.Substring(0, 1) == "@" || E.Origin.Level == Player.Permission.Console) { Command C = null; @@ -561,7 +566,6 @@ namespace IW4MAdmin catch (SharedLibrary.Exceptions.CommandException e) { Logger.WriteInfo(e.Message); - return; } if (C != null) @@ -569,7 +573,6 @@ namespace IW4MAdmin if (C.RequiresTarget && E.Target == null) { Logger.WriteWarning("Requested event (command) requiring target does not have a target!"); - return; } try @@ -586,10 +589,8 @@ namespace IW4MAdmin #if DEBUG await E.Origin.Tell(Except.Message); #endif - return; } } - return; } else // Not a command @@ -599,8 +600,6 @@ namespace IW4MAdmin E.Data = E.Data.Substring(0, 50) + "..."; ChatHistory.Add(new Chat(E.Origin.Name, E.Data, DateTime.Now)); - - return; } } @@ -614,15 +613,21 @@ namespace IW4MAdmin string mapname = this.GetDvarAsync("mapname").Result.Value; CurrentMap = Maps.Find(m => m.Name == mapname) ?? new Map(mapname, mapname); - - return; } if (E.Type == Event.GType.MapEnd) { Logger.WriteInfo("Game ending..."); - return; - }; + } + + //todo: move + while (ChatHistory.Count > Math.Ceiling((double)ClientNum / 2)) + ChatHistory.RemoveAt(0); + + // the last client hasn't fully disconnected yet + // so there will still be at least 1 client left + if (ClientNum < 2) + ChatHistory.Clear(); } public override async Task Warn(String Reason, Player Target, Player Origin) @@ -646,7 +651,7 @@ namespace IW4MAdmin String Message = "^1Player Kicked: ^5" + Reason; Penalty newPenalty = new Penalty(Penalty.Type.Kick, Reason.StripColors().Trim(), Target.NetworkID, Origin.NetworkID, DateTime.Now, Target.IP); Manager.GetClientPenalties().AddPenalty(newPenalty); - await this.ExecuteCommandAsync("clientkick " + Target.ClientID + " \"" + Message + "^7\""); + await this.ExecuteCommandAsync($"clientkick {Target.ClientID} \"{Message}^7\""); } } @@ -663,11 +668,6 @@ namespace IW4MAdmin } } - private String GetWebsiteString() - { - return Website != null ? $" (appeal at {Website}" : " (appeal at this server's website)"; - } - override public async Task Ban(String Message, Player Target, Player Origin) { if (Target == null) @@ -685,7 +685,10 @@ namespace IW4MAdmin { var activeClient = server.GetPlayersAsList().Find(x => x.NetworkID == Target.NetworkID); if (activeClient != null) - await server.ExecuteCommandAsync("tempbanclient " + activeClient.ClientID + " \"" + Message + "^7" + GetWebsiteString() + "^7\""); + { + await server.ExecuteCommandAsync($"tempbanclient {activeClient.ClientID} \"{Message} ^7 ({Website}) ^7\""); + break; + } } } diff --git a/Admin/WebService.cs b/Admin/WebService.cs index 45fb6b15d..11ad1d4b0 100644 --- a/Admin/WebService.cs +++ b/Admin/WebService.cs @@ -394,19 +394,19 @@ namespace IW4MAdmin foreach (var p in selectedPenalties) { - Player admin = ApplicationManager.GetInstance().GetClientDatabase().GetPlayer(p.PenaltyOriginID, 0); + Player admin = ApplicationManager.GetInstance().GetClientDatabase().GetPlayer(p.PenaltyOriginID, 0) ?? + new Player("IW4MAdmin", "-1", -1, (int)Player.Permission.Banned); + Player penalized = ApplicationManager.GetInstance().GetClientDatabase().GetPlayer(p.OffenderID, 0); if (admin == null && penalized == null) continue; - if (admin == null) - admin = new Player("Unknown", "-1", -1, (int)Player.Permission.Banned); PenaltyInfo pInfo = new PenaltyInfo() { adminName = admin.Name, adminLevel = admin.Level.ToString(), penaltyReason = p.Reason, - penaltyTime = SharedLibrary.Utilities.GetTimePassed(p.When), + penaltyTime = Utilities.GetTimePassed(p.When), penaltyType = p.BType.ToString(), playerName = penalized.Name, playerID = penalized.DatabaseID diff --git a/Admin/lib/SharedLibrary.dll b/Admin/lib/SharedLibrary.dll index f580f357a2fda6cc7f62e5dd908aaa4bf270151b..2543338037e992738f6d3a5e1873bd00268fa291 100644 GIT binary patch literal 96768 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%0DWKL8%evv;;DF~GzIn%S%zG~k) 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�OGBv-0${fK)kU9|15kH69oPu_=lZgKpS_rMSy=B z5dCfq0oGViz}eP*zx2x#NZtQ7DVpshx&G2jOPZI!eR z0Z##TtDo8pfd64HL;KzVzDxZAcn@CCHvrnMWoT;=@Lq+l*0F2n0Ul6gz^_)bfnTlW z0^h6V1K+D^fnS5$78?Nlz^_${fnTeZ0^g@D0KQKx2i~U|f%mCZ!28u2;Qguzcu=he z9#k8E52(w452$9~5!}7i0JshKAnxXE0PF-lq;>!wQr*CZRS)oC6#yPpR{@WztAXF3 zt^t07+6R2Ux*qs`)ek(T27t#@82AW&uDk(o7pISWf&o!0Dhyo5BN>$4}jmKjsw40JqY|}^)T>T)F*-8q8Uv~`_jTDU)y|3u~MNbwzU-XTl zt;OFg{z>uAi$7d)U&+6f_}pptG50<0Pr1M9{(<`~_hQc_p7OFeWtWtFqU^DSB#POLUV72j_!o(LaH6m%sZivyWw`h^}zMQ z1>kl=Uta~c2kvUPy>QpST?@Al?mFo3>!F+b;QHZ$a0755=$y8v!o@jC0QtHJti@dvEuOWf9XOYXA%qvRvjBKOOd&*Qe*;CkSKaHDXy!u<~1 z{cw-LeID+w;a-RP0o?zAD=BqbHE>Je*1~Oq+XdGTmwXp5cMMU@RI;MN-)S_6}L5>)aHK$0OnHNIV!zk2_&kZV+`JnGt?JmbRyFsY!)yd?kB0V3k|s42N%wUpqX)sauEtiIrvmGc9iiyy-gGcMmdfNr;GSSoXIr124PH~= zr9hJy5uqSP85@IuOv5$+Pqc=2?bg3;n)b8y&RGTvzd)jvHP&;-8I<|DQwFWxi*}6H<*Rf;EPSrb} zN=HT-J9bJ*9o@nMJhn#CfDj|VT{2Fc1iem*UMZtD&>Fz)@2#DidjcvRfVt6ol{!d~ z?d!wfGsTm8l3$Q8eIuz*A{mRqhQ2anl4VC}s&Q*1j-eh>JL6Q6B1yn^$730v)3{tI zRk`X1$pesiofYlLXdgB!>v2@B(Fk_KrqEqAd{}4Xb9z_?7$n`Zfha z`*DZ=mS`k~Kz4~1^r>+fiJlsDjwnw}kQL;qaYm4*#&mQS3hSL3NFHMBg{Q{!jKy0I zVj3BWOpP;h8ICi0DjU*cJ$v zSz~HBJ(zP+Q-dig1%k6pFAxd(3xpaIbxO;+f`@gN70A>R!SBwb3q)|nilnE~OOc5t zBdPPnw?{@XH3j46&l+w`4#8%NqkG2+CF=&e#b}<=5Z%IUFsfjGOeL*tIG8?PBuriv zNJd9C$HR)+IFKL)M)J`<;7kY#mQ$2E-S~TVbz(pnA9S*@HB3-18mn4I*=DsR3J@ab zLCdrnHY!JEz>Eiq7-nE3IT#E@Kn^TrJgK!YgM{`6lJsIQ!zw)(1=@y*BOU38r_#YV zyvV&Rm>OLHaeSJ%9g)Ks9MUZ1U}ozH#!(=6jE*7J5kH8<2+8OC5uiCP)wLdk!6m+| z-A=m|%a4=nHX_GdNFAsqJw;rsn7{CAA@U@x>=nCN-w0tp&Kk%BNMix3YD#EfUi zglf}45{v{#d1!2u*ni0A)9>#E*kx)UL z-V+=h5)ou`47w!}?uy1@(NrXqh=)@W&g>A*q}U>gLnO_@+IB+&j0`STnS^5PmmC+21+t6MtjP42cu-JhA_S#yV5i2yBJj@nRd7=b+rvKn^t>b^eVx*?hsHfk-WfQt|~Ug=8d z5y!3&))>48i$IhJJva(>B*pYb{%~s=KlU_$Z5Fk4ESlqMj|_|r4RO$9Qy{Z5w6kHY zFmp!+V&gI-bAz#IlPf&AQBICzFdP{PCiiEf^dz+0#~ZipDiU zJ*BaOT(n{Aha%B~7&tdV9JrVfnb8~(k#SIrLhwj+Ln9mM(@P=-$i~g4aWV>1DML2L zF_-0}bz0Eq^Z{c;Lb*vmkBGh=Mb!WLH^;Ew;vg7e4kigj4LAY4V*@Gqg)%HKokB%E zFmh{pce;{*nMeq7DgP8 zsr{0HR<|H|cDV2?KV%3BN{n%d(^wm{sm5Y7(^UYIsF)zFvDi5^hY`X}5w#s^U1siX z>}{#k0cL=+&Z_QHm^9wBJ<-hO^|=yr+*UH0$G}uG+Ag zr9AOL)p0OFtj*aQ!aNcmfS*%MF9cW0<61(B5~RScCX_AAp;$}?j_h-?Q#7&@7MYZy z*B(-igLdeNg4hE7!l@xUBA_8t5VROK88;seMPva;HtIc#Y>+eBvH{$^$@(PSS$Lg1|J5$-#8vd$IHs>48y1lst0KHYzKT@)XpW+8y5?PaMK9fFchh zv^wjE4<=L_*FP8_;=y(+7N&y67=?W!%;-`>c0DV#P;sA^adWxv;)`z1W9eNNH9qgD=Ee5rLYv~psaKoY`jPkhB;+I9M^_$x7ya!-PgOYJu60nq# zN~;}gHeioP3WaA=2I*u9b8*=jz{ZI$AkJDY-C9HVCxv( zQY57ZvD+6JN^(Jpaf>i;g=?OS2NmmiB#_WyGOKP*CYd&g$qi4gFk#yO%Xz`UW;zQt z#)$fa*y?nx&_{SzfN*&k2gqfMLNpf-&gNlC#Ya2ZQ(Qfyq(j6m7OFKS<3OXW11Tf7 z?a|;+9D8Ze5Q1ojXQo(3F{G4KZ`SQ8QksbxLT?9P4##@+@Tx=>UytP0*VjH+ea; zq$ID#IG$m9aPcPXqTqGzVvW3(@z<@w2{L)r8XZJ3&x~4vuNg9)!cp(t0Se- zIvisRFOiTSUp%!2NU1i1XfZWD^R7zthrG4Y6M=q%Wkigsv#}>KG#2B0Hj1q{E=e+^ zXD4UPob0rz`zqJ3b!_h_L}#Z=q#TMvk;BH5Pkm;7OsP;udv`*YkEuu(EJ#*<#LJ%I ztb!(EhKXx57!E^J6IdMU8AbSN(4^jxHr`>GJ0L}|SmIFESS%gID-O}Z=kk`b8&+pB zZ;W=pfEfzLSRV`{29uJEfg?3))$7FQSJfiSTI_P=GzG;BePJR*Cxam4&xooNn|EA5 zQzL2>EXWuzqFi;&+Y)0Aby7#xi}yF!10We#F^Bj>Ha_Taciq>ULLOiAGijAPm!X=fi*zn;q4bUO!bz@8V@S(qiYQglLk zBQ$aiU%3qu(kv#Lj>Zw^SUO+{lVz9ay$HZ+7jLnFkXF4@AdPlVX+hp*x5JX${coii ztrCNSup*QUCDGohZP!>djowRQA1B!!84N;rv91uq74Q7%BfA_F{p4UE$iYZJW;b2x z&icY;mtBb0Dqiglk2)B$I>w+#jo$y_vWEL$=8dPUYLp{O+QV%pje!UU>*(GL8wATD z%_+U{lNTf#`HCBO8p~l_{$_tJ2hWKK@nrzU3$_?x^?(c#Ko7RPVWB8m)#yT6D{N9X zj3~ZEr7@MA7oon;t0~0LfOZDGew!dwcLyC0EG;HrL0WY6IUNireLzKG(W8B|HMuHH zjHMmoWwXNsMdPE0=)!WAd*DXgsG=pcV|0k$nV19@6ALOtJRm}zz?XE)$E5=bk0WpV`DD7lYQw){aD6``gWq zweAh!w)2ukcS&9d38X5>O_A%za#!YJ>|Sx{+Yv{92f3Fec82ad$8>XgQf(d?b)u6A z%n-mGd&78fAifLdA1=Y!MV|8>$3H)Q1A7}z8;;=LWjL3ZQfg5<&N-&x{5U6>z!}9P z&O1hM0`VrCV7!F~IbADo%D6?T?Hy_d(rm_=$^cT+7r3$3}Q2K>6kSVb2*OocjEM99QF8d9&!U{@tgXJufS#Z-T$_}85z5(uHtq!P3|0BH z^gDI;J2kPrXw!mhn^vQ)Rk^k0#ccqGawy4*+nCRd+d^$1WpjoR0bn?*gAhNCt+oN{ z0M3r+#qm`#nc+Loog-i_L&(6ZrD1-A??#SJ993niI1Z_HfXUOR+5wRm!72#e?Z}8@e1yb?u!f@gQ6*r&K?v*$n10Z>P|_ z3MJ)J-HEor9!1H6_!mJdQh@nw$j{Nn@mSFEwqgtEbf3fp$(;hoP!aUDM^; zU7!c@sqd2Z?nfKL)6%@k>D3;jBuA3M-CvdGLJIC=^>jkE3EjbQ&t_=x3ZR3#(NWVi zjAXE*$olEh6&AvL77U;y-GN~UKh*UUq0LYKt2!$n0((CCg(Zik(+T;*&JR)S5y9nf z*d)R~oj7PA@5P|-%kb?2HPmNopb1sobU9V28Q7}S@J*Fx2a>AH9jt1ODJy@ds5ym% z6f;3F`KH`jBvoau;3?N?=(lB{l5O>)H?->TLj(G$M|b@?{L0nX=a!^r5|p?oTU&0c zGBx6)-TAflxjmFyW1-SAwa&=TsrLNlwP+Qr`o{o7R<; z06)GOV1H!VlbWu~en_hx+nl*`dDNfjVaDh_Hf0(a=!e{PWA4w!a~?#`;iqyqA#7Is z(HyNQRAsI{P&I`{w3_(9bi^7`^9PM4iX?5pKj!C9S}s_2N^e8_ZZJQ9n2W?T$xiU5 z+zavXhBhgz-&nNrJ0hQLR%B}H2BD=Bm|gwn%;besO1{`~o}8*eFi1;Hd(>8@ArG_( zHMPb0U4Gty82ZmC$B&jK(NYS{6p@+u!|7%qT9F-)R5CDk9?E42=a_ucM4K5qkdLyc z^JR^psWV1?3KQ>#xL}Gb(0N&g=F^wY)?6C1&8B5d{l<0~{g1CN%d^xfHyPEd)U=v) zx|((VeEq{P+(G^$#sGOs=5O;MPW5=b*NRBY=#tb)KZp{p#K2u zV_ICaEb)2_q1vvEBgBsqw1&D22EW!WYEejxqCun|!m?}xC66M1BbHr*2vJc^ybSRp zgyxe@$%PpgYTADFOPW#C6+}4Grjgb!b~-5-K?!MD@U28>3ZJNvOQQ~rji{|rS<7uU}^^5VzpmO!Y?Sos4E9fo|X-S}GAg$#WfYahY7h4l+j)5Ncwf4WFHg` zomGs3_!t$3L~c~+en?FkA2TX9*G7XVgPR4)jjQz}9i?Fap(zPHC{mdrDkrc45QQw915v1s7Iii zF1|`=;r2`iN*qNf>Eoh@I;2}-^-@Z$-U=!bs3C}_p*4wI7&KuP2Yz?RWJ>ZurWjou6 zx!IR{Koc!lPRs!;7W-%(NLuKDndJ0glyM2@Nu!*YQWqXV*Z}y%-lQz;LmZ_e42T!l z)28H@H2s&8vi_G!|D!y!)a(|SV?EcI6n>dUuwjgvIYP)^tDaJL5Pps&_QNP}_VFQ< zhIi;nt?oh3?S!>HHO`Mboa@*p*)r4uLrdS((yo}UG>!n4#~x?TbC-)_fHP(UA*z@f zN=9l_~{1e?TcKKD^MEGVFCB8B=8d{j>CP_0OECk`%7^rn?jHzt*4XW_|SH=8MF zd_+)N8qvSfv|v2HOH6Z{wUpeB~h4yHhHAnJ*ke9@`=xWh!vpmCS2N3HF2%G5b>X<&Li z4KGGn*8=CN5&VYXQ7}}qHB;NB%R0A>G~U$K zLiBN<={}00WQzQa2qBlL%7|$?^lmU)s@e*b^J|vT5CX4^;dov{rBa*5G%KO*9OK9E zOO>)uMN(!M%t^Vx@Xl~U@48=)8x7P9ZO)o@sb%f*7Jz$3G%3i9>uJQW3L|lMzdjR3?(WiV}oOe3g0LlN?LABC}U`^ zLm7FM{aD5?9Gwn)x9I>z#2-DYG{AqU|C4)0%Ej^g>LyOIf7} zMP*J7vlrQ;P75wH9HzcztXBNz=7I^ojHWiV7AJ5@0{3>aC33`G&mG%VP0LhD^6O_> zBe!fr_C1+eRG226ACz2i{?<}c=hvg_$XRY)Yii{Jcr9*>(xa9%aL+`KU20m!w!ps@ zTsN`QzfC!Q>T#{B)=^ij)wy&HI*-n8!l}_rS-K`wYU)y@CPrOaNas;Unt6yLfFqxJ zEjzcUYXj&TE`t47#B;92{olZwk!}RN&b?4QhjBbi&F_cYnB^`P&4*D7Wrrh3?WUQk z4ML7Ftz&4Go3X;DmVveMycB6TGgJG7f$MgfUe|3^L;qQ&a+83|dM(|ps8O4$PCfGm z9qRi;Lu9E}JDHPQqEV>z=F}Fgd-p90{=b*^E80>sA{4VFhGO(jTj5c|MHWXXd)#Px zj$N(MX>Oa>j@;Gy9F?{#z9PqjK!rXIAB{O} zHR|_n^l4EzpFzjTgvMh`L`n-?Zavx5FzKHQZqW? zLcQAQLQPpQHkLjIs1Z+9+yxb^ZY`Xi?Ig9?R_Z$Qr?BigjD~^fW*k+Clt;{(TO-W5sE|s)SgT=~rPQXSMNsDejCCV6*12X>f)M{E` zrkC6{sGWM8pF2XcW?t4TGbVvCHYp7p<+=Njs+c^n=CME5f?wUx2-gX}w7Fs}34lf& zo7;kwG9_t_^OY&b)l|cQW8N%m^yr*UlbEFhIM%Tnv~u@}oHb)Qx3uYXQcg+rMtkI& zNoEfYM#&{6MOMGCA1J9N6;&|D5&KSETsVEfwA-hqJ=ch4tIR%`(O|~>rY zwE!10S`*~<7%14KH5zvbsU5jjX3TlLWHF_XB1)Li@#igZ;scvd6(@Hysb$q;es)%s zOAe=r0f;rNN3MnV(uS&?KC>RoB~PyaNf_6bTvJjQ^^io{>wdLz^T9Lyef0w2kHD~v)@N({QD%@O^dM&uD!^|M!swS6z zW-3$a)xhj`p1OX;=0E>~MOSaw@R^WuL5UanEnImBP+ddROJJ7(_$D6EkH<@Dd}+(q zj>o7qQ{jrl>Mo@6dU0d0*IPT&UF!Av_WFV~)lu79>-E~c5hT41c$r_-_#*a9HPb>! z#0fz%9U|$A{J15!M7g~9!)4KYctMv92eNFhM~L(7mAKm4+G4-*O%_YlUeGra6uJGj zZ?e=|i!9zEg*N!yo^vTGR+hKUTT)Yf093F}OA4w%%Y9?G^3nF~mFm3S3U{$@+!sWP zZb3sxSS>U7ZV_%w&MR{lAzos2QbB#=xK@(2+uqr3ca3ji((*NXk#ORuZ>+k@H*u#4 zWW5tdL2Iq6L>O6%cH6eM3La&7YSA>X6?CCxr6}lb+t*y(1y)$KbLUstc8zaxowX2* zo!lr7Bv_~xS|w$YuDZ&yr1ngTqB2l2$L%pR_+$qdyUG>CWXkZcc=etUk4PSLvbr)J#$p%%jW;Vi8OcL3hGnHqq z+XEh-Q;wHxa=S?37#r-Zonv^34i!#LF3n}8$D=5x)st6%g|)!Id`KFZ@5xK=a~GTT zOE}4OTfTAJ$Eih?l-f1!k}OdhOhTvQHh|R@t$G6<; z8{sJNAQk}}SGKp(Uu1c!CwEm(?yjEPs|D&h5yb1juCh|U&4Q{YBb5%lUN7qO=q5oX zR2{|&7~_FxpePT#9>%T$OYIUbDZLw==!gmA1Fg#!lcF-jqj$Y!5HN{E5pKJBvZZ>0 zzfKP5US(NU)k0NVW+9lOzgtqYGX=xi#k> zLI#SOJqyB|837WwP}xFQzagw&ykX-Fi+9*~hs7H+-k5ktjd!%%U5uV$=lGhOhBTE! zdR9o7$6F#J+EWHyf*=HXOCZ;H&T^MYqkPQ_^mw4{e9dLb<(rIpAsHj(7{6$RbXtkq zMo_Z{3I_t@aY2M!jySof0BdV~s1n0s;+ww7wAVK|7h>(GjLEq+`U*i%OQpEU7K0L5 zDl0t>wE^%FD%wkJ-aX4*>YF(2oA|!BuGmvoO!=*&wD~5-OEADDZ}CzE;K|w{&EJO% zBAv$r!7r|YAA;kXJc^Nx0tC7+9z7ubPATOsfp?1ztHm&}zy`afdh%u}uqj_lRVxgAg)1 z+D0)xQq8D4oDxN0SLAvm(H+o7b@-J9s;#=t77EJF|` zL+UONT?-*eGekibdy$aj?)FVSDLlT%@c16_e%yFJF5df$_df9+H{Rpoeb{&(7Vjg* z`-pfSGhW=Gj4pb@c%KmO)5iO>c%L!eXTWxQ{R_if{STfFZW z?>qF~rX25WBI&mk8E=uqRv2%Ec&m)JO1!g-cb0hP8t>e4(FTsy#!lBLgcLv60nxR* z5EY2bS=cykyA+D8$OE%v;z`K39~3=Vw#v3SX;dw=JY_Hep2XCFA!GSQjJMq&+YHia zknS1oVvn!Ii_!NoMyGFtl6n%D*7Prf2##FFRg^(-2v$AWpX&)@7+_F;1~wUra%gkr zhh|gJu$OeVWa`N+AeQSHo#igUxZ}JE`zT8m6%^EvHnL7)$ShPCGf)FmOr$TXw`QuU z46UN1IDBmA?1=|lB`Cw~;>4!gn_Kk+X@rt7aXw6C&V=ARJe8=wE;GI5WK^`{9BL;cQAWuL}yxzK6<9`}vIMgF- zp=QitDAxmFpmMr5C($!CNM!pUr%yU`S3!9~0A$XuGG#qC1GFJcrcEZ|1Vj|}Np2HQ zn7A+HhJJ}6%f>ZlMe-$?x1ObukClbV_DZ>=yo-rp!ojFDF|U$Cq%>Q^YYwGNCe3$X z8t8f;$0qPpjk{C=H(<7xrg7fSM884l`2uW3XXO0AAa5GvErY!6DDw&v@Q!I$MW(#l zj9p|B-Bv{QX|WJ8OwG4dIK_G9h`d8?C;*!IFu1ZsR_TR>V@%3JW}kauf@GytOHU5l zZ=2=NdD|>Q=izLja~XU!+FGUJ} zMHYcg;38mP5jsy5l@PcIJOnTmFdzxa2`UIG3A_aOrEgVKMes}f6_r#^E`_bpY?s)? zn+aABtRiT#OUjC1Ufu7kD7;9z9Bu>LFkBd}-7(F5O$Mnjh`*HjQY>AT7C`DuBGxo< z7eZD@*|3gHt^fmQmzjVngB)g_FWV)Rb_o`azTGf|m{99!()oatMFm~rn_OPT+V#>= z2$2OCV>U>ETqUr;M+u%}_|+0lLmY?B6%{osrlkP3^W0kF$SLJsZRBsQU7~dEdY#whp z^wl_YF?S7E7B&VLJ1#SmRX*lXtFQ|mw4CukyOAp3oRN$b{lBi4v zdz?)VZxX4vN z%T<82HA!tbbu<^jj`nc1=Jk{-(|GJeVJ`(N#e=M^Ks?I)Iu~r%Rzp~qBnWu9_7OP? zlqsj1d;#b{%j>tRyL}U{Blho6xJVrphvTpG!-&tsVu4wQdJe@xt7xZ{G)#VnpOBo26dsO zmWG=dqwsU;J=! z_SYitPXGL=a()RzEyqvIov*CipSqZ)INm=bKS_ZP5tiZ??FtvS$@$d`Fz_NvHRLDK z_t#uJ<>xO7)M}FE{4j>}NZ|s_HAK!&W)x_yDbKlzjtTKo9`7ZtH90 zuTEUd9|PfSeR9K$6y6WPSYzQeV%}|E`I&HWN?s;(=SE94O_!y>uR*Xn93+1i6zZ#Q zGBl$75Xe>e)j9Wnq#E@Vau?_So)3Snq)=7aTojXnnWnZZKa*VOS1{+)mSuBN$O~p# zYpKTbwG8)<6wGs}rPiD;k8|y3!FnFiOE}({YgZ z#{Alucy(35OqW|~{rL#olD#6QVBYB@1b1`k3!w|<++eA-=c^TiOzxa5m~q-(;HB^d zb4}L^`gZYx*)Frxy7N)VUeK4O70f!FWI8IXV7}?9%-(8OFzc0;+IT){nKgTzSi$Vm zbtW4tH}n)n0Gol zyKwVg!A!rZLMSO-)><&{uj)v-;;>-O>1s6>t;*z?`*TJzg)23kz&n=@7Oaz2+xpev zwHwxKjI10C4MbKpHHFu%92mGXv~u0*@W6)9n((E;5T-u)`_aJ+mFj>_tBbMDWf+R z%^N)XaK-jMh##&EjjY5xj7#PB@#7Lg>E{_ZO!5jhu8!;U}Py z?Xg%F?wHg+iWP}8@{(`<{jvdNaP#W7e^?!n5%>|*iF{^o-K6lv%+zqE+Xi>_aSOjz zOP~I`&jqUx-{|z>%bTlk7eEiN4*C2}-v+P+IRCy-^y6P()eVe}fBK2fmF2GpP%p}y z06f~^ER@RQVO!)R6n;O#IfuklOBHhk5X-Y!DLE;{17AGatpA=UdIyDCpot&L@(j~Z zfs$U6G^@~V{jUkpi8F^rI2cGgVC+gdRvUrqEfAq=2ZTf>;Ud4r_Civt< ze#0St42yd&rM>(tIm-|8fh~{rb>>mcKF3jzOd0xvVji6~yj+c=eXBB#b^4H=y`c}> z^1NCshwAg!)ri{VyD-QT%jg8XLz0`E9!1;rDLHe0u;rD_qoL}Ps^)Swv@wj1b zzZL51CgF2_o^!csJi=ivCswf?-|SLHKpmM8S2?B-)-_1nMyejNC}sxxED literal 95744 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 5) { - var e = new Exceptions.NetworkException("Cannot communicate with server"); + var e = new Exceptions.NetworkException("Could not communicate with the server (ensure the configuration is correct)"); e.Data["server_address"] = ServerOOBConnection.Client.RemoteEndPoint.ToString(); ServerOOBConnection.Close(); throw e; diff --git a/SharedLibrary/Server.cs b/SharedLibrary/Server.cs index 30934cc7f..7a9795cb7 100644 --- a/SharedLibrary/Server.cs +++ b/SharedLibrary/Server.cs @@ -14,6 +14,16 @@ namespace SharedLibrary [Guid("61d3829e-fcbe-44d3-bb7c-51db8c2d7ac5")] public abstract class Server { + public enum Game + { + UKN, + IW3, + IW4, + IW5, + T4, + T5, + } + public Server(Interfaces.IManager mgr, ServerConfiguration config) { Password = config.Password; @@ -146,9 +156,10 @@ namespace SharedLibrary public async Task Broadcast(String Message) { #if DEBUG - return; + //return; #endif - await this.ExecuteCommandAsync($"sayraw {Message}"); + string sayCommand = (GameName == Game.IW4) ? "sayraw" : "say"; + await this.ExecuteCommandAsync($"{sayCommand} {Message}"); } /// @@ -159,11 +170,13 @@ namespace SharedLibrary public async Task Tell(String Message, Player Target) { #if DEBUG - if (!Target.lastEvent.Remote) - return; + //if (!Target.lastEvent.Remote) + // return; #endif + string tellCommand = (GameName == Game.IW4) ? "tellraw" : "tell"; + if (Target.ClientID > -1 && Message.Length > 0 && Target.Level != Player.Permission.Console && !Target.lastEvent.Remote) - await this.ExecuteCommandAsync($"tellraw {Target.ClientID} {Message}^7"); + await this.ExecuteCommandAsync($"{tellCommand} {Target.ClientID} {Message}^7"); if (Target.Level == Player.Permission.Console) { @@ -346,6 +359,7 @@ namespace SharedLibrary public List Reports { get; set; } public List ChatHistory { get; protected set; } public Queue PlayerHistory { get; private set; } + public Game GameName { get; protected set; } // Info public string Hostname { get; protected set; } diff --git a/SharedLibrary/Utilities.cs b/SharedLibrary/Utilities.cs index 2287e33ae..cb197c9ae 100644 --- a/SharedLibrary/Utilities.cs +++ b/SharedLibrary/Utilities.cs @@ -4,6 +4,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Linq; using System.Collections.Generic; +using static SharedLibrary.Server; namespace SharedLibrary { @@ -246,5 +247,21 @@ namespace SharedLibrary else return "a very long time"; } + + public static Game GetGame(string gameName) + { + if (gameName.Contains("IW4")) + return Game.IW4; + if (gameName.Contains("CoD4")) + return Game.IW3; + if (gameName.Contains("WaW")) + return Game.T4; + if (gameName.Contains("COD_T5_S")) + return Game.T5; + if (gameName.Contains("IW5")) + return Game.IW5; + + return Game.UKN; + } } }