l4d start script refactor
This commit is contained in:
		
							parent
							
								
									776654970e
								
							
						
					
					
						commit
						e6312a2318
					
				
					 5 changed files with 111 additions and 35 deletions
				
			
		|  | @ -90,17 +90,31 @@ test -f /opt/l4d2/steam-workshop-download || \ | ||||||
|     steam wget -4 https://git.sublimity.de/cronekorkn/steam-workshop-downloader/raw/branch/master/steam-workshop-download -P /opt/l4d2 |     steam wget -4 https://git.sublimity.de/cronekorkn/steam-workshop-downloader/raw/branch/master/steam-workshop-download -P /opt/l4d2 | ||||||
| steam chmod +x /opt/l4d2/steam-workshop-download | steam chmod +x /opt/l4d2/steam-workshop-download | ||||||
| 
 | 
 | ||||||
| # -- OVERLAY PVE -- # | # -- OVERLAY VANILLA -- # | ||||||
| 
 | 
 | ||||||
| steam mkdir -p /opt/l4d2/overlays/pve | steam mkdir -p /opt/l4d2/overlays/vanilla | ||||||
| 
 | 
 | ||||||
| # server config | # server config | ||||||
| steam mkdir -p /opt/l4d2/overlays/pve/left4dead2/cfg | steam mkdir -p /opt/l4d2/overlays/vanilla/left4dead2/cfg | ||||||
| steam cat <<'EOF' > /opt/l4d2/overlays/pve/left4dead2/cfg/server.cfg | steam cat <<'EOF' > /opt/l4d2/overlays/vanilla/left4dead2/cfg/server.cfg | ||||||
|  | motd_enabled 0 | ||||||
|  | 
 | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | # admin system | ||||||
|  | install_addon vanilla Ions_Vocalizer | ||||||
|  | install_admin_system vanilla | ||||||
|  | 
 | ||||||
|  | # -- OVERLAY TICKRATE -- # | ||||||
|  | 
 | ||||||
|  | steam mkdir -p /opt/l4d2/overlays/tickrate | ||||||
|  | 
 | ||||||
|  | # server config | ||||||
|  | steam mkdir -p /opt/l4d2/overlays/tickrate/left4dead2/cfg | ||||||
|  | steam cat <<'EOF' > /opt/l4d2/overlays/tickrate/left4dead2/cfg/server.cfg | ||||||
| motd_enabled 0 | motd_enabled 0 | ||||||
| 
 | 
 | ||||||
| sv_steamgroup "38347879" | sv_steamgroup "38347879" | ||||||
| #sv_steamgroup_exclusive 0 |  | ||||||
| 
 | 
 | ||||||
| # https://github.com/SirPlease/L4D2-Competitive-Rework/blob/7ecc3a32a5e2180d6607a40119ff2f3c072502a9/cfg/server.cfg#L58-L69 | # https://github.com/SirPlease/L4D2-Competitive-Rework/blob/7ecc3a32a5e2180d6607a40119ff2f3c072502a9/cfg/server.cfg#L58-L69 | ||||||
| sv_minrate 100000 | sv_minrate 100000 | ||||||
|  | @ -113,15 +127,10 @@ nb_update_frequency 0.014 | ||||||
| net_splitpacket_maxrate 50000 | net_splitpacket_maxrate 50000 | ||||||
| net_maxcleartime 0.0001 | net_maxcleartime 0.0001 | ||||||
| fps_max 0 | fps_max 0 | ||||||
| 
 |  | ||||||
| #sv_cheats 1 |  | ||||||
| #sb_all_bot_game 1 |  | ||||||
| EOF | EOF | ||||||
| 
 | 
 | ||||||
| # admin system | # admin system | ||||||
| install_addon pve Ions_Vocalizer | install_tickrate_enabler tickrate | ||||||
| install_admin_system pve |  | ||||||
| install_tickrate_enabler pve |  | ||||||
| 
 | 
 | ||||||
| # -- OVERLAY COMPETITIVE REWORK WIP -- # | # -- OVERLAY COMPETITIVE REWORK WIP -- # | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,10 +2,41 @@ | ||||||
| 
 | 
 | ||||||
| set -xeuo pipefail | set -xeuo pipefail | ||||||
| 
 | 
 | ||||||
| name=$1 | name="" | ||||||
| overlay=$2 | port="" | ||||||
| port=$3 | configfile="" | ||||||
| params=$4 | overlays="" | ||||||
|  | arguments="" | ||||||
|  | 
 | ||||||
