Ignore:
Timestamp:
Jul 19, 2014, 1:53:35 PM (10 years ago)
Author:
alloc
Message:

v.32

File:
1 edited

Legend:

Unmodified
Added
Removed
  • scripts/usr/local/lib/7dtd/monitor-log.sh

    r72 r87  
    1212LOG=$(getInstancePath $INSTANCE)/logs/$(date '+%Y-%m-%d_%H-%M-%S')_output.log
    1313CHATLOG=$(getInstancePath $INSTANCE)/logs/$(date '+%Y-%m-%d_%H-%M-%S')_chat.log
     14COMMANDLOG=$(getInstancePath $INSTANCE)/logs/$(date '+%Y-%m-%d_%H-%M-%S')_commandExecution.log
    1415
    1516timestamp() {
     
    1819
    1920handleConnect() {
    20         tel=$(telnetCommand $INSTANCE lp)
    21         playerline=$(echo "$tel" | tr -d '\r' | grep "id=$2,")
    22         #nickname=$(echo "$playerline" | sed -r 's/^.* id=[0-9]*, ([^,]*), pos=.*$/\1/')
    23         steamid=$(echo "$playerline" | sed -r 's/^.*, health=[0-9]*, ([0-9]*)$/\1/')
     21        local clientId="$1"
     22        local entityId="$2"
     23        local name="$3"
     24        local steamId="$4"
     25        local ip="$5"
    2426       
    25         if [ -z "$steamid" ]; then
    26                 return
    27         fi
    28 
    29         logPlayerConnect $INSTANCE "$2" "$steamid" "$3"
     27        logPlayerConnect $INSTANCE "$entityId" "$name" "$steamId" "$ip"
    3028
    3129        for H in $(getHooksFor playerConnect); do
    32                 $H $INSTANCE "$1" "$2" "$3" "$steamid"
     30                $H $INSTANCE "$clientId" "$entityId" "$name" "$steamId" "$ip"
    3331        done
    3432}
    3533
    3634handleDisconnect() {
    37         logPlayerDisconnect $INSTANCE "$2"
     35        local clientId="$1"
     36        local entityId="$2"
     37
     38        logPlayerDisconnect $INSTANCE "$entityId"
    3839
    3940        for H in $(getHooksFor playerDisconnect); do
    40                 $H $INSTANCE "$1" "$2" "$NICKNAME" "$STEAMID"
     41                $H $INSTANCE "$clientId" "$entityId" "$NICKNAME" "$STEAMID"
    4142        done
    4243}
     
    5051}
    5152
     53handleRemoteCommand() {
     54        local cmd="$1"
     55        local name="$2"
     56       
     57        echo "$(timestamp): Player \"$name\" executed \"$cmd\"" >> $COMMANDLOG
     58
     59        for H in $(getHooksFor remoteCommand); do
     60                $H $INSTANCE "$cmd" "$name"
     61        done
     62}
     63
     64handleTelnetCommand() {
     65        local cmd="$1"
     66        local ip="$2"
     67
     68        echo "$(timestamp): Telnet from \"$ip\" executed \"$cmd\"" >> $COMMANDLOG
     69
     70        for H in $(getHooksFor telnetCommand); do
     71                $H $INSTANCE "$cmd" "$ip"
     72        done
     73}
     74
     75
    5276if [ ! -d "$(getInstancePath $INSTANCE)/logs" ]; then
    5377        mkdir "$(getInstancePath $INSTANCE)/logs"
     
    6084echo "Starting instance $INSTANCE at $(timestamp)" >> $LOG
    6185echo >> $LOG
     86
     87rm $(getInstancePath $INSTANCE)/logs/current_output.log
     88rm $(getInstancePath $INSTANCE)/logs/current_chat.log
     89rm $(getInstancePath $INSTANCE)/logs/current_commandExecution.log
     90ln -s $LOG $(getInstancePath $INSTANCE)/logs/current_output.log
     91ln -s $CHATLOG $(getInstancePath $INSTANCE)/logs/current_chat.log
     92ln -s $COMMANDLOG $(getInstancePath $INSTANCE)/logs/current_commandExecution.log
    6293
    6394sleep 5
     
    73104        if [ -n "$line" ]; then
    74105                echo "$(timestamp): $line" >> $LOG
    75                 if [ -n "$(echo "$line" | grep '^RequestToSpawnPlayer:')" ]; then
    76                         entityId=$(expr "$line" : 'RequestToSpawnPlayer: \([0-9]*\), [0-9]*, .*, [0-9]*$')
    77                         playerId=$(expr "$line" : 'RequestToSpawnPlayer: [0-9]*, \([0-9]*\), .*, [0-9]*$')
    78                         playerName=$(expr "$line" : 'RequestToSpawnPlayer: [0-9]*, [0-9]*, \(.*\), [0-9]*$')
    79                         unknown=$(expr "$line" : 'RequestToSpawnPlayer: [0-9]*, [0-9]*, .*, \([0-9]*\)$')
     106                #Player connected, clientid=[0-9]*, entityid=[0-9]*, name=.*, steamid=[0-9]*, ip=[0-9.]*$
     107                if [ -n "$(echo "$line" | grep '^Player connected,')" ]; then
     108                        clientId=$(expr "$line" : 'Player connected, clientid=\([0-9]*\), entityid=[0-9]*, name=.*, steamid=[0-9]*, ip=[0-9.]*$')
     109                        entityId=$(expr "$line" : 'Player connected, clientid=[0-9]*, entityid=\([0-9]*\), name=.*, steamid=[0-9]*, ip=[0-9.]*$')
     110                        playerName=$(expr "$line" : 'Player connected, clientid=[0-9]*, entityid=[0-9]*, name=\(.*\), steamid=[0-9]*, ip=[0-9.]*$')
     111                        steamId=$(expr "$line" : 'Player connected, clientid=[0-9]*, entityid=[0-9]*, name=.*, steamid=\([0-9]*\), ip=[0-9.]*$')
     112                        ip=$(expr "$line" : 'Player connected, clientid=[0-9]*, entityid=[0-9]*, name=.*, steamid=[0-9]*, ip=\([0-9.]*\)$')
    80113                        sleep 1
    81                         handleConnect "$playerId" "$entityId" "$playerName"
    82                         unset entityId playerId playerName unknown
     114                        handleConnect "$clientId" "$entityId" "$playerName" "$steamId" "$ip"
     115                        unset clientId entityId playerName steamId ip
    83116                else
     117                #Removing player with id clientId=[0-9]*, entityId=[0-9]*$
    84118                if [ -n "$(echo "$line" | grep '^Removing player with id ')" ]; then
    85119                        playerId=$(expr "$line" : 'Removing player with id clientId=\([0-9]*\), entityId=[0-9]*$')
     
    88122                        unset playerId entityId
    89123                else
     124                #GMSG: .*$
    90125                if [ -n "$(echo "$line" | grep -E '^GMSG: .+')" ]; then
    91126                        msg=$(expr "$line" : 'GMSG: \(.*\)$')
    92127                        handleChat "$msg"
    93128                        unset msg
     129                else
     130                #Executed command ".*" from player ".*"$
     131                if [ -n "$(echo "$line" | grep '^Executed command ')" ]; then
     132                        cmd=$(expr "$line" : 'Executed command "\(.*\)" from player ".*"$')
     133                        nick=$(expr "$line" : 'Executed command ".*" from player "\(.*\)"$')
     134                        handleRemoteCommand "$cmd" "$nick"
     135                        unset cmd nick
     136                else
     137                #Telnet executed ".*" from: .*$
     138                if [ -n "$(echo "$line" | grep '^Telnet executed ')" ]; then
     139                        cmd=$(expr "$line" : 'Telnet executed "\(.*\)" from: .*$')
     140                        ip=$(expr "$line" : 'Telnet executed ".*" from: \(.*\)$')
     141                        handleTelnetCommand "$cmd" "$ip"
     142                        unset cmd ip
     143                fi
     144                fi
    94145                fi
    95146                fi
Note: See TracChangeset for help on using the changeset viewer.