X-Git-Url: https://git.p6c8.net/jirafeau.git/blobdiff_plain/2e017ea2f8334178120b0e5898590218366b2141..cd4892472b534b68a094ea582f79efc27dda3924:/admin.php
diff --git a/admin.php b/admin.php
index 2cad589..54fcde1 100644
--- a/admin.php
+++ b/admin.php
@@ -16,271 +16,275 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-
-define ('JIRAFEAU_ROOT', dirname (__FILE__) . '/');
+session_start();
+define('JIRAFEAU_ROOT', dirname(__FILE__) . '/');
-require (JIRAFEAU_ROOT . 'lib/config.original.php');
-require (JIRAFEAU_ROOT . 'lib/settings.php');
-require (JIRAFEAU_ROOT . 'lib/functions.php');
-require (JIRAFEAU_ROOT . 'lib/lang.php');
+require(JIRAFEAU_ROOT . 'lib/settings.php');
+require(JIRAFEAU_ROOT . 'lib/functions.php');
+require(JIRAFEAU_ROOT . 'lib/lang.php');
/* Check if installation is OK. */
-if (file_exists (JIRAFEAU_ROOT . 'install.php')
- && !file_exists (JIRAFEAU_ROOT . 'lib/config.local.php'))
-{
- header('Location: install.php');
- exit;
-}
-
-/* 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');
- echo '
'.
- t('Sorry, the admin interface is not enabled.') .
- '
';
- require (JIRAFEAU_ROOT.'lib/template/footer.php');
+if (file_exists(JIRAFEAU_ROOT . 'install.php')
+ && !file_exists(JIRAFEAU_ROOT . 'lib/config.local.php')) {
+ header('Location: install.php');
exit;
}
-/* Check session. */
-session_start();
-
-/* Unlog if asked. */
-if (isset ($_POST['action']) && (strcmp ($_POST['action'], 'logout') == 0))
- $_SESSION['admin_auth'] = false;
-
-/* Check classic admin password authentification. */
-if (isset ($_POST['admin_password']) && empty($cfg['admin_http_auth_user']))
-{
- if (strcmp ($cfg['admin_password'], $_POST['admin_password']) == 0)
- $_SESSION['admin_auth'] = true;
- else
- {
- $_SESSION['admin_auth'] = false;
- require (JIRAFEAU_ROOT . 'lib/template/header.php');
- echo ''.
- t('Wrong password.') . '
';
- require (JIRAFEAU_ROOT.'lib/template/footer.php');
- exit;
+/* If called from CLI, no password or graphical interface */
+if (php_sapi_name() == "cli") {
+ if ((count($argv)>1) && $argv[1]=="clean_expired") {
+ $total = jirafeau_admin_clean();
+ echo "$total expired files deleted.";
+ } elseif ((count($argv)>1) && $argv[1]=="clean_async") {
+ $total = jirafeau_admin_clean_async();
+ echo "$total old unfinished transfers deleted.";
+ } else {
+ die("No command found. Should be admin.php .");
}
-}
-/* Ask for classic admin password authentification. */
-elseif ((!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
- && empty($cfg['admin_http_auth_user']))
-{
- require (JIRAFEAU_ROOT . 'lib/template/header.php'); ?>
-
- '.
+ t('NO_ADMIN') .
+ '
';
+ require(JIRAFEAU_ROOT.'lib/template/footer.php');
+ exit;
+ }
-/* Be sure that no one can access further without admin_auth. */
-if (!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
-{
- $_SESSION['admin_auth'] = false;
- require (JIRAFEAU_ROOT . 'lib/template/header.php');
- echo ''.
- t('Sorry, you are not authenticated on admin interface.') .
- '
';
- require (JIRAFEAU_ROOT.'lib/template/footer.php');
- exit;
-}
+ /* Unlog if asked. */
+ if (jirafeau_admin_session_logged() && isset($_POST['action']) && (strcmp($_POST['action'], 'logout') == 0)) {
+ jirafeau_admin_session_end();
+ }
-/* Operations may take a long time.
- * Be sure PHP's safe mode is off.
- */
-@set_time_limit(0);
-/* Remove errors. */
-@error_reporting(0);
+ if (!jirafeau_admin_session_logged()) {
+ /* Test HTTP authentification. */
+ if (!empty($cfg['admin_http_auth_user']) &&
+ $cfg['admin_http_auth_user'] == $_SERVER['PHP_AUTH_USER']) {
+ jirafeau_admin_session_start();
+ }
+ /* Test web password authentification. */
+ else if (!empty($cfg['admin_password']) && isset($_POST['admin_password'])) {
+ if ($cfg['admin_password'] === hash('sha256', $_POST['admin_password'])) {
+ jirafeau_admin_session_start();
+ } else {
+ require(JIRAFEAU_ROOT . 'lib/template/header.php');
+ echo '';
+ require(JIRAFEAU_ROOT.'lib/template/footer.php');
+ exit;
+ }
+ }
+ /* Admin password prompt form. */
+ else {
+ require(JIRAFEAU_ROOT . 'lib/template/header.php'); ?>
+
+ (version )
' . NL;
- echo '';
- echo t('Number of cleaned files') . ' : ' . $total;
- echo '
';
- }
- elseif (strcmp ($_POST['action'], 'clean_async') == 0)
- {
- $total = jirafeau_admin_clean_async ();
- echo '' . NL;
- echo '
';
- echo t('Number of cleaned files') . ' : ' . $total;
- echo '
';
- }
- elseif (strcmp ($_POST['action'], 'list') == 0)
- {
- jirafeau_admin_list ("", "", "");
- }
- elseif (strcmp ($_POST['action'], 'search_by_name') == 0)
- {
- jirafeau_admin_list ($_POST['name'], "", "");
- }
- elseif (strcmp ($_POST['action'], 'search_by_file_hash') == 0)
- {
- jirafeau_admin_list ("", $_POST['hash'], "");
- }
- elseif (strcmp ($_POST['action'], 'search_link') == 0)
- {
- jirafeau_admin_list ("", "", $_POST['link']);
- }
- elseif (strcmp ($_POST['action'], 'delete_link') == 0)
- {
- jirafeau_delete_link ($_POST['link']);
- echo '' . NL;
- echo '
' . t('Link deleted') . '
';
- }
- elseif (strcmp ($_POST['action'], 'delete_file') == 0)
- {
- $count = jirafeau_delete_file ($_POST['md5']);
- echo '' . NL;
- echo '
' . t('Deleted links') . ' : ' . $count . '
';
- }
- elseif (strcmp ($_POST['action'], 'download') == 0)
- {
- $l = jirafeau_get_link ($_POST['link']);
- if (!count ($l))
- return;
- $p = s2p ($l['md5']);
- header ('Content-Length: ' . $l['file_size']);
- header ('Content-Type: ' . $l['mime_type']);
- header ('Content-Disposition: attachment; filename="' .
- $l['file_name'] . '"');
- if (file_exists(VAR_FILES . $p . $l['md5']))
- readfile (VAR_FILES . $p . $l['md5']);
- exit;
- }
-}
+ ?>' . NL;
+ echo '';
+ echo t('CLEANED_FILES_CNT') . ' : ' . $total;
+ echo '
';
+ } elseif (strcmp($_POST['action'], 'clean_async') == 0) {
+ $total = jirafeau_admin_clean_async();
+ echo '' . NL;
+ echo '
';
+ echo t('CLEANED_FILES_CNT') . ' : ' . $total;
+ echo '
';
+ } elseif (strcmp($_POST['action'], 'size') == 0) {
+ $size = jirafeau_dir_size($cfg['var_root']);
+ $human_size = jirafeau_human_size($size);
+ echo '' . NL;
+ echo '
' . t('SIZE_DATA') . ': ' . $human_size .'
';
+ echo '
';
+ } elseif (strcmp($_POST['action'], 'list') == 0) {
+ jirafeau_admin_list("", "", "");
+ } elseif (strcmp($_POST['action'], 'search_by_name') == 0) {
+ jirafeau_admin_list($_POST['name'], "", "");
+ } elseif (strcmp($_POST['action'], 'search_by_file_hash') == 0) {
+ jirafeau_admin_list("", $_POST['hash'], "");
+ } elseif (strcmp($_POST['action'], 'search_link') == 0) {
+ jirafeau_admin_list("", "", $_POST['link']);
+ } elseif (strcmp($_POST['action'], 'delete_link') == 0) {
+ jirafeau_delete_link($_POST['link']);
+ echo '' . NL;
+ echo '
' . t('LINK_DELETED') . '
';
+ } elseif (strcmp($_POST['action'], 'delete_file') == 0) {
+ $count = jirafeau_delete_file($_POST['hash']);
+ echo '' . NL;
+ echo '
' . t('DELETED_LINKS') . ' : ' . $count . '
';
+ } elseif (strcmp($_POST['action'], 'download') == 0) {
+ $l = jirafeau_get_link($_POST['link']);
+ if (!count($l)) {
+ return;
+ }
+ $p = s2p($l['hash']);
+ header('Content-Length: ' . $l['file_size']);
+ header('Content-Type: ' . $l['mime_type']);
+ header('Content-Disposition: attachment; filename="' .
+ $l['file_name'] . '"');
+ if (file_exists(VAR_FILES . $p . $l['hash'])) {
+ $r = fopen(VAR_FILES . $p . $l['hash'], 'r');
+ while (!feof($r)) {
+ print fread($r, 1024);
+ ob_flush();
+ }
+ fclose($r);
+ }
+ exit;
+ }
+ }
+ require(JIRAFEAU_ROOT.'lib/template/footer.php');
+}
?>