paheko-fork/tools/factory/config.local.php

123 lines
4.3 KiB
PHP
Raw Permalink Normal View History

2024-01-19 15:39:49 +00:00
<?php
namespace Paheko;
/**
* Ce fichier permet de configurer Paheko pour une utilisation
* avec plusieurs associations, mais une seule copie du code source.
* (aussi appelé installation multi-sites, ferme ou usine)
*
* Voir la doc : https://fossil.kd2.org/paheko/wiki?name=Multi-sites
*
* N'oubliez pas d'installer également le script cron.sh fournit
* pour lancer les rappels automatiques et sauvegardes.
*
* Si cela ne suffit pas à vos besoins, contactez-nous :
* https://paheko.cloud/contact
* pour une aide spécifique à votre installation.
*/
// Décommenter cette ligne si vous n'utilisez pas NFS,
// pour rendre les bases de données plus rapides.
//
// Si vous utilisez NFS, décommenter cette ligne risque
// de provoquer des corruptions de base de données !
#const SQLITE_JOURNAL_MODE = 'WAL';
// Nom de domaine parent des associations hébergées
// Exemple : si vos associations sont hébergées en clubdetennis.paheko.cloud,
// indiquer ici 'paheko.cloud'
const FACTORY_DOMAIN = 'monsite.tld';
// Répertoire où seront stockées les données des utilisateurs
// Dans ce répertoire, un sous-répertoire sera créé pour chaque compte
// Ainsi 'clubdetennis.paheko.cloud' sera dans le répertoire courant (__DIR__),
// sous-répertoire 'users' et dans celui-ci, sous-répertoire 'clubdetennis'
//
// Pour chaque utilisateur il faudra créer le sous-répertoire en premier lieu
// (eg. mkdir .../users/clubdetennis)
const FACTORY_USER_DIRECTORY = __DIR__ . '/users';
// Envoyer les erreurs PHP par mail à l'adresse de l'administrateur système
// (mettre à null pour ne pas recevoir d'erreurs)
const MAIL_ERRORS = 'administrateur@monsite.tld';
// IMPORTANT !
// Modifier pour indiquer une valeur aléatoire de plus de 30 caractères
const SECRET_KEY = 'Indiquer ici une valeur aléatoire !';
// Quota de stockage de documents (en octets)
// Définit la taille de stockage disponible pour chaque association pour ses documents
const FILE_STORAGE_QUOTA = 1 * 1024 * 1024 * 1024; // 1 Go
////////////////////////////////////////////////////////////////
// Réglages conseillés, normalement il n'y a rien à modifier ici
// Indiquer que l'on va utiliser cron pour lancer les tâches à exécuter (envoi de rappels de cotisation)
const USE_CRON = true;
// Cache partagé
const SHARED_CACHE_ROOT = __DIR__ . '/cache/shared';
// Cache web partagé
const WEB_CACHE_ROOT = __DIR__ . '/cache/web/%host%';
// Désactiver le log des erreurs PHP visible dans l'interface (sécurité)
const ENABLE_TECH_DETAILS = false;
// Désactiver les mises à jour depuis l'interface web
// Pour être sûr que seul l'admin sys puisse faire des mises à jour
const ENABLE_UPGRADES = false;
// Ne pas afficher les erreurs de code PHP
const SHOW_ERRORS = false;
////////////////////////////////////////////////////////////////
// Code 'magique' qui va configurer Paheko selon les réglages
$login = null;
// Un sous-domaine ne peut pas faire plus de 63 caractères
$login_regexp = '([a-z0-9_-]{1,63})';
$domain_regexp = sprintf('/^%s\.%s$/', $login_regexp, preg_quote(FACTORY_DOMAIN, '/'));
if (isset($_SERVER['SERVER_NAME']) && preg_match($domain_regexp, $_SERVER['SERVER_NAME'], $match)) {
$login = $match[1];
}
elseif (PHP_SAPI == 'cli' && !empty($_SERVER['PAHEKO_FACTORY_USER']) && preg_match('/^' . $login_regexp . '$/', $_SERVER['PAHEKO_FACTORY_USER'])) {
$login = $_SERVER['PAHEKO_FACTORY_USER'];
}
else {
// Login invalide ou non fourni
http_response_code(404);
die('<h1>Page non trouvée</h1>');
}
$user_data_dir = rtrim(FACTORY_USER_DIRECTORY, '/') . '/' . $login;
if (!is_dir($user_data_dir)) {
http_response_code(404);
die("<h1>Cette association n'existe pas.</h1>");
}
// Définir le dossier où sont stockés les données
define('Paheko\DATA_ROOT', $user_data_dir);
// Définir l'URL
define('Paheko\WWW_URL', 'https://' . $login . '.' . FACTORY_DOMAIN . '/');
define('Paheko\WWW_URI', '/');
// Créer le lien symbolique vers le cache partagé des pages du site web
$web_cache_public = __DIR__ . '/www/.cache';
if (!file_exists($web_cache_public)) {
$web_cache_root = dirname(WEB_CACHE_ROOT);
if (!@symlink($web_cache_root, $web_cache_public)) {
echo "<h2>Impossible de créer le lien symbolique pour le cache web partagé</h2>";
echo "<p>Vous pouvez exécuter la commande suivante :</p>";
printf("<pre>ln -s %s %s</pre>", $web_cache_root, $web_cache_public);
exit;
}
}