From 024e13295f3d4446805918452f2d907dda96e5ce Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Wed, 15 Apr 2015 09:44:33 -0400
Subject: [PATCH] - ported some patches

---
 interface/web/sites/web_vhost_domain_edit.php                |    2 
 server/lib/classes/cron.d/100-mailbox_stats.inc.php          |   53 ++++++++++++++++++++++++--
 interface/web/sites/web_sites_stats.php                      |   16 ++++----
 install/tpl/server.ini.master                                |    1 
 interface/web/admin/form/server_config.tform.php             |    4 +-
 interface/web/themes/default/templates/tabbed_form.tpl.htm   |    2 
 interface/web/themes/default/assets/javascripts/ispconfig.js |    6 ++
 interface/web/themes/default/templates/error.tpl.htm         |    2 
 8 files changed, 67 insertions(+), 19 deletions(-)

diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index 20dca2d..4cb2222 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -77,6 +77,7 @@
 apps_vhost_servername=
 php_open_basedir=[website_path]/web:[website_path]/private:[website_path]/tmp:/var/www/[website_domain]/web:/srv/www/[website_domain]/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin
 htaccess_allow_override=All
+enable_spdy=y
 awstats_conf_dir=/etc/awstats
 awstats_data_dir=/var/lib/awstats
 awstats_pl=/usr/lib/cgi-bin/awstats.pl
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 351d4de..53c184f 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -321,7 +321,7 @@
 			'datatype' => 'INTEGER',
 			'formtype' => 'SELECT',
 			'default' => '2048',
-			'value' => array('1024' => 'week (1024)', '2048' => 'normal (2048)', '4096' => 'strong (4096)')
+			'value' => array('1024' => 'weak (1024)', '2048' => 'normal (2048)', '4096' => 'strong (4096)')
 		),
         'relayhost_password' => array(
             'datatype' => 'VARCHAR',
@@ -1024,7 +1024,7 @@
 		'enable_spdy' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
-			'default'  => 'n',
+			'default'  => 'y',
 			'value' => array (
 				0 => 'n',
 				1 => 'y'
diff --git a/interface/web/sites/web_sites_stats.php b/interface/web/sites/web_sites_stats.php
index a6af3dc..16c40d4 100644
--- a/interface/web/sites/web_sites_stats.php
+++ b/interface/web/sites/web_sites_stats.php
@@ -42,26 +42,26 @@
 		$tmp_month = date('m');
 		$tmp_rec = $app->db->queryOneRecord("SELECT SUM(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ? AND MONTH(traffic_date) = ?", $rec['domain'], $tmp_year, $tmp_month);
 		$rec['this_month'] = $app->functions->formatBytes($tmp_rec['t']);
-		$this->sum_this_month += $app->functions->formatBytes($tmp_rec['t']);
+		$this->sum_this_month += $tmp_rec['t'];
 
 
 		//** Traffic of the current year
 		$tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ?", $rec['domain'], $tmp_year);
 		$rec['this_year'] = $app->functions->formatBytes($tmp_rec['t']);
-		$this->sum_this_year += $app->functions->formatBytes($tmp_rec['t']);
+		$this->sum_this_year += $tmp_rec['t'];
 
 		//** Traffic of the last month
 		$tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")));
 		$tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")));
 		$tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ? AND MONTH(traffic_date) = ?", $rec['domain'], $tmp_year, $tmp_month);
 		$rec['last_month'] = $app->functions->formatBytes($tmp_rec['t']);
-		$this->sum_last_month += $app->functions->formatBytes($tmp_rec['t']);
+		$this->sum_last_month += $tmp_rec['t'];
 
 		//** Traffic of the last year
 		$tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1));
 		$tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ?", $rec['domain'], $tmp_year);
 		$rec['last_year'] = $app->functions->formatBytes($tmp_rec['t']);
-		$this->sum_last_year += $app->functions->formatBytes($tmp_rec['t']);
+		$this->sum_last_year += $tmp_rec['t'];
 
 		//* The variable "id" contains always the index variable
 		$rec['id'] = $rec[$this->idx_key];
