]> git.p6c8.net - jirafeau_project.git/blobdiff - admin.php
Switched to php-cs-fixer 3.64.0 and PSR12 in CI
[jirafeau_project.git] / admin.php
index 68e0f3bbe4a26bb282b82c5c584b0fd998120161..a6bacd337f379507b8d242f27b0f68fd6623aea6 100644 (file)
--- a/admin.php
+++ b/admin.php
@@ -1,7 +1,9 @@
 <?php
 /*
  *  Jirafeau, your web file repository
+ *  Copyright (C) 2008  Julien "axolotl" BERNARD <axolotl@magieeternelle.org>
  *  Copyright (C) 2015  Jerome Jutteau <jerome@jutteau.fr>
+ *  Copyright (C) 2024  Jirafeau project <https://gitlab.com/jirafeau> (see AUTHORS.md)
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU Affero General Public License as
@@ -14,7 +16,7 @@
  *  GNU Affero General Public License for more details.
  *
  *  You should have received a copy of the GNU Affero General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 session_start();
 define('JIRAFEAU_ROOT', dirname(__FILE__) . '/');
@@ -44,7 +46,8 @@ if (php_sapi_name() == "cli") {
     } else {
         die("No command found. Should be admin.php <clean_expired|clean_async>.\n");
     }
-} else {
+// Second check: Challenge by IP
+} elseif (true === jirafeau_challenge_admin_ip($cfg, get_ip_address($cfg))) {
     /* Disable admin interface if we have a empty admin password. */
     if (empty($cfg['admin_password']) && empty($cfg['admin_http_auth_user'])) {
         require(JIRAFEAU_ROOT . 'lib/template/header.php');
@@ -63,7 +66,8 @@ if (php_sapi_name() == "cli") {
     if (!jirafeau_admin_session_logged()) {
         /* Test HTTP authentication. */
         if (!empty($cfg['admin_http_auth_user']) &&
-          $cfg['admin_http_auth_user'] == $_SERVER['PHP_AUTH_USER']) {
+          ((is_array($cfg['admin_http_auth_user']) && in_array($_SERVER['PHP_AUTH_USER'], $cfg['admin_http_auth_user'])) ||
+          (($cfg['admin_http_auth_user'] == $_SERVER['PHP_AUTH_USER'])))) {
             jirafeau_admin_session_start();
         }
         /* Test web password authentication. */
@@ -119,6 +123,10 @@ if (php_sapi_name() == "cli") {
         require(JIRAFEAU_ROOT . 'lib/template/header.php'); ?><h2><?php echo t('ADMIN_INTERFACE'); ?></h2><?php
         ?><h2>(version <?php echo JIRAFEAU_VERSION ?>)</h2><?php
 
+        if ($cfg['enable_crypt'] && !(extension_loaded('sodium'))) {
+            echo '<div class="error"><p>'.t('SODIUM_UNAVAILABLE').'</p></div>';
+        }
+
         ?><div id = "admin">
           <fieldset><legend><?php echo t('ACTIONS'); ?></legend>
           <table>
@@ -301,5 +309,8 @@ if (php_sapi_name() == "cli") {
     }
 
     require(JIRAFEAU_ROOT.'lib/template/footer.php');
+} else {
+    require(JIRAFEAU_ROOT . 'lib/template/header.php');
+    jirafeau_fatal_error(t('ACCESS_KO'), $cfg);
 }
 ?>

patrick-canterino.de