]> git.p6c8.net - jirafeau_project.git/commitdiff
Closes #6 can use several upload passwords in options
authorJerome Jutteau <mojo@couak.net>
Mon, 23 Feb 2015 12:34:50 +0000 (13:34 +0100)
committerJerome Jutteau <mojo@couak.net>
Mon, 23 Feb 2015 12:38:13 +0000 (13:38 +0100)
index.php
install.php
lib/config.original.php
lib/functions.php
script.php

index 127d9e6d65feaf3d823b369460d3e07e0f0fdfa9..81fca81c730eeb1aff104dd7ffb36b8d55d995e6 100644 (file)
--- a/index.php
+++ b/index.php
@@ -35,19 +35,22 @@ if (has_error ())
 }
 
 /* Ask password if upload password is set. */
-if (strlen ($cfg['upload_password']) > 0)
+if (jirafeau_has_upload_password ($cfg))
 {
     session_start();
 
     /* Unlog if asked. */
     if (isset ($_POST['action']) && (strcmp ($_POST['action'], 'logout') == 0))
-        $_SESSION['upload_auth'] = false;
+        session_unset ();
 
     /* Auth. */
     if (isset ($_POST['upload_password']))
     {
-        if (strcmp ($cfg['upload_password'], $_POST['upload_password']) == 0)
+        if (jirafeau_challenge_upload_password ($cfg, $_POST['upload_password']))
+        {
             $_SESSION['upload_auth'] = true;
+            $_SESSION['user_upload_password'] = $_POST['upload_password'];
+        }
         else
         {
             $_SESSION['admin_auth'] = false;
@@ -152,8 +155,20 @@ if (strlen ($cfg['upload_password']) > 0)
         </tr>
                <p id="max_file_size" class="config"></p>
     <p>
-
-    <input type="hidden" id="upload_password" name="upload_password" value="<?php echo $cfg['upload_password']?>"/>
+    <?php
+    if (jirafeau_has_upload_password ($cfg) && $_SESSION['upload_auth'])
+    {
+    ?>
+    <input type="hidden" id="upload_password" name="upload_password" value="<?php echo $_SESSION['user_upload_password'] ?>"/>
+    <?php
+    }
+    else
+    {
+    ?>
+    <input type="hidden" id="upload_password" name="upload_password" value=""/>
+    <?php
+    }
+    ?>
     <input type="submit" id="send" value="<?php echo t('Send'); ?>"
     onclick="
         document.getElementById('upload').style.display = 'none';
@@ -165,7 +180,7 @@ if (strlen ($cfg['upload_password']) > 0)
     </div> </fieldset>
 
     <?php
-    if (strlen ($cfg['upload_password']) > 0)
+    if (jirafeau_has_upload_password ($cfg))
     {
     ?>
     <form action = "<?php echo basename(__FILE__); ?>" method = "post">
index 81a00cc4e3e71a76379b8223ec1fa3a53bf8f72e..3bfbea8c1bb6356f7fac3b7bf4daa16244bef903 100644 (file)
@@ -52,6 +52,9 @@ jirafeau_export_cfg ($cfg)
             fwrite ($handle, jirafeau_quoted ($item));
         else if (is_int ($item))
             fwrite ($handle, $item);
+        else if (is_array ($item))
+            fwrite ($handle, str_replace(array("\n", "\r"), "",
+                                         var_export ($item, true)));
         else
             fwrite ($handle, 'null');
         fwrite ($handle, ';'.NL);
index 716675ee85a62653c8208d94fc40c2131b96c0a0..d955d19dfa1328dfbd536fa29b456212753efb2c 100644 (file)
@@ -21,7 +21,7 @@
  * default configuration
  * if you want to change this, overwrite in a config.local.php file
  */
- global $cfg;
+global $cfg;
  
 /* don't forget the ending '/' */
 $cfg['web_root'] = '';
@@ -52,8 +52,13 @@ $cfg['enable_blocks'] = false;
 $cfg['enable_crypt'] = false;
 /* Split lenght of link refenrece. */
 $cfg['link_name_lenght'] = 8;
-/* Upload password. Empty string disable the password. */
-$cfg['upload_password'] = '';
+/* Upload password(s). Empty array disable password authentification.
+ * $cfg['upload_password'] = array();               // No password
+ * $cfg['upload_password'] = array('psw1');         // One password
+ * $cfg['upload_password'] = array('psw1', 'psw2'); // Two passwords
+ * ... and so on
+ */
+$cfg['upload_password'] = array();
 
 /* Installation is done ? */
 $cfg['installation_done'] = false;
index 76ae4b0189a0937754f97e8a043c6bb9978c80db..1e5b08355b53da1ad4be8f2cb43ec29dedbca602 100644 (file)
@@ -1385,4 +1385,28 @@ jirafeau_decrypt_file ($fp_src, $fp_dst, $k)
     return true;
 }
 
-?>
+/**
+ * Check if Jirafeau is password protected for visitors.
+ * @return true if Jirafeau is password protected, false otherwise.
+ */
+function jirafeau_has_upload_password ($cfg)
+{
+    return count ($cfg['upload_password']) > 0;
+}
+
+/**
+ * Challenge password for a visitor.
+ * @param $password password to be challenged
+ * @return true if password is valid, false otherwise.
+ */
+function jirafeau_challenge_upload_password ($cfg, $password)
+{
+    if (!jirafeau_has_upload_password($cfg))
+        return false;
+    forEach ($cfg['upload_password'] as $p)
+        if ($password == $p)
+            return true;
+    error_log("password not found $password");
+    return false;
+}
+
index 44fe44979330333f963b197b6e01506d6734894f..d109d4a6c8e746fe42e0b8ecc849264e9304aa13 100644 (file)
@@ -263,7 +263,9 @@ if (has_error ())
 if (isset ($_FILES['file']) && is_writable (VAR_FILES)\r
     && is_writable (VAR_LINKS))\r
 {\r
-    if (strlen ($cfg['upload_password']) > 0 && (!isset ($_POST['upload_password']) || $_POST['upload_password'] != $cfg['upload_password']))\r
+    if (jirafeau_has_upload_password ($cfg) &&\r
+         (!isset ($_POST['upload_password']) ||\r
+          !jirafeau_challenge_upload_password ($cfg, $_POST['upload_password'])))\r
     {\r
         echo "Error";\r
         exit;\r
@@ -529,7 +531,9 @@ fi
 /* Initialize an asynchronous upload. */\r
 elseif (isset ($_GET['init_async']))\r
 {\r
-    if (strlen ($cfg['upload_password']) > 0 && (!isset ($_POST['upload_password']) || $_POST['upload_password'] != $cfg['upload_password']))\r
+    if (jirafeau_has_upload_password ($cfg) &&\r
+         (!isset ($_POST['upload_password']) ||\r
+          !jirafeau_challenge_upload_password ($cfg, $_POST['upload_password'])))\r
     {\r
         echo "Error";\r
         exit;\r
@@ -603,7 +607,9 @@ elseif (isset ($_GET['end_async']))
 /* Initialize block. */\r
 elseif (isset ($_GET['init_block']) && $cfg['enable_blocks'])\r
 {\r
-    if (strlen ($cfg['upload_password']) > 0 && (!isset ($_POST['upload_password']) || $_POST['upload_password'] != $cfg['upload_password']))\r
+    if (jirafeau_has_upload_password ($cfg) &&\r
+         (!isset ($_POST['upload_password']) ||\r
+          !jirafeau_challenge_upload_password ($cfg, $_POST['upload_password'])))\r
     {\r
         echo "Error";\r
         exit;\r

patrick-canterino.de