AnonSec Shell
Server IP : 92.204.138.22  /  Your IP : 3.23.92.127
Web Server : Apache
System : Linux ns1009439.ip-92-204-138.us 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 07:26:33 EDT 2024 x86_64
User : internationaljou ( 1019)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/panopta-agent/library/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /usr/lib/panopta-agent/library/maintenance.py
import aggregator
import os
import logging
import traceback
import sys
try:
    import configparser
except Exception:
    # Python 3
    import ConfigParser as configparser


class Maintenance():

    def __init__(self, brand, agg_url, version, base_config_dir, pkg_dir, debug=False):
        self.brand = brand
        self.agg_url = agg_url
        self.version = version
        self.base_config_dir = base_config_dir
        self.pkg_dir = pkg_dir
        self.config_dir = os.path.join(self.base_config_dir, self.pkg_dir)
        self.config_file = os.path.join(self.config_dir,
                                        "%s_agent.cfg" % self.brand)
        self.base_log_dir = '/var/log'
        self.log_dir = os.path.join(self.base_log_dir, self.pkg_dir)
        self.log_file = os.path.join(self.log_dir, 'maintenance.log')
        self.log = logging.getLogger()
        log_format = logging.Formatter(
            "%(asctime)s - %(levelname)s - %(message)s"
        )
        stream_handler = logging.StreamHandler()
        stream_handler.setFormatter(log_format)
        self.log.addHandler(stream_handler)
        if debug:
            self.log.setLevel(logging.DEBUG)
        else:
            self.log.setLevel(logging.INFO)
        try:
            handler = logging.FileHandler(self.log_file)
            handler.setFormatter(log_format)
            self.log.addHandler(handler)
        except IOError:
            self.log.error('Unable to reach log location %s. Please correct' % self.log_file)
        try:
            self.config = configparser.RawConfigParser()
            self.config.read(self.config_file)
            self.server_key = self.config.get('agent', 'server_key')
            self.agg_url = self.config.get('agent',
                                           'aggregator_url') or self.agg_url
            self.client = aggregator.Client(self.agg_url,
                                            self.version,
                                            server_key=self.server_key)
        except Exception:
            self.log.error('Error when getting config file. Exiting')
            self.log.error(traceback.format_exc())
            sys.exit()

    def start(self, duration, metric_tags=None):
        """
        Request to the aggregator that we start the maintenance on the server.
        """
        self.log.info('Starting maintenance procedure.')
        try:
            duration = int(duration)
        except (TypeError, ValueError):
            self.log.warning('Unrecognized duration %s. Must be given in minutes. Exiting' % duration)
            sys.exit(1)
        try:
            response = self.client.maintenance(duration, metric_tags)
        except Exception:
            self.log.debug(traceback.format_exc())
            self.log.info('There was an error performing the request. Please try again or contact support@panopta.com')
            sys.exit(1)
        if duration > 1:
            text = "minutes"
        else:
            text = "minute"
        self.log.info("This instance will go under maintenance for %s %s shortly" % (str(duration), text))
        sys.exit(0)

    def end(self):
        """
        Request to the aggregator that we end all maintenances in the server.
        """
        self.log.info('Starting maintenance shutdown.')
        try:
            response = self.client.end_maintenance()
        except Exception:
            self.log.debug(traceback.format_exc())
            self.log.info('There was an error performing the request. Please try again or contact support@panopta.com')
            sys.exit(1)
        self.log.info("Any active maintenance periods in the server will be ended immediately.")
        sys.exit(0)

Anon7 - 2022
AnonSec Team