Esempio n. 1
0
    def setUpClass(cls):
        # Now load a global config object so the DB connection is open
        cls._nsc = ndr_server.Config(logging.NullHandler(), TEST_CONFIG)
        cls._db_connection = cls._nsc.database.get_connection()

        # UUCP file is written here for comparsion
        fd, uucp_sys_test = tempfile.mkstemp()
        os.close(fd)  # Don't need to write anything to it

        cls._nsc.uucp_sys_config = uucp_sys_test

        # For this specific test, we need to create a few test objects
        cls._test_org = ndr_server.Organization.create(
            cls._nsc, "Testing Config Org", db_conn=cls._db_connection)
        cls._test_site = ndr_server.Site.create(cls._nsc,
                                                cls._test_org,
                                                "Testing Config Site",
                                                db_conn=cls._db_connection)

        # Make a couple of test recorders
        ndr_server.Recorder.create(cls._nsc,
                                   cls._test_site,
                                   "Config Test Recorder 1",
                                   "cfg-test1",
                                   db_conn=cls._db_connection)
        ndr_server.Recorder.create(cls._nsc,
                                   cls._test_site,
                                   "Config Test Recorder 2",
                                   "cfg-test2",
                                   db_conn=cls._db_connection)
        ndr_server.Recorder.create(cls._nsc,
                                   cls._test_site,
                                   "Config Test Recorder 3",
                                   "cfg-test3",
                                   db_conn=cls._db_connection)
Esempio n. 2
0
    def setUp(self):
        logging.getLogger().addHandler(logging.NullHandler())
        # Now load a global config object so the DB connection is open
        self._nsc = ndr_server.Config(logging.getLogger(), TEST_CONFIG)

        # We need to process test messages, so override the base directory for
        # this test
        self._db_connection = self._nsc.database.get_connection()

        # For this specific test, we need to create a few test objects
        self._test_org = ndr_server.Organization.create(
            self._nsc,
            "Network Scan Recorders Org",
            db_conn=self._db_connection)
        self._test_site = ndr_server.Site.create(self._nsc,
                                                 self._test_org,
                                                 "Network Scan Recorders Site",
                                                 db_conn=self._db_connection)
        self._recorder = ndr_server.Recorder.create(
            self._nsc,
            self._test_site,
            "Test Recorder",
            "ndr_test_ingest",
            db_conn=self._db_connection)

        # We need a test file contact
        file_descriptor, self._test_contact = tempfile.mkstemp()
        os.close(file_descriptor)  # Don't need to write anything to it

        ndr_server.Contact.create(self._nsc,
                                  self._test_org,
                                  "file",
                                  self._test_contact,
                                  "csv",
                                  db_conn=self._db_connection)
Esempio n. 3
0
def check_if_can_open_geoip_db():
    nsc = ndr_server.Config(logging.getLogger(), TEST_CONFIG)
    try:
        geoip_db = geoip2.database.Reader(nsc.geoip_db)
    except:
        return False

    return True
Esempio n. 4
0
    def setUpClass(cls):
        # Now load a global config object so the DB connection is open
        cls._nsc = ndr_server.Config(logging.NullHandler(), TEST_CONFIG)
        cls._db_connection = cls._nsc.database.get_connection()

        # For this specific test, we need to create a few test objects
        cls._test_org = ndr_server.Organization.create(
            cls._nsc, "Test Contacts", db_conn=cls._db_connection)
Esempio n. 5
0
def main():
    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s')
    logger = logging.getLogger(name=__name__)
    logger.setLevel(logging.DEBUG)

    ndr_server_config = ndr_server.Config(logger, "/etc/ndr/ndr_server.yml")
    ingest_daemon = ndr_server.IngestServer(ndr_server_config)
    ingest_daemon.start_server()
