['pipe','r'], // stdin (unused) 1 => ['pipe','w'], // stdout -> texte déchiffré 2 => ['pipe','w'], // stderr -> erreurs OpenSSL ]; $proc = proc_open($cmd, $spec, $pipes); if (!is_resource($proc)) { error_log('proc_open failed'); return null; } fclose($pipes[0]); // rien à envoyer en stdin $stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]); $code = proc_close($proc); if ($code !== 0) { error_log("OpenSSL failed (code $code): $stderr"); return null; } return $stdout; } function PostJson($url, $content){ $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $content); $retour = curl_exec($curl); curl_close($curl); return $retour; } //invoke// function Invoke_Infra($request) { error_reporting(E_ALL ^ E_WARNING); $user = "INFRA_dbo"; $pwd = decypher("infra"); $server = "DUN-PRD-R1MSSQL.armony.net\PRD"; $database = "INFRA"; $conn = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;", $user, $pwd); if (!($conn)) { echo "Pas de connexion"; } $rs = odbc_exec($conn, $request); if (str_contains(strtoupper($request), "SELECT")) { while ($row = odbc_fetch_array($rs)) { $answer[] = $row; } } if (isset($answer)) { return $answer; } else { if ($rs) { return "OK"; } else { error_reporting(E_ALL); return "ERROR : " . odbc_errormsg($conn); } } } function Invoke_WebSelfInfra($request) { $user = "Scom-Write"; $pwd = decypher("web-self-infra"); $server = "DUN-PRD-R1SCOM.armony.net\OPS"; $database = "web-self-infra"; $conn = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;", $user, $pwd); if (!($conn)) { echo "Pas de connexion"; } $rs = odbc_exec($conn, $request); if (str_contains(strtoupper($request), "SELECT")) { while ($row = odbc_fetch_array($rs)) { $answer[] = $row; } } return $answer ?? null; } function Invoke_WebInfraReports($request) { $user = "admin"; $pwd = decypher("web-infra-reports"); $server = "dun-sup-s2entry.armony.net:3306"; $database = "web-infra-reports"; $conn = new mysqli($server, $user, $pwd, $database); $rs = $conn->query($request); while ($row = mysqli_fetch_array($rs)) { $answer[] = $row; } return $answer ?? null; } function Invoke_SCOMInfra($request) { $user = "Scom-Write"; $pwd = decypher("ScomInfra"); $server = "DUN-PRD-R1SCOM.armony.net\OPS"; $database = "infra"; $conn = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;", $user, $pwd); if (!($conn)) { echo "Pas de connexion"; } $rs = odbc_exec($conn, $request); if (str_contains(strtoupper($request), "SELECT")) { while ($row = odbc_fetch_array($rs)) { $answer[] = $row; } } return $answer ?? null; } function Invoke_Entry01($request) { $user = "infra"; $pwd = decypher("entry01"); $server = "dun-sup-entry01:3306"; $database = "infra"; $conn = new mysqli($server, $user, $pwd, $database); $rs = $conn->query($request); while ($row = mysqli_fetch_array($rs)) { $answer[] = $row; } return $answer ?? null; } function Invoke_WebInfraTools($request) { $user = "admin"; $pwd = decypher("web-infra-tools"); $server = "dun-sup-s2entry.armony.net:3306"; $database = "webinfratools"; $conn = new mysqli($server, $user, $pwd, $database); $rs = $conn->query($request); while ($row = mysqli_fetch_array($rs)) { $answer[] = $row; } return $answer ?? null; } function Invoke_GLPI($request) { $user="glpi_lect_seule"; $pwd=decypher("glpi"); $server="mys_glpi_prod.appliarmony.net"; $database="glpi"; $conn = new mysqli($server, $user, $pwd, $database); $rs = $conn->query($request); while ($row = mysqli_fetch_array($rs)) { $answer[] = $row; } return $answer ?? null; } function Invoke_aixcmdb($request) { $conn_string = "DRIVER={IBM DB2 ODBC DRIVER - F_DB2_clidriver};" . "DATABASE=AIXCMDB; " . "HOSTNAME=db2_aixcmdb.appliarmony.net;" . "PORT=50000; " . "PROTOCOL=TCPIP; " . "UID=aixcmdb;" . "AUTHENTICATION=SERVER;" . "PWD=".decypher('aixcmdb').";"; $conn = odbc_connect($conn_string, "", ""); if (!$conn) { $error_message = "ODBC Connect Error: " . odbc_errormsg() . " (" . odbc_error() . ")"; echo "Pas de connexion : " . $error_message . "
"; return "ERROR: Could not connect to DB2. Check connection string and ODBC setup."; } $rs = odbc_exec($conn, $request); if (str_contains(strtoupper($request), "SELECT")) { $answer = []; while ($row = odbc_fetch_array($rs)) { $answer[] = $row; } } if (isset($answer)) { return $answer; } else { if ($rs) { return "OK"; } else { error_reporting(E_ALL); return "ERROR : " . odbc_errormsg($conn); } } } //DB Conn// function DB_SCCM(){ $user = "infra"; $pwd = decypher("SCCM"); $conn = odbc_connect("Driver={SQL Server};Server=DUN-SMS-SRV01;Database=CM_SV1;", $user, $pwd); return $conn; } function DB_GLPI() { $username="glpi_lect_seule"; $password=decypher( "glpi"); $dbserver="mys_glpi_prod.appliarmony.net"; $database="glpi"; $conn = new mysqli($dbserver,$username,$password,$database); return $conn; } function DB_ENTRY01() { $username="infra"; $password=decypher("entry01"); $dbserver="dun-sup-entry01.armony.net"; $database="infra"; $conn = new mysqli($dbserver,$username,$password,$database); return $conn; } function DB_ENTRY02() { $username="admin"; $password=decypher("web-infra-reports"); $dbserver="dun-sup-s2entry.armony.net"; $database="web-infra-reports"; $conn = new mysqli($dbserver,$username,$password,$database); return $conn ; } function DB_INFRA() { $user="INFRA_dbo"; $pwd=decypher("infra"); $server="DUN-PRD-R1MSSQL.armony.net\PRD"; $database="INFRA"; $conn = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;", $user, $pwd); return $conn ; } function DB_ZABBIX() { $host = 'aztprdzabbix52.armony.net'; $dbname = 'zabbix'; $user = 'patrick'; $pass = decypher( 'zabbix'); $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); return $pdo; } //Cookie// function Set_Cookie() { // --- paramètres --- $cookieName = 'UserInfo'; $cookieLife = 86400 * 365; // 1 an $cookieDomain = '.appliarmony.net'; $secureFlag = true; $httpOnly = true; $sameSite = 'Lax'; // --- helpers --- $now = date('Y-m-d H:i:s'); // IP client: XFF (première IP) -> fallback REMOTE_ADDR $ip = ''; if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $parts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $cand = trim($parts[0]); if (filter_var($cand, FILTER_VALIDATE_IP)) $ip = $cand; } if (!$ip && !empty($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR']; // User Windows (SSO) $user = $_SERVER['REMOTE_USER'] ?? null; $hasUser = !empty($user); // --- lecture éventuelle du cookie existant --- $cookie = []; if (!empty($_COOKIE[$cookieName])) { $decoded = json_decode($_COOKIE[$cookieName], true); if (is_array($decoded)) $cookie = $decoded; } // --- écriture/MAJ SEULEMENT si on a un REMOTE_USER --- if ($hasUser) { if (empty($cookie) || ($cookie['user'] ?? null) !== $user) { // Nouveau cookie ou changement d’utilisateur → reset $cookie = [ 'user' => $user, 'ip' => $ip, 'created' => $now, 'last' => $now ]; } else { // Même user → on rafraîchit last + IP $cookie['ip'] = $ip ?: ($cookie['ip'] ?? ''); $cookie['last'] = $now; } // Écrire le cookie (évite d’écrire si headers déjà envoyés) if (!headers_sent()) { setcookie($cookieName, json_encode($cookie), [ 'expires' => time() + $cookieLife, 'path' => '/', 'domain' => $cookieDomain, 'secure' => $secureFlag, 'httponly' => $httpOnly, 'samesite' => $sameSite ]); } } // --- exposer des constantes pour le reste du code --- // Priorité: si on a REMOTE_USER, on l’utilise; sinon on retombe sur le cookie existant; sinon vide/anonyme. $currentUser = $hasUser ? $user : ($cookie['user'] ?? 'Anonymous'); $currentIp = $hasUser ? $ip : ($cookie['ip'] ?? ($_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '')); if (!defined('CURRENT_USER')) define('CURRENT_USER', $currentUser); if (!defined('CURRENT_IP')) define('CURRENT_IP', $currentIp); if (!defined('COOKIE_INFO')) define('COOKIE_INFO', $cookie); } Set_Cookie(); ?>