switch to subparsers
This commit is contained in:
parent
3f3f5eacfe
commit
ad0ca114f5
2
debian/openwebrx.postinst
vendored
2
debian/openwebrx.postinst
vendored
@ -14,7 +14,7 @@ case "$1" in
|
|||||||
chown "${OWRX_USER}". ${OWRX_DATADIR}
|
chown "${OWRX_USER}". ${OWRX_DATADIR}
|
||||||
|
|
||||||
# create initial openwebrx user
|
# create initial openwebrx user
|
||||||
openwebrx-admin adduser --noninteractive --silent --user admin
|
openwebrx-admin --noninteractive --silent adduser admin
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "postinst called with unknown argument '$1'" 1>&2
|
echo "postinst called with unknown argument '$1'" 1>&2
|
||||||
|
@ -9,34 +9,49 @@ logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(level
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
print("OpenWebRX admin version {version}".format(version=openwebrx_version))
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("command", help="""One of the following commands:
|
subparsers = parser.add_subparsers(title="Commands", dest="command")
|
||||||
adduser, removeuser, listusers, resetpassword, enableuser, disableuser""")
|
|
||||||
|
adduser_parser = subparsers.add_parser("adduser", help="Add a new user")
|
||||||
|
adduser_parser.add_argument("user", help="Username to be added")
|
||||||
|
adduser_parser.set_defaults(cls=NewUser)
|
||||||
|
|
||||||
|
removeuser_parser = subparsers.add_parser("removeuser", help="Remove an existing user")
|
||||||
|
removeuser_parser.add_argument("user", help="Username to be remvoed")
|
||||||
|
removeuser_parser.set_defaults(cls=DeleteUser)
|
||||||
|
|
||||||
|
resetpassword_parser = subparsers.add_parser("resetpassword", help="Reset a user's password")
|
||||||
|
resetpassword_parser.add_argument("user", help="Username to be remvoed")
|
||||||
|
resetpassword_parser.set_defaults(cls=ResetPassword)
|
||||||
|
|
||||||
|
listusers_parser = subparsers.add_parser("listusers", help="List enabled users")
|
||||||
|
listusers_parser.add_argument("-a", "--all", action="store_true", help="Show all users (including disabled ones)")
|
||||||
|
listusers_parser.set_defaults(cls=ListUsers)
|
||||||
|
|
||||||
|
disableuser_parser = subparsers.add_parser("disableuser", help="Disable a user")
|
||||||
|
disableuser_parser.add_argument("user", help="Username to be disabled")
|
||||||
|
disableuser_parser.set_defaults(cls=DisableUser)
|
||||||
|
|
||||||
|
enableuser_parser = subparsers.add_parser("enableuser", help="Enable a user")
|
||||||
|
enableuser_parser.add_argument("user", help="Username to be enabled")
|
||||||
|
enableuser_parser.set_defaults(cls=EnableUser)
|
||||||
|
|
||||||
|
parser.add_argument("-v", "--version", action="store_true", help="Show the software version")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--noninteractive", action="store_true", help="Don't ask for any user input (useful for automation)"
|
"--noninteractive", action="store_true", help="Don't ask for any user input (useful for automation)"
|
||||||
)
|
)
|
||||||
parser.add_argument("--silent", action="store_true", help="Ignore errors (useful for automation)")
|
parser.add_argument("--silent", action="store_true", help="Ignore errors (useful for automation)")
|
||||||
parser.add_argument("-u", "--user", help="User name to perform action upon")
|
|
||||||
parser.add_argument("-a", "--all", action="store_true", help="Show all users")
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if args.command == "adduser":
|
if args.version:
|
||||||
command = NewUser()
|
print("OpenWebRX Admin CLI version {version}".format(version=openwebrx_version))
|
||||||
elif args.command == "removeuser":
|
sys.exit(0)
|
||||||
command = DeleteUser()
|
|
||||||
elif args.command == "resetpassword":
|
if hasattr(args, "cls"):
|
||||||
command = ResetPassword()
|
command = args.cls()
|
||||||
elif args.command == "listusers":
|
|
||||||
command = ListUsers()
|
|
||||||
elif args.command == "disableuser":
|
|
||||||
command = DisableUser()
|
|
||||||
elif args.command == "enableuser":
|
|
||||||
command = EnableUser()
|
|
||||||
else:
|
else:
|
||||||
if not args.silent:
|
if not args.silent:
|
||||||
print("Unknown command: {command}".format(command=args.command))
|
parser.print_help()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
@ -13,16 +13,6 @@ class Command(ABC):
|
|||||||
|
|
||||||
|
|
||||||
class UserCommand(Command, metaclass=ABCMeta):
|
class UserCommand(Command, metaclass=ABCMeta):
|
||||||
def getUser(self, args):
|
|
||||||
if args.user:
|
|
||||||
return args.user
|
|
||||||
else:
|
|
||||||
if args.noninteractive:
|
|
||||||
print("ERROR: User name not specified")
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
return input("Please enter the user name: ")
|
|
||||||
|
|
||||||
def getPassword(self, args, username):
|
def getPassword(self, args, username):
|
||||||
if args.noninteractive:
|
if args.noninteractive:
|
||||||
print("Generating password for user {username}...".format(username=username))
|
print("Generating password for user {username}...".format(username=username))
|
||||||
@ -47,7 +37,7 @@ class UserCommand(Command, metaclass=ABCMeta):
|
|||||||
|
|
||||||
class NewUser(UserCommand):
|
class NewUser(UserCommand):
|
||||||
def run(self, args):
|
def run(self, args):
|
||||||
username = self.getUser(args)
|
username = args.user
|
||||||
userList = UserList()
|
userList = UserList()
|
||||||
# early test to bypass the password stuff if the user already exists
|
# early test to bypass the password stuff if the user already exists
|
||||||
if username in userList:
|
if username in userList:
|
||||||
@ -62,7 +52,7 @@ class NewUser(UserCommand):
|
|||||||
|
|
||||||
class DeleteUser(UserCommand):
|
class DeleteUser(UserCommand):
|
||||||
def run(self, args):
|
def run(self, args):
|
||||||
username = self.getUser(args)
|
username = args.user
|
||||||
print("Deleting user {username}...".format(username=username))
|
print("Deleting user {username}...".format(username=username))
|
||||||
userList = UserList()
|
userList = UserList()
|
||||||
userList.deleteUser(username)
|
userList.deleteUser(username)
|
||||||
@ -70,7 +60,7 @@ class DeleteUser(UserCommand):
|
|||||||
|
|
||||||
class ResetPassword(UserCommand):
|
class ResetPassword(UserCommand):
|
||||||
def run(self, args):
|
def run(self, args):
|
||||||
username = self.getUser(args)
|
username = args.user
|
||||||
password, generated = self.getPassword(args, username)
|
password, generated = self.getPassword(args, username)
|
||||||
userList = UserList()
|
userList = UserList()
|
||||||
userList[username].setPassword(DefaultPasswordClass(password), must_change_password=generated)
|
userList[username].setPassword(DefaultPasswordClass(password), must_change_password=generated)
|
||||||
@ -81,7 +71,7 @@ class ResetPassword(UserCommand):
|
|||||||
|
|
||||||
class DisableUser(UserCommand):
|
class DisableUser(UserCommand):
|
||||||
def run(self, args):
|
def run(self, args):
|
||||||
username = self.getUser(args)
|
username = args.user
|
||||||
userList = UserList()
|
userList = UserList()
|
||||||
userList[username].disable()
|
userList[username].disable()
|
||||||
userList.store()
|
userList.store()
|
||||||
@ -89,7 +79,7 @@ class DisableUser(UserCommand):
|
|||||||
|
|
||||||
class EnableUser(UserCommand):
|
class EnableUser(UserCommand):
|
||||||
def run(self, args):
|
def run(self, args):
|
||||||
username = self.getUser(args)
|
username = args.user
|
||||||
userList = UserList()
|
userList = UserList()
|
||||||
userList[username].enable()
|
userList[username].enable()
|
||||||
userList.store()
|
userList.store()
|
||||||
|
Loading…
Reference in New Issue
Block a user