def post_msg(diff_data): """ Post Diff found in run config to Webex Teams """ print("Posting msgs") md = "**Base Configuration Change Detected** \n" teams.post_markdown(bot_token, roomId, md) teams.post_message(bot_token, roomId, diff_data)
def sparkSearch(roomid, text): i = 0 newmsg = app.config['SPARK_MSG_SEARCH'] + '\n' # Remove search word p = re.compile('^search ') msgtofind = p.sub('', text) # Search in the event table (history) the text msg try: msgs = exeReq("SELECT id, msg FROM events WHERE msg LIKE '%" + msgtofind + "%' AND owner != 'app' AND owner != '" + app.config['APP_MAIL'] + "'") wEvent('sparkSearch', roomid, msgtofind, 'app', '1', msgs) except Exception as e: wEvent('sparkSearch', roomid, msgtofind, 'app', '0', e) # Format and send the result for msg in msgs: roomlink = re.split('ciscospark://us/ROOM/', str(base64.b64decode(msg[0]))) roomurl = 'https://web.ciscospark.com/#/rooms/' + str(roomlink[1]) newmsg += '* [' + str(i) + '](' + roomurl + ') ' + msg[1] + '\n' i = i + 1 try: room = post_markdown(app.config['SPARK_ACCESS_TOKEN'], roomid, newmsg) wEvent('sparkSearch', roomid, newmsg, 'app', '1', room) except Exception as e: wEvent('sparkSearch', roomid, "Issue during the post of the result message", 'app', '0', e) return 'OK'
def sparkPostMsg(roomid, msg): try: msg = post_markdown(app.config['SPARK_ACCESS_TOKEN'], roomid, msg) wEvent('sparkPostMsg', roomid, "Message posted", 'app', '1', msg) except Exception as e: wEvent('sparkPostMsg', roomid, "Issue during post message", 'app', '0', e) return 'KO' return 'OK'
def sparkRemovePeople(roomid, mail): try: membership = del_people(app.config['SPARK_ACCESS_TOKEN'], roomid) wEvent('sparkRemovePeople', roomid, "Membership deleted", 'app', '1', membership) except Exception as e: wEvent('sparkRemovePeople', roomid, "Issue during membership delete", 'app', '0', e) try: msg = post_markdown(app.config['SPARK_ACCESS_TOKEN'], roomid, app.config['SPARK_MSG_DESIGN_ADD']) wEvent('sparkremovePeople', roomid, "Add membership message posted", 'app', '1', msg) except Exception as e: wEvent('sparkRemovePeople', roomid, "Issue during post of delete membership message", 'app', '0', e) return 'OK'
def sparkAddPeople(roomid, mail): try: membership = post_roommembership(app.config['SPARK_ACCESS_TOKEN'], roomid, mail, False) wEvent('sparkAddPeople', roomid, "Membership added", 'app', '1', membership) except Exception as e: wEvent('sparkAddPeople', roomid, "Issue during membership add", 'app', '0', e) try: msg = post_markdown(app.config['SPARK_ACCESS_TOKEN'], roomid, app.config['SPARK_MSG_DESIGN_ADD']) wEvent('sparkAddPeople', roomid, "Add membership message posted", 'app', '1', msg) except Exception as e: wEvent('sparkAddPeople', roomid, "Issue during post of add membership message", 'app', '0', e) return 'OK'
def sparkEscalation(roomid, mail): try: membership = post_roommembership(app.config['SPARK_ACCESS_TOKEN'], roomid, mail, False) wEvent('sparkEscalation', roomid, "Escalation membership added", 'app', '1', membership) except Exception as e: wEvent('sparkEscalation', roomid, "Issue during escalation membership add", 'app', '0', e) try: msg = post_markdown(app.config['SPARK_ACCESS_TOKEN'], roomid, app.config['SPARK_MSG_ESCLATION']) wEvent('sparkEscalation', roomid, "Escalation message posted", 'app', '1', msg) except Exception as e: wEvent('sparkEscalation', roomid, "Issue during post escalation message", 'app', '0', e) return 'OK'
def do_meraki(resp): # Create a list of incoming text trig = resp['text'].split() # Content type and Authorization information must be included in the header header = { "content-type": "application/json", "X-Cisco-Meraki-API-Key": meraki_key } endpoint = '' keyword = '' # Meraki API resources baseURL = 'https://n149.meraki.com/api/v0' if trig[1].lower() in ['organization', 'organizations', 'org', 'orgs']: keyword = 'org' endpoint = '/organizations' elif trig[1].lower() in ['networks', 'network', 'net']: if len(trig) > 2: keyword = 'net' endpoint = '/organizations/' + trig[2] + '/networks' else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Org ID **/meraki Network [orgID]**') elif trig[1].lower() in ['device', 'devices']: if len(trig) > 2: keyword = 'dev' endpoint = '/networks/' + trig[2].upper( ) + '/devices' # /networks/[networkId]/devices log.info(endpoint) else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Network ID **/meraki Devices [networkID]**') elif trig[1].lower() in ['switch', 'switchport', 'switches']: if len(trig) > 2: keyword = 'sw' endpoint = '/devices/' + trig[2].upper( ) + '/switchPorts' # /devices/[serial]/switchPorts log.info(endpoint) else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Switch SerialNum **/meraki switch [SerialNum]**' ) elif trig[1].lower() in ['clients', 'client']: if len(trig) > 2: keyword = 'cli' endpoint = '/devices/' + trig[2].upper( ) + '/clients?timespan=86400' # /devices/[serial]/switchPorts log.info(endpoint) else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Device SerialNum **/meraki client [SerialNum]**' ) elif trig[1].lower() in ['admin', 'admins']: resp['text'] = clean_text(resp['text']) if len(trig) > 2: keyword = 'admin' endpoint = "/organizations/" + trig[2].upper() + "/admins" else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Org ID **/meraki Admin [orgID]**') elif trig[1].lower() in ['addadmin']: if len(trig) > 2: org = trig[2] user = '******' + trig[4] + ' ' + trig[ 5] + '", "email": "' + trig[ 7] + '", "orgAccess": "full", "tags": []}' user = {} user["name"] = trig[4] + ' ' + trig[5] user["email"] = trig[7] user["orgAccess"] = "full" user["tags"] = [] code = add_user(org, user, header) log.info(type(resp)) if code == 201: Spark.post_markdown( accessToken, resp['roomId'], '**' + user["name"] + '** has been granted full Access') else: Spark.post_markdown(accessToken, resp['roomId'], '**Error ** ' + code) else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Org ID **/meraki AddAdmin [orgID]**') elif trig[1].lower() in ['removeadmin']: if len(trig) > 2: org = trig[2] userid = trig[4] remove_user(org, userid, header) else: Spark.post_markdown( accessToken, resp['roomId'], 'Please provide Org ID **/meraki RemoveAdmin [orgID]**') # Performs a GET on the specified url to get the service ticket log.info(baseURL + endpoint) response = requests.get(baseURL + endpoint, headers=header) log.info(response) log.info(response.json()) md = send_meraki(response, keyword) Spark.post_markdown(accessToken, resp['roomId'], md)
def do_spark(resp): md = json.dumps(data, indent=4, separators=(',', ': ')) Spark.post_markdown(accessToken, resp['roomId'], md)