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,30 +27,32 @@
|
|||
},
|
||||
},
|
||||
'left4dead2': {
|
||||
'vanilla': {
|
||||
'port': 27015,
|
||||
'overlays': ['vanilla'],
|
||||
},
|
||||
'tick100': {
|
||||
'port': 27016,
|
||||
'overlays': ['vanilla', 'tickrate'],
|
||||
'arguments': ['-tickrate 100'],
|
||||
'config': [
|
||||
'exec server_original.cfg',
|
||||
'sv_minupdaterate 100',
|
||||
'sv_maxupdaterate 100',
|
||||
'sv_mincmdrate 100',
|
||||
'sv_maxcmdrate 100',
|
||||
],
|
||||
},
|
||||
'server3_comp1': {
|
||||
'port': 27017,
|
||||
'overlays': ['competitive_rework'],
|
||||
'arguments': ['-tickrate 60'],
|
||||
'config': [
|
||||
'exec server_original.cfg',
|
||||
'sm_forcematch zonemod',
|
||||
],
|
||||
'servers': {
|
||||
'vanilla': {
|
||||
'port': 27015,
|
||||
'overlays': ['vanilla'],
|
||||
},
|
||||
'tick100': {
|
||||
'port': 27016,
|
||||
'overlays': ['vanilla', 'tickrate'],
|
||||
'arguments': ['-tickrate 100'],
|
||||
'config': [
|
||||
'exec server_original.cfg',
|
||||
'sv_minupdaterate 100',
|
||||
'sv_maxupdaterate 100',
|
||||
'sv_mincmdrate 100',
|
||||
'sv_maxcmdrate 100',
|
||||
],
|
||||
},
|
||||
'server3_comp1': {
|
||||
'port': 27017,
|
||||
'overlays': ['competitive_rework'],
|
||||
'arguments': ['-tickrate 60'],
|
||||
'config': [
|
||||
'exec server_original.cfg',
|
||||
'sm_forcematch zonemod',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
'bind': {
|
||||
|
|
|
|||
|
|
@ -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