Example #1
0
    def __init__(self, args):
        arguments = ArgumentParser(prog="bna")
        arguments.add_argument("-u",
                               "--update",
                               action="store_true",
                               dest="update",
                               help="update token every time")
        arguments.add_argument("-n",
                               "--new",
                               action="store_true",
                               dest="new",
                               help="request a new authenticator")
        arguments.add_argument("-r",
                               "--region",
                               type=str,
                               dest="region",
                               default="US",
                               help="desired region for new authenticators")
        arguments.add_argument(
            "--set-default",
            action="store_true",
            dest="setdefault",
            help=
            "set authenticator as default (also works when requesting a new authenticator)"
        )
        arguments.add_argument("serial", nargs="?")
        args = arguments.parse_args(args)

        self.config = ConfigParser()
        self.config.read([os.path.join(self.getConfigDir(), "bna.conf")])

        # Are we requesting a new authenticator?
        if args.new:
            self.queryNewAuthenticator(args)
            exit()

        if not args.serial:
            serial = self.getDefaultSerial()
            if serial is None:
                self.error("You must provide an authenticator serial")
        else:
            serial = args.serial
        serial = bna.normalizeSerial(serial)

        # Are we setting a serial as default?
        if args.setdefault:
            self.setDefaultSerial(serial)

        # Get the secret from the keyring
        secret = self.getSecret(serial)
        if secret is None:  # No such serial
            self.error("%r: No such serial" % (serial))

        # And print the token
        if args.update:
            self.runLive(secret)

        else:
            token, timeRemaining = bna.getToken(secret=unhexlify(secret))
            print(token)
Example #2
0
    def queryNewAuthenticator(self, args):
        try:
            reply = bna.requestNewSerial(args.region)
        except bna.HTTPError as e:
            self.error("Could not connect: %s" % (e))

        serial = bna.normalizeSerial(reply["serial"])
        secret = hexlify(reply["secret"])

        self.setSecret(serial, secret)

        # We set the serial as default if we don't have one set already
        # Otherwise, we check for --set-default
        if args.setdefault or not self.getDefaultSerial():
            self.setDefaultSerial(serial)

        msg = "Success. Your new serial is: %s" % (reply["serial"])
        print(msg)
Example #3
0
	def queryNewAuthenticator(self, args):
		try:
			reply = bna.requestNewSerial(args.region)
		except bna.HTTPError as e:
			self.error("Could not connect: %s" % (e))
		
		serial = bna.normalizeSerial(reply["serial"])
		secret = hexlify(reply["secret"])
		
		self.setSecret(serial, secret)
		
		# We set the serial as default if we don't have one set already
		# Otherwise, we check for --set-default
		if args.setdefault or not self.getDefaultSerial():
			self.setDefaultSerial(serial)
		
		msg = "Success. Your new serial is: %s" % (reply["serial"])
		print(msg)
Example #4
0
	def __init__(self, args):
		arguments = ArgumentParser(prog="bna")
		arguments.add_argument("-u", "--update", action="store_true", dest="update", help="update token every time")
		arguments.add_argument("-n", "--new", action="store_true", dest="new", help="request a new authenticator")
		arguments.add_argument("-r", "--region", type=str, dest="region", default="US", help="desired region for new authenticators")
		arguments.add_argument("--set-default", action="store_true", dest="setdefault", help="set authenticator as default (also works when requesting a new authenticator)")
		arguments.add_argument("serial", nargs="?")
		args = arguments.parse_args(args)
		
		self.config = ConfigParser()
		self.config.read([os.path.join(self.getConfigDir(), "bna.conf")])
		
		# Are we requesting a new authenticator?
		if args.new:
			self.queryNewAuthenticator(args)
			exit()
		
		if not args.serial:
			serial = self.getDefaultSerial()
			if serial is None:
				self.error("You must provide an authenticator serial")
		else:
			serial = args.serial
		serial = bna.normalizeSerial(serial)
		
		# Are we setting a serial as default?
		if args.setdefault:
			self.setDefaultSerial(serial)
		
		# Get the secret from the keyring
		secret = self.getSecret(serial)
		if secret is None: # No such serial
			self.error("%r: No such serial" % (serial))
		
		# And print the token
		if args.update:
			self.runLive(secret)
		
		else:
			token, timeRemaining = bna.getToken(secret=unhexlify(secret))
			print(token)