HEX
Server: Apache
System: Linux vpshost0650.publiccloud.com.br 4.4.79-grsec-1.lc.x86_64 #1 SMP Wed Aug 2 14:18:21 -03 2017 x86_64
User: bandeirantesbomb3 (10068)
PHP: 8.0.7
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //usr/lib/python2.7/site-packages/lap/cas.py
import json
import socket
from datetime import datetime
socket.setdefaulttimeout(5)

def __run__(params):
    metrics = params.get("metrics",False)
    perfdata = []
    try:
        maxtime = params.get("maxtime",0) 
        if params.get("type_socket") == 'unix':
            now = datetime.now()
            connection = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
            connection.connect(params.get("unix_socket"))
            connection.close()
        else:
            connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            now = datetime.now()
            connection.connect((params.get("hostname", "localhost"), params.get("port")))
            if params.get("banner_monitoring") == 'true':
                recvdata = connection.recv(1024)
                connection.close()
                dt = datetime.now() - now
                if maxtime > 0 and dt.seconds > maxtime:
                    return [2, 'CRITICAL: banner time exceeded in %d max expected were %d' % (dt.seconds,maxtime)]
            else:
                connection.close()

        if metrics:
            try:
                KEYS = params.get("keys")
                HOST, PORT = "localhost", 5141
                for key in KEYS:
                    data = "log:metrics:%s" % key.lower()
                    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
                    sock.sendto(data + "\n", (HOST, PORT))
                    reveived = json.loads(sock.recv(1024))[0].get('minute')
                    perfdata.append((key.lower(),str(reveived))) 
                perfdata = "|".join([ "=".join(x) for x in perfdata]) 
            except Exception as e:
                return [2, 'CRITICAL: Unable to get metrics due to: %s' % e]
    except socket.timeout:
        return [2, 'CRITICAL: Socket timeout']
    except socket.gaierror:
        return [2, 'CRITICAL: Unable to resolve domain']
    except socket.error, e:
        return [2, 'CRITICAL: Socket error: %s' % str(e)]
    except Exception, e:
        return [2,'CRITICAL: %s' % repr(e)]
    else:
        return [0, "OK - %s" % json.dumps(perfdata), perfdata]