Ajout classe de logs

This commit is contained in:
Steven Mondji-Lerider 2012-08-21 18:25:56 +00:00
parent 6748cf3c6d
commit 687e461324
19 changed files with 290 additions and 15 deletions

6
.gitattributes vendored
View File

@ -241,6 +241,8 @@ bureau/admin/js/prototype.js -text
bureau/admin/login.php -text
bureau/admin/logo.png -text
bureau/admin/logo2.png -text
bureau/admin/logs_download.php -text
bureau/admin/logs_list.php -text
bureau/admin/mail_add.php -text
bureau/admin/mail_alias_create.inc.php -text
bureau/admin/mail_alias_doedit.php -text
@ -336,6 +338,7 @@ bureau/class/m_export.php -text
bureau/class/m_ftp.php -text
bureau/class/m_hooks.php -text
bureau/class/m_hta.php -text
bureau/class/m_log.php -text
bureau/class/m_mail.php -text
bureau/class/m_mail_alias.php -text
bureau/class/m_mail_jabber.php -text
@ -410,6 +413,7 @@ etc/alternc/alternc-sudoers -text
etc/alternc/alternc.ini -text
etc/alternc/apache2-ssl.conf -text
etc/alternc/apache2.conf -text
etc/alternc/apache_logformat.conf -text
etc/alternc/dbusers.cnf.sample -text
etc/alternc/functions_hosting/hosting_massvhost.sh -text
etc/alternc/menulist.txt -text
@ -503,8 +507,10 @@ src/alternc-check -text
src/alternc-dboptimize -text
src/alternc-passwd -text
src/alternc_reload -text
src/compress_logs.sh -text
src/cron_users.sh -text
src/cron_users_doit.sh -text
src/delete_logs.sh -text
src/du.pl -text
src/export_account.php -text
src/fixperms.sh -text

View File

@ -0,0 +1,42 @@
<?php
/*
$Id: logs_download.php,v 1.2 2004/09/06 18:14:36 anonymous Exp $
----------------------------------------------------------------------
AlternC - Web Hosting System
Copyright (C) 2002 by the AlternC Development Team.
http://alternc.org/
----------------------------------------------------------------------
Based on:
Valentin Lacambre's web hosting softwares: http://altern.org/
----------------------------------------------------------------------
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 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: Sonntag Benjamin
Purpose of file: Return the current folder in a compressed file
----------------------------------------------------------------------
*/
require_once("../class/config.php");
$fields = array (
"file" => array ("request", "string", ""),
);
getFields($fields);
if (empty($file)) {
$error="";
}
$log->download_link($file);
?>

View File

@ -0,0 +1,68 @@
<?php
/*
$Id: log_list.php,v 1.8 2006/02/16 16:26:28 benjamin Exp $
----------------------------------------------------------------------
AlternC - Web Hosting System
Copyright (C) 2002 by the AlternC Development Team.
http://alternc.org/
----------------------------------------------------------------------
Based on:
Valentin Lacambre's web hosting softwares: http://altern.org/
----------------------------------------------------------------------
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 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: Lerider Steven
Purpose of file: Manage the log listing of a user
----------------------------------------------------------------------
*/
require_once("../class/config.php");
include_once("head.php");
$list=$log->list_logs_directory_all($log->get_logs_directory());
?>
<h3><?php __("Logs Listing"); ?></h3>
<hr id="topbar"/>
<br />
<?php
if (isset($error) && $error) {
echo "<p class=\"error\">$error</p>";
}
if(!$list || empty($list)){
echo "<p class=\"error\">"._("You have no sql logs to list a the moment.")."</p>";
}
?>
<table class="tlist">
<tr><th><?php __("Name");?></th><th align=center><?php __("Creation Date"); ?></th><th><?php __("Size"); ?></th><th><?php __("Download link");?></th></tr>
<?php
$col=1;
//listing of every mail of the current domain.
echo "<pre>";
while (list($key,$val)=each($list)){
$col=3-$col;
foreach($val as $k => $v){
?>
<tr>
<td><?php echo $v['name']; ?></td>
<td><?php echo $v['creation_date']; ?></td>
<td><?php echo format_size($v['filesize']); ?></td>
<td><?php echo "<a href=\"".$v['downlink']."\">"._("Download")."</a>";?></td>
</tr>
<?php
}
}
?>
</table>

