Ejemplo n.º 1
0
 def parseName(self, dc, cursor):
     util.log_debug('NewVrfRouteVariableDecoder: parseName')
     if not cursor.hasNext():
         return
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     next = cursor.getNextToken()
     util.log_debug(cursor.getNextToken())
     global_found = False
     if "global" == next:
         cursor.advance()
         decoderhandler.addTokenValue("global-address", "true")
         global_found = True
     elif "name" == next:
         cursor.advance()
         decoderhandler.addTokenValue("name", cursor.getNextToken())
         cursor.advance()
     elif "tag" == next:
         cursor.advance()
         decoderhandler.addTokenValue("tag", cursor.getNextToken())
         cursor.advance()
     elif "permanent" == next:
         decoderhandler.addTokenValue("permanent", "true")
         cursor.advance()
     elif "track" == next:
         cursor.advance()
         decoderhandler.addTokenValue("track", cursor.getNextToken())
         cursor.advance()
     elif next is not None and "name" != next and "tag" != next and "track" != next and "permanent" != next:
         decoderhandler.addTokenValue("metric", cursor.getNextToken())
         cursor.advance()
     elif not global_found:
         decoderhandler.addTokenValue("global-address", "false")
     self.parseName(dc, cursor)
 def matchToken(self, configParserContext, configToken, idx, toks):
     value = toks.get(idx)
     util.log_debug('operation-type-matchtokenValue = %s' % (value))
     if value in self.operation_types:
         return 1
     else:
         return -1
 def decodeToken(self, dc):
     try:
         util.log_info('SlaSourceIpTokenDecoder: Decode token')
         decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
         util.log_debug("TokenText : ", decoderhandler.getTokenText())
         tokenText = decoderhandler.getTokenText()
         tokenValue = decoderhandler.getValueAtCurrentIndex()
         util.log_info('Value = %s' % (tokenValue))
         decoderhandler.addTokenValue(tokenText, tokenValue)
         ##########
         # block = decoderhandler.getCurrentBlock()
         # lines = block.toString().split("\n")
         # lines = [line.strip(' ') for line in lines]
         # for each_line in lines:
         #     words = each_line.split(" ")
         #     for word in range(0, len(words)):
         #         if words[word] == "num-packets":
         #             decoderhandler.addTokenValue("num-packets", words[word+1])
         #         elif words[word] == "interval":
         #             decoderhandler.addTokenValue("interval", words[word+1])
         #         elif words[word] == "source-port":
         #             decoderhandler.addTokenValue("source-port", words[word+1])
         ##########
     except Exception:
         traceback.print_exc()
 def parseFeatureState(self, dc, cursor):
     util.log_debug(
         'FeaturesVariableDecoder: parseFeatureState will describe the present state for the feature'
     )
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "no" == cursor.getNextToken():
         cursor.advance()
         cursor.advance()
         featurename = cursor.getNextToken()
         if "tacacs+" == featurename:
             featurename = "tacacs"
         elif "domain" == featurename:
             featurename = "domain-lookup"
         decoderhandler.addTokenValue(featurename, "disable")
         cursor.advance()
     elif "feature" == cursor.getNextToken():
         cursor.advance()
         featurename = cursor.getNextToken()
         if "tacacs+" == featurename:
             featurename = "tacacs"
         decoderhandler.addTokenValue(featurename, "enable")
         cursor.advance()
     elif "ip" == cursor.getNextToken():
         featurename = "domain-lookup"
         decoderhandler.addTokenValue(featurename, "enable")
