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)
Example #2
0
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'
Example #3
0
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'
Example #4
0
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'
Example #5
0
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'
Example #6
0
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'
Example #7
0
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)
Example #8
0
def do_spark(resp):
    md = json.dumps(data, indent=4, separators=(',', ': '))
    Spark.post_markdown(accessToken, resp['roomId'], md)