Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.224.57.25
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib64/nagios/plugins/nccustom/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib64/nagios/plugins/nccustom/check-outmailip-rbl.py
#!/usr/libexec/platform-python
# -*- coding: utf-8 -*-
#from __future__ import print_function

import os, sys
import requests, json, urllib3
from os import R_OK
from os.path import isfile

def check_ncbl_via_api(warning, critical, tkn, urlpath):
    ips = []
    IpsFileName = os.path.join(os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(sys.argv[0]))),
                              '/etc/outgoingmailip')
    if not (isfile(IpsFileName) and os.access(IpsFileName, R_OK)):
        print("IPs file doesn't exist or isn't readable: " + IpsFileName)
        exit(3)
    try:
        if os.path.getsize(IpsFileName) > 0:
            with open(IpsFileName, 'r') as fin:
                ips = fin.read().splitlines()
        else:
            print("IPs file is empty")
            exit(3)
    except OSError as e:
        print("Error reading IPs file: %s" % e)
        exit(3)

    res = []
    check_summ = []
    infoCR = {}
    infoWA = {}
    import requests, json, urllib3
    hdrs = {"accept": "application/json", "Authorization": "Token " + tkn}
    for ip in ips:
        url = urlpath + str(ip).rstrip()
        try:
            r = requests.get(url, headers=hdrs, allow_redirects=False, timeout=2)
            if r.status_code == 200:
                resp = r.json()
                if resp['total_score'] > 0:
                    feeds = {}
                    weight = []
                    for item in resp['ip_reputation']:
                        if not item['source']['source_name'].encode('ascii','ignore') in feeds:
                            feeds[item['source']['source_name'].encode('ascii','ignore')] = item['source']['weight']
                        else:
                            feeds.update({item['source']['source_name'].encode('ascii','ignore'): feeds[item['source']['source_name'].encode('ascii','ignore')] + item['source']['weight']})
                        weight.append(item['source']['weight'])
                    res.append("IP {0}: {1}.".format(str(ip.rstrip()), feeds))
                    check_summ.append(sum(weight))
                    if sum(weight) >= critical:
                        infoCR["IP: " + str(ip.rstrip()) + ", CRIT"] = sum(weight)
                    else:
                        infoWA["IP: " + str(ip.rstrip()) + ", WARN"] = sum(weight)
            else:
                print("Request to ASP API not OK. Status code: " + str(r.status_code))
                print(r.text)
                exit(3)
        except requests.ConnectionError as e:
            print("Connection failed to: " + url + " \n" + str(e))
            exit(2)
    if res:
        if critical > max(check_summ) >= warning:
            for key, value in sorted(infoWA.items(), key=lambda item: item[1], reverse=True):
                print("%s: %s. " % (key, value), end="")
            print(" (via API)")
            print("\n".join(res))
            raise exit(1)
        elif max(check_summ) >= critical:
            for key, value in sorted(infoCR.items(), key=lambda item: item[1], reverse=True):
                print("%s: %s. " % (key, value), end="")
            print(" (via API)")
            print("\n".join(res))
            raise exit(2)
        else:
            print("OK (SpamScore only " + str(max(check_summ)) + " via API)")
            raise exit(0)
    else:
        print("OK (via API)")
        raise exit(0)


if __name__ == '__main__':
    import argparse

    parser = argparse.ArgumentParser(description='Outgoing mail IP reputation status')
    parser.add_argument("-w", "--warning", type=int, default=49, help="Default is 49.")
    parser.add_argument("-c", "--critical", type=int, default=50, help="Default is 50.")
    parser.add_argument("-n", "--token", type=str, default="XXX", help="Auth ASP API token")
    parser.add_argument("-p", "--urlpath", type=str, default="https://phx01ext-ncbl02.et.namecheap.tech:59443/ncbl/v1/ip_reputation/", 
                        help="URL path for APS API")

    args = parser.parse_args()
    check_ncbl_via_api(args.warning, args.critical, args.token, args.urlpath)

Youez - 2016 - github.com/yon3zu
LinuXploit