Ejemplo n.º 5
0
 def parseTag(self, dc, cursor):
     util.log_debug('CiscoStaticRouterVariableDecoder: parseTag')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     next = cursor.getNextToken()
     util.log_debug('CiscoStaticRouterVariableDecoder(parseTag) Next = %s' %
                    (next))
     if "tag" == next:
         cursor.advance()
         util.log_debug(
             'CiscoStaticRouterVariableDecoder(parseTag) tag is next = %s' %
             (cursor.getNextToken()))
         decoderhandler.addTokenValue("tag", cursor.getNextToken())
         cursor.advance()
     if "name" == next:
         cursor.advance()
         util.log_debug(
             'CiscoStaticRouterVariableDecoder(parseTag) name is next = %s'
             % (cursor.getNextToken()))
         decoderhandler.addTokenValue("name", cursor.getNextToken())
         cursor.advance()
     if "name" != next and "tag" != next and next is not None:
         util.log_debug(
             'CiscoStaticRouterVariableDecoder(parseTag) metric next token = %s'
             % (cursor.getNextToken()))
         decoderhandler.addTokenValue("metric", cursor.getNextToken())
         cursor.advance()
    def decodeVariables(self, cpc, dc, context):
        try:
            util.log_info(
                'RouterEigrpRedistVariableDecoder: Decoding variable')
            decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
            block = decoderhandler.getCurrentBlock()
            tokens = Joiner.on(" ").join(block.getTokens())
            tokens = tokens.split(" ")
            print tokens
            if "redistribute" not in tokens[0]:
                util.log_debug(
                    'Does not look like a valid redistribute. redistribute = %s'
                    % (tokens))
                return
            decoderhandler.addTokenValue("protocol", tokens[1])
            if tokens[1] == 'ospf':
                decoderhandler.addTokenValue("ospf-id", tokens[2])
            elif tokens[1] == 'eigrp' or tokens[1] == 'bgp':
                decoderhandler.addTokenValue("as-number", tokens[2])
            for i in range(1, len(tokens)):
                i += 1
                if tokens[i] == 'route-map':
                    decoderhandler.addTokenValue("route-map", tokens[i + 1])

                if tokens[i] == 'metric':
                    decoderhandler.addTokenValue("bandwidth-metric",
                                                 tokens[i + 1])
                    decoderhandler.addTokenValue("delay-metric", tokens[i + 2])
                    decoderhandler.addTokenValue("reliability-metric",
                                                 tokens[i + 3])
                    decoderhandler.addTokenValue("load-metric", tokens[i + 4])
                    decoderhandler.addTokenValue("mtu", tokens[i + 5])

        except Exception:
            traceback.print_exc()
 def parseConditionType(self, dc, cursor):
     util.log_debug('ClassMapVariableTokenDecoder: parseConditionType')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "dscp" == cursor.getNextToken(
     ) or "qos-group" == cursor.getNextToken(
     ) or "protocol" == cursor.getNextToken():
         conditiontype = cursor.getNextToken()
         cursor.advance()
         decoderhandler.addTokenValue("condition-type", conditiontype)
     if "access-group" == cursor.getNextToken():
         decoderhandler.addTokenValue("condition-type",
                                      cursor.getNextToken())
         cursor.advance()
         cursor.advance()
     if "ip" == cursor.getNextToken():
         cursor.advance()
         if "dscp" == cursor.getNextToken():
             decoderhandler.addTokenValue("condition-type", "ip dscp")
             global conditiontype
             conditiontype = "ip dscp"
             cursor.advance()
     if "any" == cursor.getNextToken():
         decoderhandler.addTokenValue("condition-type",
                                      cursor.getNextToken())
     if "vlan" == cursor.getNextToken():
         conditiontype = cursor.getNextToken()
         decoderhandler.addTokenValue("condition-type",
                                      cursor.getNextToken())
         cursor.advance()
    def decodeVariables(self,cpc,dc,context):
        try:
            util.log_info('RouterOspfRedistVariableDecoder: Decoding variable')
            decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
            block = decoderhandler.getCurrentBlock()
            tokens = Joiner.on(" ").join(block.getTokens())
            tokens = tokens.split(" ")
            print tokens
            if "redistribute" not in tokens[0]:
                util.log_debug('Does not look like a valid redistribute. redistribute = %s' % (tokens))
                return
            decoderhandler.addTokenValue("protocol", tokens[1])
            if tokens[1] == 'ospf':
                decoderhandler.addTokenValue("process-id-entry", tokens[2])
            elif tokens[1] == 'eigrp':
                decoderhandler.addTokenValue("eigrp-as-number", tokens[2])
            elif tokens[1] == 'bgp':
                decoderhandler.addTokenValue("bgp-as-number", tokens[2])
            for i in range(1,len(tokens)):
                i+=1
                if tokens[i] == "metric":
                    decoderhandler.addTokenValue("value1", tokens[i+1])
                if tokens[i] == "metric-type":
                    decoderhandler.addTokenValue("value2", tokens[i+1])
                if tokens[i] == 'route-map':
                    decoderhandler.addTokenValue("route-map", tokens[i+1])
                if tokens[i] == 'subnets':
                    decoderhandler.addTokenValue("subnet", "true")
                if tokens[i] == 'tag':
                    decoderhandler.addTokenValue("tag", tokens[i+1])
                    


        except Exception:
            traceback.print_exc()
 def matchToken(self, configParserContext, configToken, idx, toks):
     value = toks.get(idx)
     util.log_debug('http-request-type-matchtokenValue = %s' % (value))
     if value in self.http_request_types:
         return 1
     else:
         return -1
