{"repo": "cerberogs/catai", "files": {"api/user_keys_get_safe.php": {"194a0a1d201d70244c51af356bbc5c0f047a6fbd": {"t": 1785745764.6350589, "n": 2034, "h": "5367c342d17a24bd", "c": "'invalid-user'], 401);\n\n $providers = [\n 'gemini' => 'GEMINI_API_KEY',\n 'openai' => 'OPENAI_API_KEY',\n 'xai' => 'XAI_API_KEY',\n 'claude' => 'ANTHROPIC_API_KEY',\n 'deepseek' => 'DEEPSEEK_API_KEY',\n 'tiingo' => 'TIINGO_API_KEY',\n 'finnhub' => 'FINNHUB_API_KEY',\n 'alphavantage' => 'ALPHAVANTAGE_API_KEY',\n 'polygon' => 'POLYGON_API_KEY',\n ];\n\n // Función para obtener clave con nuevo sistema de cifrado\n function get_api_key_external_crypto($userId, $provider) {\n try {\n $pdo = db();\n $stmt = $pdo->prepare('SELECT api_key_enc, last4, status FROM user_api_keys \n WHERE user_id = ? AND provider = ? AND status = \"active\"');\n $stmt->execute([$userId, $provider]);\n $row = $stmt->fetch(PDO::FETCH_ASSOC);\n \n if (!$row) {\n return null;\n }\n \n // Descifrar con el nuevo sistema\n $decryptedKey = catai_decrypt($row['api_key_enc']);\n return [\n 'key' => $decryptedKey,\n 'last4' => $row['last4'],\n 'status' => $row['status']\n ];\n } catch (Exception $e) {\n error_log(\"Error getting API key for user $userId, provider $provider: \" . $e->getMessage());\n return null;\n }\n }\n\n $keys = [];\n foreach ($providers as $prov => $env) {\n $k = get_api_key_external_crypto($userId, $prov);\n $keys[$prov] = [\n 'has' => !empty($k),\n 'last4' => $k['last4'] ?? null,\n 'status' => $k['status'] ?? null,\n ];\n }\n\n json_out(['ok'=>true, 'storage'=>'db', 'keys'=>$keys], 200);\n\n} catch (Throwable $e) {\n json_out(['error'=>'user-keys-get-failed','detail'=>$e->getMessage()], 500);\n}\n"}, "eb018491886c87ea71cdbe040bccaa60e1e5aa59": {"t": 1785756282.703903, "n": 2034, "h": "5367c342d17a24bd", "c": "'invalid-user'], 401);\n\n $providers = [\n 'gemini' => 'GEMINI_API_KEY',\n 'openai' => 'OPENAI_API_KEY',\n 'xai' => 'XAI_API_KEY',\n 'claude' => 'ANTHROPIC_API_KEY',\n 'deepseek' => 'DEEPSEEK_API_KEY',\n 'tiingo' => 'TIINGO_API_KEY',\n 'finnhub' => 'FINNHUB_API_KEY',\n 'alphavantage' => 'ALPHAVANTAGE_API_KEY',\n 'polygon' => 'POLYGON_API_KEY',\n ];\n\n // Función para obtener clave con nuevo sistema de cifrado\n function get_api_key_external_crypto($userId, $provider) {\n try {\n $pdo = db();\n $stmt = $pdo->prepare('SELECT api_key_enc, last4, status FROM user_api_keys \n WHERE user_id = ? AND provider = ? AND status = \"active\"');\n $stmt->execute([$userId, $provider]);\n $row = $stmt->fetch(PDO::FETCH_ASSOC);\n \n if (!$row) {\n return null;\n }\n \n // Descifrar con el nuevo sistema\n $decryptedKey = catai_decrypt($row['api_key_enc']);\n return [\n 'key' => $decryptedKey,\n 'last4' => $row['last4'],\n 'status' => $row['status']\n ];\n } catch (Exception $e) {\n error_log(\"Error getting API key for user $userId, provider $provider: \" . $e->getMessage());\n return null;\n }\n }\n\n $keys = [];\n foreach ($providers as $prov => $env) {\n $k = get_api_key_external_crypto($userId, $prov);\n $keys[$prov] = [\n 'has' => !empty($k),\n 'last4' => $k['last4'] ?? null,\n 'status' => $k['status'] ?? null,\n ];\n }\n\n json_out(['ok'=>true, 'storage'=>'db', 'keys'=>$keys], 200);\n\n} catch (Throwable $e) {\n json_out(['error'=>'user-keys-get-failed','detail'=>$e->getMessage()], 500);\n}\n"}, "5bcc515fc69fe35351d4b11248c99940904d58d0": {"t": 1785756283.9043264, "n": 1069, "h": "d24b73a5418245ba", "c": "'invalid-user'], 401);\n\n $providers = [\n 'gemini' => 'GEMINI_API_KEY',\n 'openai' => 'OPENAI_API_KEY',\n 'xai' => 'XAI_API_KEY',\n 'claude' => 'ANTHROPIC_API_KEY',\n 'deepseek' => 'DEEPSEEK_API_KEY',\n 'tiingo' => 'TIINGO_API_KEY',\n 'finnhub' => 'FINNHUB_API_KEY',\n 'alphavantage' => 'ALPHAVANTAGE_API_KEY',\n 'polygon' => 'POLYGON_API_KEY',\n ];\n\n $keys = [];\n foreach ($providers as $prov => $env) {\n $k = get_api_key_for($userId, $prov, $env);\n $keys[$prov] = [\n 'has' => $k !== '',\n 'last4' => $k !== '' ? substr($k, -4) : null,\n ];\n }\n\n json_out(['ok'=>true, 'storage'=>'db', 'keys'=>$keys], 200);\n\n} catch (Throwable $e) {\n json_out(['error'=>'user-keys-get-failed','detail'=>$e->getMessage()], 500);\n}\n"}}, "api/ia_diag_safe.php": {"194a0a1d201d70244c51af356bbc5c0f047a6fbd": {"t": 1785745771.8788388, "n": 841, "h": "a4c89a94b24c3e21", "c": " !!cfg('GEMINI_API_KEY') || true,\n 'openai' => !!cfg('OPENAI_API_KEY') || true,\n 'xai' => !!cfg('XAI_API_KEY') || true,\n 'claude' => !!cfg('ANTHROPIC_API_KEY') || true,\n 'deepseek' => !!cfg('DEEPSEEK_API_KEY') || true,\n ];\n return json_out([\n 'ok'=>true,\n 'upload_max_filesize'=>$uploadMax,\n 'post_max_size'=>$postMax,\n 'memory_limit'=>$memLimit,\n 'providers'=>$providers,\n ]);\n} catch (Throwable $e) {\n return json_out(['ok'=>false, 'error'=>$e->getMessage()], 500);\n}\n\n\n"}, "f23e4a86b68ae48228c61aff2beb8e39c3d873c2": {"t": 1785756281.8638966, "n": 841, "h": "a4c89a94b24c3e21", "c": " !!cfg('GEMINI_API_KEY') || true,\n 'openai' => !!cfg('OPENAI_API_KEY') || true,\n 'xai' => !!cfg('XAI_API_KEY') || true,\n 'claude' => !!cfg('ANTHROPIC_API_KEY') || true,\n 'deepseek' => !!cfg('DEEPSEEK_API_KEY') || true,\n ];\n return json_out([\n 'ok'=>true,\n 'upload_max_filesize'=>$uploadMax,\n 'post_max_size'=>$postMax,\n 'memory_limit'=>$memLimit,\n 'providers'=>$providers,\n ]);\n} catch (Throwable $e) {\n return json_out(['ok'=>false, 'error'=>$e->getMessage()], 500);\n}\n\n\n"}}}}