View File

@ -35,6 +35,11 @@ mt_srand((float) $sec + ((float) $usec * 100000));
/* Format a field value for input or textarea : */
function fl($str) { return str_replace("<","&lt;",str_replace("\"","&quot;",$str)); }
// Use of m_log
function compare_logname($a, $b) {
return strcmp($a['name'],$b['name']);
}
/*
Check if a domain can be hosted on this server :
Return a negative value in case of an error,

100
bureau/class/m_log.php Normal file
View File

@ -0,0 +1,100 @@
<?php
/*
$Id: m_log.php,v 1.4 2004/05/19 14:23:06 benjamin Exp $
----------------------------------------------------------------------
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 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: Steven Lerider
----------------------------------------------------------------------
*/
/**
* Classe de gestion des erreurs apparaissant lors d'appels API.
*
* <p>Cette classe gère les logs utilisasteurs
* </p>
* Copyleft {@link http://alternc.net/ AlternC Team}
*
* @copyright AlternC-Team 2002-11-01 http://alternc.net/
*/
class m_log {
function m_log(){
}
function list_logs_directory($dir){
global $cuid,$err;
$err->log("log","list_logs_directory");
$dir2=$dir;
if ($dir = @opendir($dir)) {
while (($file = readdir($dir)) !== false) {
if ($file!="." && $file!=".." && realpath($dir2 . "/" . $file) == $dir2 . "/" . $file){
$absfile=$dir2."/".$file;
$c[]=array("name"=>$file,
"creation_date"=>date("F d Y H:i:s.", filectime($absfile)),
"filesize"=>filesize($absfile),
"downlink"=>"logs_download.php?file=".urlencode($file),
);
}
}
closedir($dir);
}
usort($c,"compare_logname");
return $c;
}//list_logs
function list_logs_directory_all($dirs){
global $err;
$err->log("log","get_logs_directory_all");
$c=array();
foreach($dirs as $dir=>$val){
$c[$dir]=$this->list_logs_directory($val);
}
return $c;
}
function get_logs_directory(){
global $cuid,$db,$err;
$err->log("log","get_logs_directory");
$db->query("select login from membres where uid=$cuid ;");
if ($db->num_rows()==0) {
$err->raise("log",1);
return false;
}
$db->next_record();
$c=array("dir"=>"/var/alternc/logs/".$cuid."-".$db->f("login"));
return $c;
}
function download_link($file){
global $err,$mem;
$err->log("log","download_link");
header("Content-Disposition: attachment; filename=".$mem->user["login"].".zip");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
$f=$this->get_logs_directory();
$ff=$f['dir']."/".basename($file);
set_time_limit(0);
readfile($ff);
}
} // end class

View File

@ -1,6 +1,12 @@
# Every day at 4am, produce raw statistics
0 4 * * * root /usr/lib/alternc/rawstat.daily
# Every 2 days compress log files
0 4 * * * root /usr/lib/alternc/compress_logs.sh
# Suppress log files older than one year
0 4 * * * root /usr/lib/alternc/delete_logs.sh
# Every day at 5am and every week at 4am, make requested SQL backups
0 5 * * * www-data /usr/lib/alternc/sqlbackup.sh -t daily
0 4 * * 0 www-data /usr/lib/alternc/sqlbackup.sh -t weekly

1
debian/alternc.dirs vendored
View File

@ -102,6 +102,7 @@ var/alternc/mail/z
var/alternc/mla
var/alternc/sessions
var/alternc/tmp
var/alternc/logs
var/backups/alternc
var/log/alternc
var/run/alternc

