This commit is contained in:
RaidMax 2019-06-15 08:53:15 -05:00
commit a5414c2c57

View File

@ -1,9 +1,10 @@
# IW4MAdmin # IW4MAdmin
### Quick Start Guide ### Quick Start Guide
### Version 2.3 ### Version 2.3
_______ _______
### About ### About
**IW4MAdmin** is an administration tool for [IW4x](https://iw4xcachep26muba.onion.link/), [Pluto T6](https://forum.plutonium.pw/category/33/plutonium-t6), ~~[Pluto IW5](https://forum.plutonium.pw/category/5/plutonium-iw5)~~, and most Call of Duty® dedicated servers. It allows complete control of your server; from changing maps, to banning players, **IW4MAdmin** monitors and records activity on your server(s). With plugin support, extending its functionality is a breeze. **IW4MAdmin** is an administration tool for [IW4x](https://iw4xcachep26muba.onion.link/), [Pluto T6](https://forum.plutonium.pw/category/33/plutonium-t6), [CoD4x](https://cod4x.me/), [TeknoMW3](https://www.teknomw3.pw/), and most Call of Duty® dedicated servers. It allows complete control of your server; from changing maps, to banning players, **IW4MAdmin** monitors and records activity on your server(s). With plugin support, extending its functionality is a breeze.
### Download ### Download
Latest binary builds are always available at: Latest binary builds are always available at:
- [RaidMax](https://raidmax.org/IW4MAdmin) - [RaidMax](https://raidmax.org/IW4MAdmin)
@ -13,17 +14,26 @@ Latest binary builds are always available at:
### Setup ### Setup
**IW4MAdmin** requires minimal effort to get up and running. **IW4MAdmin** requires minimal effort to get up and running.
#### Prerequisites #### Prerequisites
* [.NET Core 2.1.5 Runtime](https://www.microsoft.com/net/download) *or newer* * [.NET Core 2.2.2 Runtime](https://www.microsoft.com/net/download) *or newer*
#### Installation #### Installation
1. Install .NET Core Runtime 1. Install .NET Core Runtime
2. Extract `IW4MAdmin-<version>.zip` 2. Extract `IW4MAdmin-<version>.zip`
#### Launching #### Launching
1. Run `StartIW4MAdmin.cmd` (Windows) Windows
2. Run `StartIW4MAdmin.sh` (Linux) 1. Run `StartIW4MAdmin.cmd`
2. Configure **IW4MAdmin** 2. Configure **IW4MAdmin**
Linux
1. Execute `chmod +x StartIW4MAdmin.sh`
2. Run `StartIW4MAdmin.sh`
3. Configure **IW4MAdmin**
### Updating ### Updating
1. Extract newer version of **IW4MAdmin** into pre-existing **IW4MAdmin** folder and overwrite existing files 1. Download the latest version of **IW4MAdmin**
- _Your configuration and database will be saved_ 2. Extract the newer version of **IW4MAdmin** into pre-existing **IW4MAdmin** folder and overwrite existing files
_Your configuration and database will be saved_
--- ---
### Help ### Help
Feel free to join the **IW4MAdmin** [Discord](https://discord.gg/ZZFK5p3) Feel free to join the **IW4MAdmin** [Discord](https://discord.gg/ZZFK5p3)
@ -75,29 +85,22 @@ After initial configuration is finished, you will be prompted to configure your
* The *\(R\)emote (Con)sole* password set in your server configuration (can be obtained via `rcon_password`) * The *\(R\)emote (Con)sole* password set in your server configuration (can be obtained via `rcon_password`)
* Default &mdash; `n/a` * Default &mdash; `n/a`
`Use Pluto T6 parser`
* Used if setting up a server for Plutonium T6 (BO2)
* Default &mdash; `false`
`Use Pluto IW5 parser`
* Used if setting a server for Plutonium IW5 (MW3)
* Default &mdash; `false`
`Enter number of reserved slots` `Enter number of reserved slots`
* The number of client slots reserver for privileged players (unavailable for regular users to occupy) * The number of client slots reserved for privileged players (unavailable for regular users to occupy)
* For example, if you enter **2** reserved slots on an **18** slot server, you will have **16** publicly available slots
* Default &mdash; `0` * Default &mdash; `0`
#### Advanced Configuration #### Advanced Configuration
If you wish to further customize your experience of **IW4MAdmin**, the following configuration file(s) will allow you to changes core options using any text-editor. If you wish to further customize your experience of **IW4MAdmin**, the following configuration file(s) will allow you to changes core options using any text-editor.
#### `IW4MAdminSettings.json`-- _this file is created after initial setup_ #### `IW4MAdminSettings.json`-- this file is created after initial setup
* This file uses the [JSON](https://en.wikipedia.org/wiki/JSON#JSON_sample) specification, so please validate it before running **IW4MAdmin** * This file uses the [JSON](https://en.wikipedia.org/wiki/JSON#JSON_sample) specification, so please validate your configuration before running **IW4MAdmin**
`WebfrontBindUrl` `WebfrontBindUrl`
* Specifies the address and port the webfront will listen on. * Specifies the address and port the webfront will listen on.
* The value can be an [IP Address](https://en.wikipedia.org/wiki/IP_address):port or [Domain Name](https://en.wikipedia.org/wiki/Domain_name):port * The value can be an [IP Address](https://en.wikipedia.org/wiki/IP_address):port or [Domain Name](https://en.wikipedia.org/wiki/Domain_name):port
* Example http://gameserver.com:8080 * Example http://gameserver.com:8080
* Default &mdash; `http://0.0.0.0:1624` * Default &mdash; `http://0.0.0.0:1624` (indicates that it will listen on all IP Addresses available to the default interface)
`CustomLocale` `CustomLocale`
* Specifies a [locale name](https://msdn.microsoft.com/en-us/library/39cwe7zf.aspx) to use instead of system default * Specifies a [locale name](https://msdn.microsoft.com/en-us/library/39cwe7zf.aspx) to use instead of system default
@ -114,7 +117,7 @@ If you wish to further customize your experience of **IW4MAdmin**, the following
* Default &mdash; `sqlite` * Default &mdash; `sqlite`
`Ignore Bots` `Ignore Bots`
* Disables bots from being registered by **IW4MAdmin** * Disables bots from being registered and tracked by **IW4MAdmin**
`RConPollRate` `RConPollRate`
* Specifies (in milliseconds) how often to poll each server for updates * Specifies (in milliseconds) how often to poll each server for updates
@ -136,15 +139,19 @@ If you wish to further customize your experience of **IW4MAdmin**, the following
* Specifies the log path to be used instead of the automatically generated one * Specifies the log path to be used instead of the automatically generated one
* To use the `GameLogServer`, this should be set to the http address that the `GameLogServer` is listening on * To use the `GameLogServer`, this should be set to the http address that the `GameLogServer` is listening on
* Example &mdash; http://gamelogserver.com/ * Example &mdash; http://gamelogserver.com/
* Default &mdash; `null`
* `AutoMessages` * `AutoMessages`
* Specifies the list of messages that are broadcasted to the particular server * Specifies the list of messages that are broadcasted to the particular server
* Default &mdash; `null` * Default &mdash; `[]`
* `Rules` * `Rules`
* Specifies the list of rules that apply to the particular server * Specifies the list of rules that apply to the particular server
* Default &mdash; `null` * Default &mdash; `[]`
* `ReservedSlotNumber` * `ReservedSlotNumber`
* Specifies the number of client slots to reserve for privileged users * Specifies the number of client slots to reserve for privileged users
* Default &mdash; `0` * Default &mdash; `0`
* `GameLogServerUrl`
* Specifies the HTTP Url for the Game Log Server
* Default &mdash; `null`
`AutoMessagePeriod` `AutoMessagePeriod`
* Specifies (in seconds) how often messages should be broadcasted to each server * Specifies (in seconds) how often messages should be broadcasted to each server
@ -309,7 +316,7 @@ ___
#### VPN Detection [Script Plugin] #### VPN Detection [Script Plugin]
- This plugin detects if a client is using a VPN and kicks them if they are - This plugin detects if a client is using a VPN and kicks them if they are
- To disable this plugin, delete `Plugins\VPNDetection.js` - To disable this plugin, delete `Plugins\VPNDetection.js`
- Adding ClientIds to `vpnExceptionIds` will prevent a client from being kicked. - Adding **Client IDs** to the `vpnExceptionIds` array will prevent a client from being kicked.
#### Shared GUID Kicker [Script Plugin] #### Shared GUID Kicker [Script Plugin]
- This plugin kicks users using a specific GUID - This plugin kicks users using a specific GUID
@ -359,6 +366,10 @@ Werkzeug>=0.14.1
```console ```console
pip install -r requirements.txt pip install -r requirements.txt
``` ```
If this fails, you can alternatively try installing with:
```console
python -m pip install -r requirements.txt
```
2. Allow TCP port 1625 through firewall 2. Allow TCP port 1625 through firewall
* [Windows Instructions](https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html) * [Windows Instructions](https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html)
* [Linux Instructions (iptables)](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-basic-iptables-firewall-on-centos-6#open-up-ports-for-selected-services) * [Linux Instructions (iptables)](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-basic-iptables-firewall-on-centos-6#open-up-ports-for-selected-services)
@ -367,14 +378,20 @@ With Python 3 installed, open a terminal/command prompt window open in the `Game
```console ```console
python runserver.py python runserver.py
``` ```
The Game Log Server window will need to remain running/open as long as **IW4MAdmin** is running
--- ---
### Extending Plugins ### Extending Plugins
#### NuGet Package
The NuGet package for **IW4MAdmin's** "Shared Library" can be obtained from the [NuGet Gallery](https://www.nuget.org/packages/RaidMax.IW4MAdmin.SharedLibraryCore)
Referencing this package will give you the ability to write plugins against **IW4MAdmin's** core library.
#### Code #### Code
IW4Madmin functionality can be extended by writing additional plugins in C#. **IW4MAdmin's** functionality can be extended by writing additional plugins in C#.
Each class library must implement the `IPlugin` interface. Each class library must implement the `IPlugin` interface.
See the existing plugins for examples. See the existing [plugins](https://github.com/RaidMax/IW4M-Admin/tree/master/Plugins) for examples.
#### JavaScript #### JavaScript
IW4MAdmin functionality can be extended using JavaScript. **IW4MAdmin** functionality can also be extended using JavaScript.
The JavaScript parser supports [ECMA 5.1](https://ecma-international.org/ecma-262/5.1/) standards. The JavaScript parser supports [ECMA 5.1](https://ecma-international.org/ecma-262/5.1/) standards.
#### Plugin Object Template #### Plugin Object Template
In order to be properly parsed by the JavaScript engine, every plugin must conform to the following template. In order to be properly parsed by the JavaScript engine, every plugin must conform to the following template.
@ -407,38 +424,11 @@ var plugin = {
- `onLoadAsync` &mdash; [function] Handler executed when the plugin is loaded by code - `onLoadAsync` &mdash; [function] Handler executed when the plugin is loaded by code
- `manager` &mdash; [parameter object] Object reference to the application manager (see the IManager interface definition) - `manager` &mdash; [parameter object] Object reference to the application manager (see the IManager interface definition)
- `onUnloadAsync` &mdash; [function] Handler executed when the plugin is unloaded by code (see live reloading) - `onUnloadAsync` &mdash; [function] Handler executed when the plugin is unloaded by code (see live reloading)
- `onTickAsync` &mdash; [function] Handler executed approximately once per second by code *(unimplemented as of version 2.1)* - `onTickAsync` &mdash; [function] Handler executed approximately once per second by code *(unimplemented as of version 2.\*)*
- `server` &mdash; [parameter object] Object containing information and methods about the server the event occured on (see the Server class declaration) - `server` &mdash; [parameter object] Object containing information and methods about the server the event occured on (see the Server class declaration)
### Live Reloading ### Live Reloading
Thanks to JavaScript's flexibility and parsability, the plugin importer scans the plugins folder and reloads the JavaScript plugins on demand as they're modified. This allows faster development/testing/debugging. Thanks to JavaScript's flexibility and parsability, the plugin importer scans the plugins folder and reloads the JavaScript plugins on demand as they're modified. This allows faster development/testing/debugging.
---
### Discord Webhook
If you'd like to receive notifications on your Discord guild, configure and start `DiscordWebhook.py`
#### Requirements
- [Python 3.6](https://www.python.org/downloads/) or newer
- The following [PIP](https://pypi.org/project/pip/) packages (provided in `requirements.txt`)
```certifi>=2018.4.16
chardet>=3.0.4
idna>=2.7
pip>=18.0
requests>=2.19.1
setuptools>=39.0.1
urllib3>=1.23
```
#### Configuration Options
- `IW4MAdminUrl` &mdash; Base url corresponding to your IW4MAdmin `WebfrontBindUrl`.
Example http://127.0.0.1
- `DiscordWebhookNotificationUrl` &mdash; [required] Discord generated URL to send notifications/alerts to; this includes **Reports** and **Bans**
Example https://discordapp.com/api/webhooks/id/token
- `DiscordWebhookInformationUrl` &mdash; [optional] Discord generated URL to send information to; this includes information such as player messages
- `NotifyRoleIds` &mdash; [optional] List of [discord role ids](https://discordhelp.net/role-id) to mention when notification hook is sent
#### Launching
With Python installed, open a terminal/command prompt window open in the `Webhook` folder and execute:
```console
python DiscordWebhook.py
```
--- ---
### Misc ### Misc
#### Anti-cheat #### Anti-cheat
@ -453,4 +443,4 @@ Should you need to reset your database, this file can simply be deleted.
Additionally, this file should be preserved during updates to retain client information. Additionally, this file should be preserved during updates to retain client information.
Setting the `ConnectionString` and `DatabaseProvider` properties in `IW4MAdminSettings.json` Setting the `ConnectionString` and `DatabaseProvider` properties in `IW4MAdminSettings.json`
will allow **IW4MAdmin** to use alternate methods for database storage. will allow **IW4MAdmin** to use alternate methods for database storage