Version 1.5

Updated Readme
This commit is contained in:
RaidMax 2017-11-13 17:17:10 -06:00
parent e64a216cc0
commit 3ccd0013b4
8 changed files with 120 additions and 96 deletions

View File

@ -156,93 +156,93 @@
<Compile Include="WebService.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="webfront\chat.html">
<Content Include="Webfront\chat.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\images\minimap_mp_rust.png">
<Content Include="Webfront\images\minimap_mp_rust.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\images\minimap_mp_terminal.png">
<Content Include="Webfront\images\minimap_mp_terminal.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\scripts\wordcloud2.js">
<Content Include="Webfront\scripts\wordcloud2.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\stats.html">
<Content Include="Webfront\stats.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="app.manifest" />
<Content Include="IW4AdminIcon.ico" />
<Content Include="lib\Kayak.dll">
<Content Include="Lib\Kayak.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="lib\Newtonsoft.Json.dll">
<Content Include="Lib\Newtonsoft.Json.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="lib\SharedLibrary.dll">
<Content Include="Lib\SharedLibrary.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="lib\SQLite.Interop.dll">
<Content Include="Lib\SQLite.Interop.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="lib\System.Data.SQLite.dll">
<Content Include="Lib\System.Data.SQLite.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="version.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="webfront\admins.html">
<Content Include="Webfront\admins.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\bans.html">
<Content Include="Webfront\bans.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\console.html">
<Content Include="Webfront\console.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\error.html">
<Content Include="Webfront\error.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\footer.html">
<Content Include="Webfront\footer.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\header.html">
<Content Include="Webfront\header.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\login.html">
<Content Include="Webfront\login.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\main.css">
<Content Include="Webfront\main.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\main.html">
<Content Include="Webfront\main.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="webfront\mobile.css">
<Content Include="Webfront\mobile.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\notfound.html">
<Content Include="Webfront\notfound.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\penalties.html">
<Content Include="Webfront\penalties.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="webfront\players.html">
<Content Include="Webfront\players.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="config\maps.cfg">
<Content Include="Config\maps.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="config\messages.cfg">
<Content Include="Config\messages.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="config\rules.cfg">
<Content Include="Config\rules.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="app.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="config\web.cfg">
<Content Include="Config\web.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="IW4MAdmin.exe.config" />
@ -276,7 +276,7 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<PublishFile Include="config\maps.cfg">
<PublishFile Include="Config\maps.cfg">
<Visible>False</Visible>
<Group>
</Group>
@ -286,7 +286,7 @@
<IncludeHash>True</IncludeHash>
<FileType>File</FileType>
</PublishFile>
<PublishFile Include="config\messages.cfg">
<PublishFile Include="Config\messages.cfg">
<Visible>False</Visible>
<Group>
</Group>
@ -296,7 +296,7 @@
<IncludeHash>True</IncludeHash>
<FileType>File</FileType>
</PublishFile>
<PublishFile Include="config\rules.cfg">
<PublishFile Include="Config\rules.cfg">
<Visible>False</Visible>
<Group>
</Group>
@ -365,9 +365,13 @@ copy /Y "$(TargetDir)IW4MAdmin.exe.config" "$(SolutionDir)BUILD"
copy /Y "$(ProjectDir)lib\Kayak.dll" "$(SolutionDir)BUILD\lib"
xcopy /Y /I /E "$(ProjectDir)webfront\*" "$(SolutionDir)BUILD\Webfront"
xcopy /Y /I /E "$(TagetDir)Config\*" "$(SolutionDir)BUILD\Config"
if $(ConfigurationName) == Release-Nightly powershell.exe -file "$(SolutionDir)DEPLOY\publish_nightly.ps1" 1.4
if $(ConfigurationName) == Release-Stable powershell.exe -file "$(SolutionDir)DEPLOY\publish_stable.ps1" 1.4</PostBuildEvent>
if $(ConfigurationName) == Release-Nightly powershell.exe -file "$(SolutionDir)DEPLOY\publish_nightly.ps1" 1.5
if $(ConfigurationName) == Release-Stable powershell.exe -file "$(SolutionDir)DEPLOY\publish_stable.ps1" 1.5
</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>xcopy /Y "$(SolutionDir)BUILD\Plugins" "$(TargetDir)Plugins\"</PreBuildEvent>