4
debian/control vendored
View File

@ -10,8 +10,8 @@ Standards-Version: 3.9.1
Package: alternc
Architecture: all
Pre-depends: debconf (>= 0.5.00) | debconf-2.0
Depends: debianutils (>= 1.13.1), apache2-mpm-itk, libapache2-mod-php5, php5-mysql, phpmyadmin, postfix, proftpd-mod-mysql, proftpd-basic, squirrelmail, squirrelmail-locales, bind9, wget, rsync, quota, ca-certificates, locales, perl-suid, perl, postfix-mysql, wwwconfig-common, sasl2-bin, fam | gamin, libsasl2-modules, php5-cli, lockfile-progs (>= 0.1.9), gettext (>= 0.10.40-5), sudo, adduser, mysql-client, dnsutils, bash, acl, dovecot-common (>= 1:1.2.15), dovecot-imapd, dovecot-pop3d
Recommends: mysql-server(>= 5.0), dovecot-managesieved, dovecot-sieve, dovecot-mysql
Depends: debianutils (>= 1.13.1), apache2-mpm-itk, libapache2-mod-php5, php5-mysql, phpmyadmin, postfix, proftpd-mod-mysql, proftpd-basic, squirrelmail, squirrelmail-locales, bind9, wget, rsync, quota, ca-certificates, locales, perl-suid, perl, postfix-mysql, wwwconfig-common, sasl2-bin, fam | gamin, libsasl2-modules, php5-cli, lockfile-progs (>= 0.1.9), gettext (>= 0.10.40-5), sudo, adduser, mysql-client, dnsutils, bash, acl, dovecot-common (>= 1:1.2.15), dovecot-imapd, dovecot-pop3d,vlogger
Recommends: mysql-server(>= 5.0), dovecot-managesieved, dovecot-sieve, dovecot-mysql, ntpdate
Conflicts: alternc-admintools, alternc-awstats (< 1.0), alternc-webalizer (<= 0.9.4), alternc-mailman (< 2.0), courier-authdaemon
Provides: alternc-admintools
Replaces: alternc-admintools

3
debian/rules vendored
View File

