diff --git a/pyfastogt/exe/request_fastogt_license_key_input b/pyfastogt/exe/request_fastogt_license_key_input new file mode 100755 index 0000000..1c724e6 --- /dev/null +++ b/pyfastogt/exe/request_fastogt_license_key_input @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +import subprocess +import sys +from datetime import datetime + +import requests + +from pyfastogt.utils import is_valid_email + +PROJECT_NAME = 'request_license' + +LICENSE_SERVER_URL = 'https://license.fastogt.com/v1/license' +EXP_DAYS = 30 + + +def print_usage(): + print("Usage:\n" + "[required] --email email_address (email for verification)\n" + "[required] --license_key hardware_license_key (license_gen output)\n" + "[required] --project project (Project for expire license)\n" + "[optional] --expired_days days (License lifetime in days)\n") + + +PROJECTS = ['fastocloud', 'fastocloud_pro', 'fastocloud_pro_ml', 'fastocloud_load_balance', 'fastocloud_epg'] + +if __name__ == "__main__": + project_line = 'Please select project number: \n' + for i, proj in enumerate(PROJECTS): + project_line += '{0} ({1})\n'.format(proj, i) + + while True: + email = input('Please input your email: ') + if not is_valid_email(email): + print("Error! Invalid email. Try again.") + continue + + try: + project_num = int(input(project_line)) + project = PROJECTS[project_num] + except ValueError: + print("Error! This is not a valid number. Try again.") + except IndexError: + print("Error! This is not a valid number. Try again.") + else: + break + + now = datetime.now() + expired_time = int(now.timestamp() + EXP_DAYS * 24 * 3600) * 1000 + license_key = subprocess.getoutput('license_gen') + + r = requests.post(url=LICENSE_SERVER_URL, + json={'email': email, 'license': license_key, 'project': project, 'exp_time': expired_time}) + + try: + response = r.json() + except: + response = {'error': 'Invalid response'} + + if r.status_code == 200 or r.status_code == 201: + print(response['exp_license']) + sys.exit(0) + + print('Request failed, status code: {0}, error: {1}'.format(r.status_code, response['error'])) + sys.exit(1)