Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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')
Exemplo n.º 8
0
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')