include command to create a user
This commit is contained in:
@ -1,2 +1,22 @@
|
||||
from owrx.version import openwebrx_version
|
||||
from owrxadmin.commands import NewUserCommand
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
print("OpenWebRX admin")
|
||||
print("OpenWebRX admin version {version}".format(version=openwebrx_version))
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("command", help="One of the following commands: adduser, removeuser")
|
||||
parser.add_argument("--noninteractive", action="store_true", help="Don't ask for any user input (useful for automation)")
|
||||
parser.add_argument("-u", "--user")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == "adduser":
|
||||
NewUserCommand().run(args)
|
||||
elif args.command == "removeuser":
|
||||
print("removing user")
|
||||
else:
|
||||
print("Unknown command: {command}".format(command=args.command))
|
||||
sys.exit(1)
|
||||
|
46
owrxadmin/commands.py
Normal file
46
owrxadmin/commands.py
Normal file
@ -0,0 +1,46 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from getpass import getpass
|
||||
from owrx.users import UserList, User, CleartextPassword
|
||||
import sys
|
||||
import random
|
||||
import string
|
||||
|
||||
|
||||
class Command(ABC):
|
||||
@abstractmethod
|
||||
def run(self, args):
|
||||
pass
|
||||
|
||||
|
||||
class NewUserCommand(Command):
|
||||
def run(self, args):
|
||||
if args.user:
|
||||
username = args.user
|
||||
else:
|
||||
if args.noninteractive:
|
||||
print("ERROR: User name not specified")
|
||||
sys.exit(1)
|
||||
else:
|
||||
username = input("Please enter the user name: ")
|
||||
if args.noninteractive:
|
||||
print("Generating password for user {username}...".format(username=username))
|
||||
password = self.getRandomPassword()
|
||||
print('Password for {username} is "{password}".'.format(username=username, password=password))
|
||||
# TODO implement this threat
|
||||
print('This password is suitable for initial setup only, you will be asked to reset it on initial use.')
|
||||
print('This password cannot be recovered from the system, please note it down now.')
|
||||
else:
|
||||
password = getpass("Please enter the password for {username}: ".format(username=username))
|
||||
confirm = getpass("Please confirm password: ")
|
||||
if password != confirm:
|
||||
print("ERROR: Password mismatch.")
|
||||
sys.exit(1)
|
||||
|
||||
print("Creating user {username}...".format(username=username))
|
||||
userList = UserList()
|
||||
user = User(name=username, enabled=True, password=CleartextPassword(password))
|
||||
userList.addUser(user)
|
||||
|
||||
def getRandomPassword(self, length=10):
|
||||
printable = list(string.ascii_letters) + list(string.digits)
|
||||
return ''.join(random.choices(printable, k=length))
|
Reference in New Issue
Block a user