csgo-rcon-nodejs
csgo-rcon-nodejs copied to clipboard
A web panel to control a CS:GO server
Counter-Strike Global Offensive Web Panel
A web panel to control a CS:GO server
Backend Structure
- NodeJS
- Simple Node Logger
- srcds-rcon
- Json DB
- Express
- Express-WS
Frontend Structure
- Webpack
- Preact
- Preact Router
- Bootstrap
- Sass
- Sockette
Basic Usage
- Download the latest version from the releases page on GitHub
- Save the binary in it's own folder
- Run the binary (this will create some additional files/folders)
- Adjust the
config.json
- Restart the binary
Then open up a webbrowser and go to the site
Development Usage
- Install NodeJS 8.0 or higher
- Copy the
_scripts/config/config.dev.json
to hereapp/src/config/config.json
- Run
npm install
in the root project folder - Run
npm run webpack
in the root project folder - Run
npm run dev
in the root project folder
Then open up a webbrowser and go to the site
Logging
All logs will be written to the csgo-rcon.log
file in the node folder.
To increase the logging change the logger level in the config.json
file from info
to debug
.
Database
To make this as simple as it is I use a local Json database.
Checkout csgo-rcon.json
since this is the db file.
Plugin
To enable livescoring and auto match configuration please install the SourceMod Plugin:
https://github.com/glenndehaan/csgo-rcon-plugin
Language Support
- English
- French
- German
- Dutch
config.json Explanation
{
"application": {
"companyName": "A Company", <<- This name will be prefixed in the servername
"baseUrl": "http://CURRENTIP:3542" <<- Change 'CURRENTIP' to the IP of the CSGO-Remote server. Your CS:GO servers must be able to connect to the CSGO-Remote app
},
"servers": [ <<- Put all your CS:GO server in this block
{ <<- A server block
"ip": "192.168.1.xx", <<- CS:GO server IP/Hostname
"port": 27015, <<- CS:GO server Port
"password": "anrconpassword", <<- CS:GO server password
"default_map": "de_dust2", <<- CS:GO server default loading map
"server_restore_config": "server" <<- Leave this default
}
],
"broadcaster": { <<- The broadcaster sends messages to the CS:GO server chat
"enabled": true, <<- Enables the broadcaster
"speed": 120, <<- After how long do we need to send the next message in seconds
"messages": [ <<- This block contains all the messages
"This is message 1", <<- This is one message
"This is message 2",
"This is message 3"
]
},
"authentication": { <<- This block is for the /settings pages
"username": "root", <<- Username for the /settings pages
"password": "password123!" <<- Password for the /settings pages
}
}
v2 TODO's
- GitHub Request: https://github.com/glenndehaan/csgo-rcon-nodejs/issues/2
- ~~Wingman:
Connect server
needs to change map to wingman map~~ - ~~Dangerzone:
Connect server
needs to change map to dangerzone map~~ - ~~Dangerzone:
Knife round
needs to be disabled~~ - ~~Dangerzone:
Start match
needs to stop warmup~~ - ~~Dangerzone/Wingman: Restore game_type/game_mode to competitive~~
- ~~Healthcheck needs to be faster~~
- ~~Translations add socket error messages~~
- ~~Add frontend translations~~
- Add Bo1, Bo2, Bo3, Bo4, Bo5 support
- ~~Add wingman and dangerzone support (maps, configs)~~
- Add support for uploading scores back to challonge
- Replace basic auth with frontend login
- Add livescoring to Home/Servers view
- ~~Add Readme
config.json
explanation~~ - Implement LoadBalancing (Redis)?
- Implement MongoDB?
- ~~Implement lang files tests~~
- ~~Implement basic tests~~
- ~~Implement NodeJS server logs web interface~~
- ~~Implement NodeJS server controls~~ (Not possible)
- ~~Better GitHub release integration~~
- ~~Rcon Healthcheck (Auto reinit Rcon connection)~~
- ~~Rcon Command error/timeout (https://github.com/randunel/node-srcds-rcon#specify-command-timeout)~~
v1 TODO's
- ~~Lock matches on same server when one match is running.~~
- ~~Fix production PKG build.~~
- ~~Add say to admin interface.~~
- ~~Add broadcaster to config file.~~
- ~~Fix restore server config file.~~ (Restore config is now optional)
- ~~Catch srcds error's. (Send cmd if rcon fails)~~
- ~~Create one cmd for rcon. (Use in startMatch, reset) Let others use that.~~
- ~~Rcon reconnect?~~ (Not possible with current package!)
- ~~Rcon server/match status? (V2)~~
- ~~Challonge (API/Webhook) match import?~~
- ~~Rewrite (server modules) to ES6 classes?~~
- ~~Bootstrap Notification bar. (Showing that we are sending something)~~
- ~~Add match groups~~
- ~~Edit match~~
- ~~Add native system notifications~~
- ~~Add SVG's to replace bulky buttons~~
- ~~Protect /settings page with basic auth (Username/Password in config file)~~
- ~~Challonge import server option: Next available server~~
- ~~Challonge import complete notification update~~
- ~~Settings icon active state stuck~~
- ~~Restart game implement are you sure dialog~~
- ~~Rewrite queue module~~
- ~~Filter matches on homepage (Not started, Running, Completed)~~
- ~~/settings add archive complete matches function~~
- ~~Disable match/server controls if match isn't started~~
- ~~Server overview page to so available server where no matches are running~~
- ~~Add breadcrumbs~~
- ~~Add /settings force archive match~~
- ~~/about page with software info~~
- ~~Version update available based on GIT (GitHub)~~
- ~~Show development/production version~~
- Autosetup server (V3)
- Match control password protect at match create
- ~~Plugin: Lock match data after match_end~~
- ~~Plugin: Split connect server/start match~~
- ~~Plugin: Add start warmup button~~
- ~~Plugin: Autoflow Connect Server->Warmup->Start Knife->Knife (End)->Warmup->Start match->Match end->Auto restore server~~
- ~~CSV Import matches~~
License
MIT