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)
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)
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)
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'])
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