Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dirk Dankhoff
ISPConfig 3
Commits
58c2101b
Commit
58c2101b
authored
Jun 22, 2010
by
tbrehm
Browse files
Implemented: FS#903 - Awstats instead Webalizer
parent
379a4b6e
Changes
2
Hide whitespace changes
Inline
Side-by-side
server/cron_daily.php
View file @
58c2101b
...
...
@@ -38,7 +38,7 @@ $conf["server_id"] = intval($conf["server_id"]);
// Load required base-classes
$app
->
uses
(
'ini_parser,file,services'
);
$app
->
uses
(
'ini_parser,file,services
,getconf
'
);
#######################################################################################################
...
...
@@ -112,7 +112,7 @@ function setConfigVar( $filename, $varName, $varValue ) {
}
$sql
=
"SELECT domain_id, domain, document_root FROM web_domain WHERE server_id = "
.
$conf
[
"server_id"
];
$sql
=
"SELECT domain_id, domain, document_root FROM web_domain WHERE
stats_type = 'webalizer' AND
server_id = "
.
$conf
[
"server_id"
];
$records
=
$app
->
db
->
queryAllRecords
(
$sql
);
foreach
(
$records
as
$rec
)
{
...
...
@@ -120,32 +120,72 @@ foreach($records as $rec) {
$logfile
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/log/'
.
$yesterday
.
'-access.log'
);
if
(
!@
is_file
(
$logfile
))
{
$logfile
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/log/'
.
$yesterday
.
'-access.log.gz'
);
if
(
!@
is_file
(
$logfile
))
{
continue
;
if
(
!@
is_file
(
$logfile
))
{
continue
;
}
}
}
$domain
=
escapeshellcmd
(
$rec
[
"domain"
]);
$statsdir
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/web/stats'
);
$webalizer
=
'/usr/bin/webalizer'
;
$webalizer_conf_main
=
'/etc/webalizer/webalizer.conf'
;
$webalizer_conf
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/log/webalizer.conf'
);
$domain
=
escapeshellcmd
(
$rec
[
"domain"
]);
$statsdir
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/web/stats'
);
$webalizer
=
'/usr/bin/webalizer'
;
$webalizer_conf_main
=
'/etc/webalizer/webalizer.conf'
;
$webalizer_conf
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/log/webalizer.conf'
);
if
(
!@
is_file
(
$webalizer_conf
))
{
exec
(
"cp
$webalizer_conf_main
$webalizer_conf
"
);
}
if
(
!@
is_file
(
$webalizer_conf
))
{
exec
(
"cp
$webalizer_conf_main
$webalizer_conf
"
);
}
if
(
@
is_file
(
$webalizer_conf
))
{
setConfigVar
(
$webalizer_conf
,
'Incremental'
,
'yes'
);
setConfigVar
(
$webalizer_conf
,
'IncrementalName'
,
$statsdir
.
'/webalizer.current'
);
setConfigVar
(
$webalizer_conf
,
'HistoryName'
,
$statsdir
.
'/webalizer.hist'
);
}
if
(
@
is_file
(
$webalizer_conf
))
{
setConfigVar
(
$webalizer_conf
,
'Incremental'
,
'yes'
);
setConfigVar
(
$webalizer_conf
,
'IncrementalName'
,
$statsdir
.
'/webalizer.current'
);
setConfigVar
(
$webalizer_conf
,
'HistoryName'
,
$statsdir
.
'/webalizer.hist'
);
}
if
(
!@
is_dir
(
$statsdir
))
mkdir
(
$statsdir
);
if
(
!@
is_dir
(
$statsdir
))
mkdir
(
$statsdir
);
exec
(
"
$webalizer
-c
$webalizer_conf
-n
$domain
-s
$domain
-r
$domain
-q -T -p -o
$statsdir
$logfile
"
);
}
#######################################################################################################
// Create awstats statistics
#######################################################################################################
$sql
=
"SELECT domain_id, domain, document_root FROM web_domain WHERE stats_type = 'awstats' AND server_id = "
.
$conf
[
"server_id"
];
$records
=
$app
->
db
->
queryAllRecords
(
$sql
);
$web_config
=
$app
->
getconf
->
get_server_config
(
$conf
[
"server_id"
],
'web'
);
foreach
(
$records
as
$rec
)
{
$yesterday
=
date
(
"Ymd"
,
time
()
-
86400
);
$logfile
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/log/'
.
$yesterday
.
'-access.log'
);
if
(
!@
is_file
(
$logfile
))
{
$logfile
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/log/'
.
$yesterday
.
'-access.log.gz'
);
if
(
!@
is_file
(
$logfile
))
{
continue
;
}
}
$domain
=
escapeshellcmd
(
$rec
[
"domain"
]);
$statsdir
=
escapeshellcmd
(
$rec
[
"document_root"
]
.
'/web/stats'
);
$awstats_pl
=
$web_config
[
'awstats_pl'
];
$awstats_updateall_pl
=
$web_config
[
'awstats_updateall_pl'
];
if
(
!@
is_dir
(
$statsdir
))
mkdir
(
$statsdir
);
// awstats_buildstaticpages.pl -update -config=mydomain.com -lang=en -dir=/var/www/domain.com/web/stats -awstatsprog=/path/to/awstats.pl
$command
=
"
$awstats_updateall_pl
-update -config='
$domain
' -lang=en -dir='
$statsdir
' -awstatsprog='
$awstats_pl
'"
;
if
(
$awstats_pl
!=
''
&&
$awstats_updateall_pl
!=
''
&&
fileowner
(
$awstats_pl
)
==
0
&&
fileowner
(
$awstats_updateall_pl
)
==
0
)
{
exec
(
$command
);
$app
->
log
(
"Created awstats statistics with command:
$command
"
,
LOGLEVEL_DEBUG
);
}
else
{
$app
->
log
(
"No awstats statistics created. Either
$awstats_pl
or
$awstats_updateall_pl
is not owned by root user."
,
LOGLEVEL_WARN
);
}
}
#######################################################################################################
// Make the web logfiles directories world readable to enable ftp access
#######################################################################################################
...
...
server/plugins-available/apache2_plugin.inc.php
View file @
58c2101b
...
...
@@ -838,6 +838,11 @@ class apache2_plugin {
unset
(
$htp_file
);
}
}
//* Create awstats configuration
if
(
$data
[
"new"
][
"stats_type"
]
==
'awstats'
&&
$data
[
"new"
][
"type"
]
==
"vhost"
)
{
$this
->
awstats_update
(
$data
,
$web_config
);
}
if
(
$apache_chrooted
)
{
...
...
@@ -942,6 +947,11 @@ class apache2_plugin {
$command
.
=
' '
.
$data
[
"old"
][
"system_user"
];
exec
(
$command
);
if
(
$apache_chrooted
)
$this
->
_exec
(
"chroot "
.
escapeshellcmd
(
$web_config
[
'website_basedir'
])
.
" "
.
$command
);
//* Remove the awstats configuration file
if
(
$data
[
"old"
][
"stats_type"
]
==
'awstats'
)
{
$this
->
awstats_delete
(
$data
,
$web_config
);
}
}
}
...
...
@@ -1196,6 +1206,38 @@ class apache2_plugin {
file_put_contents
(
$fileName
,
$output
);
}
//* Update the awstats configuration file
private
function
awstats_update
(
$data
,
$web_config
)
{
global
$app
;
if
(
!@
is_file
(
$awstats_conf_dir
.
"/awstats."
.
$data
[
"new"
][
"domain"
]
.
".conf"
)
||
(
$data
[
"old"
][
"domain"
]
!=
''
&&
$data
[
"new"
][
"domain"
]
!=
$data
[
"old"
][
"domain"
]))
{
if
(
@
is_file
(
$awstats_conf_dir
.
"/awstats."
.
$data
[
"old"
][
"domain"
]
.
".conf"
)
)
{
unlink
(
$awstats_conf_dir
.
"/awstats."
.
$data
[
"old"
][
"domain"
]
.
".conf"
);
}
$content
=
''
;
$content
.
=
"Include '"
.
$awstats_conf_dir
.
"/awstats.conf'
\n
"
;
$content
.
=
"LogFile='/var/log/ispconfig/httpd/"
.
$data
[
"new"
][
"domain"
]
.
"/access.log'
\n
"
;
$content
.
=
"SiteDomain='"
.
$data
[
"new"
][
"domain"
]
.
"'
\n
"
;
$content
.
=
"HostAliases='www."
.
$data
[
"new"
][
"domain"
]
.
" localhost 127.0.0.1'
\n
"
;
file_put_contents
(
$awstats_conf_dir
.
'/awstats.'
.
$data
[
"new"
][
"domain"
]
.
'.conf'
,
$content
);
$app
->
log
(
"Created awstats config file: "
.
$awstats_conf_dir
.
'/awstats.'
.
$data
[
"new"
][
"domain"
]
.
'.conf'
,
LOGLEVEL_DEBUG
);
}
}
//* Delete the awstats configuration file
private
function
awstats_delete
(
$data
,
$web_config
)
{
global
$app
;
$awstats_conf_dir
=
$web_config
[
'awstats_conf_dir'
];
if
(
@
is_file
(
$awstats_conf_dir
.
"/awstats."
.
$data
[
"old"
][
"domain"
]
.
".conf"
)
)
{
unlink
(
$awstats_conf_dir
.
"/awstats."
.
$data
[
"old"
][
"domain"
]
.
".conf"
);
$app
->
log
(
"Removed awstats config file: "
.
$awstats_conf_dir
.
'/awstats.'
.
$data
[
"old"
][
"domain"
]
.
'.conf'
,
LOGLEVEL_DEBUG
);
}
}
//* Wrapper for exec function for easier debugging
private
function
_exec
(
$command
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment