import sys
import requests
import ssl
import json
import warnings
import urllib3.exceptions

warnings.simplefilter('ignore', urllib3.exceptions.InsecureRequestWarning)

count = len(sys.argv)
if count <= 4:
   print 
   print 
   print ("SYNTAX: url domain username password [password-pattern]")
   exit()

base_url     = sys.argv[1]
domain       = sys.argv[2]
username     = sys.argv[3]
password     = sys.argv[4]
if count > 5:
  pswd_ptrn    = sys.argv[5]
else:
  pswd_ptrn    = 'CVCVdddCVCCVdC'

print ()
print ("url          = ", base_url)
print ("domain       = ", domain)
print ("username     = ", username)
print ("password     = ", password)
print ("pswd-pattern = ", pswd_ptrn)
print ()

session = requests.Session()

headers = {"Accept" : 'application/json' }

if domain != "":
    login =  domain + '\\' + username
    params = {
        "domain" : domain,   
        "login" : login,   
        "username" : username,   
        "password" : password,
    }
else:
    login = username
    params = {
        "login" : login,   
        "password" : password,
    }


url = base_url + '/api/login'

response = session.post(url, data=params, headers=headers, verify=False)

#print(response)
s = str(response)

if s.lower() != '<response [200]>':
    data = response.json()
    result = data["msg"]
    for rep in result:
        msg = rep['severity']
        if msg == 'ERROR':
            print('\n\n ERROR: ', rep['message'])

        exit()

url = base_url + '/safe/generate-password/' + pswd_ptrn
response = session.get(url, headers=headers, verify=False)

data = response.json()
result = data["password"]

print('new password = "' + result + '"')
