From 56fc53b1e6b135696823626bb4e2dcfb61fa7948 Mon Sep 17 00:00:00 2001 From: Moviuro Date: Sun, 7 Jun 2015 14:05:18 +0200 Subject: [PATCH 1/4] openra: introduce a FreeBSD rc.d script Requires screen --- packaging/freebsd/openra | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 packaging/freebsd/openra diff --git a/packaging/freebsd/openra b/packaging/freebsd/openra new file mode 100755 index 0000000000..9d50f9e338 --- /dev/null +++ b/packaging/freebsd/openra @@ -0,0 +1,94 @@ +#!/bin/sh +# +# PROVIDE: openra +# REQUIRE: LOGIN DAEMON NETWORKING mountcritlocal +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local to enable the openra server: +# +# openra_enable="YES" +# openra_user="" +# openra_chdir="" +# openra_path="" +# openra_ExtraFlagslags="" +# + +. /etc/rc.subr + +name=openra +rcvar=openra_enable + +load_rc_config ${name} + +command=/usr/local/bin/screen +pidfile=/var/run/openra.pid + +start_cmd="${name}_start" +stop_cmd="${name}_stop" +status_cmd="${name}_status" + +: ${openra_enable="NO"} +: ${openra_session="openra-session"} +: ${openra_user="openra"} +: ${openra_chdir="/usr/home/${openra_user}"} +: ${openra_path="/usr/home/${openra_user}/OpenRA/OpenRA.Game.exe"} + +: ${openra_ServerName="Dedicated_Server"} +: ${openra_Mod="ra"} +: ${openra_ListenPort="1234"} +: ${openra_ExternalPort="1234"} +: ${openra_AdvertiseOnline="False"} + +openra_Dedicated="True" +openra_DedicatedLoop="True" + +: ${openra_runflags="Game.Mod=${openra_Mod} \ + Server.Dedicated=${openra_Dedicated} \ + Server.DedicatedLoop=${openra_DedicatedLoop} \ + Server.Name=${openra_ServerName} \ + Server.ListenPort=${openra_ListenPort} \ + Server.ExternalPort=${openra_ExternalPort} \ + Server.AdvertiseOnline=${openra_AdvertiseOnline}"} + +: ${openra_args="/usr/local/bin/mono --debug \ + ${openra_path} ${openra_runflags}"} + +openra_start() { + unset "${rc_arg}_cmd" + openra_flags="-d -m -S ${openra_session} ${openra_args}" + if openra_running; then + echo "openra already running?" + else + HOME=${openra_chdir} su -m openra -c "${command} ${openra_flags}" + fi +} + +openra_stop() { + local cmd + cmd="${command} -p 0 -S ${openra_session} -X eval 'stuff stop\003'" + if openra_running; then + echo "Stopping openra." + su -m ${openra_user} -c "${cmd}" + fi +} + +openra_status() { + if openra_running; then + echo "openra is running." + else + echo "openra is not running." + fi +} + +openra_running() { + local check ses + ses="${openra_session}" + check=`su -m ${openra_user} -c "${command} -list | grep ${ses}"` + if [ "$check" ]; then + return 0 + else + return 1 + fi +} + +run_rc_command "$1" From 9224030376c03b4910160a984e618f02a1aa65bd Mon Sep 17 00:00:00 2001 From: Moviuro Date: Sun, 7 Jun 2015 14:20:13 +0200 Subject: [PATCH 2/4] packaging/freebsd/openra: update comments, fix typos --- packaging/freebsd/openra | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packaging/freebsd/openra b/packaging/freebsd/openra index 9d50f9e338..53f718f6d2 100755 --- a/packaging/freebsd/openra +++ b/packaging/freebsd/openra @@ -7,10 +7,17 @@ # Add the following lines to /etc/rc.conf.local to enable the openra server: # # openra_enable="YES" -# openra_user="" -# openra_chdir="" +# openra_user="" (default: openra) +# openra_chdir="" +# (default: /usr/home/${openra_user}) # openra_path="" -# openra_ExtraFlagslags="" +# (default: ${openra_chdir}/OpenRA/OpenRA.Game.exe) +# openra_ServerName="" (no spaces allowed!) +# openra_Mod="" (default: ra) +# openra_ListenPort="" (default: 1234) +# openra_ExternalPort="" (default: 1234) +# openra_AdvertiseOnline="" (default: False) +# openra_extraflags="" # . /etc/rc.subr @@ -31,7 +38,7 @@ status_cmd="${name}_status" : ${openra_session="openra-session"} : ${openra_user="openra"} : ${openra_chdir="/usr/home/${openra_user}"} -: ${openra_path="/usr/home/${openra_user}/OpenRA/OpenRA.Game.exe"} +: ${openra_path="${openra_chdir}/OpenRA/OpenRA.Game.exe"} : ${openra_ServerName="Dedicated_Server"} : ${openra_Mod="ra"} @@ -48,7 +55,8 @@ openra_DedicatedLoop="True" Server.Name=${openra_ServerName} \ Server.ListenPort=${openra_ListenPort} \ Server.ExternalPort=${openra_ExternalPort} \ - Server.AdvertiseOnline=${openra_AdvertiseOnline}"} + Server.AdvertiseOnline=${openra_AdvertiseOnline}\ + ${openra_extraflags}"} : ${openra_args="/usr/local/bin/mono --debug \ ${openra_path} ${openra_runflags}"} From 1678a3a2744bad9a484829e82e672c810ebbabd0 Mon Sep 17 00:00:00 2001 From: Moviuro Date: Sun, 7 Jun 2015 14:36:08 +0200 Subject: [PATCH 3/4] packaging/freebsd/openra: set AdvertiseOnline to True by default --- packaging/freebsd/openra | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/freebsd/openra b/packaging/freebsd/openra index 53f718f6d2..1763a49d23 100755 --- a/packaging/freebsd/openra +++ b/packaging/freebsd/openra @@ -16,7 +16,7 @@ # openra_Mod="" (default: ra) # openra_ListenPort="" (default: 1234) # openra_ExternalPort="" (default: 1234) -# openra_AdvertiseOnline="" (default: False) +# openra_AdvertiseOnline="" (default: True) # openra_extraflags="" # @@ -44,7 +44,7 @@ status_cmd="${name}_status" : ${openra_Mod="ra"} : ${openra_ListenPort="1234"} : ${openra_ExternalPort="1234"} -: ${openra_AdvertiseOnline="False"} +: ${openra_AdvertiseOnline="True"} openra_Dedicated="True" openra_DedicatedLoop="True" From 7375ad11db7503bdccc5d7868365f9a885699b3d Mon Sep 17 00:00:00 2001 From: Moviuro Date: Sun, 7 Jun 2015 14:54:23 +0200 Subject: [PATCH 4/4] packaging/freebsd/openra: fix word splitting Allow spaces in ServerName --- packaging/freebsd/openra | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/freebsd/openra b/packaging/freebsd/openra index 1763a49d23..e6cd99bd8e 100755 --- a/packaging/freebsd/openra +++ b/packaging/freebsd/openra @@ -12,7 +12,7 @@ # (default: /usr/home/${openra_user}) # openra_path="" # (default: ${openra_chdir}/OpenRA/OpenRA.Game.exe) -# openra_ServerName="" (no spaces allowed!) +# openra_ServerName="" (default: "Dedicated Server") # openra_Mod="" (default: ra) # openra_ListenPort="" (default: 1234) # openra_ExternalPort="" (default: 1234) @@ -40,7 +40,7 @@ status_cmd="${name}_status" : ${openra_chdir="/usr/home/${openra_user}"} : ${openra_path="${openra_chdir}/OpenRA/OpenRA.Game.exe"} -: ${openra_ServerName="Dedicated_Server"} +: ${openra_ServerName="Dedicated Server"} : ${openra_Mod="ra"} : ${openra_ListenPort="1234"} : ${openra_ExternalPort="1234"} @@ -52,7 +52,7 @@ openra_DedicatedLoop="True" : ${openra_runflags="Game.Mod=${openra_Mod} \ Server.Dedicated=${openra_Dedicated} \ Server.DedicatedLoop=${openra_DedicatedLoop} \ - Server.Name=${openra_ServerName} \ + Server.Name=\"${openra_ServerName}\" \ Server.ListenPort=${openra_ListenPort} \ Server.ExternalPort=${openra_ExternalPort} \ Server.AdvertiseOnline=${openra_AdvertiseOnline}\