コード例 #1
0
        $handle = popen("myproxy-logon -v -l {$proxyusername} -s {$escproxyserver} -S -o {$escfullproxyfile} >/dev/null 2>&1", 'w');
        fwrite($handle, $proxypassword);
        if (pclose($handle)) {
            @unlink($fullproxyfile);
            Portal_MySQL::real_query(<<<EOS
UPDATE `User` SET `proxy_server` = NULL, `proxy_username` = NULL, `proxy_password` = NULL
WHERE `user_dn_md5` = {$escuserdnmd5};
EOS
);
            continue;
        }
    }
    $topos = new Topos();
    $pools = $topos->getPools();
    foreach ($pools as $pool => $ntokens) {
        $poolURL = $topos->realmURL() . "pools/{$pool}";
        if (!preg_match('@^todo_for_vo_([-\\w.]+)/$@', $pool, $matches)) {
            Portal::debug("Strange pool URL {$poolURL}");
            continue;
        }
        $vo = $matches[1];
        putenv("X509_USER_PROXY={$fullproxyfile}");
        $vomsproxy = "{$TEMPNAM}.{$vo}.pem";
        $output = '';
        exec("voms-proxy-init -noregen -out {$vomsproxy} -voms {$vo} 2>&1", $output);
        if (!file_exists($vomsproxy)) {
            $output = implode("\n", $output);
            Portal::debug("VO {$vo} unknown, and/or user {$userdn} isn't in it!\n{$output}");
            exec("curl -k -X DELETE '{$poolURL}'");
            continue;
        }