|  | while [[ $# -gt 0 ]]; do | ||||||
|  |   case "$1" in | ||||||
|  |     -n|--name) | ||||||
|  |       name="$2"; shift 2 | ||||||
|  |       ;; | ||||||
|  |     -p|--port) | ||||||
|  |       port="$2"; shift 2 | ||||||
|  |       ;; | ||||||
|  |     -c|--config) | ||||||
|  |       configfile="$2"; shift 2 | ||||||
|  |       ;; | ||||||
|  |     -o|--overlay) | ||||||
|  |       overlays="/opt/l4d2/overlays/$2:$overlays"; shift 2 | ||||||
|  |       ;; | ||||||
|  |     --) | ||||||
|  |       shift | ||||||
|  |       arguments+="$@" | ||||||
|  |       break | ||||||
|  |       ;; | ||||||
|  |     *) | ||||||
|  |       echo "ERROR: unknown argument $1"; exit 1 | ||||||
|  |       ;; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | [[ -n "${name}" ]] || { echo "ERROR: -n/--name missing"; exit 1; } | ||||||
|  | [[ -n "${port}" ]] || { echo "ERROR: -p/--port missing"; exit 1; } | ||||||
|  | 
 | ||||||
|  | # -- HELPER FUNCTIONS -- # | ||||||
| 
 | 
 | ||||||
