def install_waptserver_service(options, conf=None): if conf is None: conf = waptserver.config.load_config(options.configfile) print("install waptserver") service_binary = os.path.abspath( os.path.join(wapt_root_dir, 'waptpython.exe')) service_parameters = '"%s"' % os.path.join(wapt_root_dir, 'waptserver', 'server.py') service_logfile = os.path.join(log_directory, 'nssm_waptserver.log') service_dependencies = 'WAPTPostgresql' install_windows_nssm_service('WAPTServer', service_binary, service_parameters, service_logfile, service_dependencies) tasks_db = os.path.join(wapt_root_dir, 'db') mkdir_p(tasks_db) setuphelpers.run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % tasks_db) if not conf.get('secret_key'): conf['secret_key'] = ''.join( random.SystemRandom().choice(string.letters + string.digits) for _ in range(64)) waptserver.config.write_config_file(options.configfile, conf) if options.setpassword: conf['wapt_password'] = pbkdf2_sha256.hash( base64.b64decode(options.setpassword).encode('utf8')) waptserver.config.write_config_file(options.configfile, conf) # ensure Packages index repo = WaptLocalRepo(conf['wapt_folder']) repo.update_packages_index()
def install_nginx_service(options, conf=None): if conf is None: conf = waptserver.config.load_config(options.configfile) print("register nginx frontend") repository_path = os.path.join(wapt_root_dir, 'waptserver', 'repository') for repo_path in ('wapt', 'wapt-host', 'waptwua'): mkdir_p(os.path.join(repository_path, repo_path)) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(repository_path, repo_path)) mkdir_p(os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'temp')) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % (os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'temp'))) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'logs')) make_nginx_config(wapt_root_dir, conf['wapt_folder'], force=options.force) service_binary = os.path.abspath( os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'nginx.exe')) service_parameters = '' service_logfile = os.path.join(log_directory, 'nssm_nginx.log') service_name = 'WAPTNginx' if setuphelpers.service_installed( service_name) and setuphelpers.service_is_running(service_name): setuphelpers.service_stop(service_name) #print('Register "%s" in registry' % service_name) install_windows_nssm_service(service_name, service_binary, service_parameters, service_logfile) time.sleep(5) if setuphelpers.service_installed( service_name ) and not setuphelpers.service_is_running(service_name): setuphelpers.service_start(service_name)
def migrate_pg_db(old_pgsql_root_dir, old_pgsql_data_dir, pgsql_root_dir, pgsql_data_dir): # try: cwd = os.getcwd() tmpdir = os.path.join(cwd, 'temp') mkdir_p(tmpdir) os.chdir(tmpdir) setuphelpers.run(r'icacls "%s" /t /grant "*S-1-1-0":(OI)(CI)(M)' % tmpdir) old_pgsql_root_dir = old_pgsql_root_dir.replace('\\', '/') old_pgsql_data_dir = old_pgsql_data_dir.replace('\\', '/') pgsql_root_dir = pgsql_root_dir.replace('\\', '/') pgsql_data_dir = pgsql_data_dir.replace('\\', '/') cmd = r'"{pgsql_root_dir}/bin/pg_upgrade.exe" -U postgres --old-datadir "{old_pgsql_data_dir}" --new-datadir "{pgsql_data_dir}" --old-bindir "{old_pgsql_root_dir}/bin" --new-bindir "{pgsql_root_dir}/bin"'.format( **locals()) print('Running %s' % cmd) print(run(cmd, cwd=tmpdir)) os.rename(old_pgsql_root_dir, old_pgsql_root_dir + '.old') os.rename(old_pgsql_data_dir, old_pgsql_data_dir + '.old') return True except Exception as e: print('Unable to migrate database : %s' % ensure_unicode(e)) return False finally: os.chdir(cwd)
def migrate_pg_db(old_pgsql_root_dir,old_pgsql_data_dir,pgsql_root_dir,pgsql_data_dir): # try: cwd = os.getcwd() tmpdir = os.path.join(cwd,'temp') mkdir_p(tmpdir) os.chdir(tmpdir) setuphelpers.run(r'icacls "%s" /t /grant "*S-1-1-0":(OI)(CI)(M)' % tmpdir) old_pgsql_root_dir = old_pgsql_root_dir.replace('\\','/') old_pgsql_data_dir = old_pgsql_data_dir.replace('\\','/') pgsql_root_dir = pgsql_root_dir.replace('\\','/') pgsql_data_dir = pgsql_data_dir.replace('\\','/') cmd = r'"{pgsql_root_dir}/bin/pg_upgrade.exe" -U postgres --old-datadir "{old_pgsql_data_dir}" --new-datadir "{pgsql_data_dir}" --old-bindir "{old_pgsql_root_dir}/bin" --new-bindir "{pgsql_root_dir}/bin"'.format(**locals()) print('Running %s' % cmd) print(run(cmd,cwd=tmpdir)) os.rename(old_pgsql_root_dir,old_pgsql_root_dir+'.old') os.rename(old_pgsql_data_dir,old_pgsql_data_dir+'.old') return True except Exception as e: print('Unable to migrate database : %s' % ensure_unicode(e)) return False finally: os.chdir(cwd)
def install_nginx_service(options,conf=None): if conf is None: conf = waptserver.config.load_config(options.configfile) print("register nginx frontend") repository_path = os.path.join(wapt_root_dir,'waptserver','repository') for repo_path in ('wapt','wapt-host','waptwua'): mkdir_p(os.path.join(repository_path,repo_path)) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(repository_path,repo_path)) mkdir_p(os.path.join(wapt_root_dir,'waptserver','nginx','temp')) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % (os.path.join(wapt_root_dir,'waptserver','nginx','temp'))) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(wapt_root_dir,'waptserver','nginx','logs')) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(wapt_root_dir,'log')) make_nginx_config(wapt_root_dir, conf['wapt_folder'],force=options.force) service_binary = os.path.abspath(os.path.join(wapt_root_dir,'waptserver','nginx','nginx.exe')) service_parameters = '' service_logfile = os.path.join(log_directory, 'nssm_nginx.log') service_name = 'WAPTNginx' if setuphelpers.service_installed(service_name) and setuphelpers.service_is_running(service_name): setuphelpers.service_stop(service_name) #print('Register "%s" in registry' % service_name) install_windows_nssm_service(service_name,service_binary,service_parameters,service_logfile) time.sleep(5) if setuphelpers.service_installed(service_name) and not setuphelpers.service_is_running(service_name): setuphelpers.service_start(service_name)
def install_nginx_service(): print("register nginx frontend") repository_path = os.path.join(wapt_root_dir, 'waptserver', 'repository') for repo_path in ('wapt', 'wapt-host', 'wapt-hostref'): mkdir_p(os.path.join(repository_path, repo_path)) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(repository_path, repo_path)) mkdir_p(os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'temp')) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % (os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'temp'))) run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'logs')) make_nginx_config(wapt_root_dir, conf['wapt_folder']) service_binary = os.path.abspath( os.path.join(wapt_root_dir, 'waptserver', 'nginx', 'nginx.exe')) service_parameters = '' service_logfile = os.path.join(log_directory, 'nssm_nginx.log') service_name = 'WAPTNginx' #print('Register "%s" in registry' % service_name) install_windows_nssm_service(service_name, service_binary, service_parameters, service_logfile) time.sleep(5)
def install_waptserver_service(options,conf=None): if setuphelpers.service_installed('WAPTServer'): if setuphelpers.service_is_running('WAPTServer'): setuphelpers.service_stop('WAPTServer') setuphelpers.service_delete('WAPTServer') if conf is None: conf = waptserver.config.load_config(options.configfile) conf_dir = os.path.join(wapt_root_dir,'conf') if not os.path.isdir(conf_dir): os.makedirs(conf_dir) run(r'icacls "%s" /t /grant "*S-1-5-20":(OI)(CI)(M)' % conf_dir) print("install waptserver") service_binary = os.path.abspath(os.path.join(wapt_root_dir,'waptpython.exe')) service_parameters = '"%s"' % os.path.join(wapt_root_dir,'waptserver','server.py') service_logfile = os.path.join(log_directory, 'nssm_waptserver.log') service_dependencies = 'WAPTPostgresql' install_windows_nssm_service('WAPTServer',service_binary,service_parameters,service_logfile,service_dependencies) tasks_db = os.path.join(wapt_root_dir,'db') mkdir_p(tasks_db) setuphelpers.run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % tasks_db) if not conf.get('secret_key'): conf['secret_key'] = ''.join(random.SystemRandom().choice(string.letters + string.digits) for _ in range(64)) waptserver.config.write_config_file(options.configfile,conf) if options.setpassword: conf['wapt_password'] = pbkdf2_sha256.hash(base64.b64decode(options.setpassword).encode('utf8')) waptserver.config.write_config_file(options.configfile,conf) clients_signing_certificate = conf.get('clients_signing_certificate') clients_signing_key = conf.get('clients_signing_key') if not clients_signing_certificate or not clients_signing_key: clients_signing_certificate = os.path.join(wapt_root_dir,'conf','ca-%s.crt' % fqdn()) clients_signing_key = os.path.join(wapt_root_dir,'conf','ca-%s.pem' % fqdn()) conf['clients_signing_certificate'] = clients_signing_certificate conf['clients_signing_key'] = clients_signing_key waptserver.config.write_config_file(options.configfile,conf) if clients_signing_certificate is not None and clients_signing_key is not None and not os.path.isfile(clients_signing_certificate): print('Create a certificate and key for clients certificate signing') key = SSLPrivateKey(clients_signing_key) if not os.path.isfile(clients_signing_key): print('Create SSL RSA Key %s' % clients_signing_key) key.create() key.save_as_pem() crt = key.build_sign_certificate(cn=fqdn(),is_code_signing=False,is_ca=True) print('Create X509 cert %s' % clients_signing_certificate) crt.save_as_pem(clients_signing_certificate) # ensure Packages index repo = WaptLocalRepo(conf['wapt_folder']) repo.update_packages_index() if setuphelpers.service_installed('WAPTServer'): if not setuphelpers.service_is_running('WAPTServer'): setuphelpers.service_start('WAPTServer')
def install_waptserver_service(options,conf=None): if setuphelpers.service_installed('WAPTServer'): if setuphelpers.service_is_running('WAPTServer'): setuphelpers.service_stop('WAPTServer') setuphelpers.service_delete('WAPTServer') if conf is None: conf = waptserver.config.load_config(options.configfile) conf_dir = os.path.join(wapt_root_dir,'conf') if not os.path.isdir(conf_dir): os.makedirs(conf_dir) run(r'icacls "%s" /t /grant "*S-1-5-20":(OI)(CI)(M)' % conf_dir) if not conf.get('server_uuid'): conf['server_uuid'] = str(uuid.uuid1()) waptserver.config.write_config_file(options.configfile,conf) print("install waptserver") service_binary = os.path.abspath(os.path.join(wapt_root_dir,'waptpython.exe')) service_parameters = '"%s"' % os.path.join(wapt_root_dir,'waptserver','server.py') service_logfile = os.path.join(log_directory, 'nssm_waptserver.log') service_dependencies = 'WAPTPostgresql' install_windows_nssm_service('WAPTServer',service_binary,service_parameters,service_logfile,service_dependencies) tasks_db = os.path.join(wapt_root_dir,'db') mkdir_p(tasks_db) setuphelpers.run(r'icacls "%s" /grant "*S-1-5-20":(OI)(CI)(M)' % tasks_db) if not conf.get('secret_key'): conf['secret_key'] = ''.join(random.SystemRandom().choice(string.letters + string.digits) for _ in range(64)) waptserver.config.write_config_file(options.configfile,conf) if options.setpassword: conf['wapt_password'] = pbkdf2_sha256.hash(base64.b64decode(options.setpassword).encode('utf8')) waptserver.config.write_config_file(options.configfile,conf) clients_signing_certificate = conf.get('clients_signing_certificate') clients_signing_key = conf.get('clients_signing_key') if not clients_signing_certificate or not clients_signing_key: clients_signing_certificate = os.path.join(wapt_root_dir,'conf','ca-%s.crt' % fqdn()) clients_signing_key = os.path.join(wapt_root_dir,'conf','ca-%s.pem' % fqdn()) conf['clients_signing_certificate'] = clients_signing_certificate conf['clients_signing_key'] = clients_signing_key waptserver.config.write_config_file(options.configfile,conf) if clients_signing_certificate is not None and clients_signing_key is not None and not os.path.isfile(clients_signing_certificate): print('Create a certificate and key for clients certificate signing') key = SSLPrivateKey(clients_signing_key) if not os.path.isfile(clients_signing_key): print('Create SSL RSA Key %s' % clients_signing_key) key.create() key.save_as_pem() crt = key.build_sign_certificate(cn=fqdn(),is_code_signing=False,is_ca=True) print('Create X509 cert %s' % clients_signing_certificate) crt.save_as_pem(clients_signing_certificate) # ensure Packages index repo = WaptLocalRepo(conf['wapt_folder']) repo.update_packages_index() #Migrate file for new version waptwua wuafolder = conf['waptwua_folder'] for (root,dirs,files) in list(os.walk(wuafolder,topdown=False)): if root == os.path.join(wuafolder,'.stfolder'): continue for f in files: oldpath = os.path.join(root,f) newpath = os.path.join(wuafolder,f) if os.path.isfile(newpath): continue print('Move %s --> %s' % (oldpath,newpath)) os.rename(oldpath,newpath) for d in dirs: if d == '.stfolder': continue print('Delete folder %s' % os.path.join(root,d)) shutil.rmtree(os.path.join(root,d)) if setuphelpers.service_installed('WAPTServer'): if not setuphelpers.service_is_running('WAPTServer'): setuphelpers.service_start('WAPTServer')