@@ -73,10 +73,10 @@
 	{
 		global $app;
 
-		$app->tpl->setVar('sum_this_month', number_format($app->functions->intval($this->sum_this_month), 0, '.', ' '));
-		$app->tpl->setVar('sum_this_year', number_format($app->functions->intval($this->sum_this_year), 0, '.', ' '));
-		$app->tpl->setVar('sum_last_month', number_format($app->functions->intval($this->sum_last_month), 0, '.', ' '));
-		$app->tpl->setVar('sum_last_year', number_format($app->functions->intval($this->sum_last_year), 0, '.', ' '));
+		$app->tpl->setVar('sum_this_month', $app->functions->formatBytes($this->sum_this_month));
+		$app->tpl->setVar('sum_this_year', $app->functions->formatBytes($this->sum_this_year));
+		$app->tpl->setVar('sum_last_month', $app->functions->formatBytes($this->sum_last_month));
+		$app->tpl->setVar('sum_last_year', $app->functions->formatBytes($this->sum_last_year));
 		$app->tpl->setVar('sum_txt', $app->listform->lng('sum_txt'));
 
 		$app->tpl_defaults();
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 5508440..af96fd8 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -635,7 +635,7 @@
 		if(is_array($ssl_domains)) {
 			foreach( $ssl_domains as $ssl_domain) {
 				$selected = ($ssl_domain == $this->dataRecord['ssl_domain'])?'SELECTED':'';
-				$ssl_domain_select .= "<option value='$ssl_domain' $selected>$ssl_domain</option>\r\n";
+				$ssl_domain_select .= "<option value='$ssl_domain' $selected>".$app->functions->idn_decode($ssl_domain)."</option>\r\n";
 			}
 		}
 		$app->tpl->setVar("ssl_domain", $ssl_domain_select);
diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js
index bc5c988..0416e40 100644
--- a/interface/web/themes/default/assets/javascripts/ispconfig.js
+++ b/interface/web/themes/default/assets/javascripts/ispconfig.js
@@ -635,7 +635,11 @@
 		
 		var dir = $self.attr('data-ordered');
 		
-		act = act + '?orderby=' + column;
+		var separator = '?';
+		if(act.indexOf("?") >= 0){
+			separator = '&';
+		}
+		act = act + separator + 'orderby=' + column;
 		ISPConfig.submitForm(form, act);
 		
 		$(document).ajaxComplete(function() {
diff --git a/interface/web/themes/default/templates/error.tpl.htm b/interface/web/themes/default/templates/error.tpl.htm
index f65df61..f0c1081 100644
--- a/interface/web/themes/default/templates/error.tpl.htm
+++ b/interface/web/themes/default/templates/error.tpl.htm
@@ -1,5 +1,5 @@
 <div class='alert alert-danger clear'>
-  <div class='alert-label'><strong>ERROR</strong></div>
+  <div class='alert-label'><strong><tmpl_var name="error_txt"></strong></div>
   <div class='alert-content'>
 	<ol>
 		<li>###ERRORMSG###</li>
diff --git a/interface/web/themes/default/templates/tabbed_form.tpl.htm b/interface/web/themes/default/templates/tabbed_form.tpl.htm
index d0a2684..5560f3e 100644
--- a/interface/web/themes/default/templates/tabbed_form.tpl.htm
+++ b/interface/web/themes/default/templates/tabbed_form.tpl.htm
@@ -10,7 +10,7 @@
 	</tmpl_if>
 	<tmpl_if name="error">
 		<div class='alert alert-danger clear'>
-		  <div class='alert-label'><strong>ERROR</strong></div>
+		  <div class='alert-label'><strong><tmpl_var name="error_txt"></strong></div>
 		  <div class='alert-content'>
 			<ol><tmpl_var name="error"></ol>
 			<div>TODO: IP address is empty.</div>
diff --git a/server/lib/classes/cron.d/100-mailbox_stats.inc.php b/server/lib/classes/cron.d/100-mailbox_stats.inc.php
index 259535f..9778b2f 100644
--- a/server/lib/classes/cron.d/100-mailbox_stats.inc.php
+++ b/server/lib/classes/cron.d/100-mailbox_stats.inc.php
@@ -32,6 +32,9 @@
 
 	// job schedule
 	protected $_schedule = '0 0 * * *';
+	protected $mailbox_traffic = array();
+	protected $mail_boxes = array();
+	protected $mail_rewrites = array();
 
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
@@ -164,7 +167,7 @@
 			$cur_line = false;
 
 			if(file_exists($state_file)) {
-				$prev_line = parse_mail_log_line(trim(file_get_contents($state_file)));
+				$prev_line = $this->parse_mail_log_line(trim(file_get_contents($state_file)));
 				//if($prev_line) echo "continuing from previous run, log position: " . $prev_line['message-id'] . " at " . strftime('%d.%m.%Y %H:%M:%S', $prev_line['timestamp']) . "\n";
 			}
 
@@ -175,7 +178,8 @@
 				while($line = fgets($fp, 8192)) {
 					$l++;
 					//if($l % 1000 == 0) echo "\rline $l";
-					$cur_line = parse_mail_log_line($line);
+					$cur_line = $this->parse_mail_log_line($line);
+					//print_r($cur_line);
 					if(!$cur_line) continue;
 
 					if($prev_line) {
@@ -190,9 +194,13 @@
 						}
 					}
 
-					add_mailbox_traffic($mailbox_traffic, $cur_line['from'], $cur_line['size']);
+					$this->add_mailbox_traffic($cur_line['from'], $cur_line['size']);
+					//echo "1\n";
+					//print_r($this->mailbox_traffic);
 					foreach($cur_line['to'] as $to) {
-						add_mailbox_traffic($mailbox_traffic, $to, $cur_line['size']);
+						$this->add_mailbox_traffic($to, $cur_line['size']);
+						//echo "2\n";
+						//print_r($this->mailbox_traffic);
 					}
 					$last_line = $line; // store for the state file
 				}
@@ -207,7 +215,7 @@
 				while($line = fgets($fp, 8192)) {
 					$l++;
 					//if($l % 1000 == 0) echo "\rline $l";
-					$cur_line = parse_mail_log_line($line);
+					$cur_line = $this->parse_mail_log_line($line);
 					if(!$cur_line) continue;
 
 					if($prev_line) {
@@ -265,6 +273,41 @@
 
 		parent::onAfterRun();
 	}
+	
+	private function parse_mail_log_line($line) {
+		//Oct 31 17:35:48 mx01 amavis[32014]: (32014-05) Passed CLEAN, [IPv6:xxxxx] [IPv6:xxxxx] <xxx@yyyy> -> <aaaa@bbbb>, Message-ID: <xxxx@yyyyy>, mail_id: xxxxxx, Hits: -1.89, size: 1591, queued_as: xxxxxxx, 946 ms
+
+		if(preg_match('/^(\w+\s+\d+\s+\d+:\d+:\d+)\s+[^ ]+\s+amavis.* <([^>]+)>\s+->\s+((<[^>]+>,)+) .*Message-ID:\s+<([^>]+)>.* size:\s+(\d+),.*$/', $line, $matches) == false) return false;
+
+		$timestamp = strtotime($matches[1]);
+		if(!$timestamp) return false;
+
+		$to = array();
+		$recipients = explode(',', $matches[3]);
+		foreach($recipients as $recipient) {
+			$recipient = substr($recipient, 1, -1);
+			if(!$recipient || $recipient == $matches[2]) continue;
+			$to[] = $recipient;
+		}
+		return array('line' => $line, 'timestamp' => $timestamp, 'size' => $matches[6], 'from' => $matches[2], 'to' => $to, 'message-id' => $matches[5]);
+	}
+	
+	private function add_mailbox_traffic($address, $traffic) {
+
+		$address = strtolower($address);
+
+		if(in_array($address, $this->mail_boxes) == true) {
+			if(!isset($this->mailbox_traffic[$address])) $this->mailbox_traffic[$address] = 0;
+			$this->mailbox_traffic[$address] += $traffic;
+		} elseif(array_key_exists($address, $this->mail_rewrites)) {
+			foreach($this->mail_rewrites[$address] as $address) {
+				if(!isset($this->mailbox_traffic[$address])) $this->mailbox_traffic[$address] = 0;
+				$this->mailbox_traffic[$address] += $traffic;
+			}
+		} else {
+			// this is not a local address - skip it
+		}
+	}
 
 }
 

--
Gitblit v1.9.1