├── .gitattributes ├── .gitignore ├── README.md ├── README_Linux.md ├── acServerManager.bat ├── frontend ├── advanced.html ├── app │ ├── angular-toggle-switch.js │ ├── app.js │ ├── controllers.js │ └── services.js ├── css │ ├── angular-toggle-switch-bootstrap-3.css │ ├── animate.min.css │ ├── bootstrap.min.css │ ├── light-bootstrap-dashboard.css │ ├── pe-icon-7-stroke.css │ └── style.css ├── entrylist.html ├── fonts │ ├── Pe-icon-7-stroke.eot │ ├── Pe-icon-7-stroke.svg │ ├── Pe-icon-7-stroke.ttf │ ├── Pe-icon-7-stroke.woff │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── help.html ├── img │ ├── ajax-loader.gif │ ├── favicon.ico │ ├── sidebar-1.jpg │ ├── sidebar-2.jpg │ ├── sidebar-3.jpg │ ├── sidebar-4.jpg │ └── sidebar-5.jpg ├── index.html ├── js │ ├── angular │ │ ├── angular-resource.min.js │ │ ├── angular-resource.min.js.map │ │ ├── angular.js │ │ ├── angular.min.js │ │ ├── angular.min.js.map │ │ ├── show-errors.min.js │ │ └── ui-bootstrap-tpls-0.13.0.min.js │ ├── bootstrap-checkbox-radio-switch.js │ ├── bootstrap-notify.js │ ├── bootstrap-select.js │ ├── bootstrap-switch.js │ ├── bootstrap.min.js │ ├── chartist.min.js │ ├── jquery-1.10.2.js │ ├── light-bootstrap-dashboard.js │ └── npm.js ├── rules.html ├── sass │ ├── lbd │ │ ├── _alerts.scss │ │ ├── _buttons.scss │ │ ├── _cards.scss │ │ ├── _chartist.scss │ │ ├── _checkbox-radio-switch.scss │ │ ├── _dropdown.scss │ │ ├── _footers.scss │ │ ├── _inputs.scss │ │ ├── _misc.scss │ │ ├── _mixins.scss │ │ ├── _navbars.scss │ │ ├── _responsive.scss │ │ ├── _sidebar-and-main-panel.scss │ │ ├── _tables.scss │ │ ├── _typography.scss │ │ ├── _variables.scss │ │ └── mixins │ │ │ ├── _buttons.scss │ │ │ ├── _cards.scss │ │ │ ├── _chartist.scss │ │ │ ├── _icons.scss │ │ │ ├── _inputs.scss │ │ │ ├── _labels.scss │ │ │ ├── _morphing-buttons.scss │ │ │ ├── _navbars.scss │ │ │ ├── _social-buttons.scss │ │ │ ├── _tabs.scss │ │ │ ├── _transparency.scss │ │ │ └── _vendor-prefixes.scss │ └── light-bootstrap-dashboard.scss └── server.html ├── logs └── readme.txt ├── package.json ├── server.js ├── settings.js └── start.bat /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Declare files that will always have CRLF line endings on checkout. 5 | *.html text eol=crlf 6 | *.js text eol=crlf 7 | *.css text eol=crlf 8 | 9 | # Denote all files that are truly binary and should not be modified. 10 | *.png binary 11 | *.jpg binary 12 | *.ico binary 13 | *.gif binary 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ACServerManager 2 | Web based server manager for Assetto Corsa directly manipulating the ini files on the server as an alternative to the windows app and having to copy files to your server. 3 | 4 | Start and stop the server, and stracker directly from the application, meaning you can make changes to the server configuration and restart the server directly from your browser or mobile phone. 5 | 6 | ## ACServerManager on Windows 7 | This is the installation guide for a Windows machine, to review the Linux installation guide go [here](https://github.com/jo3stevens/ACServerManager/blob/master/README_Linux.md). 8 | 9 | ## Updates 10 | 27/01/2017: 11 | * Update to UI layout 12 | * Added restart feature for AC & sTracker server 13 | 14 | 17/10/2015: 15 | * Bug fix when switching between two tracks with multiple track configs 16 | * Added Max Ballast and UDP Plugin fields to Advanced page 17 | * Added new setting for contentPath allowing server and content folders to be seperated (this happens when using a manager package from the kunos tool). If this setting it left empty it will assume the content folder is inside the server folder 18 | 19 | 22/08/2015: 20 | * Finished adding all the new settings from 1.2 including tyres and weather 21 | 22 | ## Prep 23 | NOTE: If you've been using the new windows server manager that came with 1.2 then you may not need this step as when you package the server files it does the same thing. 24 | 25 | The application needs some additional files added to the server/content/tracks and server/content/cars folders to be able to choose track configurations and car skins. 26 | 27 | Copy acServerManager.bat to your root aessettocorsa folder and run it to copy the required folders into server/content/*. You'll then need to copy the content folder to your server. 28 | 29 | For tracks it will copy the ui folder which will contain sub folders when there are multiple track configurations. It will also copy the contents of these directories which contains additional track information which is displayed when choosing a track. 30 | 31 | For cars it will copy the skins/* folder structure but not the files; this is just to be able to choose the skin when setting up the entry list. 32 | 33 | ## Install Node.js 34 | To install Node.js, follow the installation guide on its home page [here](https://nodejs.org). 35 | 36 | ## Install ACServerManager 37 | Create a directory called 'acmanager', go into that directory and click [here](https://github.com/jo3stevens/ACServerManager/archive/master.zip) to download the latest version. Extract 38 | the contents of the zip file into the directory. 39 | 40 | ## ACServerManager Configuration 41 | To configure your manager's settings, open the 'settings.js' file. You'll see a number of variables, point the 'serverPath' 42 | to your Assetto Corsa Server directory. You can configure your username, password & port settings for ACServerManager, also 43 | if you use sTracker, point the 'sTrackerPath' variable to your installation. 44 | 45 | * serverPath: The path to your server folder containing acServer.exe 46 | * sTrackerPath: The path to your stracker folder container stracker.exe (If you don't run stracker just leave this as an empty string ('') to disable it 47 | * username/password: Set these values if you want basic authentication on the application 48 | * port: The port that the application will listen on (Be sure to open up this port on firewalls) 49 | 50 | Note: I've currently set the Assetto Corsa Server installation to one directory up in 'server', change if necessary. 51 | 52 | ## Firewall 53 | If your machine has a firewall enabled (i.e) windows firewall, you'll need to open / allow the ACServerManager port defined in your settings.js file. 54 | 55 | ## Running ACServerManager 56 | You first need to make sure you have the necessary Node.js dependencies, run the following command in the command prompt in the same directory as the 'server.js' file: 57 | ``` 58 | npm install 59 | ``` 60 | To run ACServerManager, execute the 'start.bat' file. If you see no errors, ACServerManager should now be running. 61 | 62 | ## Using ACServerManager 63 | * Browse to the application using your servers IP and the chosen port (or any DNS configured) 64 | * Click the 'Start' button under Assetto Corsa Server section 65 | * If using sTracker wait until the AC server has started and then click 'Start' in the sTracker Server section 66 | 67 | The server should now be running. You'll be able to see any server output in the command window and it will be logged to a file in the 'ACServerManager/log' folder. 68 | 69 | You can change any of settings and it will be applied directly to server_cfg.ini and entry_list.ini on the server. After making a change just stop and start the server from the Server Status page to apply the changes to Assetto Corsa Server. 70 | 71 | Note, the server may fail to start in some cases if the Assetto Corsa Server cannot connect to the master server. Make sure you portforward / open 72 | the necessary ports for the server to function correctly. 73 | 74 | ## Screenshots 75 | ### Server Status 76 |  77 | 78 | ### Server Configuration 79 |  80 | 81 | ### Entry List 82 |  83 | 84 | ### Rules 85 |  86 | 87 | ### Advanced 88 |  89 | -------------------------------------------------------------------------------- /README_Linux.md: -------------------------------------------------------------------------------- 1 | # ACServerManager 2 | Web based server manager for Assetto Corsa directly manipulating the ini files on the server as an alternative to the windows app and having to copy files to your server. 3 | 4 | Start and stop the server, and stracker directly from the application, meaning you can make changes to the server configuration and restart the server directly from your browser or mobile phone. 5 | 6 | ## ACServerManager on Linux 7 | This is the installation guide for a Linux machine, to review the Windows installation guide go [here](https://github.com/jo3stevens/ACServerManager/blob/master/README.md). 8 | 9 | ## Updates 10 | 27/01/2017: 11 | * Update to UI layout 12 | * Added restart feature for AC & sTracker server 13 | 14 | 17/10/2015: 15 | * Bug fix when switching between two tracks with multiple track configs 16 | * Added Max Ballast and UDP Plugin fields to Advanced page 17 | * Added new setting for contentPath allowing server and content folders to be seperated (this happens when using a manager package from the kunos tool). If this setting it left empty it will assume the content folder is inside the server folder 18 | 19 | 22/08/2015: 20 | * Finished adding all the new settings from 1.2 including tyres and weather 21 | 22 | ## Details 23 | First you'll need to install Node.js on your machine. It's best to use an application 24 | like [NVM](https://github.com/creationix/nvm) to manage the installation of Node.js on Linux based machines. 25 | After installing Node.js, install [PM2](https://github.com/Unitech/pm2) when using this 26 | version of AC Server Manager, it's basically Node.js application management tool with tons of features 27 | for production use. PM2 will make sure your web application stays online and, auto restarts if it crashes. 28 | 29 | ## Install NVM 30 | To install NVM, follow the installation guide on its GitHub page [here](https://github.com/creationix/nvm). Please install NVM on the same account you run your Assetto Corsa Server. 31 | 32 | ## Install Node.js 33 | Using NVM, run the following command to install the latest version: 34 | ``` 35 | nvm install node 36 | ``` 37 | If you would like to install a specific version using NVM then run something like this: 38 | ``` 39 | nvm install 6.9.4 40 | ``` 41 | ## Install PM2 42 | To install PM2, follow the installation guide on its GitHub page [here](https://github.com/Unitech/pm2). Please install PM2 on the same account you run your Assetto Corsa Server. 43 | 44 | ## Install ACServerManager 45 | Create a directory called 'acmanager', cd into that directory and run this command to download the latest version: 46 | ``` 47 | wget https://github.com/jo3stevens/ACServerManager/archive/master.zip 48 | ``` 49 | Unzip the file & clean up, by running: 50 | ``` 51 | unzip master.zip; mv ACServerManager-master/* .; rm -R ACServerManager-master; rm master.zip 52 | ``` 53 | You'll need to first configure your manager's settings before you can run the application. 54 | ## ACServerManager Configuration 55 | To configure your manager's settings, open the 'settings.js' file. You'll see a number of variables, point the 'serverPath' 56 | to your Assetto Corsa Server directory. You can configure your username, password & port settings for ACServerManager, also 57 | if you use sTracker, point the 'sTrackerPath' variable to your installation. 58 | 59 | * serverPath: The path to your server folder containing acServer.exe 60 | * sTrackerPath: The path to your stracker folder container stracker.exe (If you don't run stracker just leave this as an empty string ('') to disable it 61 | * username/password: Set these values if you want basic authentication on the application 62 | * port: The port that the application will listen on (Be sure to open up this port on firewalls) 63 | 64 | Note: I've currently set the Assetto Corsa Server installation to one directory up in 'server', change if necessary. 65 | 66 | ## Firewall 67 | If your machine has a firewall enabled (i.e) iptables, you'll need to open / allow the ACServerManager port defined in your settings.js file. 68 | 69 | ## Running ACServerManager 70 | You first need to make sure you have the necessary Node.js dependencies, run: 71 | ``` 72 | npm install 73 | ``` 74 | To run ACServerManager using PM2 run the following command: 75 | ``` 76 | pm2 start server.js 77 | ``` 78 | To monitor applications running with PM2 run: 79 | ``` 80 | pm2 list 81 | ``` 82 | There many useful commands to manage applications using PM2, reference their GitHub page. 83 | 84 | ## Using ACServerManager 85 | * Browse to the application using your servers IP and the chosen port (or any DNS configured) 86 | * Click the 'Start' button under Assetto Corsa Server section 87 | * If using sTracker wait until the AC server has started and then click 'Start' in the sTracker Server section 88 | 89 | The server should now be running. You'll be able to see any server output in the command window and it will be logged to a file in the 'ACServerManager/log' folder. 90 | 91 | You can change any of settings and it will be applied directly to server_cfg.ini and entry_list.ini on the server. After making a change just stop and start the server from the Server Status page to apply the changes to Assetto Corsa Server. 92 | 93 | Note, the server may fail to start in some cases if the Assetto Corsa Server cannot connect to the master server. Make sure you portforward / open 94 | the necessary ports for the server to function correctly. 95 | 96 | ## Screenshots 97 | ### Server Status 98 |  99 | 100 | ### Server Configuration 101 |  102 | 103 | ### Entry List 104 |  105 | 106 | ### Rules 107 |  108 | 109 | ### Advanced 110 |  111 | -------------------------------------------------------------------------------- /acServerManager.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cls 3 | cd content/tracks 4 | FOR /D %%G in (*) DO ( 5 | echo Removing existing ui folder for %%G 6 | rmdir "%~dp0server\content\tracks\%%G\ui\" /s /q 7 | echo Creating ui folder for %%G 8 | mkdir "%~dp0server\content\tracks\%%G\ui" 9 | echo Copying ui folder for %%G 10 | xcopy /s /e /y %%G\ui "%~dp0server\content\tracks\%%G\ui" 11 | ) 12 | cd ../cars 13 | FOR /D %%G in (*) DO ( 14 | echo Removing skins folder for %%G 15 | rmdir "%~dp0server\content\cars\%%G\skins\" /s /q 16 | echo Creating skins folder for %%G 17 | mkdir "%~dp0server\content\cars\%%G\skins" 18 | echo Copying skins directory structure for %%G 19 | xcopy /t /e /y %%G\skins "%~dp0server\content\cars\%%G\skins" 20 | ) -------------------------------------------------------------------------------- /frontend/advanced.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |104 | [SERVER] 105 | NAME=AC #001 Abarth Festival ;name of the server 106 | CARS=abarth500_s1;ferrari_458 ;models of the cars allowed in the server - that's exactly the car folder's name (into the "content/cars" folder) 107 | TRACK=vallelunga ;track on the server - that's exactly the track folder's name (into the "content/tracks" folder) 108 | CONFIG_TRACK=extended_circuit ;subversion of the track, this parameter must contains the name of the track's subversion folder that you find in "content\tracks\TRACK\ui" 109 | SUN_ANGLE=-8 ;angle of the position of the sun 110 | MAX_CLIENTS=15 ;max number of clients (must be <= track's number of pits) 111 | RACE_OVER_TIME=20 ;time remaining in seconds to finish the race from the moment the first one passes on the finish line 112 | ALLOWED_TYRES_OUT=-1 ;penalty (-1 disabled) 113 | UDP_PORT=9600 ;UDP port number -> open this port on your server's firewall 114 | TCP_PORT=9600 ;TCP port number -> open this port on your server's firewall 115 | HTTP_PORT=8081 ;Lobby port number -> open this ports (both UDP and TCP) on your server's firewall 116 | PASSWORD=something ;server password 117 | LOOP_MODE=1 ;the server restarts from the first track, to disable this set it to 0 118 | REGISTER_TO_LOBBY=1 ;this must not be touched 119 | PICKUP_MODE_ENABLED=1 ;if 0 the server start in booking mode (do not use it). Warning: in pickup mode you have to list only a circuit under TRACK and you need to list a least one car in the entry_list 120 | SLEEP_TIME=1 ;this must not be touched 121 | VOTING_QUORUM=75 ;percentage of vote that is required for the SESSION vote to pass 122 | VOTE_DURATION=20 ;time in seconds 123 | BLACKLIST_MODE=0 ;ban player -> 0 = normal kick, rejoin possible, 1 = until server restart WARNING: 2 is not mor valid since kick_id and ban_id are two different commands. 124 | TC_ALLOWED=1 ;0 -> no car can use TC, 1 -> only car provided with TC can use it; 2-> any car can use TC 125 | ABS_ALLOWED=1 ;0 -> no car can use ABS, 1 -> only car provided with ABS can use it; 2-> any car can use ABS 126 | STABILITY_ALLOWED=0 ;Stability assist 0 -> OFF; 1 -> ON 127 | AUTOCLUTCH_ALLOWED=1 ;Autoclutch assist 0 -> OFF; 1 -> ON 128 | DAMAGE_MULTIPLIER=0 ;Damage from 0 (no damage) to 100 (full damage) 129 | FUEL_RATE=100 ;Fuel usage from 0 (no fuel usage) to XXX (100 is the realistic one) 130 | TYRE_WEAR_RATE=100 ;Tyre wear from 0 (no tyre wear) to XXX (100 is the realistic one) 131 | CLIENT_SEND_INTERVAL_HZ=15 ;refresh rate of packet sending by the server. 10Hz = ~100ms. Higher number = higher MP quality = higher bandwidth resources needed. Really high values can create connection issues 132 | TYRE_BLANKETS_ALLOWED=1 ;at the start of the session or after the pitstop the tyre will have the the optimal temperature 133 | ADMIN_PASSWORD=kunos ;it's the password needed to be recognized as server administrator: you can join the server using it to be recognized automatically. Write on the game's chat /help to see the command list 134 | QUALIFY_MAX_WAIT_PERC=120 ;this is the factor to calculate the remaining time in a qualify session after the session is ended: 120 means that 120% of the session fastest lap remains to end the current lap. 135 | WELCOME_MESSAGE= ;path of a file who contains the server welome message 136 | START_RULE=0 ;0 is car locked until start; 1 is teleport ; 2 is drivethru (if race has 3 or less laps then the Teleport penalty is enabled) 137 | NUM_THREADS=4 ;default is 2 138 | FORCE_VIRTUAL_MIRROR=1 ;1 virtual mirror will be enabled for every client, 0 for mirror as optional 139 | LEGAL_TYRES=V;E;HR;ST ;list of the tyre's shortnames that will be allowed in the server. 140 | MAX_BALLAST_KG=50 ;the max total of ballast that can be added through the admin command 141 | UDP_PLUGIN_LOCAL_PORT=0 ;see plugin example 142 | UDP_PLUGIN_ADDRESS= ;see plugin example 143 | AUTH_PLUGIN_ADDRESS= ;see plugin example 144 | RACE_GAS_PENALTY_DISABLED=0 ;0 any cut will be penalized with the gas cut message; 1 no penalization will be forced, but cuts will be saved in the race result json. 145 | RESULT_SCREEN_TIME=10 ;seconds of result screen between racing sessions. 146 | RACE_EXTRA_LAP=0 ;if it's a timed race, with 1 the race will not end when the time is over and the leader crosses the line, but the latter will be forced to drive another extra lap. 147 | 148 | ------ UPDATE ------ 149 | LOCKED_ENTRY_LIST=0 ;same as in booking mode, only players already included in the entry list can join the server (password not needed). 150 | RACE_PIT_WINDOW_START=25 ;Pit window open at lap/minute (depends on the race mode) 151 | RACE_PIT_WINDOW_END=35 ;Pit window closes at lap/minute (depends on the race mode) 152 | REVERSED_GRID_RACE_POSITIONS=8 ;0 = no additional race, 1toX = only those position will be reversed for the next race, -1 = all the position will be reversed (Retired players will be on the last positions) 153 | ------------------------ 154 | 155 | [DYNAMIC_TRACK] 156 | SESSION_START=90 ;% level of grip at session start 157 | RANDOMNESS=1 ;level of randomness added to the start grip 158 | LAP_GAIN=1 ;how many laps are needed to add 1% grip 159 | SESSION_TRANSFER=90 ;how much of the gained grip is to be added to the next session 100 -> all the gained grip. Example: difference between starting (90) and ending (96) grip in the session = 6%, with session_transfer = 50 then the next session is going to start with 93. 160 | 161 | [BOOK] ;booking session - add this section only if your server is in booking mode 162 | NAME=Booking 163 | TIME=5 ;session length in minutes 164 | 165 | [PRACTICE] 166 | NAME=Free Practice 167 | TIME=0 ;session length in minutes 168 | IS_OPEN=1 ;0 = no join, 1 = free join, 169 | 170 | [QUALIFY] 171 | NAME=Qualify 172 | TIME=15 ;session length in minutes 173 | IS_OPEN=1 ;0 = no join, 1 = free join, 174 | 175 | [RACE] 176 | NAME=Race 177 | LAPS=5 ;length of the lap races 178 | 179 | ------ UPDATE ------ 180 | TIME=0 ;length of the timed races, only if laps = 0 181 | ------------------------ 182 | 183 | WAIT_TIME=60 ;seconds before the start of the session 184 | IS_OPEN=2 ;0 = no join, 1 = free join, 2 = free join until 20 seconds to the green light 185 | 186 | [WEATHER_0] ;mandatory section for weather. 187 | GRAPHICS=3_clear ;it's exactly one of the folder name that you find into "content\weather" directory 188 | BASE_TEMPERATURE_AMBIENT=18 ;temperature of the Ambient 189 | VARIATION_AMBIENT=2 ;variation of the ambient's temperature. In this example final ambient's temperature can be 16 or 20 190 | BASE_TEMPERATURE_ROAD=6 ;Relative road temperature: this value will be added to the final ambient temp. In this example the road temperature will be between 22 (16 + 6) and 26 (20 + 6). It can be negative. 191 | VARIATION_ROAD=1 ;variation of the road's temperature. Like the ambient one. 192 | 193 | 194 |195 |