Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
tvault-contego / home / tvault / .virtenv / bin / zvmsdk-gentoken
Size: Mime:
#!/home/tvault/.virtenv/bin/python
import getopt
import os
import random
import stat
import string
import sys


DEFAULT_TOKEN_PATH = '/etc/zvmsdk/token.dat'


def usage():
    print('Usage: zvmsdk-gentoken [-h] [-u] [token file path]')
    print('')
    print('Tool to Generate and Update Token')
    print('')
    print('Optional aruments:')
    print('    -h, --help\t\tshow this help message and exit')
    print('    -u, --update\tgenerate a random token and update into file')
    print('    \t\t\tif path not assigned, use default /etc/zvmsdk/token.dat.')


def random_token():
    # random token only include upper cases and digits
    token_random = ''.join(
            random.choice(string.ascii_uppercase +\
                          string.ascii_lowercase +\
                          string.digits)
            for _ in range(42))
    return token_random


def create_token_file(file_path):
    #if file not exits, create it
    if os.path.exists(file_path):
        print('Token File Already Existed!')
        print('')
        sys.exit(2)
    # create token file
    os.mknod(file_path)
    # generate random token
    token = random_token()
    # write token data
    with open(file_path, 'w') as fp:
        fp.write(token)
    # change file mode to 400
    os.chmod(file_path, stat.S_IRUSR|stat.S_IWUSR)


def update_token_file(file_path):
    #if file not exits, raise exception
    if not os.path.exists(file_path):
        print('Token File Not Exist!\n')
        print('')
        sys.exit(3)
    token = random_token()
    # write token data
    with open(file_path, 'w') as fp:
        fp.write(token)


def main(argv):
    try:
        opts, args = getopt.gnu_getopt(argv, 'hu', ["help", "update"])
        # if none arguments and options means initialization
        if opts == [] and args == []:
            create_token_file(DEFAULT_TOKEN_PATH)
            sys.exit(0)

        if args != [] and opts == []:
            create_token_file(args[0])
            sys.exit(0)

        # print help first and exit
        for o, a in opts:
            # print help message
            if o in ('-h', '--help'):
                usage()
                sys.exit(0)
        # process options
        for o, a in opts:
            # update token file
            if o in ('-u', '--update'):
                if args == []:
                    file_path = DEFAULT_TOKEN_PATH
                else:
                    file_path = args[0]
                update_token_file(file_path)
                msg = "token updated, please remeber" +\
                      "to update the token data on client side!"
                print msg
    except getopt.GetoptError:
        print('syntax ERROR!')
        usage()
        sys.exit(1)


# exist code:
# 0: success
# 1: sytax error
# 2: file not exist
# 3: file already existed
if "__main__" == __name__:
    main(sys.argv[1:])
    sys.exit(0)