| function steam() { | function steam() { | ||||||
|     # für systemd, damit es den prozess beenden kann |     # für systemd, damit es den prozess beenden kann | ||||||
|  | @ -13,23 +44,33 @@ function steam() { | ||||||
|     export HOME=/opt/l4d2/steam |     export HOME=/opt/l4d2/steam | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | # -- TIDY UP -- # | ||||||
|  | 
 | ||||||
| mountpoint -q "/opt/l4d2/servers/$name/merged" && umount "/opt/l4d2/servers/$name/merged" | mountpoint -q "/opt/l4d2/servers/$name/merged" && umount "/opt/l4d2/servers/$name/merged" | ||||||
| steam rm -rf "/opt/l4d2/servers/$name" | steam rm -rf "/opt/l4d2/servers/$name" | ||||||
| 
 | 
 | ||||||
|  | # -- CREATE DIRECTORIES -- # | ||||||
|  | 
 | ||||||
| steam mkdir -p \ | steam mkdir -p \ | ||||||
|   "/opt/l4d2/servers/$name" \ |   "/opt/l4d2/servers/$name" \ | ||||||
|   "/opt/l4d2/servers/$name/work" \ |   "/opt/l4d2/servers/$name/work" \ | ||||||
|   "/opt/l4d2/servers/$name/upper" \ |   "/opt/l4d2/servers/$name/upper" \ | ||||||
|   "/opt/l4d2/servers/$name/merged" |   "/opt/l4d2/servers/$name/merged" | ||||||
| 
 | 
 | ||||||
|  | # -- MOUNT OVERLAYFS -- # | ||||||
|  | 
 | ||||||
| mount -t overlay overlay \ | mount -t overlay overlay \ | ||||||
|   -o "lowerdir=/opt/l4d2/overlays/$overlay:/opt/l4d2/installation,upperdir=/opt/l4d2/servers/$name/upper,workdir=/opt/l4d2/servers/$name/work" \ |   -o "lowerdir=$overlays/opt/l4d2/installation,upperdir=/opt/l4d2/servers/$name/upper,workdir=/opt/l4d2/servers/$name/work" \ | ||||||
|   "/opt/l4d2/servers/$name/merged" |   "/opt/l4d2/servers/$name/merged" | ||||||
| 
 | 
 | ||||||
| # TODO: pass config file paht instead of expecting it here | # -- REPLACE SERVER.CFG -- # | ||||||
| steam mv "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server_original.cfg" |  | ||||||
| steam touch "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" |  | ||||||
| echo "exec server_original.cfg" > "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" |  | ||||||
| cat "/opt/l4d2/configs/$name.cfg" >> "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" |  | ||||||
| 
 | 
 | ||||||
| steam "/opt/l4d2/servers/$name/merged/srcds_run" -norestart -pidfile "/opt/l4d2/servers/$name/pid" -game left4dead2 -ip 0.0.0.0 -port "$port" +hostname "Crone_$name" $params +map c1m1_hotel | if [[ -n "$configfile" ]]; then | ||||||
|  |   cp "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server_original.cfg" | ||||||
|  |   cp "$configfile" "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" | ||||||
|  |   chown steam:steam "/opt/l4d2/servers/$name/merged/left4dead2/cfg/server.cfg" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # -- RUN L4D2 -- # | ||||||
|  | 
 | ||||||
|  | steam "/opt/l4d2/servers/$name/merged/srcds_run" -norestart -pidfile "/opt/l4d2/servers/$name/pid" -game left4dead2 -ip 0.0.0.0 -port "$port" +hostname "Crone_$name" +map c1m1_hotel $arguments | ||||||
							
								
								
									
										19
									
								
								bundles/left4dead2/files/stop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								bundles/left4dead2/files/stop
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -xeuo pipefail | ||||||
|  | 
 | ||||||
|  | name="" | ||||||
|  | 
 | ||||||
|  | while [[ $# -gt 0 ]]; do | ||||||
|  |   case "$1" in | ||||||
|  |     -n|--name) | ||||||
|  |       name="$2"; shift 2 | ||||||
|  |       ;; | ||||||
|  |     *) | ||||||
|  |       echo "ERROR: unknown argument $1"; exit 1 | ||||||
|  |       ;; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | mountpoint -q "/opt/l4d2/servers/$name/merged" && umount "/opt/l4d2/servers/$name/merged" | ||||||
|  | steam rm -rf "/opt/l4d2/servers/$name" | ||||||
|  | @ -46,12 +46,18 @@ def server_units(metadata): | ||||||
| 
 | 
 | ||||||
|     for name, config in metadata.get('left4dead2').items(): |     for name, config in metadata.get('left4dead2').items(): | ||||||
|         assert match(r'^[A-z0-9-_-]+$', name) |         assert match(r'^[A-z0-9-_-]+$', name) | ||||||
|         assert config["overlay"] in {'pve', 'competitive_rework'} |  | ||||||
|         assert 27000 <= config["port"] <= 27100 |         assert 27000 <= config["port"] <= 27100 | ||||||
| 
 | 
 | ||||||
|         params = config.get("params", "") |         cmd = f'/opt/l4d2/start -n {name} -p {config["port"]}' | ||||||
|         if config.get("tickrate"): | 
 | ||||||
|             params = f"-tickrate {config['tickrate']} " + params |         if 'config' in config: | ||||||
|  |             cmd += f' -c /opt/l4d2/configs/{name}.cfg' | ||||||
|  | 
 | ||||||
|  |         for overlay in config.get('overlays', []): | ||||||
|  |             cmd += f' -o {overlay}' | ||||||
|  | 
 | ||||||
|  |         if 'arguments' in config: | ||||||
|  |             cmd += ' -- ' + ' '.join(config['arguments']) | ||||||
| 
 | 
 | ||||||
|         units[f'left4dead2-{name}.service'] = { |         units[f'left4dead2-{name}.service'] = { | ||||||
|             'Unit': { |             'Unit': { | ||||||
|  | @ -61,7 +67,8 @@ def server_units(metadata): | ||||||
|             }, |             }, | ||||||
|             'Service': { |             'Service': { | ||||||
|                 'Type': 'simple', |                 'Type': 'simple', | ||||||
|                 'ExecStart': f'/opt/l4d2/start "{name}" "{config["overlay"]}" "{config["port"]}" "{params}"', |                 'ExecStart': cmd, | ||||||
|  |                 'ExecStop': f'/opt/l4d2/stop -n {name}', | ||||||
|                 'Restart': 'on-failure', |                 'Restart': 'on-failure', | ||||||
|                 'Nice': -10, |                 'Nice': -10, | ||||||
|                 'CPUWeight': 200, |                 'CPUWeight': 200, | ||||||
|  |  | ||||||
|  | @ -27,21 +27,21 @@ | ||||||
|             }, |             }, | ||||||
|         }, |         }, | ||||||
|         'left4dead2': { |         'left4dead2': { | ||||||
|             'server1': { |             'vanilla': { | ||||||
|                 'overlay': 'pve', |  | ||||||
|                 'port': 27015, |                 'port': 27015, | ||||||
|                 'tickrate': '100', |                 'overlays': ['vanilla'], | ||||||
|             }, |             }, | ||||||
|             'server2': { |             'tick100': { | ||||||
|                 'overlay': 'pve', |  | ||||||
|                 'port': 27016, |                 'port': 27016, | ||||||
|                 'tickrate': '100', |                 'overlays': ['vanilla', 'tickrate'], | ||||||
|  |                 'arguments': ['-tickrate 100'], | ||||||
|             }, |             }, | ||||||
|             'server3_comp1': { |             'server3_comp1': { | ||||||
|                 'overlay': 'competitive_rework', |  | ||||||
|                 'port': 27017, |                 'port': 27017, | ||||||
|                 'tickrate': '100', |                 'overlays': ['competitive_rework'], | ||||||
|  |                 'arguments': ['-tickrate 60'], | ||||||
|                 'config': [ |                 'config': [ | ||||||
|  |                     'exec server_original.cfg', | ||||||
|                     'sm_forcematch zonemod', |                     'sm_forcematch zonemod', | ||||||
|                     'hostname server3_comp1_test', |                     'hostname server3_comp1_test', | ||||||
|                     'motd_enabled 0', |                     'motd_enabled 0', | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue