From 78fc9a64bdd7fc1ac11c8718e097799236c0ba23 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Sun, 03 Nov 2013 07:23:46 -0500
Subject: [PATCH] Merge branch 'master' of /home/git/repositories/florian030/ispconfig3

---
 interface/lib/classes/functions.inc.php |  167 ++++++++++++++++++++++++-------------------------------
 1 files changed, 74 insertions(+), 93 deletions(-)

diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php
index fcb6055..5b98c20 100644
--- a/interface/lib/classes/functions.inc.php
+++ b/interface/lib/classes/functions.inc.php
@@ -61,52 +61,6 @@
 		$app->ispcmail->send($to);
 		$app->ispcmail->finish();
 		
-		/* left in here just for the case...
-		if($filepath != '') {
-			if(!file_exists($filepath)) $app->error("Mail attachement does not exist ".$filepath);
-			
-			$content = file_get_contents($filepath);
-			$content = chunk_split(base64_encode($content));
-			$uid = strtoupper(md5(uniqid(time())));
-			$subject      = "=?utf-8?B?".base64_encode($subject)."?=";
-			
-			if($filename == '') {
-				$path_parts = pathinfo($filepath);
-				$filename = $path_parts["basename"];
-				unset($path_parts);
-			}
-
-			$header = "Return-Path: $from\nFrom: $from\nReply-To: $from\n";
-			if($cc != '') $header .= "Cc: $cc\n";
-			if($bcc != '') $header .= "Bcc: $bcc\n";
-			$header .= "MIME-Version: 1.0\n";
-			$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
-
-			$header .= "--$uid\n";
-			$header .= "Content-Type: text/plain;\n\tcharset=\"UTF-8\"\n";
-			$header .= "Content-Transfer-Encoding: 8bit\n\n";
-			$header .= "$text\n";
-
-			$header .= "--$uid\n";
-			$header .= "Content-Type: $filetype; name=\"$filename\"\n";
-
-			$header .= "Content-Transfer-Encoding: base64\n";
-			$header .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
-			$header .= "$content\n";
-
-			$header .= "--$uid--";
-
-			mail($to, $subject, "", $header);
-		} else {
-			$header = "From: $from\nReply-To: $from\n";
-			if($cc != '') $header .= "Cc: $cc\n";
-			if($bcc != '') $header .= "Bcc: $bcc\n";
-			$header .= "Content-Type: text/plain;\n\tcharset=\"UTF-8\"\n";
-			$header .= "Content-Transfer-Encoding: 8bit\n\n";
-			$subject      = "=?utf-8?B?".base64_encode($subject)."?=";
-			mail($to, $subject, $text, $header);
-		}
-		*/
 		return true;
 	}
 	
@@ -130,10 +84,21 @@
 	}
 	
 	public function get_ispconfig_url() {
+		global $app;
+		
 		$url = (stristr($_SERVER['SERVER_PROTOCOL'],'HTTPS') || stristr($_SERVER['HTTPS'],'on'))?'https':'http';
-		$url .= '://'.$_SERVER['SERVER_NAME'];
-		if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
-			$url .= ':'.$_SERVER['SERVER_PORT'];
+		if($_SERVER['SERVER_NAME'] != '_') {
+			$url .= '://'.$_SERVER['SERVER_NAME'];
+			if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
+				$url .= ':'.$_SERVER['SERVER_PORT'];
+			}
+		} else {
+			$app->uses("getconf");
+			$server_config = $app->getconf->get_server_config(1,'server');
+			$url .= '://'.$server_config['hostname'];
+			if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
+				$url .= ':'.$_SERVER['SERVER_PORT'];
+			}
 		}
 		return $url;
 	}
@@ -303,7 +268,7 @@
 	}
 
     public function intval($string, $force_numeric = false) {
-        if(intval($string) == 2147483647) {
+        if(intval($string) == 2147483647 || ($string > 0 && intval($string) < 0)) {
             if($force_numeric == true) return floatval($string);
             elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2];
             else return 0;
@@ -312,10 +277,22 @@
         }
     }
     
