[enh] WIP bureau classes documentation

This commit is contained in:
alban 2014-04-05 14:58:16 +02:00
parent 7b7a87515a
commit 67081465c0
27 changed files with 2267 additions and 393 deletions

View File

@ -50,7 +50,7 @@ if (getenv("REMOTE_ADDR")!="127.0.0.1") {
Merci de revenir plus tard.";
exit();
}
/* */
/* Toutes les pages du bureau passent ici. On utilise une s<EFBFBD>maphore pour
s'assurer que personne ne pourra acc<EFBFBD>der <EFBFBD> 2 pages du bureau en m<EFBFBD>me temps.
@ -67,7 +67,7 @@ function alternc_shutdown() {
register_shutdown_function("alternc_shutdown");
// 4. Acquire the semaphore : with that process,
sem_acquire( $alternc_sem );
/* */
if (ini_get("safe_mode")) {
echo "SAFE MODE IS ENABLED for the web panel ! It's a bug in your php or apache configuration, please fix it !!";

View File

@ -172,7 +172,7 @@ class DB_Sql {
}
if (isset($debug_alternc)) {
$debug_alternc->add("SQL Query : (".substr($debug_chrono_start,0,5)." ms)\t $Query_String");
$debug_alternc->add("SQL Query : (".substr($debug_chrono_start,0,5)." ms) $Query_String");
$debug_alternc->nb_sql_query++;
$debug_alternc->tps_sql_query += $debug_chrono_start;
}

View File

@ -476,7 +476,7 @@ function ssla($str) {
}
}
/* ----------------------------------------------------------------- */
/** Hashe un mot de passe en clair en MD5 avec un salt al<EFBFBD>atoire
* @param string $pass Mot de passe <EFBFBD> crypter (max 32 caract<EFBFBD>res)
* @return string Retourne le mot de passe crypt<EFBFBD>
@ -504,7 +504,7 @@ function split_mysql_database_name($dbname) {
}
/* ----------------------------------------------------------------- */
/** Echappe les caract<EFBFBD>res pouvant perturber un flux XML standard :
* @param string $string Chaine de caract<EFBFBD>re <EFBFBD> encoder en valeur xml.
* @return string Retourne la cha<EFBFBD>ne modifi<EFBFBD>e si besoin.
@ -514,7 +514,7 @@ function xml_entities($string) {
return str_replace("<","&lt;",str_replace(">","&gt;",str_replace("&","&amp;",$string)));
}
/* ----------------------------------------------------------------- */
/** Converti un nombre de mois en une chaine plus lisible
* @param integer $months Nombre de mois
* @return string Cha<EFBFBD>ne repr<EFBFBD>sentant le nombre de mois
@ -529,7 +529,7 @@ function pretty_months($months) {
}
}
/* ----------------------------------------------------------------- */
/** Fabrique un drop-down pour les dur<EFBFBD>es de comptes
* @name string $name Nom pour le composasnt
* @selected number Option selection<EFBFBD>e du composant

View File

@ -31,7 +31,7 @@
*
*/
class m_action {
/* --------------------------------------------------------------------------- */
/**
* Constructor
@ -222,7 +222,7 @@ class m_action {
* This seems to be unused ?
*
* @global m_err $err
* @global m_mysql $db
* @global m_mysql $db
* @return boolean
*/
function get_old() {

View File

@ -23,7 +23,7 @@
----------------------------------------------------------------------
*/
/* ----------------------------------------------------------------- */
/**
* Manage the AlternC's account administration (create/edit/delete)
@ -31,12 +31,12 @@
class m_admin {
/* ----------------------------------------------------------------- */
/** $enabled tells if the logged user is super-admin or not
*/
var $enabled=0;
/* ----------------------------------------------------------------- */
/** List of the controls made for each TLD
*
* $tldmode is used by the administration panel, while choosing
@ -505,7 +505,7 @@ class m_admin {
* When the admin want to delegate a subdomain to an account
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @global m_dom $dom
* @global m_mem $mem
* @global int $cuid
@ -541,7 +541,7 @@ class m_admin {
return true;
}
/* ----------------------------------------------------------------- */
/** Creates a new hosted account
*
* Creates a new hosted account (in the tables <code>membres</code>
@ -549,7 +549,7 @@ class m_admin {
* the account $mid is not super-admin.
*
*
* @global m_err $err
* @global m_err $err
* @global m_quota $quota
* @global array $classes
* @global int $cuid
@ -668,7 +668,7 @@ class m_admin {
* AlternC's standard function called when a user is created
* This sends an email if configured through the interface.
*
* @global m_err $err
* @global m_err $err
* @global int $cuid
* @global string $L_FQDN
* @global string $L_HOSTING
@ -731,7 +731,7 @@ EOF;
* and <code>local</code>). Prevents any manipulation of the account if
* the account $mid is not super-admin.
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @global int $cuid
* @global m_quota $quota
@ -790,7 +790,7 @@ EOF;
*
* Lock an account and prevent the user to access its account.
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @param int $uid The uid number of the account
* @return boolean Returns FALSE if an error occurs, TRUE if not.
@ -819,7 +819,7 @@ EOF;
* UnLock an account and prevent the user to access its account.
*
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @param int $uid The uid number of the account
* @return boolean Returns FALSE if an error occurs, TRUE if not.
@ -842,12 +842,12 @@ EOF;
}
/* ----------------------------------------------------------------- */
/** Deletes an account
* Deletes the specified account. Prevents any manipulation of the account if
* the account $mid is not super-admin.
*
* @global m_err $err
* @global m_err $err
* @global m_quota $quota
* @global array $classes
* @global int $cuid
@ -901,7 +901,7 @@ EOF;
*
* Renew an account for its duration
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @param int $uid The uid number of the account
* @param int $periods The new duration, in months, of the account
@ -927,7 +927,7 @@ EOF;
/**
* Update the duration information for an account
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @param int $uid The uid number of the account
* @param int $duration The new duration, in months, of the account
@ -965,7 +965,7 @@ EOF;
}
/* ----------------------------------------------------------------- */
/**
* Get the expiry status for an account
*
@ -1016,7 +1016,7 @@ EOF;
/**
* Turns a common account into a super-admin account
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @param int $uid The uid number of the account
* @return boolean
@ -1040,7 +1040,7 @@ EOF;
/**
* Turns a super-admin account into a common account
*
* @global m_err $err
* @global m_err $err
* @global m_mysql $db
* @param int $uid The uid number of the account
* @return boolean Returns FALSE if an error occurs, TRUE if not.
@ -1208,7 +1208,7 @@ EOF;
* from its account
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @param string $domain Domain name to lock / unlock
* @return boolean TRUE if the domain has been locked/unlocked or FALSE if it does not exist.
*/
@ -1228,7 +1228,7 @@ EOF;
* Add a new TLD to the list of the authorized TLDs
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @param string $tld top-level domain to add (org, com...)
* @return boolean TRUE if the tld has been successfully added, FALSE if not.
*/
@ -1263,7 +1263,7 @@ EOF;
* on this TLD
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @param string $tld The TLD you want to delete
* @return boolean returns true if the TLD has been deleted, or
* false if an error occured.
@ -1280,7 +1280,7 @@ EOF;
}
/* ----------------------------------------------------------------- */
/** Add a TLD to the list of the authorized TLDs during the installation
*
* <b>Note: </b> If you check in the whois, be sure that
@ -1288,7 +1288,7 @@ EOF;
* domain!
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @param string $tld string TLD we want to authorize
* @param boolean $mode Controls to make on this TLD.
* @return boolean TRUE if the TLD has been successfully
@ -1319,7 +1319,7 @@ EOF;
* Modify a TLD of the list of the authorized TLDs
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @param string $tld TLD we want to modify
* @param int $mode Controls to make on this TLD.
* @return boolean TRUE if the TLD has been successfully
@ -1371,16 +1371,6 @@ EOF;
while ($db->next_record()) {
$tmp1[$db->Record["name"]]=$db->Record;
}
/* * /
foreach($classes as $c) {
if (method_exists($GLOBALS[$c],"alternc_password_policy")) {
$res=$GLOBALS[$c]->alternc_password_policy(); // returns an array
foreach($res as $k=>$v) {
$tmp2[$k]=$v;
}
}
}
/* */
$tmp3=$hooks->invoke("alternc_password_policy");
foreach ($tmp3 as $v) {
foreach ($v as $l=>$m) {
@ -1441,7 +1431,7 @@ EOF;
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @param string $policy Name of the policy to check for
* @param string $login The login that will be set
* @param string $password The password we have to check

View File

@ -355,7 +355,7 @@ class m_authip {
* affectationt ip<=>ressource dont l'id est en parametre
*
* @global m_hooks $hooks
* @global m_err $err
* @global m_err $err
* @param string $function Nom de la fonction a rechercher et appeller dans les classes
* @param integer $affectation_id Id de l'affectation correspondante
* @return boolean Retourne TRUE

View File

@ -192,7 +192,7 @@ class m_bro {
*
* @global m_mysql $db
* @global int $cuid
* @global m_err $err
* @global m_err $err
* @param string $dir Dossier relatif au dossier racine du compte du membre courant
* @param boolean $showdirsize
* @return array Le tableau contenant les fichiers de $dir, et
@ -387,7 +387,7 @@ class m_bro {
*
* @global m_mysql $db
* @global int $cuid
* @global m_err $err
* @global m_err $err
* @param string $dir Dossier dans lequel on veut crer un sous-dossier
* @param string $file Nom du dossier à créer
* @return boolean TRUE si le dossier a été créé, FALSE si une erreur s'est produite.
@ -415,7 +415,7 @@ class m_bro {
* Crée un fichier vide dans un dossier
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @global int $cuid
* @param string $dir Dossier dans lequel on veut crer un sous-dossier
* @param string $file Nom du dossier à créer
@ -443,7 +443,7 @@ class m_bro {
/**
* Efface les fichiers du tableau $file_list dans le dossier $R
*
* @global m_err $err
* @global m_err $err
* @global m_mem $mem
* @param array $file_list Liste des fichiers effacer.
* @param string $R Dossier dans lequel on efface les fichiers
@ -470,7 +470,7 @@ class m_bro {
/**
* Renomme les fichier de $old du dossier $R en $new
*
* @global m_err $err
* @global m_err $err
* @param string $R Dossier dans lequel se trouve les fichiers renommer.
* @param array $old Ancien nom des fichiers
* @param array $new Nouveau nom des fichiers
@ -504,7 +504,7 @@ class m_bro {
/**
* Déplace les fichier de $d du dossier $old vers $new
*
* @global m_err $err
* @global m_err $err
* @param array $d Liste des fichiers du dossier $old dplacer
* @param string $old Dossier dans lequel se trouve les fichiers dplacer.
* @param string $new Dossier vers lequel seront dplacs les fichiers.
@ -545,7 +545,7 @@ class m_bro {
/**
* Change les droits d'acces aux fichier de $d du dossier $R en $p
*
* @global m_err $err
* @global m_err $err
* @param string $R Dossier dans lequel se trouve les fichiers renommer.
* @param boolean $verbose Shall we 'echo' what we did ?
* @return boolean TRUE Si les fichiers ont t renomms, FALSE si une erreur s'est produite.
@ -587,7 +587,7 @@ class m_bro {
*
*
* @global array $_FILES
* @global m_err $err
* @global m_err $err
* @global int $cuid
* @global m_action $action
* @param string $R Dossier dans lequel on upload le fichier
@ -640,7 +640,7 @@ class m_bro {
/**
* Extract an archive by using GNU and non-GNU tools
*
* @global m_err $err
* @global m_err $err
* @global int $cuid
* @global m_mem $mem
* @global m_action $action
@ -692,7 +692,7 @@ class m_bro {
/**
* Copy many files from point A to point B
*
* @global m_err $err
* @global m_err $err
* @param array $d List of files to move
* @param string $old
* @param string $new
@ -731,7 +731,7 @@ class m_bro {
*
* Note that we assume that the inputs have been convertabsolute()'d
*
* @global m_err $err
* @global m_err $err
* @param string $src Path or URL
* @param string $dest Absolute path inside the users directory
* @return boolean false on error
@ -785,7 +785,7 @@ class m_bro {
* Affiche le contenu du fichier $file dans le dossier $R. Le contenu
* du fichier est reformat pour pouvoir entrer dans un champs TextArea
*
* @global m_err $err
* @global m_err $err
* @param string $R Dossier dans lequel on cherche le fichier
* @param string $file Fichier dont on souhaite obtenir le contenu.
* @return string|false TRUE si le fichier a bien été mis sur
@ -868,7 +868,7 @@ class m_bro {
/**
*
* @global m_mem $mem
* @global m_err $err
* @global m_err $err
* @param string $dir
* @param string $name
* @return null|boolean
@ -939,7 +939,7 @@ class m_bro {
/**
*
* @global m_err $err
* @global m_err $err
* @param string $dir
* @param string $file
*/
@ -956,7 +956,7 @@ class m_bro {
/**
* Echoes the content of the file $file located in directory $R
*
* @global m_err $err
* @global m_err $err
* @param string $R
* @param string $file
* @return null|false
@ -981,7 +981,7 @@ class m_bro {
* le contenu est issu d'un textarea, et ne DOIT PAS contenir de \ ajouts
* automatiquement par addslashes
*
* @global m_err $err
* @global m_err $err
* @param string $file Nom du fichier sauver. S'il existe déjà, il sera
* écrasé sans confirmation.
* @param string $R Dossier dans lequel on modifie le fichier
@ -1124,7 +1124,7 @@ class m_bro {
* Produit en sorti un tableau formatté ( pour le moment) en HTML
*
* @global m_mysql $db
* @global m_err $err
* @global m_err $err
* @return string
*/
function alternc_export_conf() {
@ -1151,7 +1151,7 @@ class m_bro {
* Function d'exportation des données appelé par la classe m_export via un hooks
*
* @global m_mem $mem
* @global m_err $err
* @global m_err $err
* @param string $dir Le chemin destination du tarball produit
* @return boolean|null
*/

View File

@ -29,12 +29,18 @@
class m_cron {
/*---------------------------------------------------------------------------*/
/** Constructor
*/
/**
*
*/
function m_cron() {
}
/**
*
* @return type
*/
function schedule() {
return Array(
Array('unit'=>1440, 'name'=>_("Daily")),
@ -44,10 +50,16 @@ class m_cron {
}
/*---------------------------------------------------------------------------*/
/** List the crontab for the current user.
* @return array an hash for each crontab.
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @return type
*/
function lst_cron() {
global $cuid,$db,$err;
$err->log("cron","lst_cron");
@ -67,6 +79,10 @@ class m_cron {
return $r;
}
/**
*
* @return int
*/
function hook_menu() {
$obj = array(
'title' => _("Scheduled tasks"),
@ -78,11 +94,15 @@ class m_cron {
return $obj;
}
/*---------------------------------------------------------------------------*/
/** update the crontab
* @param $arr array the crontab information, including its ID
* @return boolean TRUE if the crontab has been edited
*/
/**
*
* @param type $arr
* @return boolean
*/
function update($arr) {
$ok=true;
foreach ($arr as $a) {
@ -96,11 +116,18 @@ class m_cron {
}
/*---------------------------------------------------------------------------*/
/** delete a crontab
* @param $id the id of the crontab to delete
* @return boolean TRUE if the crontab has been deleted
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $id
* @return type
*/
function delete_one($id) {
global $db,$err,$cuid;
$err->log("cron","delete_one");
@ -108,10 +135,23 @@ class m_cron {
}
/*---------------------------------------------------------------------------*/
/** update a crontab,
* @return boolean TRUE if the crontab has been edited
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_quota $quota
* @global m_mem $mem
* @param type $url
* @param type $user
* @param type $password
* @param type $email
* @param type $schedule
* @param type $id
* @return boolean|string
*/
private function _update_one($url, $user, $password, $email, $schedule, $id=null) {
global $db,$err,$quota,$cuid;
$err->log("cron","update_one");
@ -159,11 +199,15 @@ class m_cron {
}
/*---------------------------------------------------------------------------*/
/** validate a crontab schedule
* @param $s array schedule paramters
* @return boolean TRUE if the schedule is valid
*/
/**
*
* @param type $s
* @return boolean
*/
function valid_schedule($s) {
$s2 = intval($s);
if ($s2 != $s) return false;
@ -174,9 +218,15 @@ class m_cron {
return $r;
}
/*---------------------------------------------------------------------------*/
/** hook for quota computation
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @return type
*/
function hook_quota_get() {
global $cuid,$db,$err;
$err->log("cron","alternc_get_quota");

View File

@ -1,44 +1,46 @@
<?php
class m_crypto
{
function encrypt($sValue, $sSecretKey)
{
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey, $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
)
), "\0"
);
}
/**
*
*/
class m_crypto {
function decrypt($sValue, $sSecretKey)
{
return rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey,
base64_decode($sValue),
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
), "\0"
);
}
/**
*
* @param type $sValue
* @param type $sSecretKey
* @return type
*/
function encrypt($sValue, $sSecretKey) {
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256, $sSecretKey, $sValue, MCRYPT_MODE_ECB, mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB
), MCRYPT_RAND
)
)
), "\0"
);
}
/**
*
* @param type $sValue
* @param type $sSecretKey
* @return type
*/
function decrypt($sValue, $sSecretKey) {
return rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256, $sSecretKey, base64_decode($sValue), MCRYPT_MODE_ECB, mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB
), MCRYPT_RAND
)
), "\0"
);
}
}

View File

@ -1,94 +1,120 @@
<?php
/*
LICENSE
LICENSE
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To read the license please visit http://www.gnu.org/copyleft/gpl.html
----------------------------------------------------------------------
Original Author of file: Camille Lafitte
Purpose of file: Manage hook system.
----------------------------------------------------------------------
*/
To read the license please visit http://www.gnu.org/copyleft/gpl.html
----------------------------------------------------------------------
Original Author of file: Camille Lafitte
Purpose of file: Manage hook system.
----------------------------------------------------------------------
*/
/**
* This class manage debug.
*
* @copyright AlternC-Team 2002-2005 http://alternc.org/
*/
class m_debug_alternc {
var $infos="";
var $status=false;
var $nb_sql_query=0;
var $tps_sql_query=0;
var $generation_started=null;
/*---------------------------------------------------------------------------*/
/** Constructor
*/
function m_debug_alternc() {
if ( isset($_COOKIE['alternc_debugme']) && $_COOKIE['alternc_debugme'] ) {
$this->status=true;
ini_set('display_errors', '1');
var $infos = "";
var $status = false;
var $nb_sql_query = 0;
var $tps_sql_query = 0;
var $generation_started = null;
/** Constructor
*/
/**
*
*/
function m_debug_alternc() {
if (isset($_COOKIE['alternc_debugme']) && $_COOKIE['alternc_debugme']) {
$this->status = true;
ini_set('display_errors', '1');
}
$this->nb_sql_query = 0;
$this->tps_sql_query = 0;
$this->generation_started = microtime(true);
}
$this->nb_sql_query=0;
$this->tps_sql_query=0;
$this->generation_started=microtime(true);
}
function activate() {
setcookie('alternc_debugme','1', time()+3600); // expire in 1 hour
$this->status="";
return true;
}
/**
*
* @return boolean
*/
function activate() {
setcookie('alternc_debugme', '1', time() + 3600); // expire in 1 hour
$this->status = "";
return true;
}
function desactivate() {
setcookie('alternc_debugme','0');
$this->status=false;
return true;
}
/**
*
* @return boolean
*/
function desactivate() {
setcookie('alternc_debugme', '0');
$this->status = false;
return true;
}
function add($txt) {
$this->infos .= "\n$txt";
return true;
}
/**
*
* @param type $txt
* @return boolean
*/
function add($txt) {
$this->infos .= "\n$txt";
return true;
}
function dump() {
global $cuid;
if ( $cuid!=2000 ) return false;
if ( ! $this->status ) return false;
/**
*
* @global m_mem $mem
* @return boolean
*/
function dump() {
global $cuid;
if ($cuid != 2000)
return false;
if (!$this->status)
return false;
$generation_time = (microtime(true) - $this->generation_started) * 1000;
$generation_time = (microtime(true) - $this->generation_started) * 1000;
echo "<fieldset style='background-color: silver;'>";
echo "<pre>";
echo "+++ BEGIN Debug Mode+++\n";
echo "Total generation time : $generation_time ms\n";
print_r("\n--- Total SQL Query : ".$this->nb_sql_query." req / ".$this->tps_sql_query." ms ---\n");
print_r($this->infos);
echo "\n\n--- GET ---\n";
print_r($_GET);
echo "\n\n--- POST ---\n";
print_r($_POST);
echo "\n\n--- SESSION ---\n";
@print_r($_SESSION);
echo "\n\n--- COOKIE ---\n";
print_r($_COOKIE);
echo "\n\n--- SERVER ---\n";
print_r($_SERVER);
echo "\n\n+++ END Debug Mode+++";
echo "</pre>";
echo "</fieldset>";
return true;
}
echo "<fieldset style='background-color: silver;'>";
echo "<pre>";
echo "+++ BEGIN Debug Mode+++\n";
echo "Total generation time : $generation_time ms\n";
print_r("\n--- Total SQL Query : " . $this->nb_sql_query . " req / " . $this->tps_sql_query . " ms ---\n");
print_r($this->infos);
echo "\n\n--- GET ---\n";
print_r($_GET);
echo "\n\n--- POST ---\n";
print_r($_POST);
echo "\n\n--- SESSION ---\n";
@print_r($_SESSION);
echo "\n\n--- COOKIE ---\n";
print_r($_COOKIE);
echo "\n\n--- SERVER ---\n";
print_r($_SERVER);
echo "\n\n+++ END Debug Mode+++";
echo "</pre>";
echo "</fieldset>";
return true;
}
} /* Class debug_alternc */
}
?>
/* Class debug_alternc */

File diff suppressed because it is too large Load Diff

View File

@ -61,6 +61,13 @@ class m_err {
* @return boolean TRUE si l'erreur est connue, FALSE sinon.
*
*/
/**
*
* @param type $clsid
* @param type $error
* @param type $param
* @return boolean
*/
function raise($clsid,$error,$param="") {
/* Leve une exception. Si elle existe, sinon, stocke un message d'erreur sur erreur ...*/
if (_("err_".$clsid."_".$error)!="err_".$clsid."_".$error || is_string($error)) {
@ -89,6 +96,11 @@ class m_err {
* @return string Chaine d'erreur.
*
*/
/**
*
* @return type
*
*/
function errstr() {
if (is_string($this->error)) {
// new way of handling errors: message directly in the class
@ -115,6 +127,10 @@ class m_err {
* Elle est appelée automatiquement par error
* @access private
*/
/**
*
* @global m_mem $mem
*/
function logerr() {
global $mem;
@file_put_contents($this->logfile, date("d/m/Y H:i:s")." - ERROR - ".$mem->user["login"]." - ".$this->errstr(), FILE_APPEND );
@ -132,6 +148,15 @@ class m_err {
* @return boolean TRUE si le log a été ajouté, FALSE sinon
*
*/
/**
*
* @global m_mem $mem
* @global m_mem $mem
* @param type $clsid
* @param type $function
* @param type $param
* @return type
*/
function log($clsid,$function,$param="") {
global $mem,$cuid;
return @file_put_contents($this->logfile,date("d/m/Y H:i:s")." - " .get_remote_ip(). " - CALL - ".$mem->user["login"]." - $clsid - $function - $param\n", FILE_APPEND );
@ -139,4 +164,3 @@ class m_err {
}; /* Classe m_err */
?>

View File

@ -1,14 +1,21 @@
<?php
/*---------------------------------------------------------------------------*/
/** Constructor
Classe d'export de compte Alternc.
Cette classe ce contente d'invoquer les fonctions d'exportation de configuration et de données d'un compte,
presentes dans les classes concernées.
*/
Class m_export {
/**
*
*/
function m_export() {
}
/**
*
* @global m_hooks $hooks
* @return type
*/
function export_conf(){
global $hooks;
$config=$hooks->invoke('alternc_export_conf');
@ -18,6 +25,12 @@ Class m_export {
/** le repertoire de base est passé en paramettre puis en construit une arborescence de la forme
<dir>/<user>/<timestamp/ qui contiendra les dossier de dump html et sql
*/
/**
*
* @global m_hooks $hooks
* @global m_mem $mem
* @param type $dir
*/
function export_data($dir){
global $hooks, $mem;

View File

@ -24,7 +24,7 @@
*/
/**
* Classe de gestion des comptes FTP de l'hébergé.
* Classe de gestion des comptes FTP de l'h<EFBFBD>berg<EFBFBD>.
*/
class m_ftp {
@ -34,6 +34,10 @@ class m_ftp {
/**
* Constructeur
*/
/**
*
* @global string $L_FQDN
*/
function m_ftp() {
global $L_FQDN;
$this->srv_name = variable_get('ftp_human_name', '%%FQDN%%','Human name for FTP server', array('desc'=>'Name','type'=>'string'));
@ -44,10 +48,19 @@ class m_ftp {
/**
* Password kind used in this class (hook for admin class)
*/
/**
*
* @return type
*/
function alternc_password_policy() {
return array("ftp"=>"FTP accounts");
}
/**
*
* @global m_quota $quota
* @return string
*/
function hook_menu() {
global $quota;
$q = $quota->getquota("ftp");
@ -83,6 +96,10 @@ class m_ftp {
// Return the values needed to activate security access. See get_auth_class()
// in authip for more informations
/**
*
* @return array
*/
function authip_class() {
$c = Array();
$c['name']="FTP";
@ -99,6 +116,15 @@ class m_ftp {
}
// Switch enabled status of an account
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @param type $id
* @param type $status
* @return boolean
*/
function switch_enabled($id,$status=null) {
global $cuid, $db, $err;
if (! $jj = $this->get_ftp_details($id)) {
@ -123,14 +149,22 @@ class m_ftp {
/* ----------------------------------------------------------------- */
/** Retourne la liste des comptes FTP du compte hébergé
* Retourne la liste des comptes FTP sous forme de tableau indexé de
/** Retourne la liste des comptes FTP du compte h<EFBFBD>berg<EFBFBD>
* Retourne la liste des comptes FTP sous forme de tableau index<EFBFBD> de
* tableaus associatifs comme suit :
* $a["id"]= ID du compte ftp
* $a["login"]= Nom de login du compte
* $a["dir"]= Dossier relatif à la racine du compte de l'utilisateur
* $a["dir"]= Dossier relatif <EFBFBD> la racine du compte de l'utilisateur
* @return array Retourne le tableau des comptes
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_bro $bro
* @return type
*/
function get_list() {
global $db,$err,$cuid, $bro;
$err->log("ftp","get_list");
@ -154,11 +188,19 @@ class m_ftp {
}
/* ----------------------------------------------------------------- */
/** Retourne les détails d'un compte FTP (voir get_list)
* Le tableau est celui du compte d'id spécifié
* @param integer $id Numéro du compte dont on souhaite obtenir les détails
/** Retourne les d<EFBFBD>tails d'un compte FTP (voir get_list)
* Le tableau est celui du compte d'id sp<EFBFBD>cifi<EFBFBD>
* @param integer $id Num<EFBFBD>ro du compte dont on souhaite obtenir les d<EFBFBD>tails
* @return array Tableau associatif contenant les infos du comptes ftp
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $id
* @return string|boolean
*/
function get_ftp_details($id) {
global $db,$err,$cuid;
$err->log("ftp","get_ftp_details",$id);
@ -194,6 +236,13 @@ class m_ftp {
* @return array tableau contenant la liste des prefixes (domaines + login)
* du compte actuel.
*/
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @global m_mem $mem
* @return type
*/
function prefix_list() {
global $db,$mem,$cuid;
$r=array();
@ -210,6 +259,12 @@ class m_ftp {
*
* @param string $l
*/
/**
*
* @global m_err $err
* @param type $l
* @return boolean
*/
function check_login($l) {
global $err;
@ -233,11 +288,16 @@ class m_ftp {
/* ----------------------------------------------------------------- */
/** Affiche (ECHO) la liste des prefixes disponibles sous forme de champs d'option
* Les champs sont affichés sous la forme <option>prefixe</option>...
* La valeur $current se voit affublée de la balise SELECTED.
* @param string $current Prefixe sélectionné par faut
* Les champs sont affich<EFBFBD>s sous la forme <option>prefixe</option>...
* La valeur $current se voit affubl<EFBFBD>e de la balise SELECTED.
* @param string $current Prefixe s<EFBFBD>lectionn<EFBFBD> par d<EFBFBD>faut
* @return boolean TRUE.
*/
/**
*
* @param type $current
* @return boolean
*/
function select_prefix_list($current) {
$r=$this->prefix_list();
reset($r);
@ -249,14 +309,29 @@ class m_ftp {
}
/* ----------------------------------------------------------------- */
/** Modifie les paramètres du comptes FTP $id.
* @param integer $id Numéro du compte dont on veut modifier les paramètres
/** Modifie les param<EFBFBD>tres du comptes FTP $id.
* @param integer $id Num<EFBFBD>ro du compte dont on veut modifier les param<EFBFBD>tres
* @param string $prefixe Prefixe du compte FTP
* @param string $login login ajouté au préfixe ($prefixe_$login)
* @param string $login login ajout<EFBFBD> au pr<EFBFBD>fixe ($prefixe_$login)
* @param string $pass mot de passe
* @param string $dir Répertoire racine du compte
* @return boolean TRUE si le compte a été modifié, FALSE si une erreur est survenue.
* @param string $dir R<EFBFBD>pertoire racine du compte
* @return boolean TRUE si le compte a <EFBFBD>t<EFBFBD> modifi<EFBFBD>, FALSE si une erreur est survenue.
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @global m_bro $bro
* @global m_mem $mem
* @global m_admin $admin
* @param type $id
* @param type $prefixe
* @param type $login
* @param type $pass
* @param type $dir
* @return boolean
*/
function put_ftp_details($id,$prefixe,$login,$pass,$dir) {
global $mem,$db,$err,$bro,$cuid,$admin;
$err->log("ftp","put_ftp_details",$id);
@ -311,10 +386,18 @@ class m_ftp {
/* ----------------------------------------------------------------- */
/** Efface le compte ftp spécifié.
* @param integer $id Numéro du compte FTP à supprimer.
* @return boolean TRUE si le compte a été effacé, FALSE sinon.
/** Efface le compte ftp sp<EFBFBD>cifi<EFBFBD>.
* @param integer $id Num<EFBFBD>ro du compte FTP <EFBFBD> supprimer.
* @return boolean TRUE si le compte a <EFBFBD>t<EFBFBD> effac<EFBFBD>, FALSE sinon.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $id
* @return boolean
*/
function delete_ftp($id) {
global $db,$err,$cuid;
$err->log("ftp","delete_ftp",$id);
@ -330,14 +413,29 @@ class m_ftp {
}
/* ----------------------------------------------------------------- */
/** Crée un nouveau compte FTP.
/** Cr<EFBFBD>e un nouveau compte FTP.
* @param string $prefixe Prefixe au login
* @param string $login Login ftp (login=prefixe_login)
* @param string $pass Mot de passe FTP
* @param string $dir Répertoire racine du compte relatif à la racine du membre
* @return boolean TRUE si le compte a été créé, FALSE sinon.
* @param string $dir R<EFBFBD>pertoire racine du compte relatif <EFBFBD> la racine du membre
* @return boolean TRUE si le compte a <EFBFBD>t<EFBFBD> cr<EFBFBD><EFBFBD>, FALSE sinon.
*
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @global m_quota $quota
* @global m_bro $bro
* @global m_mem $mem
* @global m_admin $admin
* @param type $prefixe
* @param type $login
* @param type $pass
* @param type $dir
* @return boolean
*/
function add_ftp($prefixe,$login,$pass,$dir) {
global $mem,$db,$err,$quota,$bro,$cuid,$admin;
$err->log("ftp","add_ftp",$prefixe."_".$login);
@ -392,10 +490,18 @@ class m_ftp {
}
/* ----------------------------------------------------------------- */
/** Retourne TRUE si $dir possède un compte FTP
* @param string $dir Dossier à tester, relatif à la racine du compte courant
* @return boolean retourne TRUE si $dir à un compte FTP, FALSE sinon.
/** Retourne TRUE si $dir poss<EFBFBD>de un compte FTP
* @param string $dir Dossier <EFBFBD> tester, relatif <EFBFBD> la racine du compte courant
* @return boolean retourne TRUE si $dir <EFBFBD> un compte FTP, FALSE sinon.
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @param type $dir
* @return boolean
*/
function is_ftp($dir) {
global $mem,$db,$err;
$err->log("ftp","is_ftp",$dir);
@ -410,10 +516,18 @@ class m_ftp {
}
/* ----------------------------------------------------------------- */
/** Fonction appellée par domains quand un domaine est supprimé pour le membre
* @param string $dom Domaine à truire.
/** Fonction appell<EFBFBD>e par domains quand un domaine est supprim<EFBFBD> pour le membre
* @param string $dom Domaine <EFBFBD> d<EFBFBD>truire.
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $dom
* @return boolean
*/
function alternc_del_domain($dom) {
global $db,$err,$cuid;
$err->log("ftp","alternc_del_domain",$dom);
@ -422,9 +536,16 @@ class m_ftp {
}
/* ----------------------------------------------------------------- */
/** Fonction appellée par membres quand un membre est effacé.
/** Fonction appell<EFBFBD>e par membres quand un membre est effac<EFBFBD>.
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return boolean
*/
function alternc_del_member() {
global $db,$err,$cuid;
$err->log("ftp","alternc_del_member");
@ -439,6 +560,13 @@ class m_ftp {
* @return integer the number of service used or false if an error occured
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return type
*/
function hook_quota_get() {
global $db,$err,$cuid;
$err->log("ftp","getquota");
@ -457,6 +585,12 @@ class m_ftp {
* @access private
* EXPERIMENTAL 'sid' function ;)
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @return string
*/
function alternc_export_conf() {
global $db,$err;
$err->log("ftp","export");
@ -478,6 +612,10 @@ class m_ftp {
* @return array a key => value list of port protocol name mandatory values
* @access private
*/
/**
*
* @return type
*/
function hook_upnp_list() {
return array(
"ftp" => array("port" => 21, "protocol" => "tcp", "mandatory" => 1),

View File

@ -30,14 +30,15 @@
*/
class m_hooks {
/*---------------------------------------------------------------------------*/
/** Constructor
* hooks([$mid]) Constructeur de la classe hooks, ne fait rien pour le moment
*/
/**
*
*/
function m_hooks() {
}
/*---------------------------------------------------------------------------*/
/**
* invoke() permet de lancer une fonction donné en parametre dans toute les classes
* connues de alternc, avec les parametres donnés.
@ -46,6 +47,14 @@ class m_hooks {
* @param array|string $hclass tableau contenant les classes spécifique qu'on veux appeler (si on veux pas TOUTE les appeler)
* @return array with the return of each classes
*/
/**
*
* @global array $classes
* @param type $hname
* @param type $hparam
* @param type $hclass
* @return type
*/
function invoke($hname, $hparam = array(), $hclass = null) {
// Si $hclass est defini, on veut appeler le hooks QUE pour UNE
@ -76,13 +85,18 @@ class m_hooks {
return $val;
}
/*---------------------------------------------------------------------------*/
/**
* invoke each executable script of the directory (or the specified script)
* @param string $scripts a script or a directory
* @param array $parameters parameters for the scripts
* @return boolean TRUE
*/
/**
*
* @param type $scripts
* @param type $parameters
* @return boolean
*/
function invoke_scripts($scripts, $parameters=array()) {
// First, build the list of script we want to launch

View File

@ -79,7 +79,7 @@ class m_hta {
*
* @global m_mem $mem
* @global m_bro $bro
* @global m_err $err
* @global m_err $err
* @param string $dir
* @return boolean
*/
@ -123,7 +123,7 @@ class m_hta {
/**
* Returns the list of all user folder currently protected by a .htpasswd file
*
* @global m_err $err
* @global m_err $err
* @global m_mem $mem
* @return array Array containing user folder list
*/
@ -152,7 +152,7 @@ class m_hta {
* Tells if a folder is protected.
*
* @global m_mem $mem
* @global m_err $err
* @global m_err $err
* @param string $dir Folder to check
* @return boolean If the folder is protected, or FALSE if it is not
*/
@ -172,7 +172,7 @@ class m_hta {
* Returns the list of login for a protected folder.
*
* @global m_mem $mem
* @global m_err $err
* @global m_err $err
* @param string $dir The folder to lookup (relative to user root)
* @return array An array containing the list of logins from the .htpasswd file, or FALSE
*/
@ -210,7 +210,7 @@ class m_hta {
*
* @global m_mem $mem
* @global m_bro $bro
* @global m_err $err
* @global m_err $err
* @param string $dir Folder to unprotect, relative to user root
* @param boolean $skip For testing purpose mainly, skips the full user path search
* @return boolean TRUE if the folder has been unprotected, or FALSE if an error occurred
@ -271,7 +271,7 @@ class m_hta {
/**
* Add a user to a protected folder
*
* @global m_err $err
* @global m_err $err
* @global m_bro $bro
* @global m_admin $admin
* @param string $user
@ -340,7 +340,7 @@ class m_hta {
* Delete a user from a protected folder.
*
* @global m_bro $bro
* @global m_err $err
* @global m_err $err
* @param array $lst An array with login to delete.
* @param string $dir The folder, relative to user root, where we want to delete users.
* @return boolean TRUE if users has been deleted, or FALSE if an error occurred.
@ -388,7 +388,7 @@ class m_hta {
* Change the password of a user in a protected folder
*
* @global m_bro $bro
* @global m_err $err
* @global m_err $err
* @global m_admin $admin
* @param string $user
* @param string $newpass
@ -437,7 +437,7 @@ class m_hta {
/**
* Check that a .htaccess file is valid (for authentication)
*
* @global m_err $err
* @global m_err $err
* @param type $absolute
* @param string $absolute Folder we want to check (relative to user root)
* @return boolean TRUE is the .htaccess is protecting this folder, or FALSE else

View File

@ -28,9 +28,19 @@
*/
class m_log {
/**
*
*/
function m_log(){
}
/**
*
* @global m_mem $mem
* @global m_err $err
* @param type $dir
* @return type
*/
function list_logs_directory($dir){
global $cuid,$err;
$err->log("log","list_logs_directory");
@ -54,6 +64,10 @@ class m_log {
}
/**
*
* @return string
*/
function hook_menu() {
$obj = array(
'title' => _("Logs"),
@ -65,6 +79,12 @@ class m_log {
return $obj;
}
/**
*
* @global m_err $err
* @param type $dirs
* @return type
*/
function list_logs_directory_all($dirs){
global $err;
$err->log("log","get_logs_directory_all");
@ -76,6 +96,13 @@ class m_log {
}
/**
*
* @global m_mem $mem
* @global m_mem $mem
* @global m_err $err
* @return string
*/
function get_logs_directory(){
global $cuid,$mem,$err;
$err->log("log","get_logs_directory");
@ -88,6 +115,12 @@ class m_log {
return $c;
}
/**
*
* @global m_err $err
* @global m_mem $mem
* @param type $file
*/
function download_link($file){
global $err,$mem;
$err->log("log","download_link");

View File

@ -44,6 +44,7 @@ class m_lxc implements vm {
/**
* Constructor, initialize the class informations from AlternC's variables
*/
/**
function m_lxc() {
$this->IP = variable_get('lxc_ip', '', "IP address of the Alternc's LXC server. If empty, no LXC server.", array('desc'=>'IP address','type'=>'ip'));
$this->PORT = variable_get('lxc_port', '6504', "Port of the Alternc's LXC server", array('desc'=>'Port','type'=>'integer'));
@ -55,6 +56,7 @@ class m_lxc implements vm {
/**
* HOOK: add the "Console Access" to AlternC's main menu
*/
/**
function hook_menu() {
if ( empty($this->IP)) return ; // No menu if no server
@ -72,6 +74,7 @@ class m_lxc implements vm {
/**
* HOOK: remove VM history for AlternC account
*/
/**
function hook_admin_del_member() {
global $db,$err,$cuid;
$err->log("lxc","alternc_del_member");

View File

@ -36,14 +36,14 @@
class m_mail {
/* ----------------------------------------------------------------- */
/** domain list for this account
* @access private
*/
var $domains;
/* ----------------------------------------------------------------- */
/** If an email has those chars, 'not nice in shell env' ;)
* we don't store the email in $mail/u/{user}_domain, but in $mail/_/{address_id}_domain
* @access private
@ -51,7 +51,7 @@ class m_mail {
var $specialchars=array('"',"'",'\\','/');
/* ----------------------------------------------------------------- */
/** If an email has those chars, we will ONLY allow RECIPIENTS, NOT POP/IMAP for DOVECOT !
* Since Dovecot doesn't allow those characters
* @access private
@ -59,7 +59,7 @@ class m_mail {
var $forbiddenchars=array('"',"'",'\\','/','?','!','*','$','|','#','+');
/* ----------------------------------------------------------------- */
/** Number of results for a pager display
* @access public
*/
@ -77,10 +77,13 @@ class m_mail {
var $cache_domain_mail_size = array();
var $enum_domains=array();
/* ----------------------------------------------------------------- */
/**
* Constructeur
*/
/**
*
*/
function m_mail() {
$this->srv_submission = variable_get('mail_human_submission', '%%FQDN%%','Human name for mail server (submission protocol)', array('desc'=>'Name','type'=>'string'));
$this->srv_smtp = variable_get('mail_human_smtp', '%%FQDN%%','Human name for mail server (SMTP protocol)', array('desc'=>'Name','type'=>'string'));
@ -91,6 +94,10 @@ class m_mail {
$this->srv_pop3s = variable_get('mail_human_pop3s', '%%FQDN%%','Human name for POP3s mail server', array('desc'=>'Name','type'=>'string'));
}
/**
*
* @return string
*/
function hook_menu() {
$obj = array(
'title' => _("Email Addresses"),
@ -111,6 +118,12 @@ class m_mail {
return $obj;
}
/**
*
* @global m_mysql $db
* @param type $domain
* @return int
*/
function get_total_size_for_domain($domain) {
global $db;
if (empty($this->cache_domain_mail_size)) {
@ -129,6 +142,13 @@ class m_mail {
/**
* @param string $domain_id
*/
/**
*
* @global m_dom $dom
* @global m_mysql $db
* @param type $domain_id
* @return string
*/
function catchall_getinfos($domain_id) {
global $dom, $db;
$rr=array(
@ -159,6 +179,11 @@ class m_mail {
/**
* @param string $domain_id
*/
/**
*
* @param type $domain_id
* @return boolean
*/
function catchall_del($domain_id) {
$catch = $this->catchall_getinfos($domain_id);
if (empty($catch['mail_id'])) return false;
@ -169,6 +194,13 @@ class m_mail {
* @param string $domain_id
* @param string $target
*/
/**
*
* @global m_err $err
* @param type $domain_id
* @param type $target
* @return boolean
*/
function catchall_set($domain_id, $target) {
global $err;
// target :
@ -190,13 +222,20 @@ class m_mail {
}
/* ----------------------------------------------------------------- */
/** get_quota (hook for quota class), returns the number of used
* service for a quota-bound service
* @param $name string the named quota we want
* @return the number of used service for the specified quota,
* or false if I'm not the one for the named quota
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return type
*/
function hook_quota_get() {
global $db,$err,$cuid;
$err->log("mail","getquota");
@ -209,19 +248,31 @@ class m_mail {
}
/* ----------------------------------------------------------------- */
/** Password policy kind used in this class (hook for admin class)
* @return array an array of policykey => "policy name (for humans)"
*/
/**
*
* @return type
*/
function alternc_password_policy() {
return array("pop"=>_("Email account password"));
}
/* ----------------------------------------------------------------- */
/** Returns the list of mail-hosting domains for a user
* @return array indexed array of hosted domains
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $uid
* @return type
*/
function enum_domains($uid=-1) {
global $db,$err,$cuid;
$err->log("mail","enum_domains");
@ -250,12 +301,20 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** available: tells if an email address can be installed in the server
* check the domain part (is it mine too), the syntax, and the availability.
* @param $mail string email to check
* @return boolean true if the email can be installed on the server
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_dom $dom
* @param type $mail
* @return boolean
*/
function available($mail){
global $db,$err,$dom;
$err->log("mail","available");
@ -279,7 +338,7 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/* function used to list every mail address hosted on a domain.
* @param $dom_id integer the domain id.
* @param $search string search that string in recipients or address.
@ -287,6 +346,19 @@ ORDER BY
* @param $count integer return no more than THAT much emails. -1 for ALL. Offset is ignored then.
* @result an array of each mail hosted under the domain.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_hooks $hooks
* @param type $dom_id
* @param type $search
* @param type $offset
* @param type $count
* @param type $show_systemmails
* @return type
*/
function enum_domain_mails($dom_id = null, $search="", $offset=0, $count=30, $show_systemmails=false){
global $db,$err,$cuid,$hooks;
$err->log("mail","enum_domains_mail");
@ -321,12 +393,17 @@ ORDER BY
}
/**
*
* @param type $detail
* @return type
*/
function hook_mail_get_details($detail) {
if ($detail['type']=='catchall') return _(sprintf("Special mail address for catch-all. <a href='mail_manage_catchall.php?domain_id=%s'>Click here to manage it.</a>",$detail['domain_id']));
}
/* ----------------------------------------------------------------- */
/** Function used to insert a new mail into the db
* should be used by the web interface, not by third-party programs.
*
@ -339,6 +416,20 @@ ORDER BY
* @return an hashtable containing the database id of the newly created mail,
* or false if an error occured ($err is filled accordingly)
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @global m_quota $quota
* @global m_dom $dom
* @global m_hooks $hooks
* @param type $dom_id
* @param type $mail
* @param type $type
* @param type $dontcheck
* @return boolean
*/
function create($dom_id, $mail,$type="",$dontcheck=false){
global $err,$db,$cuid,$quota,$dom,$hooks;
$err->log("mail","create",$mail);
@ -382,11 +473,20 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** function used to get every information we can on a mail
* @param $mail_id integer
* @return array a hashtable with all the informations for that email
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_hooks $hooks
* @param type $mail_id
* @return boolean
*/
function get_details($mail_id) {
global $db, $err, $cuid, $hooks;
$err->log("mail","get_details");
@ -412,13 +512,21 @@ ORDER BY
private $isitmy_cache=array();
/* ----------------------------------------------------------------- */
/** Check if an email is mine ...
*
* @param $mail_id integer the number of the email to check
* @return string the complete email address if that's mine, false if not
* ($err is filled accordingly)
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @param type $mail_id
* @return type
*/
function is_it_my_mail($mail_id){
global $err,$db,$cuid;
$mail_id=intval($mail_id);
@ -435,13 +543,18 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Hook called when the DOMAIN class will delete a domain.
*
* @param $dom integer the number of the email to delete
* @return boolean if the email has been properly deleted
* or false if an error occured ($err is filled accordingly)
*/
/**
*
* @param type $dom_id
* @return boolean
*/
function hook_dom_del_mx_domain($dom_id) {
$list=$this->enum_domain_mails($dom_id,"",0,-1);
if (is_array($list)) {
@ -453,6 +566,13 @@ ORDER BY
}
// return the alternc account's ID of the mail_id
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $mail_id
* @return boolean
*/
function get_account_by_mail_id($mail_id) {
global $db,$err;
$db->query("select compte as uid from domaines d, address a where a.domain_id = d.id and a.id = $mail_id");
@ -463,7 +583,7 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Function used to delete a mail from the db
* should be used by the web interface, not by third-party programs.
*
@ -471,6 +591,17 @@ ORDER BY
* @return boolean if the email has been properly deleted
* or false if an error occured ($err is filled accordingly)
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @global m_quota $quota
* @global m_dom $dom
* @global m_hooks $hooks
* @param type $mail_id
* @return boolean
*/
function delete($mail_id){
global $err,$db,$cuid,$quota,$dom,$hooks;
$err->log("mail","delete");
@ -517,7 +648,7 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Function used to undelete a pending deletion mail from the db
* should be used by the web interface, not by third-party programs.
*
@ -525,6 +656,17 @@ ORDER BY
* @return boolean if the email has been properly undeleted
* or false if an error occured ($err is filled accordingly)
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @global m_quota $quota
* @global m_dom $dom
* @global m_hooks $hooks
* @param type $mail_id
* @return boolean
*/
function undelete($mail_id){
global $err,$db,$cuid,$quota,$dom,$hooks;
$err->log("mail","undelete");
@ -569,12 +711,21 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** set the password of an email address.
* @param $mail_id integer email ID
* @param $pass string the new password.
* @return boolean true if the password has been set, false else, raise an error.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_admin $admin
* @param type $mail_id
* @param type $pass
* @return boolean
*/
function set_passwd($mail_id,$pass){
global $db,$err,$admin;
$err->log("mail","setpasswd");
@ -586,11 +737,18 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Enables an email address.
* @param $mail_id integer Email ID
* @return boolean true if the email has been enabled.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $mail_id
* @return boolean
*/
function enable($mail_id){
global $db,$err;
$err->log("mail","enable");
@ -600,11 +758,18 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Disables an email address.
* @param $mail_id integer Email ID
* @return boolean true if the email has been enabled.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $mail_id
* @return boolean
*/
function disable($mail_id){
global $db,$err;
$err->log("mail","disable");
@ -614,7 +779,7 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Function used to update an email settings
* should be used by the web interface, not by third-party programs.
*
@ -625,6 +790,22 @@ ORDER BY
* @return boolean if the email has been properly edited
* or false if an error occured ($err is filled accordingly)
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @global m_quota $quota
* @global m_dom $dom
* @global m_hooks $hooks
* @param type $mail_id
* @param type $islocal
* @param type $quotamb
* @param type $recipients
* @param type $delivery
* @param type $dontcheck
* @return boolean
*/
function set_details($mail_id, $islocal, $quotamb, $recipients,$delivery="dovecot",$dontcheck=false) {
global $err,$db,$cuid,$quota,$dom,$hooks;
$delivery=mysql_real_escape_string($delivery);
@ -669,7 +850,7 @@ ORDER BY
$db->query("UPDATE mailbox SET quota=".intval($quotamb)." WHERE address_id=".$mail_id.";");
}
$recipients=preg_replace('/[\r\t\s]/', "\n", $recipients); // Handle space AND new line
$recipients=preg_replace('/[\r \s]/', "\n", $recipients); // Handle space AND new line
$r=explode("\n",$recipients);
$red="";
foreach($r as $m) {
@ -686,13 +867,22 @@ ORDER BY
return true;
}
/* ----------------------------------------------------------------- */
/** A wrapper used by mailman class to create it's needed addresses
* @ param : $dom_id , the domain id associated to a given address
* @ param : $m , the left part of the mail address being created
* @ param : $delivery , the delivery used to deliver the mail
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mail $mail
* @param type $dom_id
* @param type $m
* @param type $delivery
*/
function add_wrapper($dom_id,$m,$delivery){
global $err,$db,$mail;
$err->log("mail","add_wrapper","creating $delivery $m address");
@ -702,7 +892,7 @@ ORDER BY
// FIXME return error code
}
/* ----------------------------------------------------------------- */
/** A function used to create an alias for a specific address
* @ param : $dom_id , the domain sql identifier
* @ param : $m , the alias we want to create
@ -712,6 +902,17 @@ ORDER BY
* @param string $alias
* @param string $dom_id
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mail $mail
* @param type $dom_id
* @param type $m
* @param type $alias
* @param type $type
* @param type $dontcheck
*/
function create_alias($dom_id,$m,$alias,$type="",$dontcheck=false) {
global $err,$db,$mail;
$err->log("mail","create_alias","creating $m alias for $alias type $type");
@ -723,22 +924,35 @@ ORDER BY
/* ----------------------------------------------------------------- */
/** A wrapper used by mailman class to create it's needed addresses
* @ param : $mail_id , the mysql id of the mail address we want to delete
* of the email for the current acccount.
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @param type $mail_id
*/
function del_wrapper($mail_id){
global $err,$db;
$err->log("mail","del_wrapper");
$this->delete($mail_id);
}
/* ----------------------------------------------------------------- */
/** Export the mail information of an account
* @return: str, string containing the complete configuration
* of the email for the current acccount.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mail $mail_localbox
* @return string
*/
function alternc_export_conf() {
global $db,$err,$mail_localbox;
$err->log("mail","export");
@ -775,11 +989,17 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/**
* Return the list of allowed slave accounts (secondary-mx)
* @return array
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @return boolean
*/
function enum_slave_account() {
global $db,$err;
$db->query("SELECT login,pass FROM mxaccount;");
@ -791,13 +1011,21 @@ ORDER BY
return $res;
}
/* ----------------------------------------------------------------- */
/**
* Check for a slave account (secondary mx)
* @param string $login the login to check
* @param string $pass the password to check
* @return boolean TRUE if the password is correct, or FALSE if an error occurred.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $login
* @param type $pass
* @return boolean
*/
function check_slave_account($login,$pass) {
global $db,$err;
$login=mysql_real_escape_string($login);
@ -810,9 +1038,16 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/** Out (echo) the complete hosted domain list :
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $format
* @return boolean
*/
function echo_domain_list($format=null) {
global $db,$err;
$db->query("SELECT domaine FROM domaines WHERE gesmx=1 ORDER BY domaine");
@ -838,13 +1073,21 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/**
* Add a slave account that will be allowed to access the mxdomain list
* @param string $login the login to add
* @param string $pass the password to add
* @return boolean TRUE if the account has been created, or FALSE if an error occurred.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $login
* @param type $pass
* @return boolean
*/
function add_slave_account($login,$pass) {
global $db,$err;
$login=mysql_real_escape_string($login);
@ -859,11 +1102,18 @@ ORDER BY
}
/* ----------------------------------------------------------------- */
/**
* Remove a slave account
* @param string $login the login to delete
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $login
* @return boolean
*/
function del_slave_account($login) {
global $db,$err;
$login=mysql_real_escape_string($login);
@ -871,7 +1121,7 @@ ORDER BY
return true;
}
/* ----------------------------------------------------------------- */
/** hook function called by AlternC when a domain is created for
* the current user account using the SLAVE DOMAIN feature
* This function create a CATCHALL to the master domain
@ -879,6 +1129,13 @@ ORDER BY
* @param string $target_domain Master domain
* @access private
*/
/**
*
* @global m_err $err
* @param type $domain_id
* @param type $target_domain
* @return boolean
*/
function hook_dom_add_slave_domain($domain_id,$target_domain) {
global $err;
$err->log("mail","hook_dom_add_slave_domain",$domain_id);
@ -886,7 +1143,7 @@ ORDER BY
return true;
}
/* ----------------------------------------------------------------- */
/** hook function called by AlternC when a domain is created for
* the current user account
* This function create a postmaster mail which is an alias to LOGIN @ FQDN
@ -894,6 +1151,15 @@ ORDER BY
* @param string $domain_id Domain that has just been created
* @access private
*/
/**
*
* @global m_err $err
* @global m_mem $mem
* @global string $L_FQDN
* @global m_mysql $db
* @param type $domain_id
* @return boolean
*/
function hook_dom_add_mx_domain($domain_id) {
global $err, $mem, $L_FQDN,$db;
$err->log("mail","hook_dom_add_mx_domain",$domain_id);
@ -910,12 +1176,16 @@ ORDER BY
/* ----------------------------------------------------------------- */
/** hook function called by AlternC-upnp to know which open
* tcp or udp ports this class requires or suggests
* @return array a key => value list of port protocol name mandatory values
* @access private
*/
/**
*
* @return type
*/
function hook_upnp_list() {
return array(
"imap" => array("port" => 143, "protocol" => "tcp", "mandatory" => 1),

View File

@ -39,25 +39,34 @@ class m_mem {
var $user;
/** Tableau contenant les champs de la table "local" du membre courant
* Ce tableau est utilisable globalement par toutes les classes filles.
* Note : les champs de "local" sont spécifiques à l'bergeur.
* Note : les champs de "local" sont sp<EFBFBD>cifiques <EFBFBD> l'h<EFBFBD>bergeur.
*/
var $local;
/* ----------------------------------------------------------------- */
/**
* Constructeur
*/
/**
*
*/
function m_mem() {
}
/* ----------------------------------------------------------------- */
/**
* Password kind used in this class (hook for admin class)
*/
/**
*
* @return type
*/
function alternc_password_policy() {
return array("mem"=>"AlternC's account password");
}
/**
*
* @return type
*/
function hook_menu() {
$obj = array(
'title' => _("Settings"),
@ -69,15 +78,17 @@ class m_mem {
return $obj;
}
/* ----------------------------------------------------------------- */
/** Check that the current user is an admnistrator.
* @return boolean TRUE if we are super user, or FALSE if we are not.
*/
/**
*
* @return type
*/
function checkright() {
return ($this->user["su"]=="1");
}
/* ----------------------------------------------------------------- */
/** Start a session in the web desktop. Check username and password.
* <b>Note : </b>If the user entered a bas password, the failure will be logged
* and told to the corresponding user on next successfull login.
@ -85,11 +96,22 @@ class m_mem {
* @param $password string User Password.
* @return boolean TRUE if the user has been successfully connected, or FALSE if an error occured.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_authip $authip
* @global m_admin $admin
* @param type $username
* @param type $password
* @param type $restrictip
* @param type $authip_token
* @return boolean
*/
function login($username,$password,$restrictip=0,$authip_token=false) {
global $db,$err,$cuid,$authip,$admin;
$err->log("mem","login",$username);
// $username=addslashes($username);
// $password=addslashes($password);
$db->query("select * from membres where login='$username';");
if ($db->num_rows()==0) {
$err->raise("mem",_("User or password incorrect"));
@ -113,7 +135,6 @@ class m_mem {
return false;
}
// AuthIP
$allowed_ip=false;
if ( $authip_token ) $allowed_ip = $this->authip_tokencheck($authip_token);
@ -122,27 +143,21 @@ class m_mem {
if ( $authip->is_in_subnet(get_remote_ip(), $v['ip'], $v['subnet']) ) $allowed=true ;
}
// Error if there is rules, the IP is not allowed and it's not in the whitelisted IP
if ( sizeof($aga)>1 && !$allowed_ip && !$authip->is_wl(get_remote_ip()) ) {
$err->raise("mem",_("Your IP isn't allowed to connect"));
return false;
}
// End AuthIP
if ($restrictip) {
$ip="'".get_remote_ip()."'";
} else $ip="''";
/* Close sessions that are more than 2 days old. */
$db->query("DELETE FROM sessions WHERE DATE_ADD(ts,INTERVAL 2 DAY)<NOW();");
/* Delete old impersonation */
if ( isset($_COOKIE["oldid"]) ) setcookie('oldid','',0,'/');
/* Open the session : */
$sess=md5(uniqid(mt_rand()));
$_REQUEST["session"]=$sess;
$db->query("insert into sessions (sid,ip,uid) values ('$sess',$ip,'$cuid');");
setcookie("session",$sess,0,"/");
$err->error=0;
/* Fill in $local */
$db->query("SELECT * FROM local WHERE uid='$cuid';");
if ($db->num_rows()) {
$db->next_record();
@ -151,7 +166,6 @@ class m_mem {
return true;
}
/* ----------------------------------------------------------------- */
/** Start a session as another user from an administrator account.
* This function is not the same as su. setid connect the current user in the destination
* account (for good), and su allow any user to become another account for some commands only.
@ -160,6 +174,16 @@ class m_mem {
* @param $id integer User id where we will connect to.
* @return boolean TRUE if the user has been successfully connected, FALSE else.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mysql $mysql
* @global m_quota $quota
* @param type $id
* @return boolean
*/
function setid($id) {
global $db,$err,$cuid,$mysql,$quota;
$err->log("mem","setid",$id);
@ -171,7 +195,6 @@ class m_mem {
$db->next_record();
$this->user=$db->Record;
$cuid=$db->f("uid");
// And recreate the $db->dbus
$mysql->reload_dbus();
$ip=get_remote_ip();
@ -180,7 +203,6 @@ class m_mem {
$db->query("insert into sessions (sid,ip,uid) values ('$sess','$ip','$cuid');");
setcookie("session",$sess,0,"/");
$err->error=0;
/* Fill in $local */
$db->query("SELECT * FROM local WHERE uid='$cuid';");
if ($db->num_rows()) {
$db->next_record();
@ -190,9 +212,13 @@ class m_mem {
return true;
}
/* ----------------------------------------------------------------- */
/** Suite à la connexion de l'utilisateur, réinitialise ses paramètres de dernière connexion
/** Suite <EFBFBD> la connexion de l'utilisateur, r<EFBFBD>initialise ses param<EFBFBD>tres de derni<EFBFBD>re connexion
*/
/**
*
* @global m_mysql $db
* @global m_mem $mem
*/
function resetlast() {
global $db,$cuid;
$ip=addslashes(getenv("REMOTE_HOST"));
@ -200,6 +226,13 @@ class m_mem {
$db->query("UPDATE membres SET lastlogin=NOW(), lastfail=0, lastip='$ip' WHERE uid='$cuid';");
}
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @param type $bis
* @return type
*/
function authip_token($bis=false) {
global $db,$cuid;
$db->query("select pass from membres where uid='$cuid';");
@ -212,12 +245,22 @@ class m_mem {
/**
* @param boolean $t
*/
/**
*
* @param type $t
* @return boolean
*/
function authip_tokencheck($t) {
if ($t==$this->authip_token() || $t==$this->authip_token(true) ) return true;
return false;
}
/* Faut finir de l'implémenter :) * /
// Faut finir de l'impl<70>menter :) *
/**
*
* @global m_mem $mem
* @return string
*/
function authip_class() {
global $cuid;
$c = Array();
@ -227,20 +270,26 @@ class m_mem {
return $c;
}
/* */
// *
/* ----------------------------------------------------------------- */
/** Vérifie que la session courante est correcte (cookie ok et ip valide).
* Si besoin, et si réception des champs username & password, crée une nouvelle
* session pour l'utilisateur annoncé.
* Cette fonction doit être appellée à chaque page devant être authentifiée.
* et AVANT d'émettre des données. (un cookie peut être envoyé)
/** V<EFBFBD>rifie que la session courante est correcte (cookie ok et ip valide).
* Si besoin, et si r<EFBFBD>ception des champs username & password, cr<EFBFBD>e une nouvelle
* session pour l'utilisateur annonc<EFBFBD>.
* Cette fonction doit <EFBFBD>tre appell<EFBFBD>e <EFBFBD> chaque page devant <EFBFBD>tre authentifi<EFBFBD>e.
* et AVANT d'<EFBFBD>mettre des donn<EFBFBD>es. (un cookie peut <EFBFBD>tre envoy<EFBFBD>)
* @global string $session Le cookie de session eventuel
* @global string $username/password le login/pass de l'utilisateur
* @return boolean TRUE si la session est correcte, FALSE sinon.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return boolean
*/
function checkid() {
global $db,$err,$cuid,$restrictip,$authip;
global $db,$err,$cuid;
if (isset($_REQUEST["username"])) {
if ( empty($_REQUEST['password']) ) {
$err->raise("mem",_("Missing password"));
@ -279,7 +328,6 @@ class m_mem {
$db->next_record();
$this->user=$db->Record;
$err->error=0;
/* Remplissage de $local */
$db->query("SELECT * FROM local WHERE uid='$cuid';");
if ($db->num_rows()) {
$db->next_record();
@ -288,11 +336,19 @@ class m_mem {
return true;
}
/* ----------------------------------------------------------------- */
/** Change l'identité d'un utilisateur temporairement.
* @global string $uid Utilisateur dont on prends l'identité
/** Change l'identit<69> d'un utilisateur temporairement.
* @global string $uid Utilisateur dont on prends l'identit<EFBFBD>
* @return TRUE si la session est correcte, FALSE sinon.
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @global m_mysql $mysql
* @param type $uid
* @return boolean
*/
function su($uid) {
global $cuid,$db,$err,$mysql;
if (!$this->olduid)
@ -306,33 +362,44 @@ class m_mem {
$this->user=$db->Record;
$cuid=$db->f("uid");
// And recreate the $db->dbus
$mysql->reload_dbus();
return true;
}
/* ----------------------------------------------------------------- */
/** Retourne a l'identite d'origine de l'utilisateur apres su.
* @return boolean TRUE si la session est correcte, FALSE sinon.
*/
/**
*
* @global m_mem $mem
* @global m_mysql $mysql
* @return boolean
*/
function unsu() {
global $cuid,$mysql;
if (!$this->olduid)
return false;
$this->su($this->olduid);
$this->olduid=0;
// And recreate the $db->dbus
$mysql->reload_dbus();
return true;
}
/* ----------------------------------------------------------------- */
/** Termine une session du bureau virtuel (logout)
* @return boolean TRUE si la session a bien été truite, FALSE sinon.
* @return boolean TRUE si la session a bien <EFBFBD>t<EFBFBD> d<EFBFBD>truite, FALSE sinon.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global array $classes
* @global m_hooks $hooks
* @return boolean
*/
function del_session() {
global $db,$user,$err,$cuid,$classes,$hooks;
global $db,$err,$cuid,$classes,$hooks;
$_COOKIE["session"]=addslashes(isset($_COOKIE["session"])?$_COOKIE["session"]:'');
setcookie("session","",0,"/");
setcookie("oldid","",0,"/");
@ -360,13 +427,7 @@ class m_mem {
$err->error=0;
# Invoker le logout dans toutes les autres classes
/*
foreach($classes as $c) {
if (method_exists($GLOBALS[$c],"alternc_del_session")) {
$GLOBALS[$c]->alternc_del_session();
}
}
*/
$hooks->invoke("alternc_del_session");
session_unset();
@ -374,13 +435,23 @@ class m_mem {
return true;
}
/* ----------------------------------------------------------------- */
/** Change le mot de passe de l'utilisateur courant.
* @param string $oldpass Ancien mot de passe.
* @param string $newpass Nouveau mot de passe
* @param string $newpass2 Nouveau mot de passe (à nouveau)
* @return boolean TRUE si le mot de passe a été changé, FALSE sinon.
* @param string $newpass2 Nouveau mot de passe (<EFBFBD> nouveau)
* @return boolean TRUE si le mot de passe a <EFBFBD>t<EFBFBD> chang<EFBFBD>, FALSE sinon.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_admin $admin
* @param type $oldpass
* @param type $newpass
* @param type $newpass2
* @return boolean
*/
function passwd($oldpass,$newpass,$newpass2) {
global $db,$err,$cuid,$admin;
$err->log("mem","passwd");
@ -411,11 +482,18 @@ class m_mem {
return true;
}
/* ----------------------------------------------------------------- */
/** Change les préférences administrateur d'un compte
/** Change les pr<EFBFBD>f<EFBFBD>rences administrateur d'un compte
* @param integer $admlist Mode de visualisation des membres (0=large 1=courte)
* @return boolean TRUE si les préférences ont été changées, FALSE sinon.
* @return boolean TRUE si les pr<EFBFBD>f<EFBFBD>rences ont <EFBFBD>t<EFBFBD> chang<EFBFBD>es, FALSE sinon.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $admlist
* @return boolean
*/
function adminpref($admlist) {
global $db,$err,$cuid;
$err->log("mem","admlist");
@ -428,13 +506,21 @@ class m_mem {
return true;
}
/* ----------------------------------------------------------------- */
/** Envoie en mail le mot de passe d'un compte.
* <b>Note : </b>On ne peut demander le mot de passe qu'une seule fois par jour.
* TODO : Translate this mail into the localization program.
* TODO : Check this function's !
* @return boolean TRUE si le mot de passe a été envoyé avec succès, FALSE sinon.
* @return boolean TRUE si le mot de passe a <EFBFBD>t<EFBFBD> envoy<EFBFBD> avec succ<EFBFBD>s, FALSE sinon.
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global string $L_HOSTING
* @global string $L_FQDN
* @param type $login
* @return boolean
*/
function send_pass($login) {
global $err,$db,$L_HOSTING,$L_FQDN;
$err->log("mem","send_pass");
@ -472,12 +558,21 @@ Cordially.
return true;
}
/* ----------------------------------------------------------------- */
/** Change le mail d'un membre (première etape, envoi du CookiE)
/** Change le mail d'un membre (premi<EFBFBD>re etape, envoi du CookiE)
* TODO : insert this mail string into the localization system
* @param string $newmail Nouveau mail souhaité pour le membre.
* @return string le cookie si le mail a bien été envoyé, FALSE sinon
* @param string $newmail Nouveau mail souhait<EFBFBD> pour le membre.
* @return string le cookie si le mail a bien <EFBFBD>t<EFBFBD> envoy<EFBFBD>, FALSE sinon
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global string $L_HOSTING
* @global string $L_FQDN
* @global m_mem $mem
* @param type $newmail
* @return boolean
*/
function ChangeMail1($newmail) {
global $err,$db,$L_HOSTING,$L_FQDN,$cuid;
$err->log("mem","changemail1",$newmail);
@ -488,9 +583,7 @@ Cordially.
}
$db->next_record();
// un cookie de 20 caractères pour le mail
$COOKIE=substr(md5(uniqid(rand(), true)),0,20);
// et de 6 pour la clé à entrer. ca me semble suffisant...
$KEY=substr(md5(uniqid(rand(), true)),0,6);
$link="https://$L_FQDN/mem_cm.php?usr=$cuid&cookie=$COOKIE";
$txt=sprintf(_("Hello,
@ -513,22 +606,30 @@ again, please contact your server's administrator.
Cordially.
"), $db->f("login"), $L_HOSTING, $link);
mail($newmail,"Email modification request on $L_HOSTING",$txt,"From: postmaster@$L_FQDN\nReply-to: postmaster@$L_FQDN");
// Supprime les demandes précédentes de ce compte !
$db->query("DELETE FROM chgmail WHERE uid='$cuid';");
$db->query("INSERT INTO chgmail (cookie,ckey,uid,mail,ts) VALUES ('$COOKIE','$KEY','$cuid','$newmail',".time().");");
// Supprime les cookies de la veille :)
$lts=time()-86400;
$db->query("DELETE FROM chgmail WHERE ts<'$lts';");
return $KEY;
}
/* ----------------------------------------------------------------- */
/** Change le mail d'un membre (seconde etape, CookiE+clé = application)
* @param string $COOKIE Cookie envoyé par mail
* @param string $KEY clé affichée à l'écran
* @param integer $uid Utilisateur concerné (on est hors session)
* @return boolean TRUE si le mail a bien été modifié, FALSE sinon
/** Change le mail d'un membre (seconde etape, CookiE+cl<EFBFBD> = application)
* @param string $COOKIE Cookie envoy<EFBFBD> par mail
* @param string $KEY cl<EFBFBD> affich<EFBFBD>e <EFBFBD> l'<EFBFBD>cran
* @param integer $uid Utilisateur concern<EFBFBD> (on est hors session)
* @return boolean TRUE si le mail a bien <EFBFBD>t<EFBFBD> modifi<EFBFBD>, FALSE sinon
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global string $L_HOSTING
* @global string $L_FQDN
* @param type $COOKIE
* @param type $KEY
* @param type $uid
* @return boolean
*/
function ChangeMail2($COOKIE,$KEY,$uid) {
global $err,$db,$L_HOSTING,$L_FQDN;
$err->log("mem","changemail2",$uid);
@ -539,39 +640,52 @@ Cordially.
}
$db->next_record();
// met à jour le compte :
$db->query("UPDATE membres SET mail='".$db->f("mail")."' WHERE uid='$uid';");
$db->query("DELETE FROM chgmail WHERE uid='$uid';");
// Supprime les cookies de la veille :)
$lts=time()-86400;
$db->query("DELETE FROM chgmail WHERE ts<'$lts';");
return true;
}
/* ----------------------------------------------------------------- */
/** Modifie le paramètre d'aide en ligne (1/0)
/** Modifie le param<EFBFBD>tre d'aide en ligne (1/0)
* @param integer $show Faut-il (1) ou non (0) afficher l'aide en ligne
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $show
*/
function set_help_param($show) {
global $db,$err,$cuid;
$err->log("mem","set_help_param",$show);
$db->query("UPDATE membres SET show_help='$show' WHERE uid='$cuid';");
}
/* ----------------------------------------------------------------- */
/** Dit si l'aide en ligne est demandée
* @return boolean TRUE si l'aide en ligne est demandée, FALSE sinon.
/** Dit si l'aide en ligne est demand<EFBFBD>e
* @return boolean TRUE si l'aide en ligne est demand<EFBFBD>e, FALSE sinon.
*/
/**
*
* @return type
*/
function get_help_param() {
return $this->user["show_help"];
}
/* ----------------------------------------------------------------- */
/** Affiche (echo) l'aide contextuelle
* @param integer $file Numéro de fichier d'aide à afficher.
* @return boolean TRUE si l'aide contextuelle a été trouvée, FALSE sinon
* @param integer $file Num<EFBFBD>ro de fichier d'aide <EFBFBD> afficher.
* @return boolean TRUE si l'aide contextuelle a <EFBFBD>t<EFBFBD> trouv<EFBFBD>e, FALSE sinon
*/
/**
*
* @global m_err $err
* @param type $file
* @param type $force
* @return boolean
*/
function show_help($file,$force=false) {
global $err;
if ($this->user["show_help"] || $force) {
@ -592,6 +706,13 @@ Cordially.
/**
* @param integer $uid
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $uid
* @return boolean
*/
function get_creator_by_uid($uid) {
global $db,$err;
$err->log("dom","get_creator_by_uid");
@ -602,11 +723,16 @@ Cordially.
}
/* ----------------------------------------------------------------- */
/**
* Exports all the personnal user related information for an account.
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @return string
*/
function alternc_export_conf() {
global $db,$err;
$err->log("mem","export");
@ -626,6 +752,12 @@ Cordially.
return $str;
}
/**
*
* @global int $uid
* @param type $v
* @return boolean
*/
function session_tempo_params_get($v) {
global $uid;
if (empty($_COOKIE['session'])) return false;
@ -641,6 +773,14 @@ Cordially.
return false;
}
/**
*
* @global int $uid
* @param type $k
* @param type $v
* @param type $ecrase
* @return boolean
*/
function session_tempo_params_set($k, $v, $ecrase=false) {
global $uid;
if (empty($_COOKIE['session'])) return false;
@ -658,6 +798,4 @@ Cordially.
return true;
}
} /* Classe Membre */
?>
} /* Classe Membre */

View File

@ -30,13 +30,22 @@
*/
class m_menu {
/*---------------------------------------------------------------------------*/
/** Constructor
* menu([$mid]) Constructeur de la classe menu, ne fait rien pour le moment
*/
/**
*
*/
function m_menu() {
}
/**
*
* @global m_hooks $hooks
* @global m_quota $quota
* @global m_mem $mem
* @return type
*/
function getmenu() {
global $hooks, $quota, $mem;
@ -97,11 +106,23 @@ class m_menu {
return $lst;
} //getmenu
/**
*
* @param type $a
* @param type $b
* @return type
*/
function order_menu($a, $b) {
// Use to order the menu with a usort
return $a['pos'] > $b['pos'];
}
/**
* @global string $help_baseurl
* @global array $lang_translation
* @global array $locales
* @return type
*/
function system_menu() {
// Here some needed menu who don't have a class
global $help_baseurl, $lang_translation, $locales;

View File

@ -40,6 +40,13 @@ class DB_users extends DB_Sql {
/**
* Creator
*/
/**
*
* @global m_mem $mem
* @global m_mysql $db
* @global m_err $err
* @param type $empty
*/
function DB_users($empty=false) { // Sometimes we need to create this object with empty parameters, but by default we fill them with those of the current user's DB
global $cuid, $db, $err;
@ -80,6 +87,10 @@ class m_mysql {
/** Constructor
* m_mysql([$mid]) Constructeur de la classe m_mysql, initialise le membre concerne
*/
/**
*
* @global m_mem $mem
*/
function m_mysql() {
global $cuid;
if (!empty($cuid)) {
@ -88,10 +99,18 @@ class m_mysql {
variable_get('sql_allow_users_backups', 1,'Set 1 to allow users to configure backup of their databases, 0 if you want do disable this feature. Warning: it will not stop configured backup made by sqlbackup.sh');
}
/**
*
*/
function reload_dbus() {
$this->dbus = new DB_users();
}
/**
*
* @global m_mysql $db
* @return type
*/
function list_db_servers() {
global $db;
$db->query("select d.*, IFNULL(count(m.uid),0) as nb_users from db_servers d left join membres m on d.id = m.db_server_id group by d.id,m.db_server_id order by d.name,d.id;");
@ -102,6 +121,11 @@ class m_mysql {
return $c;
}
/**
*
* @global m_quota $quota
* @return type
*/
function hook_menu() {
global $quota;
$q = $quota->getquota("mysql");
@ -141,6 +165,10 @@ class m_mysql {
/**
* Password kind used in this class (hook for admin class)
*/
/**
*
* @return type
*/
function alternc_password_policy() {
return array("mysql"=>"MySQL users");
}
@ -152,6 +180,14 @@ class m_mysql {
* "dir" => Backup folder.
* Returns an array (empty) if no databases
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_bro $bro
* @global m_mem $mem
* @return type
*/
function get_dblist() {
global $db,$err,$bro,$cuid;
$err->log("mysql","get_dblist");
@ -170,6 +206,13 @@ class m_mysql {
* @return array returns an associative array with login and password
* Returns FALSE if error
*/
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @global m_err $err
* @return boolean
*/
function php_myadmin_connect(){
global $db,$cuid,$err;
$err->log("mysql","php_myadmin_connect");
@ -201,6 +244,16 @@ class m_mysql {
* "gzip" => Does we compress the dumps ?
* Returns FALSE if the user has no database of if the database does not exist.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_bro $bro
* @global m_mem $mem
* @global m_mem $mem
* @param type $dbn
* @return type
*/
function get_mysql_details($dbn) {
global $db,$err,$bro,$mem,$cuid;
$root=getuserpath();
@ -224,6 +277,13 @@ class m_mysql {
return array("enabled"=>true,"login"=>$db->f("login"),"db"=>$db->f("db"), "name"=>$dbn,"bck"=>$db->f("bck_mode"), "dir"=>substr($db->f("bck_dir"),strlen($root)), "size"=>$size, "pass"=>$db->f("pass"), "history"=>$db->f("bck_history"), "gzip"=>$db->f("bck_gzip"));
}
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $dbname
*/
function test_get_param($dbname){
global $db,$err,$cuid;
$db->query("SELECT ");
@ -237,6 +297,17 @@ class m_mysql {
* @return boolean if the database $user_$db has been successfully created, or FALSE if
* an error occured, such as over quota user.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_quota $quota
* @global m_mem $mem
* @global m_mem $mem
* @global m_admin $admin
* @param type $dbn
* @return boolean
*/
function add_db($dbn) {
global $db,$err,$quota,$mem,$cuid,$admin;
$err->log("mysql","add_db",$dbn);
@ -318,6 +389,15 @@ class m_mysql {
* @return boolean if the database $user_$db has been successfully deleted, or FALSE if
* an error occured, such as db does not exist.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mem $mem
* @param type $dbn
* @return boolean
*/
function del_db($dbn) {
global $db,$err,$mem,$cuid;
$err->log("mysql","del_db",$dbn);
@ -358,6 +438,20 @@ class m_mysql {
* @param $bck_dir string Directory relative to the user account where the backup will be stored
* @return boolean true if the backup parameters has been successfully changed, false if not.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_bro $bro
* @global m_mem $mem
* @param type $dbn
* @param type $bck_mode
* @param type $bck_history
* @param type $bck_gzip
* @param type $bck_dir
* @return boolean
*/
function put_mysql_backup($dbn,$bck_mode,$bck_history,$bck_gzip,$bck_dir) {
global $db,$err,$mem,$bro,$cuid;
$err->log("mysql","put_mysql_backup");
@ -411,6 +505,16 @@ class m_mysql {
* @param $password string new password (cleartext)
* @return boolean TRUE if the password has been successfully changed, FALSE else.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mem $mem
* @global m_admin $admin
* @param type $password
* @return boolean
*/
function put_mysql_details($password) {
global $db,$err,$mem,$cuid,$admin;
$err->log("mysql","put_mysql_details");
@ -453,6 +557,17 @@ class m_mysql {
* @pass : user password ( optional, if not given the pass stays the same, else it takes the new value )
* @table : sql tables to apply rights
**/
/**
*
* @global m_err $err
* @global m_mysql $db
* @param string $base
* @param type $user
* @param string $rights
* @param type $pass
* @param type $table
* @return boolean
*/
function grant($base,$user,$rights=null,$pass=null,$table='*'){
global $err,$db;
$err->log("mysql","grant",$base."-".$rights."-".$user);
@ -509,6 +624,18 @@ class m_mysql {
* @param $id integer The ID of the database to dump to.
* @return boolean TRUE if the database has been restored, or FALSE if an error occurred
*/
/**
*
* @global m_err $err
* @global m_bro $bro
* @global m_mem $mem
* @global string $L_MYSQL_HOST
* @global m_mysql $db
* @param type $file
* @param type $stdout
* @param type $id
* @return boolean
*/
function restore($file,$stdout,$id) {
global $err,$bro,$mem,$L_MYSQL_HOST,$db;
if (empty($file)) {
@ -557,6 +684,13 @@ class m_mysql {
* @return integer database size
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $dbname
* @return type
*/
function get_db_size($dbname) {
global $db,$err;
@ -574,6 +708,15 @@ class m_mysql {
/**
* Returns the list of database users of an account
**/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_bro $bro
* @global m_mem $mem
* @param type $all
* @return type
*/
function get_userslist($all=null) {
global $db,$err,$bro,$cuid;
$err->log("mysql","get_userslist");
@ -596,6 +739,15 @@ class m_mysql {
return $c;
}
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_bro $bro
* @global m_mem $mem
* @param type $dbn
* @return array
*/
function get_defaultsparam($dbn){
global $db,$err,$bro,$cuid;
$err->log("mysql","getdefaults");
@ -692,6 +844,19 @@ class m_mysql {
* @param string $passconf The password confirmation
* @return boolean if the user has been created in MySQL or FALSE if an error occurred
**/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_quota $quota
* @global m_mem $mem
* @global m_mem $mem
* @global m_admin $admin
* @param type $usern
* @param type $password
* @param type $passconf
* @return boolean
*/
function add_user($usern,$password,$passconf) {
global $db,$err,$quota,$mem,$cuid,$admin;
$err->log("mysql","add_user",$usern);
@ -756,6 +921,19 @@ class m_mysql {
* @param $passconf The password confirmation
* @return boolean if the password has been changed in MySQL or FALSE if an error occurred
**/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_quota $quota
* @global m_mem $mem
* @global m_mem $mem
* @global m_admin $admin
* @param type $usern
* @param type $password
* @param type $passconf
* @return boolean
*/
function change_user_password($usern,$password,$passconf) {
global $db,$err,$quota,$mem,$cuid,$admin;
$err->log("mysql","change_user_pass",$usern);
@ -788,6 +966,16 @@ class m_mysql {
* @param integer $all
* @return boolean if the user has been deleted in MySQL or FALSE if an error occurred
**/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mem $mem
* @param type $user
* @param type $all
* @return boolean
*/
function del_user($user,$all=null) {
global $db,$err,$mem,$cuid;
$err->log("mysql","del_user",$user);
@ -826,6 +1014,15 @@ class m_mysql {
* @return array An array of database name and rights
**/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mem $mem
* @param type $user
* @return boolean|string
*/
function get_user_dblist($user){
global $db,$err,$mem,$cuid;
@ -874,6 +1071,16 @@ class m_mysql {
* @return boolean TRUE if the rights has been applied or FALSE if an error occurred
*
**/
/**
*
* @global m_mem $mem
* @global m_err $err
* @global m_mysql $db
* @param type $user
* @param type $dbn
* @param type $rights
* @return boolean
*/
function set_user_rights($user,$dbn,$rights) {
global $mem,$err,$db;
$err->log("mysql","set_user_rights");
@ -881,7 +1088,7 @@ class m_mysql {
$usern=addslashes($user);
$dbname=addslashes($dbn);
$dbname=str_replace('_','\_',$dbname);
// On génère les droits en fonction du tableau de droits
// On g<EFBFBD>n<EFBFBD>re les droits en fonction du tableau de droits
$strrights="";
for( $i=0 ; $i<count($rights) ; $i++ ) {
switch ($rights[$i]) {
@ -954,6 +1161,10 @@ class m_mysql {
return TRUE;
}
/**
*
* @return type
*/
function available_sql_rights(){
return Array('select','insert','update','delete','create','drop','references','index','alter','create_tmp','lock','create_view','show_view','create_routine','alter_routine','execute','event','trigger');
@ -968,6 +1179,12 @@ class m_mysql {
* @return integer the number of service used or false if an error occured
* @access private
*/
/**
*
* @global m_err $err
* @param type $params
* @return int
*/
function hook_lxc_params($params) {
global $err;
$err->log("mysql","alternc_get_quota");
@ -987,6 +1204,13 @@ class m_mysql {
* @return integer the number of service used or false if an error occured
* @access private
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @return type
*/
function hook_quota_get() {
global $err,$db,$cuid;
$err->log("mysql","alternc_get_quota");
@ -1003,6 +1227,14 @@ class m_mysql {
* AlternC's standard function that create a member
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mem $mem
* @return boolean
*/
function alternc_add_member() {
global $db,$err,$cuid,$mem;
$err->log("mysql","alternc_add_member");
@ -1030,6 +1262,13 @@ class m_mysql {
* AlternC's standard function that delete a member
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return boolean
*/
function alternc_del_member() {
global $db,$err,$cuid;
$err->log("mysql","alternc_del_member");
@ -1054,6 +1293,9 @@ class m_mysql {
* We just remove the cookie created in admin/sql_admin.php
a @access private
*/
/**
*
*/
function alternc_del_session() {
$_SESSION['PMA_single_signon_user'] = '';
$_SESSION['PMA_single_signon_password'] = '';
@ -1067,6 +1309,13 @@ class m_mysql {
* @access private
* EXPERIMENTAL 'sid' function ;)
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return string
*/
function alternc_export_conf() {
//TODO don't work with separated sql server for dbusers
global $db,$err,$cuid;
@ -1099,6 +1348,14 @@ class m_mysql {
* @access private
* EXPERIMENTAL 'sid' function ;)
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global m_mem $mem
* @param string $dir
*/
function alternc_export_data ($dir){
global $db, $err, $cuid,$mem;
$err->log("mysql","export_data");
@ -1126,6 +1383,17 @@ class m_mysql {
* @param $db_client the client to access the SQL db
* @return an array associating the name of the databases to their sizes : array(dbname=>size)
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $db_name
* @param type $db_host
* @param type $db_login
* @param type $db_password
* @param type $db_client
* @return type
*/
function get_dbus_size($db_name,$db_host,$db_login,$db_password,$db_client) {
global $db,$err;
$err->log("mysql","get_dbus_size",$db_host);
@ -1155,4 +1423,3 @@ class m_mysql {
} /* Class m_mysql */
?>

View File

@ -32,6 +32,11 @@ class m_piwik {
var $alternc_users;
var $alternc_sites;
/**
*
* @global m_quota $quota
* @return boolean|int
*/
function hook_menu() {
global $quota;
if ( empty($this->piwik_server_uri) || empty($this->piwik_admin_token)) return false;
@ -50,9 +55,11 @@ class m_piwik {
return $obj;
}
/*---------------------------------------------------------------------------*/
/** Constructor
*/
/**
*
*/
function m_piwik() {
$this->piwik_server_uri=variable_get('piwik_server_uri',null,'Remote Piwik server uri');
$this->piwik_admin_token=variable_get('piwik_admin_token',null,'Remote Piwik super-admin token');
@ -60,21 +67,31 @@ class m_piwik {
$this->alternc_sites = $this->get_alternc_sites();
}
/* ----------------------------------------------------------------- */
/** hook called when an AlternC account is deleted
*/
/**
*
* @return boolean
*/
function hook_admin_del_member() {
//FIXME : implement the hook_admin_del_member for piwik
return true;
}
/* ----------------------------------------------------------------- */
/** Returns the used quota for the $name service for the current user.
* @param $name string name of the quota
* @return integer the number of service used or false if an error occured
* @access private
*/
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @return type
*/
function hook_quota_get() {
global $db, $cuid;
$db->query("SELECT COUNT(id) AS nb FROM piwik_users WHERE uid='$cuid'");
@ -86,6 +103,10 @@ class m_piwik {
}
/**
*
* @return type
*/
function url() {
return $this->piwik_server_uri;
}
@ -96,6 +117,16 @@ class m_piwik {
/***********************/
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @global m_mem $mem
* @global m_err $err
* @param type $user_login
* @param type $user_mail
* @return boolean
*/
function user_add($user_login, $user_mail = null) {
global $db, $mem, $cuid, $err;
@ -120,15 +151,31 @@ class m_piwik {
// Edite un user
/**
*
* @return boolean
*/
function user_edit() {
//FIXME
return true;
}
/**
*
* @param type $user_login
* @return type
*/
function get_site_access($user_login) {
return $this->call_privileged_page('API', 'UsersManager.getSitesAccessFromUser', array('userLogin' => $user_login));
}
/**
*
* @global m_err $err
* @global m_mem $mem
* @param type $site_id
* @return boolean
*/
function get_users_access_from_site($site_id) {
global $err, $cuid;
@ -157,6 +204,11 @@ class m_piwik {
/**
* @param string $user_login
*/
/**
*
* @param type $user_login
* @return boolean
*/
function get_user($user_login) {
$api_data = $this->call_privileged_page('API', 'UsersManager.getUser', array('userLogin' => $user_login));
@ -166,6 +218,13 @@ class m_piwik {
return FALSE;
}
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @staticvar array $alternc_users
* @return array
*/
function get_alternc_users() {
global $db, $cuid;
@ -178,6 +237,14 @@ class m_piwik {
}
// Supprime l'utilisateur Piwik passé en parametre
// Ne le supprime pas localement tant que pas supprimé en remote
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @global m_err $err
* @param type $piwik_user_login
* @return boolean
*/
function user_delete($piwik_user_login) {
global $db, $cuid, $err;
@ -199,6 +266,12 @@ class m_piwik {
}
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @return type
*/
function users_list() {
global $db, $cuid;
$db->query("SELECT login FROM piwik_users WHERE uid = '$cuid'");
@ -212,6 +285,11 @@ class m_piwik {
// Verifie que l'utilisateur existe bien dans piwik
/**
*
* @param type $puser_id
* @return boolean
*/
function user_checkremote($puser_id) {
//FIXME
return true;
@ -219,12 +297,20 @@ class m_piwik {
// Récupére un token pour le SSO avec piwik pour l'user
/**
*
* @return boolean
*/
function user_remoteauth() {
//FIXME
return true;
}
// Montre la liste des site pour lesques un user à accés
/**
*
* @return boolean
*/
function user_access() {
// FIXME
return true;
@ -239,6 +325,10 @@ class m_piwik {
/***********************/
/**
*
* @return \stdClass|boolean
*/
function site_list() {
$api_data = $this->call_privileged_page('API', 'SitesManager.getAllSites');
$data = array();
@ -270,10 +360,22 @@ class m_piwik {
return FALSE;
}
/**
*
* @param type $site_id
* @return type
*/
function site_js_tag($site_id) {
return $this->call_privileged_page('API', 'SitesManager.getJavascriptTag', array('idSite' => $site_id, 'piwikUrl' => $this->piwik_server_uri))->value;
}
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @staticvar array $alternc_sites
* @return array
*/
function get_alternc_sites() {
global $db, $cuid;
@ -285,12 +387,23 @@ class m_piwik {
return $alternc_sites;
}
/**
*
* @return type
*/
function get_site_list()
{
return $this->call_privileged_page('API', 'SitesManager.getAllSites');
}
// Ajoute un site à Piwik
// can't figure out how to pass multiple url through the API
/**
*
* @param type $siteName
* @param type $urls
* @param type $ecommerce
* @return boolean
*/
function site_add($siteName, $urls, $ecommerce = FALSE) {
$urls = is_array($urls) ? implode(',', $urls) : $urls;
$api_data = $this->call_privileged_page('API', 'SitesManager.addSite', array('siteName' => $siteName, 'urls' => $urls));
@ -301,6 +414,14 @@ class m_piwik {
//SitesManager.deleteSite (idSite)
// Supprime un site de Piwik
/**
*
* @global m_mysql $db
* @global m_mem $mem
* @global m_err $err
* @param type $site_id
* @return boolean
*/
function site_delete($site_id) {
global $db, $cuid, $err;
@ -323,6 +444,14 @@ class m_piwik {
}
/**
*
* @global m_err $err
* @param type $site_id
* @param type $login
* @param type $right
* @return boolean
*/
function site_set_user_right($site_id, $login, $right)
{
global $err;
@ -337,6 +466,10 @@ class m_piwik {
}
}
// Ajoute un alias sur un site existant
/**
*
* @return boolean
*/
function site_alias_add() {
// FIXME
return true;
@ -346,11 +479,19 @@ class m_piwik {
/* Helper code FIXME: rename those function using "private" + "_" prefix */
/**
*
* @param type $username
* @return type
*/
function clean_user_name($username) {
return mysql_real_escape_string(trim($username));
}
/**
*
*/
function dev() {
// $this->call_page('module', 'method', array('user' => 'fser', 'pass' => 'toto'));
// return $this->users_list();
@ -361,6 +502,15 @@ class m_piwik {
* @param string $module
* @param string $method
*/
/**
*
* @global m_err $err
* @param type $module
* @param type $method
* @param type $arguments
* @param type $output
* @return boolean
*/
function call_page($module, $method, $arguments=array(), $output = 'JSON') {
global $err;
$url = sprintf('%s/?module=%s&method=%s&format=%s', $this->piwik_server_uri, $module, $method, $output);
@ -391,6 +541,14 @@ class m_piwik {
* @param string $module
* @param string $method
*/
/**
*
* @param type $module
* @param type $method
* @param array $arguments
* @param type $output
* @return type
*/
function call_privileged_page($module, $method, $arguments=array(), $output = 'JSON') {
$arguments['token_auth'] = $this->piwik_admin_token;
return $this->call_page($module, $method, $arguments, $output);

View File

@ -44,10 +44,13 @@ class m_quota {
var $clquota; // Which class manage which quota.
/* ----------------------------------------------------------------- */
/**
* Constructor
*/
/**
*
*/
function m_quota() {
$this->disk_quota_enable = variable_get('disk_quota_enable', 1,'Are disk quota enabled for this server', array('desc'=>'Enabled','type'=>'boolean'));
if ( $this->disk_quota_enable ) {
@ -60,6 +63,10 @@ class m_quota {
_("quota_web");
}
/**
*
* @return type
*/
function hook_menu() {
$obj = array(
'title' => _("Show my quotas"),
@ -82,22 +89,33 @@ class m_quota {
return $obj;
}
/* ----------------------------------------------------------------- */
/** Check if a user can use a ressource.
* @param string $ressource the ressource name (a named quota)
* @Return TRUE if the user can create a ressource (= is there any quota left ?)
* @return boolean
*/
/**
*
* @param type $ressource
* @return type
*/
function cancreate($ressource="") {
$t=$this->getquota($ressource);
return $t["u"]<$t["t"];
}
/* ----------------------------------------------------------------- */
/** List the quota-managed services in the server
* @Return array the quota names and description (translated)
*/
/**
*
* @global array $classes
* @global m_hooks $hooks
* @return type
*/
function qlist() {
global $classes,$hooks;
$qlist=array();
@ -122,6 +140,12 @@ class m_quota {
* If the quota entry doesn't exist for the user, create it with
* the defaults value.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @return boolean
*/
function synchronise_user_profile() {
global $db,$err;
$err->log("quota","synchronise_user_profile");
@ -135,6 +159,13 @@ class m_quota {
* when a new quota appear
*
*/
/**
*
* @global m_mysql $db
* @global m_quota $quota
* @global m_err $err
* @return boolean
*/
function create_missing_quota_profile() {
global $db,$quota,$err;
$err->log("quota","create_missing_quota_profile");
@ -148,11 +179,23 @@ class m_quota {
return true;
}
/* ----------------------------------------------------------------- */
/** Return a ressource usage (u) and total quota (t)
* @param string $ressource ressource to get quota of
* @Return array the quota used and total for this ressource (or for all ressource if unspecified)
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @global array $get_quota_cache
* @global m_hooks $hooks
* @global m_mem $mem
* @param type $ressource
* @param type $recheck
* @return int
*/
function getquota($ressource="",$recheck=false) {
global $db,$err,$cuid,$get_quota_cache,$hooks,$mem;
$err->log("quota","getquota",$ressource);
@ -219,11 +262,20 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Set the quota for a user (and for a ressource)
* @param string $ressource ressource to set quota of
* @param integer size of the quota (available or used)
*/
/**
*
* @global m_err $err
* @global m_mysql $db
* @global m_mem $mem
* @param type $ressource
* @param string $size
* @return boolean
*/
function setquota($ressource,$size) {
global $err,$db,$cuid;
$err->log("quota","setquota",$ressource."/".$size);
@ -249,10 +301,17 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/**
* Erase all quota information about the user.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return boolean
*/
function delquotas() {
global $db,$err,$cuid;
$err->log("quota","delquota");
@ -261,10 +320,15 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Get the default quotas as an associative array
* @return array the array of the default quotas
*/
/**
*
* @global m_mysql $db
* @return type
*/
function getdefaults() {
global $db;
$c=array();
@ -282,10 +346,16 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Set the default quotas
* @param array associative array of quota (key=>val)
*/
/**
*
* @global m_mysql $db
* @param type $newq
* @return boolean
*/
function setdefaults($newq) {
global $db;
$qlist=$this->qlist();
@ -302,11 +372,18 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Add an account type for quotas
* @param string $type account type to be added
* @return boolean true if all went ok
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @param type $type
* @return boolean
*/
function addtype($type) {
global $db,$err;
$qlist=$this->qlist();
@ -325,10 +402,15 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** List for quotas
* @return array
*/
/**
*
* @global m_mysql $db
* @return type
*/
function listtype() {
global $db;
$db->query("SELECT distinct(type) FROM defquotas ORDER by type");
@ -340,11 +422,17 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Delete an account type for quotas
* @param string $type account type to be deleted
* @return boolean true if all went ok
*/
/**
*
* @global m_mysql $db
* @param type $type
* @return boolean
*/
function deltype($type) {
global $db;
@ -357,10 +445,17 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Create default quotas entries for a new user.
* The user we are talking about is in the global $cuid.
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @return boolean
*/
function addquotas() {
global $db,$err,$cuid;
$err->log("quota","addquota");
@ -384,13 +479,19 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Return a quota value with its unit (when it is a space quota)
* in MB, GB, TB ...
* @param string $type The quota type
* @param integer $value The quota value
* @return string a quota value with its unit.
*/
/**
*
* @param type $type
* @param type $value
* @return type
*/
function display_val($type, $value) {
switch ($type) {
case 'bw_web':
@ -404,6 +505,14 @@ class m_quota {
/* get size_xx function (filled by spoolsize.php) */
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $sql
* @return type
*/
function _get_sum_sql($sql) {
global $db,$err,$cuid;
$db->query($sql);
@ -416,6 +525,14 @@ class m_quota {
}
}
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $sql
* @return int
*/
function _get_count_sql($sql) {
global $db,$err,$cuid;
$db->query($sql);
@ -428,6 +545,14 @@ class m_quota {
}
}
/**
*
* @global m_mysql $db
* @global m_err $err
* @global m_mem $mem
* @param type $sql
* @return type
*/
function _get_size_and_record_sql($sql) {
global $db,$err,$cuid;
$db->query($sql);
@ -443,97 +568,186 @@ class m_quota {
}
/* sum of websites sizes from all users */
/**
*
* @return type
*/
function get_size_web_sum_all() {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_web;");
}
/* sum of websites sizes from one user */
/**
*
* @param type $u
* @return type
*/
function get_size_web_sum_user($u) {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_web WHERE uid='$u';");
}
/* sum of mailbox sizes from all domains */
/**
*
* @return type
*/
function get_size_mail_sum_all() {
return $this->_get_sum_sql("SELECT SUM(bytes) AS sum FROM mailbox;");
}
/* sum of mailbox sizes for one domain */
/**
*
* @global m_mail $mail
* @param type $dom
* @return type
*/
function get_size_mail_sum_domain($dom) {
global $mail;
return $mail->get_total_size_for_domain($dom);
}
/* count of mailbox sizes from all domains */
/**
*
* @return type
*/
function get_size_mail_count_all() {
return $this->_get_count_sql("SELECT COUNT(*) AS count FROM mailbox;");
}
/* count of mailbox for one domain */
/**
*
* @param type $dom
* @return type
*/
function get_size_mail_count_domain($dom) {
return $this->_get_count_sql("SELECT COUNT(*) AS count FROM dovecot_view WHERE user LIKE '%@{$dom}'");
}
/* get list of mailbox alias and size for one domain */
/**
*
* @param type $dom
* @return type
*/
function get_size_mail_details_domain($dom) {
return $this->_get_size_and_record_sql("SELECT user as alias,quota_dovecot as size FROM dovecot_view WHERE user LIKE '%@{$dom}' ORDER BY alias;");
}
/* sum of mailman lists sizes from all domains */
/**
*
* @return type
*/
function get_size_mailman_sum_all() {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_mailman;");
}
/* sum of mailman lists sizes for one domain */
/**
*
* @param type $dom
* @return type
*/
function get_size_mailman_sum_domain($dom) {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_mailman WHERE list LIKE '%@{$dom}'");
}
/* sum of mailman lists for one user */
/**
*
* @param type $u
* @return type
*/
function get_size_mailman_sum_user($u) {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_mailman WHERE uid = '{$u}'");
}
/* count of mailman lists sizes from all domains */
/**
*
* @return type
*/
function get_size_mailman_count_all() {
return $this->_get_count_sql("SELECT COUNT(*) AS count FROM size_mailman;");
}
/* count of mailman lists for one user */
/**
*
* @param type $u
* @return type
*/
function get_size_mailman_count_user($u) {
return $this->_get_count_sql("SELECT COUNT(*) AS count FROM size_mailman WHERE uid = '{$u}'");
}
/* get list of mailman list and size for one user */
/**
*
* @param type $u
* @return type
*/
function get_size_mailman_details_user($u) {
return $this->_get_size_and_record_sql("SELECT s.size,CONCAT(m.list,'@',m.domain) as list FROM size_mailman s LEFT JOIN mailman m ON s.list=m.name WHERE s.uid='{$u}' ORDER BY s.list ASC");
}
/* sum of databases sizes from all users */
/**
*
* @return type
*/
function get_size_db_sum_all() {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_db;");
}
/* sum of databases sizes for one user */
/**
*
* @param type $u
* @return type
*/
function get_size_db_sum_user($u) {
return $this->_get_sum_sql("SELECT SUM(size) AS sum FROM size_db WHERE db = '{$u}' OR db LIKE '{$u}\_%'");
}
/* count of databases from all users */
/**
*
* @return type
*/
function get_size_db_count_all() {
return $this->_get_count_sql("SELECT COUNT(*) AS count FROM size_db;");
}
/* count of databases for one user */
/**
*
* @param type $u
* @return type
*/
function get_size_db_count_user($u) {
return $this->_get_count_sql("SELECT COUNT(*) AS count FROM size_db WHERE db = '{$u}' OR db LIKE '{$u}\_%'");
}
/* get list of databases name and size for one user */
/**
*
* @param type $u
* @return type
*/
function get_size_db_details_user($u) {
return $this->_get_size_and_record_sql("SELECT db,size FROM size_db WHERE db='{$u}' OR db LIKE '{$u}\_%';");
}
/* Return appropriate value and unit of a size given in Bytes (e.g. 1024 Bytes -> return 1 KB) */
/**
*
* @param type $size
* @return type
*/
function get_size_unit($size) {
$units=array(1073741824=>_("GB"), 1048576=>_("MB"), 1024=>_("KB"), 0=>_("B"));
foreach($units as $value=>$unit){
@ -549,6 +763,11 @@ class m_quota {
// 0 = Pas de changement de couleur
// 1 = Progression du vert vers le rouge en fonction du porcentage
// 2 = Progression du rouge vers le vert en fonction du porcentage
/**
*
* @param type $usage
* @param type $color_type
*/
function quota_displaybar($usage, $color_type=1) {
if ($color_type == 1) {
$csscolor = " background-color:".PercentToColor($usage);
@ -568,21 +787,28 @@ class m_quota {
/* ==== Hook functions ==== */
/* ----------------------------------------------------------------- */
/** Hook function call when a user is deleted
* AlternC's standard function called when a user is deleted
* globals $cuid is the appropriate user
*/
/**
*
*/
function hook_admin_del_member() {
$this->delquotas();
}
/* ----------------------------------------------------------------- */
/** Hook function called when a user is created
* This function initialize the user's quotas.
* globals $cuid is the appropriate user
*/
/**
*
* @global m_err $err
*/
function hook_admin_add_member() {
global $err;
$err->log("quota","hook_admin_add_member");
@ -591,11 +817,17 @@ class m_quota {
}
/* ----------------------------------------------------------------- */
/** Exports all the quota related information for an account.
* @access private
* EXPERIMENTAL function ;)
*/
/**
*
* @global m_mysql $db
* @global m_err $err
* @return string
*/
function alternc_export_conf() {
global $db,$err;
$err->log("quota","export");

View File

@ -79,7 +79,7 @@ class m_variables {
* with variable_set() as well as those explicitly specified in the configuration
* file.
*
* @global int $cuid
* @global int $cuid
* @return array
*/
function variable_init() {

View File

@ -1,5 +1,7 @@
<?php
/**
* @todo Is this the right place for such a script
*/
include("config.php");
if (!$admin->enabled) {

View File

@ -1,5 +1,8 @@
<?php
interface vm {
/**
* @return boolean
*/
public function start();
/**