]> git.p6c8.net - jirafeau.git/blobdiff - lib/functions.php
[FEATURE] Add check ip_nopassword in challenge_upload function
[jirafeau.git] / lib / functions.php
index 8af38010d0c6fa0c40e43b29d6983f988c07d7ad..2817aa1e241b543ab782dc20ed7669e3172182c5 100644 (file)
@@ -204,7 +204,7 @@ function jirafeau_ini_to_bytes($value)
 function jirafeau_get_max_upload_size_bytes()
 {
     return min(jirafeau_ini_to_bytes(ini_get('post_max_size')),
-                jirafeau_ini_to_bytes(ini_get('upload_max_filesize')));
+               jirafeau_ini_to_bytes(ini_get('upload_max_filesize')));
 }
 
 /**
@@ -213,9 +213,7 @@ function jirafeau_get_max_upload_size_bytes()
  */
 function jirafeau_get_max_upload_size()
 {
-    return jirafeau_human_size(
-            min(jirafeau_ini_to_bytes(ini_get('post_max_size')),
-                 jirafeau_ini_to_bytes(ini_get('upload_max_filesize'))));
+    return jirafeau_human_size(jirafeau_get_max_upload_size_bytes());
 }
 
 /**
@@ -500,16 +498,13 @@ function check_errors($cfg)
         exit;
     }
 
-    /* check if the destination dirs are writable */
-    $writable = is_writable(VAR_FILES) && is_writable(VAR_LINKS);
-
     /* Checking for errors. */
     if (!is_writable(VAR_FILES)) {
-        add_error(t('The file directory is not writable!'), VAR_FILES);
+        add_error(t('FILE_DIR_W'), VAR_FILES);
     }
 
     if (!is_writable(VAR_LINKS)) {
-        add_error(t('The link directory is not writable!'), VAR_LINKS);
+        add_error(t('LINK_DIR_W'), VAR_LINKS);
     }
 
     if (!is_writable(VAR_ASYNC)) {
@@ -1113,6 +1108,21 @@ function jirafeau_challenge_upload ($cfg, $ip, $password)
         return true;
     }
 
+    // Allow if ip is in array (no password)
+    foreach ($cfg['upload_ip_nopassword'] as $i) {
+        if ($i == $ip) {
+            return true;
+        }
+        // CIDR test for IPv4 only.
+        if (strpos ($i, '/') !== false)
+        {
+            list ($subnet, $mask) = explode('/', $i);
+            if ((ip2long ($ip) & ~((1 << (32 - $mask)) - 1) ) == ip2long ($subnet)) {
+                return true;
+            }
+        }
+    }
+
     // Allow if ip is in array
     foreach ($cfg['upload_ip'] as $i) {
         if ($i == $ip) {

patrick-canterino.de