예제 #1
0
function OnAppvCD_ConfigOptions()
{
    $data = new stdClass();
    $data->errors = $data->warnings = new stdClass();
    $module = new OnAppvCDModule();
    $data->lang = $module->loadLang()->Admin;
    if (!file_exists(ONAPP_WRAPPER_INIT)) {
        $data->error = $data->lang->WrapperNotFound . ' ' . ROOTDIR . '/includes/wrapper';
        goto end;
    }
    $serverGroup = $GLOBALS['servergroup'];
    /** @var WHMCS_OnApp_Server[] $servers */
    $servers = Capsule::table('tblservers AS srv')->leftJoin('tblservergroupsrel AS rel', 'srv.id', '=', 'rel.serverid')->leftJoin('tblservergroups AS grp', 'grp.id', '=', 'rel.groupid')->where('srv.type', OnAppvCDModule::MODULE_NAME)->where('grp.id', $serverGroup)->where('srv.disabled', 0)->select('srv.id', 'srv.name', 'srv.ipaddress', 'srv.secure', 'srv.hostname', 'srv.username', 'srv.password')->get();
    if (empty($servers)) {
        $data->error = $data->lang->ServersNone;
    } else {
        $data->servers = new stdClass();
        foreach ($servers as $serverConfig) {
            # error if server IP or hostname are not set
            if (empty($serverConfig->ipaddress) && empty($serverConfig->hostname)) {
                $data->error .= $serverConfig->name . ': ' . $data->lang->HostAddressNotFound . PHP_EOL;
                continue;
            }
            $serverConfig->password = decrypt($serverConfig->password);
            $module = new OnAppvCDModule($serverConfig);
            //compare wrapper version with API
            $compareResult = $module->checkWrapperVersion();
            if (!$compareResult['status']) {
                $data->error = $data->lang->WrapperUpdate . ' (wrapper version: ' . $compareResult['wrapperVersion'] . '; ' . 'api version: ' . $compareResult['apiVersion'] . ')';
                goto end;
            }
            $data->servers->{$serverConfig->id} = $module->getData();
            $data->servers->{$serverConfig->id}->Name = $serverConfig->name;
        }
        if ($data->servers) {
            # get additional data
            $data->TimeZones = file_get_contents(__DIR__ . '/includes/php/tzs.json');
            $data->TimeZones = json_decode($data->TimeZones);
            $data->productOptions = initConfigOptionfromDB();
            if (!(empty($data->productOptions[1]) || empty($data->productOptions[24]))) {
                $data->productSettings = json_decode($data->productOptions[24])->{$data->productOptions[1]};
                $data->productSettingsJSON = htmlspecialchars($data->productOptions[24]);
            }
        }
    }
    end:
    return ['' => ['Description' => $module->buildHTML($data)]];
}