return base64_encode($b);
}
-/**
- * Read alias informations
- * @return array containing informations.
- */
-function jirafeau_get_alias($hash)
-{
- $out = array();
- $link = VAR_ALIAS . s2p("$hash") . $hash;
-
- if (!file_exists($link)) {
- return $out;
- }
-
- $c = file($link);
- $out['md5_password'] = trim($c[0]);
- $out['ip'] = trim($c[1]);
- $out['update_date'] = trim($c[2]);
- $out['destination'] = trim($c[3], NL);
-
- return $out;
-}
-
-/** 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 .
- time() . 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);
- } elseif (strlen($new_password) > 0) {
- return 'Error';
- }
-
- /* Rewrite informations. */
- $p = VAR_ALIAS . s2p($alias) . $alias;
- $handle = fopen($p, 'w');
- fwrite($handle,
- $p . NL .
- $ip . NL .
- time() . NL .
- $destination . NL);
- fclose($handle);
- return 'Ok';
-}
-
-/** Get an alias.
- * @param $alias alias to get
- * @return alias destination or "Error" string
- */
-function jirafeau_alias_get($alias)
-{
- $alias = md5($alias);
- /* Check that alias exits. */
- $a = jirafeau_get_alias($alias);
- if (!count($a)) {
- return 'Error';
- }
-
- return $a['destination'];
-}
-
-function jirafeau_clean_rm_alias($alias)
-{
- $p = s2p("$alias");
- if (file_exists(VAR_ALIAS . $p . $alias)) {
- unlink(VAR_ALIAS . $p . $alias);
- }
- $parse = VAR_ALIAS . $p;
- $scan = array();
- while (file_exists($parse)
- && ($scan = scandir($parse))
- && count($scan) == 2 // '.' and '..' folders => empty.
- && basename($parse) != basename(VAR_ALIAS)) {
- rmdir($parse);
- $parse = substr($parse, 0, strlen($parse) - strlen(basename($parse)) - 1);
- }
-}
-
-/** Delete an alias.
- * @param $alias alias to delete
- * @param $password password to protect alias
- * @return "Ok" or "Error" string
- */
-function jirafeau_alias_delete($alias, $password)
-{
- $alias = md5($alias);
- /* Check that alias exits. */
- $a = jirafeau_get_alias($alias);
- if (!count($a)) {
- return "Error";
- }
-
- /* Check password. */
- if ($a["md5_password"] != md5($password)) {
- return 'Error';
- }
-
- jirafeau_clean_rm_alias($alias);
- return 'Ok';
-}
-
/**
* Replace markers in templates.
*
exit;
}
}
-/* Create alias. */
-elseif (isset($_GET['alias_create'])) {
- if (isset($_POST['upload_password'])){
- if (!jirafeau_challenge_upload($cfg, get_ip_address($cfg), $_POST['upload_password'])) {
- echo 'Error 14: Invalid password';
- exit;
- }
- } else {
- if (!jirafeau_challenge_upload($cfg, get_ip_address($cfg), null)) {
- echo 'Error 13: No password nor allowed IP';
- exit;
- }
- }
-
- if (!isset($_POST['alias']) ||
- !isset($_POST['destination']) ||
- !isset($_POST['password'])) {
- echo 'Error 15';
- exit;
- }
-
- echo jirafeau_alias_create($_POST['alias'],
- $_POST['destination'],
- $_POST['password'],
- $ip);
-}
-/* Get alias. */
-elseif (isset($_GET['alias_get'])) {
- if (!isset($_POST['alias'])) {
- echo 'Error 16';
- exit;
- }
-
- echo jirafeau_alias_get($_POST['alias']);
-}
-/* Update alias. */
-elseif (isset($_GET['alias_update'])) {
- if (!isset($_POST['alias']) ||
- !isset($_POST['destination']) ||
- !isset($_POST['password'])) {
- echo 'Error 17';
- exit;
- }
-
- $new_password = '';
- if (isset($_POST['new_password'])) {
- $new_password = $_POST['new_password'];
- }
-
- echo jirafeau_alias_update($_POST['alias'],
- $_POST['destination'],
- $_POST['password'],
- $new_password,
- get_ip_address($cfg));
-}
-/* Delete alias. */
-elseif (isset($_GET['alias_delete'])) {
- if (!isset($_POST['alias']) ||
- !isset($_POST['password'])) {
- echo 'Error 18';
- exit;
- }
-
- echo jirafeau_alias_delete($_POST['alias'],
- $_POST['password']);
-}
/* Initialize an asynchronous upload. */
elseif (isset($_GET['init_async'])) {
if (isset($_POST['upload_password'])){