diff --git a/.gitattributes b/.gitattributes index 59a0cadb..730a6066 100644 --- a/.gitattributes +++ b/.gitattributes @@ -284,7 +284,6 @@ bureau/admin/menu_mem.php -text bureau/admin/menu_piwik.php -text bureau/admin/menu_quota.php -text bureau/admin/menu_sql.php -text -bureau/admin/menu_sta2.php -text bureau/admin/menu_web.php -text bureau/admin/mxlist.php -text bureau/admin/phpinfo.php -text @@ -315,12 +314,6 @@ bureau/admin/sql_users_dorights.php -text bureau/admin/sql_users_list.php -text bureau/admin/sql_users_password.php -text bureau/admin/sql_users_rights.php -text -bureau/admin/sta2_add_raw.php -text -bureau/admin/sta2_del_raw.php -text -bureau/admin/sta2_doadd_raw.php -text -bureau/admin/sta2_doedit_raw.php -text -bureau/admin/sta2_edit_raw.php -text -bureau/admin/sta2_list.php -text bureau/admin/stats_members.php -text bureau/admin/styles/passwordStrengthMeter.css -text bureau/admin/styles/style.css -text @@ -352,7 +345,6 @@ bureau/class/m_mem.php -text bureau/class/m_mysql.php -text bureau/class/m_piwik.php -text bureau/class/m_quota.php -text -bureau/class/m_sta2.php -text bureau/class/m_trash.php -text bureau/class/mime.php -text bureau/class/reset_stats_conf.php -text @@ -531,7 +523,6 @@ src/quota_delete -text src/quota_edit -text src/quota_get -text src/quota_init -text -src/rawstat.daily -text src/sendmail -text src/slave_dns -text src/spoolsize.php -text diff --git a/bureau/admin/menu_sta2.php b/bureau/admin/menu_sta2.php deleted file mode 100644 index 57a02065..00000000 --- a/bureau/admin/menu_sta2.php +++ /dev/null @@ -1,32 +0,0 @@ -getquota("sta2"); -$r = $quota->getquota("dom"); -if ($q["t"] > 0 || $r["u"] > 0) { -?> - - diff --git a/bureau/admin/sta2_add_raw.php b/bureau/admin/sta2_add_raw.php deleted file mode 100644 index e6e9dadb..00000000 --- a/bureau/admin/sta2_add_raw.php +++ /dev/null @@ -1,66 +0,0 @@ -cancreate("sta2")) { - $error=_("You cannot add any new statistics, your quota is over."); -} - -include_once("head.php"); -?> -

-
-
-$error