@ -71,6 +71,9 @@ install: build
done ;\
done
#log directory
mkdir -p debian/alternc/var/alternc/logs
chown alterncpanel:alterncpanel debian/alternc/var/alternc/logs
# Group and user 1999 reference alterncpanel
chown 1999:1999 debian/alternc/var/alternc/html/*

View File

@ -0,0 +1,5 @@
LogFormat "%{LOGIN}e %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" alternc
CustomLog "|| /usr/sbin/vlogger -u alterncpanel -g alterncpanel -s access.log /var/alternc/logs" alternc
#Uncomment the following line to active Buffered Logs (Default: Off)
#BufferedLogs On

View File

@ -7,7 +7,4 @@
alias /alternc-sql /usr/share/phpmyadmin
alias /webmail /usr/share/squirrelmail
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc
CustomLog /var/log/apache2/access.log alternc
</VirtualHost>

View File

@ -7,6 +7,4 @@
RewriteEngine On
RewriteRule ^/(.*)$ %%redirect%%/$1 [R=301,L]
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc
CustomLog /var/log/apache2/access.log alternc
</Virtualhost>

View File

@ -1,7 +1,8 @@
<VirtualHost *:80>
ServerName %%fqdn%%
DocumentRoot "%%document_root%%"
AssignUserId #%%UID%% #%%GID%%
AssignUserId #%%UID%% #%%GID%%
SetEnv LOGIN "%%UID%%-%%LOGIN%%"
<Directory "%%document_root%%">
php_admin_value open_basedir "%%account_root%%:/usr/share/php/:/var/alternc/tmp:/tmp"
@ -11,6 +12,5 @@
AllowOverride AuthConfig FileInfo Limit Options Indexes
</Directory>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc
CustomLog /var/log/apache2/access.log alternc
</VirtualHost>

View File

@ -9,6 +9,4 @@
Options Indexes FollowSymLinks
</Directory>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc
CustomLog /var/log/apache2/access.log alternc
</VirtualHost>

View File

@ -26,7 +26,7 @@
# ----------------------------------------------------------------------
#
SETUID=mail_add mail_del 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
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
LIBS=functions.sh functions_hosting.sh functions_dns.sh
BIN=$(DESTDIR)/usr/lib/alternc/

16
src/compress_logs.sh Normal file
View File

@ -0,0 +1,16 @@
#! /bin/bash
for CONFIG_FILE in \
/etc/alternc/local.sh \
/usr/lib/alternc/functions.sh
do
if [ ! -r "$CONFIG_FILE" ]; then
echo "Can't access $CONFIG_FILE."
exit 1
fi
. "$CONFIG_FILE"
done
$days=2
#parcourir tous les logs pour trouver ceux qui on plus de 2 jours et en faire un tar.
find "$ALTERNC_LOC/logs" -not -name '*.gz' -mtime +$days -exec gzip '{}' \;

15
src/delete_logs.sh Normal file
View File

@ -0,0 +1,15 @@
#!/bin/bash
for CONFIG_FILE in \
/etc/alternc/local.sh \
/usr/lib/alternc/functions.sh
do
if [ ! -r "$CONFIG_FILE" ]; then
echo "Can't access $CONFIG_FILE."
exit 1
fi
. "$CONFIG_FILE"
done
days=366
#parcourir tous les logs pour trouver ceux qui on plus de 1 ans et les deletes.
find "$ALTERNC_LOC/logs" -mtime +$days -exec rm '{}' \;

View File

@ -93,6 +93,7 @@ host_create() {
# Put the good value in the conf file
sed -i \
-e "s#%%LOGIN%%#$USER#g" \
-e "s#%%fqdn%%#$FQDN2#g" \
-e "s#%%document_root%%#$DOCUMENT_ROOT2#g" \
-e "s#%%account_root%%#$ACCOUNT_ROOT2#g" \

View File

@ -19,6 +19,7 @@ umask 022
LOCK_FILE="$ALTERNC_LOC/bureau/cron.lock"
OLDIFS="$IFS"
NEWIFS=" "
LOGFORMAT_FILE="/etc/alternc/apache_logformat.conf"
RELOAD_ZONES="$(mktemp /tmp/alternc_reload_zones.XXXX)"
RELOAD_WEB="$(mktemp /tmp/alternc_reload_web.XXXX)"
DNS_DO_RESTART="/tmp/alternc.do_do_restart.$$"
@ -117,13 +118,26 @@ do
echo -n " $dom " >> "$RELOAD_ZONES"
done
if [ ! -z "$(cat "$RELOAD_WEB")" ] ; then
echo " apache " >> "$RELOAD_ZONES"
# Concat the apaches files
tempo=$(mktemp "$VHOST_FILE.XXXXX")
find "$VHOST_DIR" -mindepth 2 -type f -iname "*.conf" -print0 | xargs -0 cat > "$tempo"
(
echo "###BEGIN OF ALTERNC AUTO-GENERATED FILE - DO NOT EDIT MANUALLY###"
# If exists and readable, include conf file "apache_logformat.conf"
# contain LogFormat and CustomLog directives for our Vhosts)
echo "## LogFormat informations"
if [ ! -r "$LOGFORMAT_FILE" ] ; then
echo "## Warning : Cannot read $LOGFORMAT_FILE"
else
echo "Include \"$LOGFORMAT_FILE\""
fi
find "$VHOST_DIR" -mindepth 2 -type f -iname "*.conf" -print0 | xargs -0 cat
echo "###END OF ALTERNC AUTO-GENERATED FILE - DO NOT EDIT MANUALLY###"
) > "$tempo"
if [ $? -ne 0 ] ; then
log_error " web file concatenation failed"
fi