diff --git a/mwg/mwg.py b/mwg/mwg.py new file mode 100644 index 0000000..1c14cee --- /dev/null +++ b/mwg/mwg.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# 20210907 petbau / https://github.com/mohlcyber/McAfee-Web-Gateway-List-Update + +import sys +import requests +import json +import xml.etree.ElementTree as xml + +MWG_URL = 'http://1.1.1.1' #url of the web gateway +MWG_PORT = '4711' #port of the web gateway +MWG_USER = 'admin' #username +MWG_PWD = 'password' #password +VERIFY = False #https verification + +def login(headers): + auth = {'userName': MWG_USER, + 'pass': MWG_PWD} + + res = requests.post(MWG_URL + ':' + MWG_PORT + '/Konfigurator/REST/login', headers=headers, params=auth, verify=VERIFY) + + if res.status_code == 200: + print('Successfull logged in') + else: + print('Something went wrong') + sys.exit(1) + + return res.cookies['JSESSIONID'] + +def get_list_id(headers, cookies, list): + params = {'name': list} + res = requests.get(MWG_URL + ':' + MWG_PORT + '/Konfigurator/REST/list', headers=headers, cookies=cookies, params=params, verify=VERIFY) + res_parse = xml.fromstring(res.content).find('entry/id') + + if res.status_code == 200: + print('The ID for the list {0} is: {1}'.format(list, res_parse.text)) + else: + print('Something went wrong') + sys.exit(1) + + return res_parse.text + +def insert_list(headers, cookies, list, list_id, value): + data = ''' + + + + {} + + + + + ''' + data = data.format(value) + + res = requests.post(MWG_URL + ':' + MWG_PORT + '/Konfigurator/REST/list/' + list_id + '/entry/0/insert', \ + headers=headers, cookies=cookies, data=data, verify=VERIFY) + + if res.status_code == 200: + print('Successfull added the IP/Domain {0} to the list {1}'.format(value, list)) + else: + print(res.content, 'Something Went Wrong') + return res + +def commit(headers, cookies): + res = requests.post(MWG_URL + ':' + MWG_PORT + '/Konfigurator/REST/commit', headers=headers, cookies=cookies, verify=VERIFY) + return res.content + +def logout(headers, cookies): + res = requests.post(MWG_URL + ':' + MWG_PORT + '/Konfigurator/REST/logout', headers=headers, cookies=cookies, verify=VERIFY) + + if res.status_code == 200: + print('Successfull Logged Out') + else: + print('Something Went Wrong') + return res + +if __name__ == "__main__": + + list = 'Global Block: Sites' #list to edit + value = sys.argv[1] + + headers = {'Content-Type': 'application/xml'} + + cookie = login(headers) + cookies = {'JSESSIONID': cookie} + + list_id = get_list_id(headers, cookies, list) + + insert = insert_list(headers, cookies, list, list_id, value) + commit = commit(headers, cookies) + + logout = logout(headers, cookies)