Ejemplo n.º 10
0
 def parseName(self, dc, cursor):
     util.log_debug(
         'VtyVariableDecoder: parseName will parse the value for Name, minvty and maxvty'
     )
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "line" == cursor.getNextToken():
         decoderhandler.addTokenValue(
             "name",
             Joiner.on(" ").join(
                 decoderhandler.getCurrentBlock().getTokens()))
         cursor.advance()
         cursor.advance()
     else:
         return
     if not cursor.hasNext():
         return
     else:
         decoderhandler.addTokenValue("min-vty", cursor.getNextToken())
         cursor.advance()
     if not cursor.hasNext():
         return
     else:
         decoderhandler.addTokenValue("max-vty", cursor.getNextToken())
         cursor.advance()
Ejemplo n.º 11
0
 def parseTransportType(self, dc, cursor):
     util.log_debug(
         'VtyVariableDecoder: parseTransportType will parse the transport type'
     )
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "transport" == cursor.getNextToken():
         cursor.advance()
         if "input" == cursor.getNextToken():
             cursor.advance()
             input_value = ""
             while cursor.hasNext():
                 input_value = input_value + " " + cursor.getNextToken()
                 cursor.advance()
             decoderhandler.addTokenValue("transport-types-in",
                                          input_value.strip())
         if "output" == cursor.getNextToken():
             cursor.advance()
             output_value = ""
             while cursor.hasNext():
                 output_value = output_value + " " + cursor.getNextToken()
                 cursor.advance()
             decoderhandler.addTokenValue("transport-types-out",
                                          output_value.strip())
     else:
         return
Ejemplo n.º 12
0
    def parseName(self, dc, cursor):
        util.log_debug('NewRouteVariableDecoder: parseName')
        if not cursor.hasNext():
            return
        decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
        next = cursor.getNextToken()
        if "name" == next:
            cursor.advance()
            decoderhandler.addTokenValue("options/name", cursor.getNextToken())
            cursor.advance()

        elif "tag" == next:
            cursor.advance()
            decoderhandler.addTokenValue("options/tag", cursor.getNextToken())
            cursor.advance()

        elif "permanent" == next:
            decoderhandler.addTokenValue("options/permanent", "true")
            cursor.advance()

        elif "track" == next:
            cursor.advance()
            decoderhandler.addTokenValue("options/track",
                                         cursor.getNextToken())
            cursor.advance()

        elif "name" != next and "tag" != next and "track" != next and "permanent" != next and next is not None:
            decoderhandler.addTokenValue("options/metric",
                                         cursor.getNextToken())
            cursor.advance()
        self.parseName(dc, cursor)
 def matchToken(self, configParserContext, configToken, idx, toks):
     value = toks.get(idx)
     util.log_debug('entry-number-matchtokenValue = %s' % (value))
     match = re.search(self.responder_pattern, value)
     if match is not None:
         return 1
     else:
         return -1