+    /**
+    * Function to change bytes to kB, MB, GB or TB
+    * @param int $size - size in bytes
+    * @param int precicion - after-comma-numbers (default: 2)
+    * @return string - formated bytes
+    */
+    public function formatBytes($size, $precision = 2) {
+        $base=log($size)/log(1024);
+        $suffixes=array('','k','M','G','T');
+        return round(pow(1024,$base-floor($base)),$precision).$suffixes[floor($base)];
+    }
+
     /** IDN converter wrapper.
      * all converter classes should be placed in ISPC_CLASS_PATH.'/idn/'
      */
-    public function idn_encode($domain) {
+    private function _idn_encode_decode($domain, $encode = true) {
         if($domain == '') return '';
         if(preg_match('/^[0-9\.]+$/', $domain)) return $domain; // may be an ip address - anyway does not need to bee encoded
         
@@ -326,58 +303,62 @@
             $domain = substr($domain, strrpos($domain, '@') + 1);
         }
         
-        if(function_exists('idn_to_ascii')) {
-            $domain = idn_to_ascii($domain);
-        } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
-             /* use idna class:
-             * @author  Matthias Sommerfeld <mso@phlylabs.de>
-             * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de
-             * @version 0.8.0 2011-03-11
-             */
-            
-            if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') {
-                include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php');
-                $this->idn_converter = new idna_convert(array('idn_version' => 2008));
-                $this->idn_converter_name = 'idna_convert.class';
+        if($encode == true) {
+            if(function_exists('idn_to_ascii')) {
+                $domain = idn_to_ascii($domain);
+            } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
+                 /* use idna class:
+                 * @author  Matthias Sommerfeld <mso@phlylabs.de>
+                 * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de
+                 * @version 0.8.0 2011-03-11
+                 */
+                
+                if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') {
+                    include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php');
+                    $this->idn_converter = new idna_convert(array('idn_version' => 2008));
+                    $this->idn_converter_name = 'idna_convert.class';
+                }
+                $domain = $this->idn_converter->encode($domain);
             }
-            $domain = $this->idn_converter->encode($domain);
+        } else {
+            if(function_exists('idn_to_utf8')) {
+                $domain = idn_to_utf8($domain);
+            } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
+                 /* use idna class:
+                 * @author  Matthias Sommerfeld <mso@phlylabs.de>
+                 * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de
+                 * @version 0.8.0 2011-03-11
+                 */
+                
+                if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') {
+                    include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php');
+                    $this->idn_converter = new idna_convert(array('idn_version' => 2008));
+                    $this->idn_converter_name = 'idna_convert.class';
+                }
+                $domain = $this->idn_converter->decode($domain);
+            }
         }
         
         if($user_part !== false) return $user_part . '@' . $domain;
         else return $domain;
     }
+     
+    public function idn_encode($domain) {
+        $domains = explode("\n", $domain);
+        for($d = 0; $d < count($domains); $d++) {
+            $domains[$d] = $this->_idn_encode_decode($domains[$d], true);
+        }
+        return implode("\n", $domains);
+    }
     
     public function idn_decode($domain) {
-        if($domain == '') return '';
-        if(preg_match('/^[0-9\.]+$/', $domain)) return $domain; // may be an ip address - anyway does not need to bee decoded
-        
-        // get domain and user part if it is an email
-        $user_part = false;
-        if(strpos($domain, '@') !== false) {
-            $user_part = substr($domain, 0, strrpos($domain, '@'));
-            $domain = substr($domain, strrpos($domain, '@') + 1);
+        $domains = explode("\n", $domain);
+        for($d = 0; $d < count($domains); $d++) {
+            $domains[$d] = $this->_idn_encode_decode($domains[$d], false);
         }
-        if(function_exists('idn_to_utf8')) {
-            $domain = idn_to_utf8($domain);
-        } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
-             /* use idna class:
-             * @author  Matthias Sommerfeld <mso@phlylabs.de>
-             * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de
-             * @version 0.8.0 2011-03-11
-             */
-            
-            if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') {
-                include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php');
-                $this->idn_converter = new idna_convert(array('idn_version' => 2008));
-                $this->idn_converter_name = 'idna_convert.class';
-            }
-            $domain = $this->idn_converter->decode($domain);
-        }
-        
-        if($user_part !== false) return $user_part . '@' . $domain;
-        else return $domain;
+        return implode("\n", $domains);
     }
 		
 }
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1