"; - include_once("foot.php"); - exit(); - } -?> -
- - - -
- - -
- -
-
-" /> -
-show_help("sta2_add"); ?> - diff --git a/bureau/admin/sta2_del_raw.php b/bureau/admin/sta2_del_raw.php deleted file mode 100644 index 4cff24f7..00000000 --- a/bureau/admin/sta2_del_raw.php +++ /dev/null @@ -1,49 +0,0 @@ -delete_stats_raw($val); - if (!$r) { - $error.=$err->errstr()."
"; - } else { - $error.=sprintf(_("The statistics %s has been successfully deleted (the stats files must be manually deleted)"),$r)."
"; - } - } -} - -include("sta2_list.php"); -exit(); -?> diff --git a/bureau/admin/sta2_doadd_raw.php b/bureau/admin/sta2_doadd_raw.php deleted file mode 100644 index d7aed651..00000000 --- a/bureau/admin/sta2_doadd_raw.php +++ /dev/null @@ -1,48 +0,0 @@ - array ("post", "string", ""), - "dir" => array ("post", "string", ""), -); -getFields($fields); - -$r=$sta2->add_stats_raw($hostname,$dir); -if (!$r) { - $error=$err->errstr(); - include("sta2_add_raw.php"); - exit(); -} else { - $error=_("The statistics has been successfully created"); - include("sta2_list.php"); - exit(); -} -?> \ No newline at end of file diff --git a/bureau/admin/sta2_doedit_raw.php b/bureau/admin/sta2_doedit_raw.php deleted file mode 100644 index d09ecf0e..00000000 --- a/bureau/admin/sta2_doedit_raw.php +++ /dev/null @@ -1,52 +0,0 @@ - array ("post", "integer", ""), - "dir" => array ("post", "string", ""), -); -getFields($fields); - -if (empty($id)) { - $error=_("No Statistics selected!"); -} else { - $r=$sta2->put_stats_details_raw($id,$dir); - if (!$r) { - $error=$err->errstr(); - include("sta2_edit_raw.php"); - exit(); - } else { - $error=_("The Statistics has been successfully changed"); - include("sta2_list.php"); - exit(); - } -} -?> diff --git a/bureau/admin/sta2_edit_raw.php b/bureau/admin/sta2_edit_raw.php deleted file mode 100644 index 97319624..00000000 --- a/bureau/admin/sta2_edit_raw.php +++ /dev/null @@ -1,75 +0,0 @@ - array ("get", "integer", ""), -); -getFields($fields); - -if (empty($id)) { - $error=_("No Statistics selected!"); -} else { - $r=$sta2->get_stats_details_raw($id); - if (!$r) { - $error=$err->errstr(); - } -} - -?> -

-
-
-$error

"; - include_once("foot.php"); - exit(); - } -?> -
- - - - -
- - -
" size="20" maxlength="255" /> - -
" />
-
- diff --git a/bureau/admin/sta2_list.php b/bureau/admin/sta2_list.php deleted file mode 100644 index 7366a169..00000000 --- a/bureau/admin/sta2_list.php +++ /dev/null @@ -1,85 +0,0 @@ - -

-
-
-cancreate("sta2")) { ?> -

- -

-$error

"; - } - -if (!$r=$sta2->get_list_raw()) { - $error=$err->errstr(); - echo "

$error

"; -} else { - -?> - -
- - - - - - - - - - - - - -
" value="" />/viewurl($val["folder"], $val["hostname"].'.log')) echo ""._("View").""; -?> 
" />
-
- - - - diff --git a/bureau/class/m_sta2.php b/bureau/class/m_sta2.php deleted file mode 100644 index 93223a4c..00000000 --- a/bureau/class/m_sta2.php +++ /dev/null @@ -1,300 +0,0 @@ - -* The file is stored in the user space and will grow from time to time... -* -* @copyright AlternC's Team 2002-2005 http://alternc.org/ -* -*/ -class m_sta2 { - - /* ----------------------------------------------------------------- */ - /** - * Constructor, dummy - */ - function m_sta2() { - } - - /* ----------------------------------------------------------------- */ - /** Returns the list of domains and/or subdomains for this account - * - * @return array returns an array with all the domains / subdomains for this account. - */ - function host_list() { - global $db,$err,$cuid; - $r=array(); - $db->query("SELECT domaine,sub FROM sub_domaines WHERE compte='$cuid' ORDER BY domaine,sub;"); - while ($db->next_record()) { - if ($db->f("sub")) { - $r[]=$db->f("sub").".".$db->f("domaine"); - } else { - $r[]=$db->f("domaine"); - } - } - return $r; - } - - /* ----------------------------------------------------------------- */ - /** Draw option html tags of ths allowed domains / subdomains for the account. - * - * @param $current string The current selected value in the list - */ - function select_host_list($current) { - $r=$this->host_list(); - reset($r); - while (list($key,$val)=each($r)) { - if ($current==$val) $c=" selected=\"selected\""; else $c=""; - echo "$val"; - } - return true; - } - - /* ----------------------------------------------------------------- */ - /** Hook function that delete a user's raw stats. - */ - function alternc_del_member() { - global $db,$err,$cuid; - $err->log("sta2","del_member"); - $db->query("DELETE FROM stats2 WHERE mid='$cuid';"); - return true; - } - - /* ----------------------------------------------------------------- */ - /** Hook function that delete a user's domain, called by m_dom. - * @param string $dom is the domain that is to be deleted. - */ - function alternc_del_domain($dom) { - global $db,$err,$cuid; - $err->log("sta2","del_dom",$dom); - // Suppression des stats apache brutes : - $db->query("SELECT * FROM stats2 WHERE mid='$cuid' AND hostname like '%$dom'"); - $cnt=0; - $t=array(); - while ($db->next_record()) { - $cnt++; - $t[]=$db->f("hostname"); - } - // on détruit les jeux de stats associés au préfixe correspondant : - for($i=0;$i<$cnt;$i++) { - $db->query("DELETE FROM stats2 WHERE mid='$cuid' AND hostname='".$t[$i]."';"); - } - return true; - } - - /* ----------------------------------------------------------------- */ - /** Returns an array with the user's raw stat list - * The returned array is as follow : - * $r[0-n]["id"] = Id of the raw stat set. - * $r[0-n]["hostname"]= Domain - * $r[0-n]["folder"]= Destination's folder (in the user space) - * - * @return array Returns the array or FALSE if an error occured. - */ - function get_list_raw() { - global $db,$err,$cuid; - $err->log("sta2","get_list_raw"); - $r=array(); - $db->query("SELECT id, hostname, folder FROM stats2 WHERE mid='$cuid' ORDER BY hostname;"); - if ($db->num_rows()) { - while ($db->next_record()) { - // We skip /var/alternc/html/u/user - // FIXME: utiliser ALTERNC_HTML au lieu de /var/alternc/html/ - preg_match("/^\/var\/alternc\/html\/.\/[^\/]*\/(.*)/", $db->f("folder"),$match); - $r[]=array( - "id"=>$db->f("id"), - "hostname"=>$db->f("hostname"), - "folder"=>$match[1] - ); - } - return $r; - } else { - $err->raise("sta2",_("You cannot create more raw statistic set.")); - return false; - } - } - - /* ----------------------------------------------------------------- */ - /** Get the details of a raw statistic set. - * - * This function returns the details of a raw statistic set (raw logs) - * The returned value is an associative array as follow : - * $ret["id"] = raw stat id. - * $ret["hostname"] = the domain we get the raw log. - * $ret["folder"] = the destination folder for the logs (inside the user space) - * @param $id string The raw stat number we want details of. - * @return array returns an array with the raw log parameters or FALSE if an error occured. - */ - function get_stats_details_raw($id) { - global $db,$err,$cuid; - $err->log("sta2","get_stats_details_raw",$id); - $r=array(); - $db->query("SELECT id, hostname, folder FROM stats2 WHERE mid='$cuid' AND id='$id';"); - if ($db->num_rows()) { - $db->next_record(); - // We skip /var/alternc/html/u/user - // FIXME: utiliser ALTERNC_HTML au lieu de /var/alternc/html/ - preg_match("/^\/var\/alternc\/html\/.\/[^\/]*\/(.*)/", $db->f("folder"),$match); - return array( - "id"=>$db->f("id"), - "hostname"=> $db->f("hostname"), - "folder"=>$match[1] - ); - } else { - $err->raise("sta2",_("The requested raw statistic set has not been found.")); - return false; - } - } - - /* ----------------------------------------------------------------- */ - /** Edit a raw statistic set. - * - * This function edit a raw statistic set. - * $folder is the new destination folder inside the user space where the log - * file will be put. - * @param $id integer The raw statistic number we are changing - * @param $folder string new destination folder - * @return boolean TRUE if the set has been changed, FALSE if an error occured. - */ - function put_stats_details_raw($id,$folder) { - global $db,$err,$bro,$mem,$cuid; - $err->log("sta2","put_stats_details_raw",$id); - $db->query("SELECT count(*) AS cnt FROM stats2 WHERE id='$id' and mid='$cuid';"); - $db->next_record(); - if (!$db->f("cnt")) { - $err->raise("sta2",_("The requested raw statistic set has not been found.")); - return false; - } - // TODO : replace with ,1 on convertabsolute call, and delete "/Var/alternc.../" at the query. ??? - $folder=$bro->convertabsolute($folder); - if (substr($folder,0,1)=="/") { - $folder=substr($folder,1); - } - $db->query("UPDATE stats2 SET folder='".getuserpath()."/$folder', mid='$cuid' WHERE id='$id';"); - return true; - } - - /* ----------------------------------------------------------------- */ - /** Delete a raw statistic set - * - * This function erase the raw statistic set pointed to by $id. - * The raw log files that may be present in the folder will NOT be deleted. - * @param $id integer is the set that has to be deleted. - * @return boolean TRUE if the raw stat has been deleted, FALSE if an error occured. - */ - function delete_stats_raw($id) { - global $db,$err,$cuid; - $err->log("sta2","delete_stats_raw",$id); - $db->query("SELECT hostname FROM stats2 WHERE id='$id' and mid='$cuid';"); - if (!$db->num_rows()) { - $err->raise("sta2",_("The requested raw statistic set has not been found.")); - return false; - } - $db->next_record(); - $db->query("DELETE FROM stats2 WHERE id='$id'"); - return true; - } - - /* ----------------------------------------------------------------- */ - /** Create a new raw statistic set (raw log) - * This function create a new raw log set for the current user. - * The raw statistics allow any user to get its raw apache log put daily in - * one of its folders in its user space. - * @param $hostname string this is the domain name (hosted by the current user) - * for which we want raw logs - * @param $dir string this is the folder where we will put the raw log files. - * @return boolean TRUE if the set has been created, or FALSE if an error occured. - */ - function add_stats_raw($hostname,$dir) { - global $db,$err,$quota,$bro,$mem,$cuid; - $err->log("sta2","add_stats_raw",$hostname); - // TODO : utiliser le second param de convertabsolute pour simplification. - $dir=$bro->convertabsolute($dir); - if (substr($dir,0,1)=="/") { - $dir=substr($dir,1); - } - if ($quota->cancreate("sta2")) { - $db->query("INSERT INTO stats2 (hostname,folder,mid) VALUES ('$hostname','".getuserpath()."/$dir','$cuid')"); - return true; - } else { - $err->raise("sta2",_("You cannot create more raw statistic set.")); - return false; - } - } - - /* ----------------------------------------------------------------- */ - /** Quota computing Hook function - * This is the quota computing hook function for sta2. It computes the - * used quota of raw stats 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 - */ - function hook_quota_get() { - global $db,$err,$cuid; - $err->log("sta2","get_quota"); - $q=Array("name"=>"sta2", "description"=>_("RAW Statistics"), "used"=>0); - $db->query("SELECT COUNT(*) AS cnt FROM stats2 WHERE mid='$cuid'"); - if ($db->next_record()) { - $q['used']=$db->f("cnt"); - } - return $q; - } - - - /* ----------------------------------------------------------------- */ - /** - * Exporte toutes les informations states brutes du compte. - * @access private - * EXPERIMENTAL 'sid' function ;) - */ - function alternc_export_conf() { - global $db,$err; - $err->log("sta2","export"); - $f=$this->get_list_raw(); - $str="\n"; - foreach ($f as $d) { - $str.=" \n"; - $str.=" ".($s[hostname])."\n"; - $str.=" ".($s[folder])."\n"; - $str.=" \n"; - } - $str.="\n"; - return $str; - } - - -} /* CLASSE m_sta2 */ - -?> diff --git a/debian/alternc.cron.d b/debian/alternc.cron.d index f40cf040..eb37df52 100644 --- a/debian/alternc.cron.d +++ b/debian/alternc.cron.d @@ -1,6 +1,3 @@ -# Every day at 4am, produce raw statistics -0 4 * * * root /usr/lib/alternc/rawstat.daily - # Every 2 days compress log files 0 4 * * * alterncpanel /usr/lib/alternc/compress_logs.sh diff --git a/install/mysql.sql b/install/mysql.sql index 5acff775..3b693c7e 100644 --- a/install/mysql.sql +++ b/install/mysql.sql @@ -279,21 +279,6 @@ CREATE TABLE IF NOT EXISTS `recipient` ( ) COMMENT = 'Table containing other recipients (aliases) for an address.'; --- --- Structure de la table `stats3` --- --- Liste des jeux de stat brutes demandées sur le serveur - -CREATE TABLE IF NOT EXISTS stats2 ( - id int(10) unsigned NOT NULL auto_increment, -- Numéro du jeu de stat brut - mid int(10) unsigned NOT NULL default '0', -- Numéro de l`utilisateur - hostname varchar(255) NOT NULL default '', -- Domaine concerné - folder varchar(255) NOT NULL default '', -- Dossier de stockage des logs - PRIMARY KEY (id), - KEY mid (mid) -) TYPE=MyISAM COMMENT='Statistiques apaches brutes'; - - -- -- Structure de la table `defquotas` -- @@ -317,7 +302,6 @@ INSERT IGNORE INTO defquotas (quota,value) VALUES ('mail',10); INSERT IGNORE INTO defquotas (quota,value) VALUES ('ftp',2); INSERT IGNORE INTO defquotas (quota,value) VALUES ('stats',1); INSERT IGNORE INTO defquotas (quota,value) VALUES ('mysql',1); -INSERT IGNORE INTO defquotas (quota,value) VALUES ('mysql_users',1); -- diff --git a/install/upgrades/1.1.sql b/install/upgrades/1.1.sql index cdb45d0f..d97b54c9 100644 --- a/install/upgrades/1.1.sql +++ b/install/upgrades/1.1.sql @@ -217,3 +217,9 @@ CREATE TABLE IF NOT EXISTS `piwik_sites` ( -- No longer MySQL User quotas DELETE FROM defquotas WHERE quota = 'mysql_users'; DELETE FROM quotas WHERE name = 'mysql_users'; + +-- Raw web statistics are deprecated since vlogger +DELETE FROM quotas WHERE name = 'sta2'; +DELETE FROM defquotas WHERE quota = 'sta2'; + +DROP TABLE stats2; diff --git a/src/Makefile b/src/Makefile index e8ab49a3..3b79dc7b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -26,7 +26,7 @@ # ---------------------------------------------------------------------- # SETUID=quota_edit quota_get mem_add mem_del du.pl -SCRIPTS=sqlbackup.sh rawstat.daily quota_init quota_delete update_domains.sh slave_dns sendmail spoolsize.php fixperms.sh alternc-dboptimize export_account.php cron_users_doit.sh cron_users.sh compress_logs.sh delete_logs.sh quota-warning.sh update_mails.sh postfix-add-policy +SCRIPTS=sqlbackup.sh quota_init quota_delete update_domains.sh slave_dns sendmail spoolsize.php fixperms.sh alternc-dboptimize export_account.php cron_users_doit.sh cron_users.sh compress_logs.sh delete_logs.sh quota-warning.sh update_mails.sh postfix-add-policy LIBS=functions.sh functions_hosting.sh functions_dns.sh BIN=$(DESTDIR)/usr/lib/alternc/ diff --git a/src/rawstat.daily b/src/rawstat.daily deleted file mode 100644 index 4d7415fa..00000000 --- a/src/rawstat.daily +++ /dev/null @@ -1,220 +0,0 @@ -#!/usr/bin/php -q -$row['mid'], - 'log_files'=>array( - $row['folder'].'/'.$row['hostname'].$LOGS_SUFIX =>'' - ) - ); - - //A log line with host.test.com should go to the test.com's log file too, if the member want logs for host.test.com and test.com. - $parent_host = $row['hostname']; - while ($pos = strpos($parent_host, '.')) { - $parent_host = substr($parent_host, $pos+1); - if (!isset($hosts[$parent_host])) { - continue; - } - //link the parent-hostnames's log-files in this host - $parent_log_files = array_keys($hosts[$parent_host]['log_files']); - foreach($parent_log_files as $parent_log_file) { - $hosts[$row['hostname']]['log_files'][$parent_log_file] = &$hosts[$parent_host]['log_files'][$parent_log_file]; - } - - break; - } -} - -//Open apache log file -//Open apache log file -if (!$apache_log_file = @fopen($APACHE_LOG, 'r')) { - if (!$apache_log_file = @fopen($APACHE2_LOG, 'r')) { - return 1; - } -} - -//Parsing log file -while ($line = fgets($apache_log_file)) { - - //Get the hostname in this log line - //assume that hostname is at end of line and separated with a space - $host = substr($line, strrpos($line, ' ')+1, -1); - - if (isset($hosts[$host]) && is_null($hosts[$host])) { - unset($hosts[$host]); - $nolog_hosts[$host]=''; - continue; - } - - if (isset($nolog_hosts[$host])) { - continue; - } - - //If hostname is not listed in hostnames to log, link it to a listed parent if exists. - //Processed only one time by not listed hostname - if (!isset($hosts[$host])) { - $parent_host = $host; - while ($pos = strpos($parent_host, '.')) { - $parent_host = substr($parent_host, $pos+1); - if (isset($nolog_hosts[$parent_host])) { - $pos = false; - break; - } - if (isset($hosts[$parent_host]) && is_null($hosts[$parent_host])) { - unset($hosts[$parent_host]); - $nolog_hosts[$parent_host]=''; - $pos = false; - break; - } - if (isset($hosts[$parent_host])) { - //link this host to the parent hostname - $hosts[$host] = &$hosts[$parent_host]; - break; - } - } - if ($pos === false) { - //We will not have to search again for this host - $nolog_hosts[$host]=''; - continue; - } - } - - $log_files = array_keys($hosts[$host]['log_files']); - if (count($log_files) < 1) { - $hosts[$host] = null; - unset($hosts[$host]); - $nolog_hosts[$host]=''; - continue; - } - - foreach($log_files as $log_file) { - - if (is_null($hosts[$host]['log_files'][$log_file])) { - // has been set to null throught a reference for a future unset - unset($hosts[$host]['log_files'][$log_file]); - continue; - } - - //file isn't opened yet - if (!is_resource($hosts[$host]['log_files'][$log_file])) { - - //Log file doesn't exists, we create an empty one with good owner and perms - if (!file_exists($log_file)) { - if (!touch($log_file)) { - $hosts[$host]['log_files'][$log_file] = null; - unset($hosts[$host]['log_files'][$log_file]); - continue; - } - if (!chgrp($log_file, (int)$hosts[$host]['mid'])) { - unlink($log_file); - $hosts[$host]['log_files'][$log_file] = null; - unset($hosts[$host]['log_files'][$log_file]); - continue; - } - if (!chown($log_file, (int)$FILES_OWNER)) { - unlink($log_file); - $hosts[$host]['log_files'][$log_file] = null; - unset($hosts[$host]['log_files'][$log_file]); - continue; - } - } - - //Open the log file - if (!$hosts[$host]['log_files'][$log_file] = fopen($log_file, 'a')) { - $hosts[$host]['log_files'][$log_file] = null; - unset($hosts[$host]['log_files'][$log_file]); - continue; - } - } - - //Write the log line - if (!fwrite($hosts[$host]['log_files'][$log_file], $line)) { - fclose($hosts[$host]['log_files'][$log_file]); - $hosts[$host]['log_files'][$log_file] = null; - unset($hosts[$host]['log_files'][$log_file]); - } - } -} - -//Close all opened files -$hostnames = array_keys($hosts); -while ($host = array_pop($hostnames)) { - if (is_null($hosts[$hostname]['log_files'])) { - unset($hosts[$hostname]['log_files'][$log_file]); - continue; - } - $log_files = array_keys($hosts[$hostname]['log_files']); - while ($log_file = array_pop($log_files)) { - if (is_null($hosts[$hostname]['log_files'][$log_file])) { - unset($hosts[$hostname]['log_files'][$log_file]); - continue; - } - if (is_resource($hosts[$hostname]['log_files'][$log_file])) { - fclose($hosts[$hostname]['log_files'][$log_file]); - $hosts[$hostname]['log_files'][$log_file] = null; - unset($hosts[$hostname]['log_files'][$log_file]); - } - } - $hosts[$hostname] = null; - unset($hosts[$hostname]); -} - -fclose($apache_log_file); - -return 0; -?>