changeset 284:a46eb2a77df7

minecraft forwarding
author drewp@bigasterisk.com
date Mon, 15 Apr 2024 02:28:52 -0700
parents 0befc8696a07
children ddf4a0faf97f
files system.py templates/webforward.service.j2
diffstat 2 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/system.py	Mon Apr 15 02:28:05 2024 -0700
+++ b/system.py	Mon Apr 15 02:28:52 2024 -0700
@@ -45,9 +45,15 @@
 
 def web_forward():
     for port in [80, 443]:
-        files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/web_forward_{port}.service", pom_serv_host='bang', port=port)
+        files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/web_forward_{port}.service", serv_host='bang', port=port, name='web', fam='tcp')
         systemd.service(service=f'web_forward_{port}', enabled=True, restarted=True)
 
+def minecraft_forward():
+    port = 25765
+    for fam in ['tcp', 'udp']:
+        files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/mc_smp_{fam}_forward_{port}.service", serv_host='ditto', port=port, name='mc_smp', fam=fam)
+        systemd.service(service=f'mc_smp_{fam}_forward_{port}', enabled=True, restarted=True)
+
 server.hostname(hostname=host.name)
 timezone()
 fstab()
@@ -70,6 +76,7 @@
 if host.name == 'prime':
     smaller_journals()
     web_forward()
+    minecraft_forward()
 
 # for space, consider:
 # k3s crictl rmi --prune
--- a/templates/webforward.service.j2	Mon Apr 15 02:28:05 2024 -0700
+++ b/templates/webforward.service.j2	Mon Apr 15 02:28:52 2024 -0700
@@ -1,7 +1,7 @@
 # written by pyinfra
 
 [Unit]
-Description=web forward for port {{ port }}
+Description={{ fam }} forward for port {{ port }}
 Requires=network.target
 Wants=nss-lookup.target
 Before=nss-lookup.target
@@ -10,7 +10,7 @@
 [Service]
 Type=simple
 
-ExecStart=/usr/bin/socat tcp-listen:{{ port }},fork,reuseaddr tcp:{{pom_serv_host}}:{{ port }}
+ExecStart=/usr/bin/socat {{ 'tcp' if fam=='tcp' else 'udp4' }}-listen:{{ port }},fork,reuseaddr {{ 'tcp' if fam=='tcp' else 'udp' }}:{{serv_host}}:{{ port }}
 
 [Install]
 WantedBy=multi-user.target