1
0

PanicBunkerCommand.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. using Content.Shared.Administration;
  2. using Content.Shared.CCVar;
  3. using Robust.Shared.Configuration;
  4. using Robust.Shared.Console;
  5. namespace Content.Server.Administration.Commands;
  6. [AdminCommand(AdminFlags.Server)]
  7. public sealed class PanicBunkerCommand : LocalizedCommands
  8. {
  9. [Dependency] private readonly IConfigurationManager _cfg = default!;
  10. public override string Command => "panicbunker";
  11. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  12. {
  13. var toggle = Toggle(CCVars.PanicBunkerEnabled, shell, args, _cfg);
  14. if (toggle == null)
  15. return;
  16. shell.WriteLine(Loc.GetString(toggle.Value ? "panicbunker-command-enabled" : "panicbunker-command-disabled"));
  17. }
  18. public static bool? Toggle(CVarDef<bool> cvar, IConsoleShell shell, string[] args, IConfigurationManager config)
  19. {
  20. if (args.Length > 1)
  21. {
  22. shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 0), ("upper", 1)));
  23. return null;
  24. }
  25. var enabled = config.GetCVar(cvar);
  26. if (args.Length == 0)
  27. {
  28. enabled = !enabled;
  29. }
  30. if (args.Length == 1 && !bool.TryParse(args[0], out enabled))
  31. {
  32. shell.WriteError(Loc.GetString("shell-argument-must-be-boolean"));
  33. return null;
  34. }
  35. config.SetCVar(cvar, enabled);
  36. return enabled;
  37. }
  38. }
  39. [AdminCommand(AdminFlags.Server)]
  40. public sealed class PanicBunkerDisableWithAdminsCommand : LocalizedCommands
  41. {
  42. [Dependency] private readonly IConfigurationManager _cfg = default!;
  43. public override string Command => "panicbunker_disable_with_admins";
  44. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  45. {
  46. var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerDisableWithAdmins, shell, args, _cfg);
  47. if (toggle == null)
  48. return;
  49. shell.WriteLine(Loc.GetString(toggle.Value
  50. ? "panicbunker-command-disable-with-admins-enabled"
  51. : "panicbunker-command-disable-with-admins-disabled"
  52. ));
  53. }
  54. }
  55. [AdminCommand(AdminFlags.Server)]
  56. public sealed class PanicBunkerEnableWithoutAdminsCommand : LocalizedCommands
  57. {
  58. [Dependency] private readonly IConfigurationManager _cfg = default!;
  59. public override string Command => "panicbunker_enable_without_admins";
  60. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  61. {
  62. var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerEnableWithoutAdmins, shell, args, _cfg);
  63. if (toggle == null)
  64. return;
  65. shell.WriteLine(Loc.GetString(toggle.Value
  66. ? "panicbunker-command-enable-without-admins-enabled"
  67. : "panicbunker-command-enable-without-admins-disabled"
  68. ));
  69. }
  70. }
  71. [AdminCommand(AdminFlags.Server)]
  72. public sealed class PanicBunkerCountDeadminnedCommand : LocalizedCommands
  73. {
  74. [Dependency] private readonly IConfigurationManager _cfg = default!;
  75. public override string Command => "panicbunker_count_deadminned_admins";
  76. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  77. {
  78. var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerCountDeadminnedAdmins, shell, args, _cfg);
  79. if (toggle == null)
  80. return;
  81. shell.WriteLine(Loc.GetString(toggle.Value
  82. ? "panicbunker-command-count-deadminned-admins-enabled"
  83. : "panicbunker-command-count-deadminned-admins-disabled"
  84. ));
  85. }
  86. }
  87. [AdminCommand(AdminFlags.Server)]
  88. public sealed class PanicBunkerShowReasonCommand : LocalizedCommands
  89. {
  90. [Dependency] private readonly IConfigurationManager _cfg = default!;
  91. public override string Command => "panicbunker_show_reason";
  92. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  93. {
  94. var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerShowReason, shell, args, _cfg);
  95. if (toggle == null)
  96. return;
  97. shell.WriteLine(Loc.GetString(toggle.Value
  98. ? "panicbunker-command-show-reason-enabled"
  99. : "panicbunker-command-show-reason-disabled"
  100. ));
  101. }
  102. }
  103. [AdminCommand(AdminFlags.Server)]
  104. public sealed class PanicBunkerMinAccountAgeCommand : LocalizedCommands
  105. {
  106. [Dependency] private readonly IConfigurationManager _cfg = default!;
  107. public override string Command => "panicbunker_min_account_age";
  108. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  109. {
  110. if (args.Length == 0)
  111. {
  112. var current = _cfg.GetCVar(CCVars.PanicBunkerMinAccountAge);
  113. shell.WriteLine(Loc.GetString("panicbunker-command-min-account-age-is", ("minutes", current)));
  114. }
  115. if (args.Length > 1)
  116. {
  117. shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 0), ("upper", 1)));
  118. return;
  119. }
  120. if (!int.TryParse(args[0], out var minutes))
  121. {
  122. shell.WriteError(Loc.GetString("shell-argument-must-be-number"));
  123. return;
  124. }
  125. _cfg.SetCVar(CCVars.PanicBunkerMinAccountAge, minutes);
  126. shell.WriteLine(Loc.GetString("panicbunker-command-min-account-age-set", ("minutes", minutes)));
  127. }
  128. }
  129. [AdminCommand(AdminFlags.Server)]
  130. public sealed class PanicBunkerMinOverallMinutesCommand : LocalizedCommands
  131. {
  132. [Dependency] private readonly IConfigurationManager _cfg = default!;
  133. public override string Command => "panicbunker_min_overall_minutes";
  134. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  135. {
  136. if (args.Length == 0)
  137. {
  138. var current = _cfg.GetCVar(CCVars.PanicBunkerMinOverallMinutes);
  139. shell.WriteLine(Loc.GetString("panicbunker-command-min-overall-minutes-is", ("minutes", current)));
  140. }
  141. if (args.Length > 1)
  142. {
  143. shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 0), ("upper", 1)));
  144. return;
  145. }
  146. if (!int.TryParse(args[0], out var minutes))
  147. {
  148. shell.WriteError(Loc.GetString("shell-argument-must-be-number"));
  149. return;
  150. }
  151. _cfg.SetCVar(CCVars.PanicBunkerMinOverallMinutes, minutes);
  152. shell.WriteLine(Loc.GetString("panicbunker-command-overall-minutes-age-set", ("minutes", minutes)));
  153. }
  154. }