l4d2 dynamic overlays
This commit is contained in:
		
							parent
							
								
									a59d33ec03
								
							
						
					
					
						commit
						9572ac822f
					
				
					 4 changed files with 50 additions and 31 deletions
				
			
		|  | @ -9,6 +9,9 @@ directories = { | |||
|     '/opt/l4d2': { | ||||
|         'owner': 'steam', 'group': 'steam', | ||||
|     }, | ||||
|     '/opt/l4d2/steam': { | ||||
|         'owner': 'steam', 'group': 'steam', | ||||
|     }, | ||||
|     '/opt/l4d2/configs': { | ||||
|         'owner': 'steam', 'group': 'steam', | ||||
|     }, | ||||
|  | @ -31,7 +34,7 @@ files = { | |||
|         'mode': '755', | ||||
|         'triggers': { | ||||
|             f'svc_systemd:left4dead2-{server_name}.service:restart' | ||||
|                 for server_name in node.metadata.get('left4dead2').keys() | ||||
|                 for server_name in node.metadata.get('left4dead2/servers').keys() | ||||
|         }, | ||||
|     }, | ||||
|     '/opt/l4d2/scripts/helpers': { | ||||
|  | @ -43,7 +46,7 @@ files = { | |||
|     }, | ||||
| } | ||||
| 
 | ||||
| for overlay in ['vanilla', 'tickrate', 'competitive_rework', 'l4d2center_maps']: | ||||
| for overlay in node.metadata.get('left4dead2/overlays'): | ||||
|     files[f'/opt/l4d2/scripts/overlays/{overlay}'] = { | ||||
|         'source': f'scripts/overlays/{overlay}', | ||||
|         'mode': '755', | ||||
|  | @ -63,7 +66,7 @@ svc_systemd = { | |||
|     }, | ||||
| } | ||||
| 
 | ||||
| for server_name, config in node.metadata.get('left4dead2').items(): | ||||
| for server_name, config in node.metadata.get('left4dead2/servers').items(): | ||||
|     files[f'/opt/l4d2/configs/{server_name}.cfg'] = { | ||||
|         'source': 'server.cfg', | ||||
|         'content_type': 'mako', | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| from re import match | ||||
| from os import path, listdir | ||||
| 
 | ||||
| 
 | ||||
| defaults = { | ||||
|  | @ -10,7 +11,18 @@ defaults = { | |||
|             'p7zip-full': {}, # l4d2center_maps_sync.sh | ||||
|         }, | ||||
|     }, | ||||
|     'left4dead2': {}, | ||||
|     'left4dead2': { | ||||
|         'overlays': set(listdir(path.join(repo.path, 'bundles/left4dead2/files/scripts/overlays'))), | ||||
|         'servers': { | ||||
|             # 'port': 27017, | ||||
|             # 'overlays': ['competitive_rework'], | ||||
|             # 'arguments': ['-tickrate 60'], | ||||
|             # 'config': [ | ||||
|             #     'exec server_original.cfg', | ||||
|             #     'sm_forcematch zonemod', | ||||
|             # ], | ||||
|         }, | ||||
|     }, | ||||
|     'nftables': { | ||||
|         'input': { | ||||
|             'udp dport { 27005, 27020 } accept', | ||||
|  | @ -45,9 +57,11 @@ defaults = { | |||
| def server_units(metadata): | ||||
|     units = {} | ||||
| 
 | ||||
|     for name, config in metadata.get('left4dead2').items(): | ||||
|     for name, config in metadata.get('left4dead2/servers').items(): | ||||
|         assert match(r'^[A-z0-9-_-]+$', name) | ||||
|         assert 27000 <= config["port"] <= 27100 | ||||
|         for overlay in config.get('overlays', []): | ||||
|             assert overlay in metadata.get('left4dead2/overlays'), f"unknown overlay {overlay}, known: {metadata.get('left4dead2/overlays')}" | ||||
| 
 | ||||
|         cmd = f'/opt/l4d2/start -n {name} -p {config["port"]}' | ||||
| 
 | ||||
|  | @ -95,7 +109,7 @@ def server_units(metadata): | |||
|     'nftables/input', | ||||
| ) | ||||
| def nftables(metadata): | ||||
|     ports = sorted(str(config["port"]) for config in metadata.get('left4dead2', {}).values()) | ||||
|     ports = sorted(str(config["port"]) for config in metadata.get('left4dead2/servers').values()) | ||||
| 
 | ||||
|     return { | ||||
|         'nftables': { | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ | |||
|             }, | ||||
|         }, | ||||
|         'left4dead2': { | ||||
|             'servers': { | ||||
|                 'vanilla': { | ||||
|                     'port': 27015, | ||||
|                     'overlays': ['vanilla'], | ||||
|  | @ -53,6 +54,7 @@ | |||
|                     ], | ||||
|                 }, | ||||
|             }, | ||||
|         }, | ||||
|         'bind': { | ||||
|             'master_node': 'htz.mails', | ||||
|             'hostname': 'secondary.resolver.name', | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| bundlewrap ~=4.0, >=4.17.2 | ||||
| bundlewrap ~=4.0, >=4.23.1 | ||||
| pycryptodome | ||||
| PyNaCl | ||||
| PyYAML | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue