| 1 | #!/bin/bash
 | 
|---|
| 2 | # Version 2
 | 
|---|
| 3 | 
 | 
|---|
| 4 | # Lists available 7dtd instances.
 | 
|---|
| 5 | # Returns:
 | 
|---|
| 6 | #  0
 | 
|---|
| 7 | 
 | 
|---|
| 8 | . /usr/local/bin/7dtd-common.sh
 | 
|---|
| 9 | checkRootLoadConf
 | 
|---|
| 10 | 
 | 
|---|
| 11 | listInstances() {
 | 
|---|
| 12 |         printf "%-*s | %-*s | %-*s | %-*s\n" 20 "Instance name" 8 "Running" 7 "Players" 5 "Port"
 | 
|---|
| 13 |         printf -v line "%*s-+-%*s-+-%*s-+-%*s\n" 20 " " 8 " " 7 " " 5 " "
 | 
|---|
| 14 |         echo ${line// /-}
 | 
|---|
| 15 |         for I in $SDTD_BASE/instances/*; do
 | 
|---|
| 16 |                 ins=`basename $I`
 | 
|---|
| 17 |                 run=$(isRunning $ins)
 | 
|---|
| 18 |                 if [ $run -eq 1 ]; then
 | 
|---|
| 19 |                         run="yes"
 | 
|---|
| 20 |                         tel=$(telnetCommand $ins lp)
 | 
|---|
| 21 |                         cur=`echo $tel | sed "s/\r/\n/g" | sed "s/^ //g" | grep "Total of " | cut -d\  -f 3`
 | 
|---|
| 22 |                 else
 | 
|---|
| 23 |                         run="no"
 | 
|---|
| 24 |                         cur=0
 | 
|---|
| 25 |                 fi
 | 
|---|
| 26 | 
 | 
|---|
| 27 |                 max=$(getConfigValue $ins ServerMaxPlayerCount)
 | 
|---|
| 28 |                 port=$(getConfigValue $ins ServerPort)
 | 
|---|
| 29 | 
 | 
|---|
| 30 |                 printf "%-*s | %*s |   %2d/%2d | %5d\n" 20 "$ins" 8 "$run" $cur $max $port
 | 
|---|
| 31 |         done
 | 
|---|
| 32 |         exit 0
 | 
|---|
| 33 | }
 | 
|---|
| 34 | 
 | 
|---|
| 35 | showInfo() {
 | 
|---|
| 36 |         if [ -z $1 ]; then
 | 
|---|
| 37 |                 echo "Missing parameter <instance>"
 | 
|---|
| 38 |                 exit 1
 | 
|---|
| 39 |         fi
 | 
|---|
| 40 |         checkInstance $1
 | 
|---|
| 41 | 
 | 
|---|
| 42 |         line() {
 | 
|---|
| 43 |                 printf "    %-*s %s\n" 15 "$1" "$2"
 | 
|---|
| 44 |         }
 | 
|---|
| 45 |         
 | 
|---|
| 46 |         echo
 | 
|---|
| 47 | 
 | 
|---|
| 48 |         echo "7dtd instance: $1"
 | 
|---|
| 49 |         echo
 | 
|---|
| 50 | 
 | 
|---|
| 51 |         res=$(isRunning $1)
 | 
|---|
| 52 |         if [ $res -eq 1 ]; then
 | 
|---|
| 53 |                 echo "Status: Running"
 | 
|---|
| 54 |                 echo "Open ports:"
 | 
|---|
| 55 |                 netstat -nlp | grep $(getInstancePID $1) | sed -r 's/^([^ ]*)\s+.*[^ :]*:([^ ]*).*[^ :]*:[^ ]*.*/    \2 (\1)/g' | sort
 | 
|---|
| 56 |                 tel=$(telnetCommand $1 lp)
 | 
|---|
| 57 |                 cur=`echo $tel | sed "s/\r/\n/g" | sed "s/^ //g" | grep "Total of " | cut -d\  -f 3`
 | 
|---|
| 58 |                 echo "Players: $cur"
 | 
|---|
| 59 |         else
 | 
|---|
| 60 |                 echo "Status: NOT running"
 | 
|---|
| 61 |         fi
 | 
|---|
| 62 | 
 | 
|---|
| 63 |         echo
 | 
|---|
| 64 |         echo "Game info:"
 | 
|---|
| 65 |         line "Server name:" $(getConfigValue $1 ServerName)
 | 
|---|
| 66 |         line "Password:" $(getConfigValue $1 ServerPassword)
 | 
|---|
| 67 |         line "Max players:" $(getConfigValue $1 ServerMaxPlayerCount)
 | 
|---|
| 68 |         line "World:" $(getConfigValue $1 GameWorld)
 | 
|---|
| 69 | 
 | 
|---|
| 70 |         echo
 | 
|---|
| 71 |         echo "Network info:"
 | 
|---|
| 72 |         line "Port:" $(getConfigValue $1 ServerPort)
 | 
|---|
| 73 |         line "Public:" $(getConfigValue $1 ServerIsPublic)
 | 
|---|
| 74 |         if [ "$(getConfigValue $1 ControlPanelEnabled)" = "false" ]; then
 | 
|---|
| 75 |                 cp="off"
 | 
|---|
| 76 |         else
 | 
|---|
| 77 |                 cp="Port $(getConfigValue $1 ControlPanelPort), Pass $(getConfigValue $1 ControlPanelPassword)"
 | 
|---|
| 78 |         fi
 | 
|---|
| 79 |         line "Control Panel:" "$cp"
 | 
|---|
| 80 |         if [ "$(getConfigValue $1 TelnetEnabled)" = "false" ]; then
 | 
|---|
| 81 |                 tn="off"
 | 
|---|
| 82 |         else
 | 
|---|
| 83 |                 tn="Port $(getConfigValue $1 TelnetPort), Pass $(getConfigValue $1 TelnetPassword)"
 | 
|---|
| 84 |         fi
 | 
|---|
| 85 |         line "Telnet:" "$tn"
 | 
|---|
| 86 | 
 | 
|---|
| 87 |         echo
 | 
|---|
| 88 |         exit 0
 | 
|---|
| 89 | }
 | 
|---|
| 90 | 
 | 
|---|
| 91 | showHelp() {
 | 
|---|
| 92 |         name=`basename $0`
 | 
|---|
| 93 |         echo "Unknown parameter: $1"
 | 
|---|
| 94 |         echo "Usage:"
 | 
|---|
| 95 |         echo "  $name [list]          - List all instances"
 | 
|---|
| 96 |         echo "  $name show <instance> - Show detailed info on the given instance"
 | 
|---|
| 97 |         exit 0
 | 
|---|
| 98 | }
 | 
|---|
| 99 | 
 | 
|---|
| 100 | COMMAND=${1:-list}
 | 
|---|
| 101 | 
 | 
|---|
| 102 | case "$COMMAND" in
 | 
|---|
| 103 |         list)
 | 
|---|
| 104 |                 listInstances
 | 
|---|
| 105 |         ;;
 | 
|---|
| 106 |         show)
 | 
|---|
| 107 |                 showInfo $2
 | 
|---|
| 108 |         ;;
 | 
|---|
| 109 |         *)
 | 
|---|
| 110 |                 showHelp $COMMAND
 | 
|---|
| 111 | esac
 | 
|---|
| 112 | exit 1
 | 
|---|