Ejemplo n.º 14
0
 def decodeToken(self, decoderContext):
     try:
         util.log_debug('NameServerTokenDecoder: Decode token')
         decoderhandler = tokendecoderhandler.TokenDecoderHandler(
             decoderContext)
         self.decodeNameServer(decoderContext)
     except Exception:
         traceback.print_exc()
Ejemplo n.º 15
0
 def parseConditionType(self, dc, cursor):
     util.log_debug('ClassMapHttpUrlVariableTokenDecoder: parseConditionType')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "protocol" == cursor.getNextToken():
         conditiontype = cursor.getNextToken()
         decoderhandler.addTokenValue("../condition-type", conditiontype)
         cursor.advance()
Ejemplo n.º 16
0
 def parseMatchValue(self, dc, cursor):
     util.log_debug('ClassMapHttpUrlVariableTokenDecoder: parseMatchValue')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "http" == cursor.getNextToken():
         matchtype = cursor.getNextToken()
         decoderhandler.addTokenValue("../match-value", matchtype)
         cursor.advance()
Ejemplo n.º 17
0
 def parseNextHop(self, dc, cursor):
     util.log_debug('CiscoStaticRouterVariableDecoder: parseNextHop')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     util.log_debug(
         'CiscoStaticRouterVariableDecoder(parseNextHop): next-hop-ip token is = %s'
         % (cursor.getNextToken()))
     decoderhandler.addTokenValue("next-hop-ip", cursor.getNextToken())
     cursor.advance()
Ejemplo n.º 18
0
 def parseUrl(self, dc, cursor):
     util.log_debug('ClassMapHttpUrlVariableTokenDecoder: parseUrl')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "url" == cursor.getNextToken():
         cursor.advance()
         url = cursor.getNextToken()
         decoderhandler.addTokenValue("url", url)
         cursor.advance()
 def processService(self, cpc, dc, context, block):
     util.log_debug('ObjectGroupServiceVariableDecoder: processNetwork')
     compare = ['eq', 'lt', 'gt', 'range']
     ip_protocol_list = [
         'ahp', 'eigrp', 'esp', 'gre', 'icmp', 'igmp', 'ip', 'ipinip',
         'nos', 'ospf', 'pcp', 'pim'
     ]
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     lines = block.toString().split("\n")
     lines = [line.strip(' ') for line in lines]
     util.log_info('BLOCK for obj service:', block)
     for line in lines:
         words = line.split(' ')
         if words[0].isdigit():
             decoderhandler.addTokenValue("name", words[0])
             decoderhandler.addTokenValue("ip-protocol", words[0])
             return
         elif words[0] in ip_protocol_list:
             decoderhandler.addTokenValue("name", words[0])
             decoderhandler.addTokenValue("protocol", words[0])
             return
         elif words[0] == 'group-object':
             util.log_debug('ObjectGroup')
         else:
             if InetAddressUtils.isIPv4Address(
                     words[0]) or words[0] == 'host':
                 return
             decoderhandler.addTokenValue("protocol", words[0])
         if len(words) - 1 >= 1:
             if words[1] == 'source':
                 decoderhandler.addTokenValue("operation", words[1])
                 if words[2] in compare:
                     decoderhandler.addTokenValue("compare", words[2])
                     decoderhandler.addTokenValue("port", words[3])
                 if words[2] == 'range':
                     decoderhandler.addTokenValue("end-port", words[4])
                 decoderhandler.addTokenValue(
                     "name",
                     Joiner.on(" ").join(block.getTokens()))
             elif words[1] in compare:
                 decoderhandler.addTokenValue("compare", words[1])
                 decoderhandler.addTokenValue("port", words[2])
                 if words[1] == 'range':
                     decoderhandler.addTokenValue("end-port", words[3])
                 decoderhandler.addTokenValue(
                     "name",
                     Joiner.on(" ").join(block.getTokens()))
             else:
                 if words[0] == 'group-object':
                     decoderhandler.addTokenValue("group-object", words[1])
                 else:
                     decoderhandler.addTokenValue("port", words[1])
                     decoderhandler.addTokenValue(
                         "name",
                         Joiner.on(" ").join(block.getTokens()))
 def processAccessList(self, cpc, dc, context, block):
     util.log_debug('ObjectGroupVariableDecoder: processAccessList')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     cursor = util.TokenCursor(block.getTokens(), 1, None)
     objectType = ''
     objectName = ''
     objectType = cursor.getNextToken()
     cursor.advance()
     objectName = cursor.getNextToken()
     decoderhandler.addTokenValue("../../type", objectType)
     decoderhandler.addTokenValue("../../name", objectName)