Esempio n. 6
0
    def setUpClass(cls):
        # Now load a global config object so the DB connection is open
        logging.getLogger().addHandler(logging.NullHandler())
        cls._nsc = ndr_server.Config(logging.getLogger(), TEST_CONFIG)
        cls._db_connection = cls._nsc.database.get_connection()

        # For this specific test, we need to create a few test objects
        cls._test_org = ndr_server.Organization.create(
            cls._nsc, "Testing Recorders Org", db_conn=cls._db_connection)
        cls._test_site = ndr_server.Site.create(cls._nsc,
                                                cls._test_org,
                                                "Testing Recorders Site",
                                                db_conn=cls._db_connection)
        cls._recorder = ndr_server.Recorder.create(cls._nsc,
                                                   cls._test_site,
                                                   "Test Recorder Ingest",
                                                   "ndr_test_ingest",
                                                   db_conn=cls._db_connection)
    def setUpClass(cls):
        logging.getLogger().addHandler(logging.NullHandler())
        # Now load a global config object so the DB connection is open
        cls._nsc = ndr_server.Config(logging.getLogger(), TEST_CONFIG)

        # We need to process test messages, so override the base directory for
        # this test
        cls._db_connection = cls._nsc.database.get_connection()

        # For this specific test, we need to create a few test objects
        cls._test_org = ndr_server.Organization.create(
            cls._nsc, "Ingest Recorders Org", db_conn=cls._db_connection)
        cls._test_site = ndr_server.Site.create(cls._nsc,
                                                cls._test_org,
                                                "Ingest Recorders Site",
                                                db_conn=cls._db_connection)
        cls._recorder = ndr_server.Recorder.create(cls._nsc,
                                                   cls._test_site,
                                                   "Test Recorder",
                                                   "ndr_test_status",
                                                   db_conn=cls._db_connection)
Esempio n. 8
0
def main():
    '''Main function for handling daily processing tasks'''

    # Do our basic setup work
    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s')
    logger = logging.getLogger(name=__name__)
    logger.setLevel(logging.DEBUG)

    # We need both configs
    parser = argparse.ArgumentParser(
        description="Run daily processing tasks for NDR")
    parser.add_argument('-s',
                        '--server-config',
                        default='/etc/ndr/ndr_server.yml',
                        help='NDR Server Configuration File')
    args = parser.parse_args()

    nsc = ndr_server.Config(logger, args.server_config)

    db_conn = nsc.database.get_connection()

    nsc.logger.info("Generating GeoIP statistics email")

    # Retrieve all sites
    sites = ndr_server.Site.retrieve_all(nsc, db_conn)

    for site in sites:
        nsc.logger.info("Processing site %s (%d)", site.name, site.pg_id)

        # TShark Reports
        report_manager = ndr_server.TsharkTrafficReportManager(
            nsc, site, db_conn)

        report_manager.generate_report_emails(datetime.now() -
                                              timedelta(days=1),
                                              datetime.now(),
                                              db_conn=db_conn,
                                              send=True)

    db_conn.commit()
Esempio n. 9
0
def main():
    # Do our basic setup work
    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s')
    logger = logging.getLogger(name=__name__)
    logger.setLevel(logging.DEBUG)

    # We need both configs
    ncc = ndr.Config("/etc/ndr/config.yml")  # NDR Client Config
    nsc = ndr_server.Config(logger, "/etc/ndr/ndr_server.yml")
    db_connection = nsc.database.get_connection()

    parser = argparse.ArgumentParser(
        description="Requests that a recorder restart to install OTAs updates")
    parser.add_argument('recorders', nargs='+', help='recorders to reboot')
    args = parser.parse_args()
    for recorder in args.recorders:
        # Make sure the recorder exists
        try:
            # We'll try to initialize a Recorder object. We don't need it but it confirms
            # that the recorder exists in the datbase

            ndr_server.Recorder.read_by_hostname(nsc,
                                                 recorder,
                                                 db_conn=db_connection)
            msg = ndr.IngestMessage(
                config=ncc, message_type=ndr.IngestMessageTypes.REBOOT_REQUEST)

            msg.destination = recorder
            msg.upload_method = 'uux'
            msg.sign_report()
            msg.load_into_queue()
            logger.info("Queued recorder %s to reboot", recorder)

        except psycopg2.DatabaseError:
            logger.error("recorder %s does not exist", recorder)

    db_connection.close()
Esempio n. 10
0
 def setUpClass(cls):
     cls._nsc = ndr_server.Config(logging.NullHandler(), TEST_CONFIG)
     cls._db_connection = cls._nsc.database.get_connection()