示例#1
0
    def test_missing_smtp_tag(self):
        xml = """<?xml version="1.0" encoding="UTF-8"?>
<config></config>
"""
        filename = _create_xml(xml)
        xml_root = config.parse_config(filename)
        with self.assertRaisesRegex(RuntimeError, 'Missing smtp XML tag'):
            config.parse_smtp(xml_root)
示例#2
0
    def test_invalid_from_attribute_via_from(self):
        xml = """<?xml version="1.0" encoding="UTF-8"?>
<config>
    <smtp host='smtp.gmail.com' username='******' password='******' from='invalid' />
</config>
"""
        filename = _create_xml(xml)
        xml_root = config.parse_config(filename)
        with self.assertRaisesRegex(RuntimeError, 'Invalid from address .*'):
            config.parse_smtp(xml_root)
示例#3
0
    def test_empty_smtp_attribute(self):
        xml = """<?xml version="1.0" encoding="UTF-8"?>
<config>
    <smtp host='smtp.gmail.com' username='******' password='' />
</config>
"""
        filename = _create_xml(xml)
        xml_root = config.parse_config(filename)
        with self.assertRaisesRegex(RuntimeError,
                                    'Empty <smtp> attribute password'):
            config.parse_smtp(xml_root)
示例#4
0
    def test_valid_smtp(self):
        xml = """<?xml version="1.0" encoding="UTF-8"?>
<config>
    <smtp host='smtp.gmail.com' username='******' password='******'/>
</config>
"""
        filename = _create_xml(xml)
        xml_root = config.parse_config(filename)
        smtp = config.parse_smtp(xml_root)
        self.assertEqual('smtp.gmail.com', smtp['host'])
        self.assertEqual('*****@*****.**', smtp['username'])
        # by default from address comes from username
        self.assertEqual('*****@*****.**', smtp['from'])
        self.assertEqual('example', smtp['password'])
        # port 25 is the default
        self.assertEqual(25, smtp['port'])

        # STARTTLS defaults to False if not specified
        self.assertFalse(smtp['starttls'])
示例#5
0
    response = _out.read().strip().decode('utf8')

    ssh.close()

    return json.loads(response)


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print('USAGE: server.py path/to/config.xml')
        sys.exit(1)

    # parse the XML configuration
    config_xml = config.parse_config(sys.argv[1])
    clients = config.parse_clients(config_xml)
    smtp_cfg = config.parse_smtp(config_xml)

    # connect to the DB
    db = orm.connect(config.parse_db(config_xml))

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    for client in clients:
        system = db.query(orm.System).filter_by(name=client['ip']).first()
        if not system:
            system = orm.System(name=client['ip'])
            db.add(system)
            db.commit()

        last_event_record_id = 0