Ejemplo n.º 21
0
 def decodeToken(self, dc):
     try:
         util.log_info('EfpServiceInstanceTokenDecoder: Decoding variable')
         decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
         util.log_debug("Block is : ", decoderhandler.getCurrentBlock())
         tokenText = decoderhandler.getTokenText()
         util.log_debug("Text :", tokenText)
         tokenValue = decoderhandler.getValueAtCurrentIndex()
         util.log_debug("Value :", tokenValue)
         decoderhandler.addTokenValue(tokenText, tokenValue)
         current_block = decoderhandler.getCurrentBlock().toString()
         block_tokens = str(current_block).split(" ")
         util.log_debug("Block_Tokens : ", block_tokens)
         command_block = []
         for cmds in block_tokens:
             command_block.append(cmds.strip("\n"))
         util.log_debug("command_block : ", command_block)
         if 'trunk' in command_block:
             decoderhandler.addTokenValue("$trunk", "true")
         else:
             decoderhandler.addTokenValue("$trunk", "false")
         if 'symmetric' in command_block:
             decoderhandler.addTokenValue("$symmetric", "true")
         else:
             decoderhandler.addTokenValue("$symmetric", "false")
         if "encapsulation" in block_tokens:
             i = command_block.index("encapsulation")
             encap_type_list = [
                 'default', 'dot1ad', 'dot1q', 'priority-tagged', 'untagged'
             ]
             encap_type = command_block[i + 1]
             if encap_type in encap_type_list:
                 decoderhandler.addTokenValue("$encapsulation-type",
                                              encap_type)
             if 'add' in command_block:
                 vlanid = command_block[i + 3]
                 decoderhandler.addTokenValue("$vlan-id", vlanid)
             else:
                 vlanid = command_block[i + 2]
                 decoderhandler.addTokenValue("$vlan-id", vlanid)
         if "description" in block_tokens:
             description_tokens = [
                 cmds.strip() for cmds in str(current_block).split("\n")
             ]
             desc_pattern = '^description'
             for i in range(len(description_tokens)):
                 if re.search(desc_pattern, description_tokens[i]):
                     desc_token = description_tokens[i].split("description")
                     desc_block = desc_token[1].strip()
                     decoderhandler.addTokenValue("$description",
                                                  desc_block)
     except Exception:
         traceback.print_exc()
Ejemplo n.º 22
0
 def parseInterfaceName(self, dc, cursor):
     util.log_debug('CiscoStaticRouterVariableDecoder: parseInterfaceName')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if not InetAddressUtils.isIPv4Address(cursor.getNextToken()):
         util.log_debug(
             'CiscoStaticRouterVariableDecoder(parseInterfaceName): interface-name next token is = %s'
             % (cursor.getNextToken()))
         decoderhandler.addTokenValue("interface-name",
                                      cursor.getNextToken())
         cursor.advance()