View File

@ -15,7 +15,7 @@ namespace IW4MAdmin
static void Main(string[] args)
{
Version = 1.4;
Version = 1.5;
handler = new ConsoleEventDelegate(OnProcessExit);
SetConsoleCtrlHandler(handler, true);

View File

@ -146,7 +146,7 @@ namespace IW4MAdmin
#region COMMANDS
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 COwner("owner", "claim ownership of the server", "o", Player.Permission.User, 0, false));
Commands.Add(new CQuit("quit", "quit IW4MAdmin", "q", Player.Permission.Owner, 0, false));
Commands.Add(new CKick("kick", "kick a player by name. syntax: !kick <player> <reason>.", "k", Player.Permission.Trusted, 2, true));
@ -154,31 +154,31 @@ namespace IW4MAdmin
Commands.Add(new CTempBan("tempban", "temporarily ban a player for for specified time (defaults to 1 hour). syntax: !tempban <player> <time>(m|h|d|w|y) <reason>.", "tb", Player.Permission.Moderator, 2, true));
Commands.Add(new CBan("ban", "permanently ban a player from the server. syntax: !ban <player> <reason>", "b", Player.Permission.SeniorAdmin, 2, true));
Commands.Add(new CWhoAmI("whoami", "give information about yourself. syntax: !whoami.", "who", Player.Permission.User, 0, false));
Commands.Add(new CList("list", "list active clients syntax: !list.", "l", Player.Permission.Moderator, 0, false));
Commands.Add(new CList("list", "list active clients. syntax: !list.", "l", Player.Permission.Moderator, 0, false));
Commands.Add(new CHelp("help", "list all available commands. syntax: !help.", "h", Player.Permission.User, 0, false));
Commands.Add(new CFastRestart("fastrestart", "fast restart current map. syntax: !fastrestart.", "fr", Player.Permission.Moderator, 0, false));
Commands.Add(new CMapRotate("maprotate", "cycle to the next map in rotation. syntax: !maprotate.", "mr", Player.Permission.Administrator, 0, false));
Commands.Add(new CSetLevel("setlevel", "set player to specified administration level. syntax: !setlevel <player> <level>.", "sl", Player.Permission.Owner, 2, true));
Commands.Add(new CUsage("usage", "get current application memory usage. syntax: !usage.", "us", Player.Permission.Moderator, 0, false));
Commands.Add(new CUptime("uptime", "get current application running time. syntax: !uptime.", "up", Player.Permission.Moderator, 0, false));
Commands.Add(new CWarn("warn", "warn player for infringing rules syntax: !warn <player> <reason>.", "w", Player.Permission.Trusted, 2, true));
Commands.Add(new CWarnClear("warnclear", "remove all warning for a player syntax: !warnclear <player>.", "wc", Player.Permission.Trusted, 1, true));
Commands.Add(new CWarn("warn", "warn player for infringing rules. syntax: !warn <player> <reason>.", "w", Player.Permission.Trusted, 2, true));
Commands.Add(new CWarnClear("warnclear", "remove all warning for a player. syntax: !warnclear <player>.", "wc", Player.Permission.Trusted, 1, true));
Commands.Add(new CUnban("unban", "unban player by database id. syntax: !unban @<id>.", "ub", Player.Permission.SeniorAdmin, 1, true));
Commands.Add(new CListAdmins("admins", "list currently connected admins. syntax: !admins.", "a", Player.Permission.User, 0, false));
Commands.Add(new CLoadMap("map", "change to specified map. syntax: !map", "m", Player.Permission.Administrator, 1, false));
Commands.Add(new CFindPlayer("find", "find player in database. syntax: !find <player>", "f", Player.Permission.SeniorAdmin, 1, false));
Commands.Add(new CListRules("rules", "list server rules. syntax: !rules", "r", Player.Permission.User, 0, false));
Commands.Add(new CPrivateMessage("privatemessage", "send message to other player. syntax: !pm <player> <message>", "pm", Player.Permission.User, 2, true));
Commands.Add(new CFlag("flag", "flag a suspicious player and announce to admins on join . syntax !flag <player> <reason>:", "flag", Player.Permission.Moderator, 2, true));
Commands.Add(new CFlag("flag", "flag a suspicious player and announce to admins on join. syntax !flag <player> <reason>:", "fp", Player.Permission.Moderator, 2, true));
Commands.Add(new CReport("report", "report a player for suspicious behaivor. syntax !report <player> <reason>", "rep", Player.Permission.User, 2, true));
Commands.Add(new CListReports("reports", "get most recent reports. syntax !reports", "reports", Player.Permission.Moderator, 0, false));
Commands.Add(new CMask("mask", "hide your online presence from online admin list. syntax: !mask", "mask", Player.Permission.Administrator, 0, false));
Commands.Add(new CListReports("reports", "get most recent reports. syntax !reports", "reps", Player.Permission.Moderator, 0, false));
Commands.Add(new CMask("mask", "hide your online presence from online admin list. syntax: !mask", "hide", Player.Permission.Administrator, 0, false));
Commands.Add(new CListBanInfo("baninfo", "get information about a ban for a player. syntax: !baninfo <player>", "bi", Player.Permission.Moderator, 1, true));
Commands.Add(new CListAlias("alias", "get past aliases and ips of a player. syntax: !alias <player>", "known", Player.Permission.Moderator, 1, true));
Commands.Add(new CExecuteRCON("rcon", "send rcon command to server. syntax: !rcon <command>", "rcon", Player.Permission.Owner, 1, false));
Commands.Add(new CFindAllPlayers("findall", "find a player by their aliase(s). syntax: !findall <player>", "fa", Player.Permission.Moderator, 1, false));
Commands.Add(new CPlugins("plugins", "view all loaded plugins. syntax: !plugins", "p", Player.Permission.Administrator, 0, false));
Commands.Add(new CIP("ip", "view your external IP address. syntax: !ip", "getexternalip", Player.Permission.User, 0, false));
Commands.Add(new CIP("getexternalip", "view your external IP address. syntax: !ip", "ip", Player.Permission.User, 0, false));
foreach (Command C in SharedLibrary.Plugins.PluginImporter.ActiveCommands)
Commands.Add(C);

