Proxy
Proxy PHP pour leThumbor Serviceavec d'ImagesSupport Thumborde NocoDB
Introduction
Description
UnCe proxy est un serveur intermédiaire qui se place entre un client et un autre serveur, facilitant ou contrôlant les requêtes échangées entre eux. Dans ce contexte, le proxyscript PHP sert de proxy pour accéder à rediriger les requêtes d'images vers ThumborThumbor, tout en appliquanttéléchargeant et en traitant les images provenant de NocoDB. Il cache également les images pour améliorer les performances et inclut des règlesfonctionnalités de sécurité et de validation. Cette approche permet de contrôler l'accès aux images et d'assurer que seules les requêtes autorisées sont traitées par Thumbor.journalisation.
Fonctionnalités
Structure principales
du Projet
- proxy.php: Script principal pour servir les images via Thumbor.
Explication du Code
1. proxy.php
Initialisation :
config.php.
Initialise le cache.
Fonction de Journalisation :
log_message Fonctionnalités et Explications
Journalisation
log_debugdebug.logfunction log_debug($message) {
file_put_contents('debug.log', date('[Y-m-d H:i:s] ') . $message . "\n", FILE_APPEND);
}ValidationVérification et Création des DomainesDossiers AutorisésTemporaire :
LaVérifiefonctionet crée le dossier temporaire s'il n'existe pas.
Fonction de Vérification de Domaine Autorisé :
isDomainAllowed vérifie si le domaine d'une URL donnée est autorisé en se basant sur une liste de domaines autorisés.
Fonction pour Générer des Noms de Fichier Aléatoires :
generateRandomFileName génère un nom de fichier aléatoire pour les fichiers temporaires.
Traitement de la Requête :
function isDomainAllowed($url, $allowedDomains) {
$parsedUrl = parse_url($url);
if (!isset($parsedUrl['host'])) {
return false;
}
$host = $parsedUrl['host'];
foreach ($allowedDomains as $allowedDomain) {
if ($allowedDomain[0] === '*') {
$domain = substr($allowedDomain, 2); // Enlève '.*'
if (substr($host, -strlen($domain)) === $domain) {
return true;
}
} else {
if ($host === $allowedDomain) {
return true;
}
}
}
return false;
}
Construction de l'URL Thumbor
$requestUri = $_SERVER['QUERY_STRING'];
$protocolPos = strpos($requestUri, 'http');
$thumborParams = substr($requestUri, 0, $protocolPos);
$imageUrl = substr($requestUri, $protocolPos);
if (!isDomainAllowed($imageUrl, $allowedDomains)) {
http_response_code(403);
echo "Domaine non autorisé";
exit;
}
$thumborUrl = $thumborBaseUrl . $requestUri;
Requêtes vers Thumbor et Gestion des Erreurs
$client = new Client();
try {
$response = $client->get($thumborUrl, ['stream' => true]);
foreach ($response->getHeaders() as $name => $values) {
foreach ($values as $value) {
header("{$name}: {$value}");
}
}
$body = $response->getBody();
while (!$body->eof()) {
echo $body->read(1024);
}
} catch (RequestException $e) {
log_debug("Erreur : " . $e->getMessage());
if ($e->hasResponse()) {
$statusCode = $e->getResponse()->getStatusCode();
http_response_code($statusCode);
echo "Erreur lors de la récupération derécupère l'image:image " . $statusCode;
} else {
http_response_code(500);
echo "Erreur interne du serveur";
}
}
Utilité du Proxy
Sécurité
GestionMise desen AccèsCache :
SimplicitéMetdeengestion: Ajouter ou retirer des domaines de la liste des domaines autorisés est une opération simple, rendant la gestion des accès flexible et adaptable aux besoins changeants.
2. config.php
TraçabilitéCe etfichier Débogagecontient les paramètres de configuration pour le proxy, incluant :
- Les domaines autorisés.
3. cleanup.php
cleanupOldFiles supprime les Conclusion
Ce proxy PHP est un outil puissantconçu pour sécuriserservir etles gérer l'accès aux transformations d'images via Thumbor.Thumbor Entout implémentanten cetéléchargeant proxy,et vousen pouvez contrôlertraitant les requêtes,images améliorerprovenant lade sécuritéNocoDB. etIl centralisermet laen gestioncache desles images pour votredes infrastructureperformances web.optimales et inclut des fonctionnalités de journalisation et de nettoyage pour gérer les fichiers temporaires et de cache.