Пример #1
0
def c14n_uri(uri):
    puri = list(urisup.uri_help_split(uri))
    puri[PATH] = os.path.abspath(puri[PATH])
    return uri_help_unsplit(tuple(puri))
Пример #2
0
def set_db_backends(args, options): # pylint: disable-msg=W0613
    """
    POST /set_db_backends
    """
    if 'xivo' not in args:
        raise HttpReqError(415, "missing option 'xivo'")
    else:
        xivodburi = list(urisup.uri_help_split(args['xivo']))

        if xivodburi[0] is None or xivodburi[0].lower() not in WIZARD_XIVO_DB_ENGINES:
            raise HttpReqError(415, "invalid option 'xivo'")
        else:
            xivodburi[0] = xivodburi[0].lower()

        if WIZARD_XIVO_DB_ENGINES[xivodburi[0]]:
            xivodbparams = WIZARD_XIVO_DB_ENGINES[xivodburi[0]]['params']
        else:
            xivodbparams = {}

        if xivodburi[3]:
            xivodbparams.update(dict(xivodburi[3]))

        if xivodbparams:
            xivodburi[3] = zip(xivodbparams.keys(), xivodbparams.values())
        else:
            xivodburi[3] = None

        args['xivo'] = urisup.uri_help_unsplit(xivodburi)

    if 'ql' not in args:
        args['ql'] = args['xivo']

    if 'ipbxengine' not in args:
        raise HttpReqError(415, "missing option 'ipbxengine'")
    elif args['ipbxengine'] not in WIZARD_IPBX_ENGINES:
        raise HttpReqError(415, "invalid ipbxengine: %r" % args['ipbxengine'])

    ipbxdbinfo = WIZARD_IPBX_ENGINES[args['ipbxengine']]['database']

    if 'ipbx' not in args:
        raise HttpReqError(415, "missing option 'ipbx'")
    else:
        ipbxdburi = list(urisup.uri_help_split(args['ipbx']))

        if ipbxdburi[0] is None or ipbxdburi[0].lower() not in ipbxdbinfo:
            raise HttpReqError(415, "invalid option 'ipbx'")
        else:
            ipbxdburi[0] = ipbxdburi[0].lower()

        if ipbxdbinfo[ipbxdburi[0]]['params']:
            ipbxdbparams = ipbxdbinfo[ipbxdburi[0]]['params']
        else:
            ipbxdbparams = {}

        if ipbxdburi[3]:
            ipbxdbparams.update(dict(ipbxdburi[3]))

        if ipbxdbparams:
            ipbxdburi[3] = zip(ipbxdbparams.keys(), ipbxdbparams.values())
        else:
            ipbxdburi[3] = None

        args['ipbx'] = urisup.uri_help_unsplit(ipbxdburi)

    if not WIZARDLOCK.acquire_read(Wdc['lock_timeout']):
        raise HttpReqError(503, "unable to take WIZARDLOCK for reading after %s seconds" % Wdc['lock_timeout'])

    try:
        connect = xivo_helpers.db_connect(args['xivo'])

        if not connect:
            raise HttpReqError(415, "unable to connect to 'xivo' database")

        connect = xivo_helpers.db_connect(args['ipbx'])

        if not connect:
            raise HttpReqError(415, "unable to connect to 'ipbx' database")

        merge_config_file(Wdc['agid_config_tpl_file'],
                          Wdc['agid_config_custom_tpl_file'],
                          Wdc['agid_config_file'],
                          {'db':
                                {'db_uri':  args['ipbx']}})

        merge_config_file(Wdc['provisioning_config_tpl_file'],
                          Wdc['provisioning_config_custom_tpl_file'],
                          Wdc['provisioning_config_file'],
                          {'general':
                                {'database_uri':    args['ipbx']}})

        merge_config_file(Wdc['webinterface_xivo_tpl_file'],
                          Wdc['webinterface_xivo_custom_tpl_file'],
                          Wdc['webinterface_xivo_file'],
                          {'general':
                                {'datastorage': '"%s"' % args['xivo']}})

        merge_config_file(Wdc['webinterface_cti_tpl_file'],
                          Wdc['webinterface_cti_custom_tpl_file'],
                          Wdc['webinterface_cti_file'],
                          {'general':
                                {'datastorage': '"%s"' % args['xivo']},
                           'queuelogger':
                                {'datastorage': '"%s"' % args['ql']},
			  })

        merge_config_file("%s.%s" % (Wdc['webinterface_ipbx_tpl_file'], args['ipbxengine']),
                          "%s.%s" % (Wdc['webinterface_ipbx_custom_tpl_file'], args['ipbxengine']),
                          Wdc['webinterface_ipbx_file'],
                          {'general':
                                {'datastorage': '"%s"' % args['ipbx']}})

        if args['ipbxengine'] == 'asterisk':
            asterisk_configuration(ipbxdburi, ipbxdbinfo[ipbxdburi[0]], ipbxdbparams)
    finally:
        WIZARDLOCK.release()