View File

@ -33,5 +33,5 @@ using System.Resources;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.4.*")]
[assembly: AssemblyVersion("1.5.*")]
[assembly: NeutralResourcesLanguageAttribute("en")]

Binary file not shown.

View File

@ -6,6 +6,8 @@ CHANGELOG:
-fixed resolution of tempban times from console feedback
-reconfigured solution and projects to be correct debug/release and files copy properly
-started working on more advanced statistics
-all chat is stored
-word cloud displays most commonly used words on the server
-fixed misc issuess
VERSION 1.4

View File

@ -40,6 +40,14 @@ namespace IW4MAdmin.Plugins
}
});
#endregion
#region PLUGIN_INFO
foreach (var command in S.Manager.GetCommands().OrderByDescending(c => c.Permission).ThenBy(c => c.Name))
{
//|Name|Description|Requires Target|Arg Count|Required Level|
Console.WriteLine($"|{command.Name}|{command.Alias}|{command.Description.Split('.')[0]}|{command.RequiresTarget}|{command.RequiredArgumentCount}|{command.Permission}|");
}
#endregion
}
}

118
README.md
View File

@ -1,6 +1,6 @@
# <span style="color: #007ACC;">IW4MAdmin</span>
### <span style="color: #007ACC; opacity:0.75;">Quick Start Guide</span>
### Version 1.4
### Version 1.5
_______
### Setup
@ -14,12 +14,8 @@ ___
### Configuration
_If you wish to customize your experience of IW4MAdmin, the following configuration files will allow you to changes core options._
`auth.cfg`
* This is the configuration file that sets the authorization password for the [React](http://reactiongaming.us) client
* Modify the _first_ line only
`maps.cfg`
* This is the configuration file that links an IW4 map file name to it's common/ingame name
* This is the configuration file that links an IW4 map file name to its common/in-game name
* This can be safely modified to add additional SP/DLC maps
`messages.cfg`
@ -36,52 +32,64 @@ _If you wish to customize your experience of IW4MAdmin, the following configurat
`web.cfg`
* This is the configuration file that specifies the web front bindings
* The first line specifies the _IP or Hostname_ to bind to
* The second line specifies the _port_ to bind to
* The first line specifies the `IP` or `Hostname` to bind to
* The second line specifies the `port` to bind to
___
### Commands
|Name |Description |Requires Target|Arguments |Required Level|
|--------------|--------------------------------------------------------|---------------|---------------|--------------|
|owner |claim ownership of your server | False | 0 | None |
|setlevel |set player to specified administration level | True | 2 | Owner |
|rcon |send rcon command to server | False | 1 | Owner |
|ban |permanently ban a player from the server | True | 2 | SeniorAdmin |
|unban |unban player by database id | True | 1 | SeniorAdmin |
|find |find player in the database | False | 1 | SeniorAdmin |
|maprotate |cycle to next map in rotation | False | 0 | Administrator|
|map |change to specified map | False | 1 | Administrator|
|mask |hide your online presence from online admin list | False | 0 | Administrator|
|plugins |view all loaded plugins | False | 0 | Administrator|
|say |broadcast message to all players | False | 1 | Moderator |
|tempban |temporarily ban a player for 1 hour | True | 2 | Moderator |
|list |list all active clients | False | 0 | Moderator |
|fastrestart |fast restart current map | False | 0 | Moderator |
|usage |get current application memory usage | False | 0 | Moderator |
|uptime |get current application running time | False | 0 | Moderator |
|balance |balance the in game teams | False | 0 | Moderator |
|flag |flag a suspicious player and announce to admins on join | True | 1 | Moderator |
|reports |get most recent reports | False | 1 _opt_ | Moderator |
|tell |send onscreen message to player | True | 2 | Moderator |
|baninfo |get information about a ban for a player | True | 1 | Moderator |
|alias |get past aliases and ips of a player | True | 1 | Moderator |
|findall |find a player by their aliase(s) | False | 1 | Moderator |
|whoami |list information about yourself | False | 0 | User |
|help |list all available commands | False | 0 | User |
|admins |list currently connected admins | False | 0 | User |
|rules |list server rules | False | 0 | User |
|privatemessage|send message to other player | True | 2 | User |
|report |report a player for suspicious behavior | True | 2 | User |
|Name |Alias|Description |Requires Target|Arguments |Required Level|
|--------------|-----|--------------------------------------------------------|---------------|---------------|--------------|
|disabletrusted|dt|disable trusted player group for the server|False|0|Owner|
|enabletrusted|et|enable trusted player group for the server|False|0|Owner|
|quit|q|quit IW4MAdmin|False|0|Owner|
|rcon|rcon|send rcon command to server|False|1|Owner|
|setlevel|sl|set player to specified administration level|True|2|Owner|
|ban|b|permanently ban a player from the server|True|2|SeniorAdmin|
|find|f|find player in database|False|1|SeniorAdmin|
|fredisable|frd|disable fast restarting at the end of a map|False|0|SeniorAdmin|
|frenable|fre|enable fast restarting at the end of a map|False|0|SeniorAdmin|
|unban|ub|unban player by database id|True|1|SeniorAdmin|
|map|m|change to specified map|False|1|Administrator|
|maprotate|mr|cycle to the next map in rotation|False|0|Administrator|
|mask|hide|hide your online presence from online admin list|False|0|Administrator|
|plugins|p|view all loaded plugins|False|0|Administrator|
|alias|known|get past aliases and ips of a player|True|1|Moderator|
|baninfo|bi|get information about a ban for a player|True|1|Moderator|
|fastrestart|fr|fast restart current map|False|0|Moderator|
|findall|fa|find a player by their aliase(s)|False|1|Moderator|
|flag|fp|flag a suspicious player and announce to admins on join|True|2|Moderator|
|list|l|list active clients|False|0|Moderator|
|reports|reps|get most recent reports|False|0|Moderator|
|say|s|broadcast message to all players|False|1|Moderator|
|tempban|tb|temporarily ban a player for for specified time (defaults to 1 hour)|True|2|Moderator|
|uptime|up|get current application running time|False|0|Moderator|
|usage|us|get current application memory usage|False|0|Moderator|
|kick|k|kick a player by name|True|2|Trusted|
|warn|w|warn player for infringing rules|True|2|Trusted|
|warnclear|wc|remove all warning for a player|True|1|Trusted|
|admins|a|list currently connected admins|False|0|User|
|getexternalip|ip|view your external IP address|False|0|User|
|help|h|list all available commands|False|0|User|
|owner|o|claim ownership of the server|False|0|User|
|privatemessage|pm|send message to other player|True|2|User|
|report|rep|report a player for suspicious behaivor|True|2|User|
|resetstats|rs|reset your stats to factory-new|False|0|User|
|rules|r|list server rules|False|0|User|
|stats|xlrstats|view your stats|False|0|User|
|topstats|ts|view the top 5 players on this server|False|0|User|
|vote|v|vote for the next map|False|1|User|
|votecancel|vc|cancel your vote for the next map|False|0|User|
|whoami|who|give information about yourself|False|0|User|
#### Player Identification
All players are identified 4 ways
All players are identified 4 seperate ways
1. `npID/GUID/XUID` - The ID corresponding to the player's hardware or forum account
2. `IP` - The player's IP Address
3. `Database ID` - The internal reference to a player, generated by IW4MAdmin
4. `Name` - The visible player name as it appears in game
For most commands players are identified by their `Name`
However, if they are currently offline, or their name contains un-typable characters, a `Database ID` must be used
However, if they are currently offline, or their name contains un-typable characters, their `Database ID` must be used
The `dbID` is specified by prefixing a player's reference number with `@`.
For example, `@123` would reference the player with a `dbID` of 123.
@ -104,6 +112,13 @@ Players can also be referenced by `clientID`, which is simply their slot (0 - 17
- _Parameter 2_ - Reason for ban
- _Example_ - `!ban Player1 caught cheating`, `!b @123 GUID Spoofing`
`tempban`
- _Shortcut_ - `tb`
- _Parameter 1_ - Player to ban
- _Parameter 2_ - Ban length (minutes|hours|days|weeks|years)
- _Parameter 3_ - Reason for ban
- _Example_ - `!tempban Player1 3w racism`, `!tb @123 8h Abusive behaivor`
`reports`
- _Shortcut_ - `reps`
- _Optional Parameter 1_ - `clear` (erases reports for current server)
@ -134,15 +149,7 @@ ___
- Additional Features will be added in the future
#### Welcome
- This plugin uses geolocation data to welcome a player based on their IP's country
- All privileged users ( Trusted or higher ) recieve a specialized welcome message as well
- For React servers, the password authentication system is bundled in this plugin..
**Commands added by this plugin**
|Name |Description |Requires Target|Arg Count |Required Level|
|--------------|--------------------------------------------------------|---------------|---------------|--------------|
|login |authenticate with IW4MAdmin. | False | 1 | User |
- All privileged users ( Trusted or higher ) recieve a specialized welcome message as well
#### Stats
- This plugin calculates basic player performance, skill approximation, and kill/death ratio
@ -152,10 +159,13 @@ ___
**Commands added by this plugin**
|Name |Description |Requires Target|Arg Count |Required Level|
|--------------|--------------------------------------------------------|---------------|---------------|--------------|
|stats |view your or another player's stats | False | 1 _opt_ | User |
|topstats |view the top 5 players on this server | False | 0 | User |
|Name |Alias|Description |Requires Target|Arguments |Required Level|
|--------------|-----|--------------------------------------------------------|---------------|---------------|--------------|
|disabletrusted|dt|disable trusted player group for the server|False|0|Owner|
|enabletrusted|et|enable trusted player group for the server|False|0|Owner|
|resetstats|rs|reset your stats to factory-new|False|0|User|
|stats|xlrstats|view your stats|False|0|User|
|topstats|ts|view the top 5 players on this server|False|0|User|
- To qualify for top stats, a player must meet the following criteria
* `Skill` > 10