47 var
$TEMPLATEFILE=
"/etc/alternc/templates/awstats/awstats.template.conf";
59 'title' => _(
"Web Statistics"),
60 'ico' =>
'images/stat.png',
61 'link' =>
'aws_list.php',
73 return array(
"aws"=>
"Awstats Web Statistics");
82 return array(
"aws"=>_(
"The stats module allows any user to ask for statistics about his web site. Statistics are web pages generated daily based on the visits of the day before. Awstats is the soft used to produce those stats. The statistics are then protected by a login and a password."));
98 $err->log(
"aws",
"get_list");
100 $db->query(
"SELECT id, hostname FROM aws WHERE uid='$cuid' ORDER BY hostname;");
101 if ($db->num_rows()) {
102 while ($db->next_record()) {
105 "hostname"=>$db->f(
"hostname")
110 $db->query(
"SELECT login FROM aws_access WHERE id='".$v[
"id"].
"';");
112 while ($db->next_record()) {
113 $u.=$db->f(
"login").
" ";
117 "hostname"=>$v[
"hostname"],
123 $err->raise(
"aws",_(
"No statistics currently defined"));
141 $err->log(
"aws",
"get_stats_details",$id);
143 $db->query(
"SELECT id, hostname, hostaliases, public FROM aws WHERE uid='$cuid' AND id='$id';");
144 if ($db->num_rows()) {
147 $hostname=$db->f(
"hostname");
148 $hostaliases=$db->f(
"hostaliases");
149 $public=$db->f(
"public");
150 $db->query(
"SELECT login FROM aws_access WHERE id='$id';");
152 while ($db->next_record()) {
153 $u.=$db->f(
"login").
" ";
157 "hostname"=>$hostname,
159 "hostaliases"=>$hostaliases,
163 $err->raise(
"aws",_(
"This statistic does not exist"));
177 $db->query(
"SELECT sd.domaine, sd.sub, dt.name, dt.description FROM sub_domaines sd, domaines_type dt WHERE compte='$cuid' AND lower(sd.type) = lower(dt.name) AND dt.only_dns = false ORDER BY domaine,sub;");
178 while ($db->next_record()) {
181 "hostname"=>$db->f(
"sub").
".".$db->f(
"domaine"),
182 "type"=>$db->f(
"name"),
183 "desc"=>$db->f(
"description")
187 "hostname"=>$db->f(
"domaine"),
188 "type"=>$db->f(
"name"),
189 "desc"=>$db->f(
"description")
204 $r[]=$mem->user[
"login"];
205 $db->query(
"SELECT domaine FROM domaines WHERE compte='$cuid' ORDER BY domaine;");
206 while ($db->next_record()) {
207 $r[]=$db->f(
"domaine");
225 if ($current==
$val)
$c=
" selected=\"selected\"";
else $c=
"";
226 echo
"<option$c>$val</option>";
241 $ho=
$val[
"hostname"];
243 if ($current==$ho)
$c=
" selected=\"selected\"";
else $c=
"";
257 $err->log(
"aws",
"check_host_available",$current);
262 if ($current==
$val[
"hostname"]) {
263 $err->raise(
"aws",_(
"Host already managed by awstats!"));
281 $db->query(
"SELECT hostaliases FROM aws WHERE uid='$cuid' and id='$id' ORDER by hostaliases;");
282 while ($db->next_record()) {
283 $r[]=$db->f(
"hostaliases");
300 if (is_array($users)) {
301 foreach($users as $v) {
305 $db->query(
"UPDATE aws SET hostaliases='$hostaliases', public='$public' where id='$id';");
321 $err->log(
"aws",
"delete_stats",$id);
322 $db->query(
"SELECT hostname FROM aws WHERE id='$id' and uid='$cuid';");
323 if (!$db->num_rows()) {
324 $err->raise(
"aws",_(
"This statistic does not exist"));
328 $hostname=$db->f(
"hostname");
331 $db->query(
"DELETE FROM aws WHERE id='$id'");
332 $action->del($this->CACHEDIR. DIRECTORY_SEPARATOR . $hostname . DIRECTORY_SEPARATOR);
347 function add_stats($hostname,$users=
"", $hostaliases,$public) {
349 $err->log(
"aws",
"add_stats",$hostname);
354 $hosts[]=
$val[
"hostname"];
357 if (!in_array($hostname,$hosts) || $hostname==
"") {
358 $err->raise(
"aws",_(
"This hostname does not exist (Domain name)"));
363 if (is_array($hostaliases)) {
364 foreach($hostaliases as $ho) {
365 if (!in_array($ho,$hosts) || $hostname==
"") {
366 $err->raise(
"aws",_(
"This hostname does not exist (Hostaliases)"));
373 if ($quota->cancreate(
"aws")) {
374 $db->query(
"INSERT INTO aws (hostname,uid,hostaliases,public) VALUES ('$hostname','$cuid','$ha','$public')");
376 if (is_array($users)) {
377 foreach($users as $v) {
383 mkdir($this->CACHEDIR.
"/".$hostname,0777);
386 $err->raise(
"aws",_(
"Your stat quota is over..."));
395 $err->log(
"aws",
"list_login");
396 $db->query(
"SELECT login FROM aws_users WHERE uid='$cuid';");
398 if (!$db->next_record()) {
399 $err->raise(
"aws",_(
"No user currently defined"));
403 $res[]=$db->f(
"login");
404 }
while ($db->next_record());
412 $err->log(
"aws",
"list_allowed_login");
413 $db->query(
"SELECT u.login,a.id FROM aws_users u LEFT JOIN aws_access a ON a.id='$id' AND a.login=u.login WHERE u.uid='$cuid';");
415 if (!$db->next_record()) {
419 $res[]=array(
"login"=>$db->f(
"login"),
"selected"=>($db->f(
"id")));
420 }
while ($db->next_record());
427 $db->query(
"SELECT public FROM aws WHERE id='$id' and uid='$cuid';");
428 if ($db->num_rows()) {
430 $pub=$db->f(
"public");
442 $err->log(
"aws",
"list_login");
443 $db->query(
"SELECT login FROM aws_users WHERE uid='$cuid' AND login='$login';");
444 if (!$db->next_record()) {
455 $err->log(
"aws",
"del_login");
457 $err->raise(
"aws",_(
"Login does not exist"));
460 $db->query(
"DELETE FROM aws_users WHERE uid='$cuid' AND login='$login';");
461 $db->query(
"DELETE FROM aws_access WHERE uid='$cuid' AND login='$login';");
470 $err->log(
"aws",
"add_login");
472 if (!($login=$this->
_check($login))) {
473 $err->raise(
"aws",_(
"Login incorrect"));
477 $err->raise(
"aws",_(
"Login already exist"));
482 $db->query(
"INSERT INTO aws_users (uid,login,pass) VALUES ('$cuid','$login','$pass');");
490 $err->log(
"aws",
"change_pass");
492 if (!($login=$this->
_check($login))) {
493 $err->raise(
"aws",_(
"Login incorrect"));
497 $err->raise(
"aws",_(
"Login does not exists"));
501 $db->query(
"UPDATE aws_users SET pass='$pass' WHERE login='$login';");
509 $err->log(
"aws",
"allow_login");
511 if (!($login=$this->
_check($login))) {
512 $err->raise(
"aws",_(
"Login incorrect"));
516 $err->raise(
"aws",_(
"Login does not exist"));
519 $db->query(
"SELECT id FROM aws WHERE id='$id' AND uid='$cuid'");
520 if (!$db->next_record()) {
521 $err->raise(
"aws",_(
"The requested statistic does not exist."));
524 $db->query(
"SELECT login FROM aws_access WHERE id='$id' AND login='$login'");
525 if ($db->next_record()) {
526 $err->raise(
"aws",_(
"This login is already allowed for this statistics."));
529 $db->query(
"INSERT INTO aws_access (uid,id,login) VALUES ('$cuid','$id','$login');");
541 $err->log(
"aws",
"delete_allowed_login");
543 $db->query(
"SELECT id FROM aws WHERE id='$id' AND uid='$cuid'");
544 if (!$db->next_record()) {
545 $err->raise(
"aws",_(
"The requested statistic does not exist."));
548 $db->query(
"DELETE FROM aws_access WHERE id='$id';");
560 $err->log(
"aws",
"deny_login");
562 if (!($login=$this->
_check($login))) {
563 $err->raise(
"aws",_(
"Login incorrect"));
567 $err->raise(
"aws",_(
"Login does not exists"));
570 $db->query(
"SELECT id FROM aws WHERE id='$id' AND uid='$cuid'");
571 if (!$db->next_record()) {
572 $err->raise(
"aws",_(
"The requested statistic does not exist."));
575 $db->query(
"SELECT login FROM aws_access WHERE id='$id' AND login='$login'");
576 if (!$db->next_record()) {
577 $err->raise(
"aws",_(
"This login is already denied for this statistics."));
580 $db->query(
"DELETE FROM aws_access WHERE id='$id' AND login='$login';");
592 $err->log(
"aws",
"del_member");
593 $db->query(
"SELECT * FROM aws WHERE uid='$cuid';");
595 while ($db->next_record()) {
596 $t[]=$db->f(
"hostname");
598 $db->query(
"DELETE FROM aws WHERE uid='$cuid';");
602 $db->query(
"DELETE FROM aws_access WHERE uid='$cuid'");
603 $db->query(
"DELETE FROM aws_users WHERE uid='$cuid';");
615 $err->log(
"aws",
"alternc_del_domain",
$dom);
617 $db->query(
"SELECT id,hostname FROM aws WHERE uid='$cuid' AND (hostname='$dom' OR hostname like '%.$dom')");
619 while ($db->next_record()) {
620 $t[]=array($db->f(
"hostname"),$db->f(
"id"));
623 $db->query(
"DELETE FROM aws WHERE uid='$cuid' AND hostname='".$i[0].
"';");
624 $db->query(
"DELETE FROM aws_access WHERE uid='$cuid' AND id='".$i[1].
"';");
639 $err->log(
"aws",
"get_quota");
640 $db->query(
"SELECT COUNT(*) AS cnt FROM aws WHERE uid='$cuid'");
641 $q=Array(
"name"=>
"aws",
"description"=>_(
"Awstats"),
"used"=>0);
642 if ($db->next_record()) {
643 $q[
'used']=$db->f(
"cnt");
653 $login=strtolower($login);
654 if (
$c=strpos($login,
"_")) {
655 $prefix=substr($login,0,
$c);
656 $postfix=substr($login,
$c+1);
662 if (!in_array($prefix,
$r)) {
663 $err->raise(
"aws",_(
"prefix not allowed."));
666 if (!preg_match(
'/^[0-9a-z_-]*$/', $postfix)){
667 $err->raise(
"aws",_(
"Forbidden caracters in the postfix."));
680 if (!preg_match(
'/^[._a-z0-9-]*$/', $hostname)){
681 $err->raise(
"aws",_(
"Hostname is incorrect"));
684 $action->del($this->CONFDIR. DIRECTORY_SEPARATOR .
"awstats.".$hostname.
".conf");
695 $s=@implode(
"",file($this->TEMPLATEFILE));
697 $err->raise(
"aws",_(
"Problem to create the configuration"));
701 $db->query(
"SELECT * FROM aws WHERE id='$id';");
703 $db->query(
"SELECT * FROM aws WHERE id='$id' AND uid='$cuid';");
705 if (!$db->num_rows()) {
706 $err->raise(
"aws",_(
"This statistic does not exist"));
710 $uid = $db->f(
'uid');
711 $hostname=$db->f(
"hostname");
712 $hostaliases=$db->f(
"hostaliases");
713 $public=$db->f(
"public");
714 $db->query(
"SELECT login FROM membres WHERE uid = '$uid'");
717 $db->query(
"SELECT login FROM aws_access WHERE id='$id';");
719 while ($db->next_record()) {
720 $users.=$db->f(
"login").
" ";
723 $replace_vars = array(
726 '%%ALTERNC_LOGS%%' => $L_ALTERNC_LOGS,
727 '%%PUBLIC%%' => $public,
728 '%%HOSTNAME%%' => $hostname,
729 '%%HOSTALIASES%%' => $hostaliases,
730 '%%USERS%%' => $users,
732 foreach ($replace_vars as $k=>$v){
733 $s=str_replace($k,$v,$s);
736 $f=fopen($this->CONFDIR.
"/awstats.".$hostname.
".conf",
"wb");
737 fputs($f,$s,strlen($s));
747 $f=@fopen($this->HTAFILE,
"wb");
749 $db->query(
"SELECT login,pass FROM aws_users;");
750 while ($db->next_record()) {
751 fputs($f,$db->f(
"login").
":".$db->f(
"pass").
"\n");
756 $err->raise(
"aws",sprintf(_(
"Problem to edit file %s"), $this->HTAFILE));
770 $err->log(
"aws",
"export");
772 $db->query(
"SELECT login,pass FROM aws_users WHERE uid='$cuid';");
773 while ($db->next_record()) {
774 $str.=
" <user><login>".$db->Record[
"login"].
"</login><pass hash=\"des\">".$db->Record[
"pass"].
"</pass></user>\n";
777 $db->query(
"SELECT id, hostname FROM aws WHERE uid='$cuid' ORDER BY hostname;");
778 while ($db->next_record()) {
779 $r[$db->Record[
"id"]]=$db->Record[
"hostname"];
782 $str.=
" <domain>\n <name>".$host.
"</name>\n";
783 $db->query(
"SELECT login FROM aws_access WHERE id='$id';");
784 while ($db->next_record()) {
785 $str.=
" <user>".$db->Record[
"login"].
"</user>\n";
787 $str.=
" </domain>\n";