plugins->registerEvent('web_domain_insert',$this->plugin_name,'domain_insert'); $app->plugins->registerEvent('web_domain_update',$this->plugin_name,'domain_update'); $app->plugins->registerEvent('web_domain_delete',$this->plugin_name,'domain_delete'); $app->plugins->registerEvent('client_insert',$this->plugin_name,'client_insert'); $app->plugins->registerEvent('client_update',$this->plugin_name,'client_update'); $app->plugins->registerEvent('client_delete',$this->plugin_name,'client_delete'); } function awstats_update($event_name,$data) { global $app, $conf; $result = $app->db->queryAllRecords("SELECT * FROM web_domain wd,sys_group sg,client c where wd.sys_groupid = sg.groupid and sg.client_id = c.client_id"); $fp = fopen($domroot."/.htpasswd_stats","w"); if ($fp) { foreach($result as $row) { $domain = $row['domain']; $username = $row['username']; $password = $row['password']; $domroot = $row['document_root']; echo "Domain::$domain DomRoot::$domroot\n"; fwrite($fp,$username.":".$password."\n"); } fclose($fp); } $fp = fopen($domroot."/web/stats/.htaccess","w"); if ($fp) { $access='AuthType Basic AuthName "Site Client Access Only" AuthUserFile '.$domroot.'/.htpasswd_stats require valid-user Redirect 301 /stats http://www.'.$domain.'/ispcstats/awstats.pl?config=www.'.$domain.' '; fwrite($fp,$access); fclose($fp); } } function client_insert($event_name,$data) { global $app, $conf; $this->awstats_update(); } function client_update($event_name,$data) { global $app, $conf; $this->awstats_update(); } function client_delete($event_name,$data) { global $app, $conf; $this->awstats_update(); } function user_insert($event_name,$data) { // TODO: handle users for awstats access } function user_update($event_name,$data) { // TODO: handle users for awstats access } function user_delete($event_name,$data) { // TODO: handle users for awstats access } function domain_update($event_name,$data) { global $app, $conf; $this->domain_insert($event_name, $data); } /* function domain_insert($event_name,$data) { global $app, $conf; if(!@is_file("/etc/awstats/awstats.".$data["new"]["domain"].".conf") || ($data["old"]["domain"] != '' && $data["new"]["domain"] != $data["old"]["domain"])) { if ( @is_file("/etc/awstats/awstats.".$data["old"]["domain"].".conf") ) exec("rm -f /etc/awstats/awstats.".$data["old"]["domain"].".conf"); exec( "echo 'Include \"/etc/awstats/awstats.conf\"' > /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); exec( "echo 'LogFile=\"/var/log/ispconfig/httpd/".$data["new"]["domain"]."/access.log\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); exec( "echo 'SiteDomain=\"".$data["new"]["domain"]."\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf"); // exec( "echo 'AllowAccessFromWebToFollowingAuthenticatedUsers=\"".$ht_user_list."\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf"); // by Whiski exec( "echo 'Include \"/etc/awstats/awstats.conf\"' > /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); exec( "echo 'LogFile=\"/var/log/ispconfig/httpd/".$data["new"]["domain"]."/access.log\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); exec( "echo 'SiteDomain=\"".$data["new"]["domain"]."\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf"); exec( "echo 'DNSLookup=\"1\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); exec( "echo 'DirData =\"/var/cache/awstats\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); exec( "echo 'AllowFullYearView=\"3\"' >> /etc/awstats/awstats.".$data["new"]["domain"].".conf" ); // eof Whiski } } */ // It is not creating awstat conf files in my case. A lot of people use secured php where exec is denied. I think it is at least one securtiy rights issue. // I suggest to rewrite this code to use fwrite: function domain_insert($event_name,$data) { global $app, $conf; $newfile = "/etc/awstats/awstats.".$data["new"]["domain"].".conf"; $oldfile = "/etc/awstats/awstats.".$data["old"]["domain"].".conf"; if(!@is_file($newfile) || ($oldfile != '' && $newfile != $oldfile)) { if ( @is_file($oldfile) ) exec("rm -f ".$oldfile); $fp = fopen($newfile,"w"); if ($fp) { $awcon = "Include \"/etc/awstats/awstats.conf\"\n" . "LogFile=\"/var/log/ispconfig/httpd/".$data["new"]["domain"]."/access.log\"\n" . "SiteDomain=\"".$data["new"]["domain"]."\"\n" . "DNSLookup=\"1\"\n" . "DirData =\"/var/cache/awstats\"\n" . "AllowFullYearView=\"3\""; //$awcon .= "\nAllowAccessFromWebToFollowingAuthenticatedUsers=\"".$ht_user_list."\""; fwrite($fp, $awcon); fclose($fp); } } } function domain_delete($event_name,$data) { global $app, $conf; if($data["old"]["domain"] != '' ) { if ( @is_file("/etc/awstats/awstats.".$data["old"]["domain"].".conf") ) exec("rm -f /etc/awstats/awstats.".$data["old"]["domain"].".conf"); } } } // end class ?>