lib/config.local.php
lib/tos.local.txt
+media/custom/
var-*
*._*
/vendor
\ No newline at end of file
- Basic, adaptable »Terms Of Service« page
- Basic API
- Bash script to upload files via command line
-- Skins
+- Themes
Jirafeau is a fork of the original project [Jyraphe](http://home.gna.org/jyraphe/) based on the 0.5 (stable version) with a **lot** of modifications.
1. The download URL changed
* Add a rewrite rule in your web server configuration to rename ```file.php``` to ```f.php``` to make older, still existing links work again
-1. The default skin changed
- * Optionally change the skin in ```lib/config.local.php``` to »courgette«
+1. The default theme changed
+ * Optionally change the theme in ```lib/config.local.php``` to »courgette«
### From version 1.2.0 to 2.0.0
Anyway I would recommend you to use another web browser. :)
+### How can I change the theme?
+
+You may change the default theme to any of the existing ones or a custom.
+
+Open your ```lib/config.local.php``` and change setting in the »`style`« key to the name of any folder in the ```/media``` directory.
+
+Hint: To create a custom theme just copy the »courgette« folder and name your theme »custom« (this way it will be ignored by git and not overwritten during updates). You are invited to enhance the existing themes and send pull requests however.
+
### I found a bug, what should I do?
Feel free to open a bug in the [GitLab's issues](https://gitlab.com/mojo42/Jirafeau/issues).
require(JIRAFEAU_ROOT . 'lib/template/header.php');
/* Check if user is allowed to upload. */
-if (!jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) {
-
- /* Ask password if upload password is set. */
+// First check: Challenge by IP
+if (true === jirafeau_challenge_upload_ip($cfg['upload_ip'], get_ip_address($cfg))) {
+ // Is an upload password required?
if (jirafeau_has_upload_password($cfg)) {
session_start();
- /* Unlog if asked. */
+ // Logout action
if (isset($_POST['action']) && (strcmp($_POST['action'], 'logout') == 0)) {
session_unset();
}
- /* Auth. */
+ // Challenge by password
+ // …save successful logins in session
if (isset($_POST['upload_password'])) {
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;
- echo '<div class="error"><p>' . t('Wrong password.') . '</p></div>';
- require(JIRAFEAU_ROOT.'lib/template/footer.php');
- exit;
+ jirafeau_fatal_error(t('Wrong password.'), $cfg);
}
}
- /* Show auth page. */
- if (!isset($_SESSION['upload_auth']) || $_SESSION['upload_auth'] != true) {
+ // Show login form if user session is not authorized yet
+ if (true === empty($_SESSION['upload_auth'])) {
?>
<form method="post">
<fieldset>
}
}
}
+else {
+ jirafeau_fatal_error(t('Access denied'), $cfg);
+}
?>
<div id="upload_finished">
return $path . ((substr($path, -1) == '/') ? '' : '/');
}
-function jirafeau_fatal_error($errorText)
-{
- echo '<div class="error"><h2>Error</h2><p>' . $errorText . '</p></div>';
- require(JIRAFEAU_ROOT . 'lib/template/footer.php');
- exit;
-}
-
/**
* Check installation
**/
return $content;
}
+function jirafeau_fatal_error($errorText, $cfg = array())
+{
+ echo '<div class="error"><h2>Error</h2><p>' . $errorText . '</p></div>';
+ require(JIRAFEAU_ROOT . 'lib/template/footer.php');
+ exit;
+}
+
function jirafeau_clean_rm_link($link)
{
$p = s2p("$link");
/**
* Test if visitor's IP is authorized to upload.
- * @param $ip IP to be challenged
+ *
+ * @param $allowedIpList array of allowed IPs
+ * @param $challengedIp IP to be challenged
* @return true if IP is authorized, false otherwise.
*/
-function jirafeau_challenge_upload_ip($cfg, $ip)
+function jirafeau_challenge_upload_ip($allowedIpList, $challengedIp)
{
- if (count($cfg['upload_ip']) == 0) {
+ // skip if list is empty = all IPs allowed
+ if (count($allowedIpList) == 0) {
return true;
}
- foreach ($cfg['upload_ip'] as $i) {
- if ($i == $ip) {
+ // test given IP against each allowed IP
+ foreach ($allowedIpList as $i) {
+ if ($i == $challengedIp) {
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)) {
+ if ((ip2long($challengedIp) & ~((1 << (32 - $mask)) - 1)) == ip2long($subnet)) {
return true;
}
}
?>
<!-- Installation dependend links -->
<?php
- if (true == $cfg['installation_done']) {
- echo ' | ';
+ if (false === empty($cfg['installation_done'])) {
+ echo ' <span>|</span> ';
echo '<a href="' . JIRAFEAU_ABSPREFIX . 'tos.php">' . t('Terms of Service') . '</a>';
}
?>
<head>
<meta charset="utf-8">
<title><?php echo (true === empty($cfg['title']))? t('Jirafeau, your web file repository') : $cfg['title']; ?></title>
+ <link rel="shortcut icon" href="<?php echo JIRAFEAU_ABSPREFIX . 'media/' . $cfg['style'] . '/favicon.ico'; ?>">
<link href="<?php echo JIRAFEAU_ABSPREFIX . 'media/' . $cfg['style'] . '/style.css.php'; ?>" rel="stylesheet" type="text/css" />
</head>
<body>