Ejemplo n.º 23
0
 def parseLogging(self, dc, cursor):
     util.log_debug(
         'VtyVariableDecoder: Logging synchronous enabled or not')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "logging" == cursor.getNextToken():
         cursor.advance()
         if "synchronous" == cursor.getNextToken():
             decoderhandler.addTokenValue("logging-synchronous", "true")
     else:
         return
Ejemplo n.º 24
0
 def parseTimeOut(self, dc, cursor):
     util.log_debug(
         'VtyVariableDecoder: TimeOut will parse the time out no.')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "exec-timeout" == cursor.getNextToken():
         cursor.advance()
         decoderhandler.addTokenValue("timeout", cursor.getNextToken())
         cursor.advance()
     else:
         return
Ejemplo n.º 25
0
 def parseVrf(self, dc, cursor):
     util.log_debug('NewVrfRouteVariableDecoder: parseVrf')
     decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
     if not cursor.hasNext():
         return
     if "vrf" == cursor.getNextToken():
         cursor.advance()
         if not InetAddressUtils.isIPv4Address(cursor.getNextToken()):
             decoderhandler.addTokenValue("../../../name",
                                          cursor.getNextToken())
             decoderhandler.addTokenValue("vrf-name", cursor.getNextToken())
             cursor.advance()
Ejemplo n.º 26
0
    def decodeToken(self, dc):
        try:
            util.log_info('TrackBooleanTokenDecoder: ')
            decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
            tokenText = decoderhandler.getTokenText()
            util.log_debug('Token text = %s' % (tokenText))
            value = decoderhandler.getValueAtCurrentIndex()
            util.log_debug('Value = %s' % (value))
            if value == 'or' or value == 'and':
                decoderhandler.addTokenValue(tokenText, value)

        except Exception:
            traceback.print_exc()
Ejemplo n.º 27
0
 def decodeToken(self, dc):
     try:
         util.log_info('MplsPriorityTokenDecoder: Decode token')
         decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
         token = dc.getToken()
         value = decoderhandler.getValueAtCurrentIndex()
         util.log_debug('Value = %s' %(value))
         if int(value) >= 0 and int(value) <= 7:
             dc.addTokenValue(token.getText(), value)
         else:
             return 1
     except Exception:
         traceback.print_exc()
Ejemplo n.º 28
0
 def getEndIndex(self, curIdx, tokens):
     try:
         end = 0
         if self.limit <= 0:
             util.log_debug('Tokens size under getEndIndex is %s' %
                            tokens.size())
             end = tokens.size()
         else:
             end = curIdx + self.limit
         util.log_debug('End val under getEndIndex is %s' % end)
         return end
     except Exception:
         traceback.print_exc()
    def decodeToken(self, dc):
        try:
            util.log_info('PlatformConfigTypeTokenDecoder: Decode token')
            decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
            config = decoderhandler.getValueAtCurrentIndex()
            util.log_debug('Configure = %s' % (config))
            decoderhandler.addTokenValue("configure", config)
            block = decoderhandler.getCurrentBlock()
            lines = block.toString().split("\n")[0].strip(' ')
            decoderhandler.addTokenValue("id", lines)

        except Exception:
            traceback.print_exc()
Ejemplo n.º 30
0
    def decodeToken(self, dc):
        try:
            util.log_info('TrackIpTokenDecoder: ')
            decoderhandler = tokendecoderhandler.TokenDecoderHandler(dc)
            tokenText = decoderhandler.getTokenText()
            util.log_debug('Token text = %s' % (tokenText))
            value = decoderhandler.getValueAtCurrentIndex()
            util.log_debug('Value = %s' % (value))
            if value is not None and InetAddressUtils.isIPv4Address(value):
                decoderhandler.addTokenValue(tokenText, value)

        except Exception:
            traceback.print_exc()