sshpubkeys/keys.py
def parse_options(self, options):
        """Parses ssh options string."""
        quote_open = False
        parsed_options = {}

        def parse_add_single_option(opt):
            """Parses and validates a single option, and adds it to parsed_options field."""
            if "=" in opt:
                opt_name, opt_value = opt.split("=", 1)
                opt_value = opt_value.replace('"', '')
            else:
                opt_name = opt
                opt_value = True
            if " " in opt_name or not self.OPTION_NAME_RE.match(opt_name):
                raise InvalidOptionNameError("%s is not valid option name." % opt_name)
            if self.strict_mode:
                for valid_opt_name, value_required in self.OPTIONS_SPEC:
                    if opt_name.lower() == valid_opt_name:
                        if value_required and opt_value is True:
                            raise MissingMandatoryOptionValueError("%s is missing mandatory value." % opt_name)
                        break
                else:
                    raise UnknownOptionNameError("%s is unrecognized option name." % opt_name)
            if opt_name not in parsed_options:
                parsed_options[opt_name] = []
            parsed_options[opt_name].append(opt_value)

        start_of_current_opt = 0
        i = 1  # Need to be set for empty options strings
        for i, character in enumerate(options):
            if character == '"':  # only double quotes are allowed, no need to care about single quotes
                quote_open = not quote_open
            if quote_open:
                continue
            if character == ",":
                opt = options[start_of_current_opt:i]
                parse_add_single_option(opt)
                start_of_current_opt = i + 1
                # Data begins after the first space
        if start_of_current_opt + 1 != i:
            opt = options[start_of_current_opt:]
            parse_add_single_option(opt)
        if quote_open:
            raise InvalidOptionsError("Unbalanced quotes.")
        return parsed_options
def parse_options(self, options):
        """Parses ssh options string."""
        quote_open = False
        parsed_options = {}

        def parse_add_single_option(opt):
            """Parses and validates a single option, and adds it to parsed_options field."""
            if "=" in opt:
                opt_name, opt_value = opt.split("=", 1)
                opt_value = opt_value.replace('"', '')
            else:
                opt_name = opt
                opt_value = True
            if " " in opt_name or not self.OPTION_NAME_RE.match(opt_name):
                raise InvalidOptionNameError("%s is not valid option name." % opt_name)
            if self.strict_mode:
                for valid_opt_name, value_required in self.OPTIONS_SPEC:
                    if opt_name.lower() == valid_opt_name:
                        if value_required and opt_value is True:
                            raise MissingMandatoryOptionValueError("%s is missing mandatory value." % opt_name)
                        break
                else:
                    raise UnknownOptionNameError("%s is unrecognized option name." % opt_name)
            if opt_name not in parsed_options:
                parsed_options[opt_name] = []
            parsed_options[opt_name].append(opt_value)

        start_of_current_opt = 0
        i = 1  # Need to be set for empty options strings
        for i, character in enumerate(options):
            if character == '"':  # only double quotes are allowed, no need to care about single quotes
                quote_open = not quote_open
            if quote_open:
                continue
            if character == ",":
                opt = options[start_of_current_opt:i]
                parse_add_single_option(opt)
                start_of_current_opt = i + 1
                # Data begins after the first space
        if start_of_current_opt + 1 != i:
            opt = options[start_of_current_opt:]
            parse_add_single_option(opt)
        if quote_open:
            raise InvalidOptionsError("Unbalanced quotes.")
        return parsed_options
def parse_options ( self , options ) : quote_open = False parsed_options = { } def parse_add_single_option ( opt ) : """Parses and validates a single option, and adds it to parsed_options field.""" if "=" in opt : opt_name , opt_value = opt . split ( "=" , 1 ) opt_value = opt_value . replace ( '"' , '' ) else : opt_name = opt opt_value = True if " " in opt_name or not self . OPTION_NAME_RE . match ( opt_name ) : raise InvalidOptionNameError ( "%s is not valid option name." % opt_name ) if self . strict_mode : for valid_opt_name , value_required in self . OPTIONS_SPEC : if opt_name . lower ( ) == valid_opt_name : if value_required and opt_value is True : raise MissingMandatoryOptionValueError ( "%s is missing mandatory value." % opt_name ) break else : raise UnknownOptionNameError ( "%s is unrecognized option name." % opt_name ) if opt_name not in parsed_options : parsed_options [ opt_name ] = [ ] parsed_options [ opt_name ] . append ( opt_value ) start_of_current_opt = 0 i = 1 # Need to be set for empty options strings for i , character in enumerate ( options ) : if character == '"' : # only double quotes are allowed, no need to care about single quotes quote_open = not quote_open if quote_open : continue if character == "," : opt = options [ start_of_current_opt : i ] parse_add_single_option ( opt ) start_of_current_opt = i + 1 # Data begins after the first space if start_of_current_opt + 1 != i : opt = options [ start_of_current_opt : ] parse_add_single_option ( opt ) if quote_open : raise InvalidOptionsError ( "Unbalanced quotes." ) return parsed_options
Parses ssh options string.
Parses ssh options string .