Merge branch '2.3' of https://github.com/RaidMax/IW4M-Admin into 2.3
This commit is contained in:
commit
a5414c2c57
98
README.md
98
README.md
@ -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 — `n/a`
|
* Default — `n/a`
|
||||||
|
|
||||||
`Use Pluto T6 parser`
|
|
||||||
* Used if setting up a server for Plutonium T6 (BO2)
|
|
||||||
* Default — `false`
|
|
||||||
|
|
||||||
`Use Pluto IW5 parser`
|
|
||||||
* Used if setting a server for Plutonium IW5 (MW3)
|
|
||||||
* Default — `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 — `0`
|
* Default — `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 — `http://0.0.0.0:1624`
|
* Default — `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 — `sqlite`
|
* Default — `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 — http://gamelogserver.com/
|
* Example — http://gamelogserver.com/
|
||||||
|
* Default — `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 — `null`
|
* Default — `[]`
|
||||||
* `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 — `null`
|
* Default — `[]`
|
||||||
* `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 — `0`
|
* Default — `0`
|
||||||
|
* `GameLogServerUrl`
|
||||||
|
* Specifies the HTTP Url for the Game Log Server
|
||||||
|
* Default — `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` — [function] Handler executed when the plugin is loaded by code
|
- `onLoadAsync` — [function] Handler executed when the plugin is loaded by code
|
||||||
- `manager` — [parameter object] Object reference to the application manager (see the IManager interface definition)
|
- `manager` — [parameter object] Object reference to the application manager (see the IManager interface definition)
|
||||||
- `onUnloadAsync` — [function] Handler executed when the plugin is unloaded by code (see live reloading)
|
- `onUnloadAsync` — [function] Handler executed when the plugin is unloaded by code (see live reloading)
|
||||||
- `onTickAsync` — [function] Handler executed approximately once per second by code *(unimplemented as of version 2.1)*
|
- `onTickAsync` — [function] Handler executed approximately once per second by code *(unimplemented as of version 2.\*)*
|
||||||
- `server` — [parameter object] Object containing information and methods about the server the event occured on (see the Server class declaration)
|
- `server` — [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` — Base url corresponding to your IW4MAdmin `WebfrontBindUrl`.
|
|
||||||
Example http://127.0.0.1
|
|
||||||
- `DiscordWebhookNotificationUrl` — [required] Discord generated URL to send notifications/alerts to; this includes **Reports** and **Bans**
|
|
||||||
Example https://discordapp.com/api/webhooks/id/token
|
|
||||||
- `DiscordWebhookInformationUrl` — [optional] Discord generated URL to send information to; this includes information such as player messages
|
|
||||||
- `NotifyRoleIds` — [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
|
||||||
|
Loading…
Reference in New Issue
Block a user