-/** Create an alias to a jirafeau's link.
- * @param $alias alias name
- * @param $destination reference of the destination
- * @param $password password to protect alias
- * @param $ip client's IP
- * @return a string containing the edit code of the alias or the string "Error"
- */
-function jirafeau_alias_create ($alias, $destination, $password, $ip)
-{
- /* Check that alias and password are long enough. */
- if (strlen ($alias) < 8 ||
- strlen ($alias) > 32 ||
- strlen ($password) < 8 ||
- strlen ($password) > 32)
- return "Error";
-
- /* Check that destination exists. */
- $l = jirafeau_get_link ($destination);
- if (!count ($l))
- return "Error";
-
- /* Check that alias does not already exists. */
- $alias = md5 ($alias);
- $p = VAR_ALIAS . s2p ($alias);
- if (file_exists ($p))
- return "Error";
-
- /* Create alias folder. */
- @mkdir ($p, 0755, true);
- if (!file_exists ($p))
- return "Error";
-
- /* Generate password. */
- $md5_password = md5 ($password);
-
- /* Store informations. */
- $p .= $alias;
- $handle = fopen ($p, 'w');
- fwrite ($handle,
- $md5_password . NL .
- $ip . NL .
- date ('U') . NL .
- $destination . NL);
- fclose ($handle);
-
- return "Ok";
-}
-
-/** Update an alias.
- * @param $alias alias to update
- * @param $destination reference of the new destination
- * @param $password password to protect alias
- * @param $new_password optional new password to protect alias
- * @param $ip client's IP
- * @return "Ok" or "Error" string
- */
-function jirafeau_alias_update ($alias, $destination, $password,
- $new_password, $ip)
-{
- $alias = md5 ($alias);
- /* Check that alias exits. */
- $a = jirafeau_get_alias ($alias);
- if (!count ($a))
- return "Error";
-
- /* Check that destination exists. */
- $l = jirafeau_get_link ($a["destination"]);
- if (!count ($l))
- return "Error";
-
- /* Check password. */
- if ($a["md5_password"] != md5 ($password))
- return "Error";
-
- $p = $a["md5_password"];
- if (strlen ($new_password) >= 8 &&
- strlen ($new_password) <= 32)
- $p = md5 ($new_password);
- else if (strlen ($new_password) > 0)
- return "Error";
-
- /* Rewrite informations. */
- $p = VAR_ALIAS . s2p ($alias) . $alias;
- $handle = fopen ($p, 'w');
- fwrite ($handle,
- $p . NL .
- $ip . NL .
- date ('U') . NL .
- $destination . NL);
- fclose ($handle);
- return "Ok";
-}
-
-/** Get an alias.
- * @param $alias alias to get
- * @return alias destination or "Error" string
+function jirafeau_escape($string)
+{
+ return htmlspecialchars($string, ENT_QUOTES);
+}
+
+function jirafeau_admin_session_start()
+{
+ $_SESSION['admin_auth'] = true;
+ $_SESSION['admin_csrf'] = md5(uniqid(mt_rand(), true));
+}
+
+function jirafeau_session_end()
+{
+ $_SESSION = array();
+ session_destroy();
+}
+
+function jirafeau_admin_session_logged()
+{
+ return isset($_SESSION['admin_auth']) &&
+ isset($_SESSION['admin_csrf']) &&
+ isset($_POST['admin_csrf']) &&
+ $_SESSION['admin_auth'] === true &&
+ $_SESSION['admin_csrf'] === $_POST['admin_csrf'];
+}
+
+function jirafeau_admin_csrf_field()
+{
+ return "<input type='hidden' name='admin_csrf' value='". $_SESSION['admin_csrf'] . "'/>";
+}
+
+function jirafeau_user_session_start()
+{
+ $_SESSION['user_auth'] = true;
+}
+
+function jirafeau_user_session_logged()
+{
+ return isset($_SESSION['user_auth']) &&
+ $_SESSION['user_auth'] === true;
+}
+
+function jirafeau_dir_size($dir)
+{
+ $size = 0;
+ foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $entry) {
+ $size += is_file($entry) ? filesize($entry) : jirafeau_dir_size($entry);
+ }
+ return $size;
+}
+
+function jirafeau_export_cfg($cfg)
+{
+ $content = '<?php' . NL;
+ $content .= '/* This file was generated by the install process. ' .
+ 'You can edit it. Please see config.original.php to understand the ' .
+ 'configuration items. */' . NL;
+ $content .= '$cfg = ' . var_export($cfg, true) . ';';
+
+ $fileWrite = file_put_contents(JIRAFEAU_CFG, $content);
+
+ if (false === $fileWrite) {
+ jirafeau_fatal_error(t('Can not write local configuration file'));
+ }
+}
+
+function jirafeau_mkdir($path)
+{
+ return !(!file_exists($path) && !@mkdir($path, 0755));
+}
+
+/**
+ * Returns true whether the path is writable or we manage to make it
+ * so, which essentially is the same thing.
+ * @param $path is the file or directory to be tested.
+ * @return true if $path is writable.