]> git.p6c8.net - jirafeau_project.git/blobdiff - lib/functions.php
[BUGFIX] Prevent bouncing fileupload field
[jirafeau_project.git] / lib / functions.php
index 4d698c2b7126e3dd6e3a91ca04d87530b52a7118..50ab345197cb508416bca35a6507829c3f24ce9a 100644 (file)
@@ -120,6 +120,14 @@ function jirafeau_human_size($octets)
     return round($o, 1) . $u[$p];
 }
 
+// Convert UTC timestamp to a datetime field
+function jirafeau_get_datetimefield($timestamp)
+{
+    $content = '<span class="datetime" data-datetime="' . strftime('%Y-%m-%d %H:%M', $timestamp) . '">'
+        . strftime('%Y-%m-%d %H:%M', $timestamp) . ' (GMT)</span>';
+    return $content;
+}
+
 function jirafeau_clean_rm_link($link)
 {
     $p = s2p("$link");
@@ -594,13 +602,12 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                 /* Print link informations. */
                 echo '<tr>';
                 echo '<td>' .
-                '<strong><a id="upload_link" href="/f.php?h='. htmlspecialchars($node) .'" title="' .
+                '<strong><a id="upload_link" href="' . JIRAFEAU_ABSPREFIX . 'f.php?h='. htmlspecialchars($node) .'" title="' .
                     t('Download page') . '">' . htmlspecialchars($l['file_name']) . '</a></strong>';
                 echo '</td>';
                 echo '<td>' . $l['mime_type'] . '</td>';
                 echo '<td>' . jirafeau_human_size($l['file_size']) . '</td>';
-                echo '<td>' . ($l['time'] == -1 ? '' : strftime('%c', $l['time'])) .
-                     '</td>';
+                echo '<td>' . ($l['time'] == -1 ? '∞' : jirafeau_get_datetimefield($l['time'])) . '</td>';
                 echo '<td>';
                 if ($l['onetime'] == 'O') {
                     echo 'Y';
@@ -608,20 +615,20 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                     echo 'N';
                 }
                 echo '</td>';
-                echo '<td>' . strftime('%c', $l['upload_date']) . '</td>';
+                echo '<td>' . jirafeau_get_datetimefield($l['upload_date']) . '</td>';
                 echo '<td>' . $l['ip'] . '</td>';
                 echo '<td>' .
-                '<form action = "admin.php" method = "post">' .
+                '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "download"/>' .
                 '<input type = "hidden" name = "link" value = "' . $node . '"/>' .
                 '<input type = "submit" value = "' . t('Download') . '" />' .
                 '</form>' .
-                '<form action = "admin.php" method = "post">' .
+                '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "delete_link"/>' .
                 '<input type = "hidden" name = "link" value = "' . $node . '"/>' .
                 '<input type = "submit" value = "' . t('Del link') . '" />' .
                 '</form>' .
-                '<form action = "admin.php" method = "post">' .
+                '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "delete_file"/>' .
                 '<input type = "hidden" name = "md5" value = "' . $l['md5'] . '"/>' .
                 '<input type = "submit" value = "' . t('Del file and links') . '" />' .
@@ -1079,6 +1086,45 @@ function jirafeau_challenge_upload_ip($cfg, $ip)
     return false;
 }
 
+/**
+ * Test if visitor's IP is authorized or password is supplied and authorized
+ * @param $ip IP to be challenged
+ * @param $password password to be challenged
+ * @return true if access is valid, false otherwise.
+ */
+function jirafeau_challenge_upload ($cfg, $ip, $password)
+{
+    // Allow if no ip restrictaion and no password restriction
+    if ((count ($cfg['upload_ip']) == 0) and (count ($cfg['upload_password']) == 0)) {
+        return true;
+    }
+
+    // Allow if ip is in array
+    foreach ($cfg['upload_ip'] 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;
+            }
+        }
+    }
+    if (!jirafeau_has_upload_password($cfg)) {
+        return false;
+    }
+
+    foreach ($cfg['upload_password'] as $p) {
+        if ($password == $p) {
+            return true;
+        }
+    }
+    return false;
+}
+
 /** Tell if we have some HTTP headers generated by a proxy */
 function has_http_forwarded()
 {

patrick-canterino.de