Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:goupilmtos:games
unvanquished
unvanquished-service.sh
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File unvanquished-service.sh of Package unvanquished
#!/bin/sh # Unvanquished Server as a Service # By harland.coles@energy-x.com # Copyright 2015 under http://opensource.org/licenses/ISC # thisName=$(basename $0) usage(){ echo "Usage: ${thisName} [--help] [ quit | cmd <command(s)> ] | [con [<commands>]]" echo " Wrapper to run Unvanquished daemonded as a service," echo " with console pipe interaction." echo "" echo " cmd <commands>: Pipes commands into running instance." echo " con: Start in console mode (curses)." echo " from commandline only, not systemd" } case "$1" in "--help"|"-h") usage exit 0 ;; esac logThis(){ echo -e "#$(date +%Y%m%d-%H%M%S)] $1" >> "$2" } # NOTES: #=============== # One path where systemd starts, and stops # another, where pipe or IPC command stops # Also can start,stop without systemd Service=unvanquished-server config=/etc/sysconfig/${Service} if [ -s ${config} ]; then . ${config} else echo "#!# Error: Config not found: ${config}" exit 1 fi srv_log="$HOMEPATH/unv_srv.log" fifo_pipe="$HOMEPATH/unv_in.pipe" flag_console=0 console_mode_sentinel="$HOMEPATH/mode_console" [ -e "$console_mode_sentinel" ] && flag_console=1 IPC_send(){ if [ -e "$HOMEPATH/lock-server" ]; then ${LIBPATH}/daemonded -libpath $LIBPATH -pakpath $PAKPATH -homepath $HOMEPATH "$@" >> ${srv_log} 2>&1 & fi } pipe_cmd(){ if [ $flag_console == 1 ]; then IPC_send "$@" else [ -p "${fifo_pipe}" ] && echo "$@" > ${fifo_pipe} fi } case "$1" in "stop"|"quit"|"exit") pipe_cmd "quit" sleep 5s # systemd stop: wait for cleanup by script exit 0 ;; "cmd"|"command"|"send") shift pipe_cmd "$@" exit 0 ;; "con"|"console"|"curses") shift flag_console=1 ;; esac # SERVICE START #================== service_pid=0 if [ -e "$HOMEPATH/lock-server" ]; then echo "#!# Service all ready running. Use $thisName cmd <commands>." exit 1 fi mk_fifo(){ [ ! -e "${1}" ] && mkfifo -m660 "${1}" >> ${srv_log} 2>&1 } rm_fifo(){ [ -p "${1}" ] && rm "${1}" >> ${srv_log} 2>&1 } logThis "-*-*- $Service Start -*-*-" "${srv_log}" if [ $flag_console == 1 ]; then logThis "In console mode: Arguments: $@" "${srv_log}" touch "$console_mode_sentinel" >> ${srv_log} 2>&1 # file sentinel ${LIBPATH}/daemonded -libpath $LIBPATH -pakpath $PAKPATH -homepath $HOMEPATH -curses "$@" [ -e "$console_mode_sentinel" ] && rm "$console_mode_sentinel" >> ${srv_log} 2>&1 else # Need a second named pipe, for proper handling of 'tail -f' tmp_fifo="$HOMEPATH/._${Service}.fifo" mk_fifo "${fifo_pipe}" mk_fifo "${tmp_fifo}" # Open and hold tmp fifo $(3>$tmp_fifo) & # Start daemon engine ${LIBPATH}/daemonded -libpath $LIBPATH -pakpath $PAKPATH -homepath $HOMEPATH "$@" < ${tmp_fifo} >> ${srv_log} 2>&1 & service_pid=$! # Keep fifo pipe open for direct writes, no buffering - tail dies on daemonded exit # Script execution spins here tail --pid ${service_pid} -f "${fifo_pipe}" > "${tmp_fifo}" 2>> ${srv_log} rm_fifo "${tmp_fifo}" rm_fifo "${fifo_pipe}" fi #flag_console logThis "-*-*- $Service Complete -*-*-" "${srv_log}" exit 0 #eof
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor