From eed36bdd8620c9fc4ba5649260985ceb2e809923 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Sun, 15 Mar 2009 07:52:16 -0400 Subject: [PATCH] Added password protection of website statistics. --- interface/web/sites/templates/web_domain_stats.htm | 22 +++++++++++ install/sql/ispconfig3.sql | 1 server/plugins-available/apache2_plugin.inc.php | 19 +++++++++ interface/web/sites/lib/lang/en.lng | 3 + interface/web/sites/lib/lang/en_web_domain.lng | 2 + interface/web/sites/form/web_domain.tform.php | 25 ++++++++++++ 6 files changed, 71 insertions(+), 1 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 064bb4a..2ccd9bb 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -982,6 +982,7 @@ `ssl_cert` mediumtext NULL, `ssl_bundle` mediumtext NULL, `ssl_action` varchar(16) NULL, + `stats_password` varchar(255) default NULL, `apache_directives` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`domain_id`) diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index ffc2585..c4494e9 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -322,6 +322,31 @@ ) ); +//* Statistics +$form["tabs"]['stats'] = array ( + 'title' => "Stats", + 'width' => 100, + 'template' => "templates/web_domain_stats.htm", + 'readonly' => false, + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'stats_password' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'PASSWORD', + 'encryption' => 'CRYPT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + if($_SESSION["s"]["user"]["typ"] == 'admin') { $form["tabs"]['advanced'] = array ( diff --git a/interface/web/sites/lib/lang/en.lng b/interface/web/sites/lib/lang/en.lng index 7348423..778abfc 100644 --- a/interface/web/sites/lib/lang/en.lng +++ b/interface/web/sites/lib/lang/en.lng @@ -2,7 +2,7 @@ $wb['Database'] = 'Database'; $wb['Options'] = 'Options'; $wb['Shell User'] = 'Shell User'; -$wb['Domain'] = 'Domain'; +$wb['Domain'] = 'Website'; $wb['Redirect'] = 'Redirect'; $wb['SSL'] = 'SSL'; $wb['Subdomain'] = 'Subdomain'; @@ -13,4 +13,5 @@ $wb['Shell-User'] = 'Shell-User'; $wb['Shell'] = 'Shell'; $wb['Websites'] = 'Websites'; +$wb["Stats"] = 'Statistics'; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 9b1d5bb..c27dbff 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -45,4 +45,6 @@ $wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.'; $wb['error_ssl_country_empty'] = 'SSL Country is empty.'; $wb["client_group_id_txt"] = 'Client'; +$wb["stats_password_txt"] = 'Webstatistics password'; + ?> diff --git a/interface/web/sites/templates/web_domain_stats.htm b/interface/web/sites/templates/web_domain_stats.htm new file mode 100644 index 0000000..8152842 --- /dev/null +++ b/interface/web/sites/templates/web_domain_stats.htm @@ -0,0 +1,22 @@ +<h2><tmpl_var name="list_head_txt"></h2> +<p><tmpl_var name="list_desc_txt"></p> + +<div class="panel panel_web_domain"> + + <div class="pnl_formsarea"> + <fieldset class="inlineLabels"> + <div class="ctrlHolder"> + <label for="redirect_path">{tmpl_var name='stats_password_txt'}</label> + <input name="stats_password" id="stats_password" value="{tmpl_var name='stats_password'}" size="30" maxlength="255" type="text" class="textInput" /> + </div> + </fieldset> + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> + + <div class="buttonHolder buttons"> + <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_domain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button> + <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_domain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button> + </div> + </div> + +</div> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 97bcee0..4d393fb 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -670,6 +670,25 @@ $app->log("Removing File $vhost_file",LOGLEVEL_DEBUG); } + //* Create .htaccess and .htpasswd file for website statistics + if(!is_file($data["new"]["document_root"].'/web/stats/.htaccess') { + $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data["new"]["document_root"]."/.htpasswd_stats\n<limit GET PUT POST>\nrequire valid-user\n</limit>"; + file_put_contents($data["new"]["document_root"].'/web/stats/.htaccess',$ht_file); + chmod($data["new"]["document_root"].'/web/stats/.htaccess',0664); + unset($ht_file); + } + + if(!is_file($data["new"]["document_root"].'/.htpasswd_stats') || $data["new"]["stats_password"] != $data["old"]["stats_password"]) { + if(trim($data["new"]["stats_password"]) != '') { + $htp_file = 'admin:'.trim($data["new"]["stats_password"]); + file_put_contents($data["new"]["document_root"].'/.htpasswd_stats',$htp_file); + chmod($data["new"]["document_root"].'/.htpasswd_stats',0664); + unset($htp_file); + } + } + + + // request a httpd reload when all records have been processed $app->services->restartServiceDelayed('httpd','reload'); -- Gitblit v1.9.1