D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
cpguard
/
app
/
scripts
/
Filename :
enhance_user_list.php
back
Copy
#!/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"); } }