GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 997e77...4bcf82 )
by mike
04:18 queued 55s
created
classes/_FileCache.class.php 3 patches
Doc Comments   +8 added lines patch added patch discarded remove patch
@@ -39,6 +39,10 @@  discard block
 block discarded – undo
39 39
 	//     $key: The cache key.
40 40
 	// Returns:
41 41
 	//     The object which was previously stored, or false if a cache miss occurred.
42
+
43
+	/**
44
+	 * @param string $key
45
+	 */
42 46
 	public function get($key) {
43 47
 //return false;
44 48
 		if (($this->cleanInterval == 1) ||
@@ -59,6 +63,10 @@  discard block
 block discarded – undo
59 63
 	// Parameters:
60 64
 	//     $key: The cache key.
61 65
 	//     $value: The object to store.
66
+
67
+	/**
68
+	 * @param string $key
69
+	 */
62 70
 	public function set($key, $value) {
63 71
 		if (($this->cleanInterval == 1) ||
64 72
 			(rand(1, $this->cleanInterval) == $this->cleanInterval)) {
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
 		if ($cleanInterval < 1) $cleanInterval = 1;
31 31
 		$this->cleanInterval = (int)$cleanInterval;
32 32
 
33
-		if ($directoryDepth<1) $directoryDepth=1; else if ($directoryDepth>10) $directoryDepth=10;
33
+		if ($directoryDepth < 1) $directoryDepth = 1; else if ($directoryDepth > 10) $directoryDepth = 10;
34 34
 		$this->directoryDepth = (int)$directoryDepth;
35 35
 	}
36 36
 
@@ -41,8 +41,8 @@  discard block
 block discarded – undo
41 41
 	//     The object which was previously stored, or false if a cache miss occurred.
42 42
 	public function get($key) {
43 43
 //return false;
44
-		if (($this->cleanInterval == 1) ||
45
-			(rand(1, $this->cleanInterval) == $this->cleanInterval)) {
44
+		if (($this->cleanInterval==1) ||
45
+			(rand(1, $this->cleanInterval)==$this->cleanInterval)) {
46 46
 			$this->clean();
47 47
 		}
48 48
 		$val = false;
@@ -60,12 +60,12 @@  discard block
 block discarded – undo
60 60
 	//     $key: The cache key.
61 61
 	//     $value: The object to store.
62 62
 	public function set($key, $value) {
63
-		if (($this->cleanInterval == 1) ||
64
-			(rand(1, $this->cleanInterval) == $this->cleanInterval)) {
63
+		if (($this->cleanInterval==1) ||
64
+			(rand(1, $this->cleanInterval)==$this->cleanInterval)) {
65 65
 			$this->clean();
66 66
 		}
67 67
 		$fn = $this->getCacheFilename($key, true);
68
-		$fileData = file_put_contents($fn,serialize($value));
68
+		$fileData = file_put_contents($fn, serialize($value));
69 69
 	}
70 70
 
71 71
 	// Delete an object from the cache.
@@ -97,11 +97,11 @@  discard block
 block discarded – undo
97 97
 		foreach (@glob($path.'/*', GLOB_NOSORT) as $fn) {
98 98
 			if (@is_dir($fn)) {
99 99
 				$this->cleanPath($fn);
100
-			} else if (@filemtime($fn) <= $exptime) {
100
+			}else if (@filemtime($fn) <= $exptime) {
101 101
 				@unlink($fn);
102 102
 			}
103 103
 		}
104
-		if ($path != $this->path) {
104
+		if ($path!=$this->path) {
105 105
 			@rmdir($path);
106 106
 		}
107 107
 	}
@@ -118,7 +118,7 @@  discard block
 block discarded – undo
118 118
 	}
119 119
 
120 120
 	public function fixPermissions($user) {
121
-		$cmd = escapeshellcmd('chown -R '.$user.':'.$user. ' ' . $this->path);
121
+		$cmd = escapeshellcmd('chown -R '.$user.':'.$user.' '.$this->path);
122 122
 		exec($cmd);
123 123
 	}
124 124
 
Please login to merge, or discard this patch.
Braces   +17 added lines, -5 removed lines patch added patch discarded remove patch
@@ -24,13 +24,21 @@  discard block
 block discarded – undo
24 24
 
25 25
 		$this->path = '/tmp/_FileCache_/'.(string)$path;
26 26
 
27
-		if ($expirationTimeInSeconds < 1) $expirationTimeInSeconds = 1;
27
+		if ($expirationTimeInSeconds < 1) {
28
+			$expirationTimeInSeconds = 1;
29
+		}
28 30
 		$this->expirationTimeInSeconds = (int)$expirationTimeInSeconds;
29 31
 
30
-		if ($cleanInterval < 1) $cleanInterval = 1;
32
+		if ($cleanInterval < 1) {
33
+			$cleanInterval = 1;
34
+		}
31 35
 		$this->cleanInterval = (int)$cleanInterval;
32 36
 
33
-		if ($directoryDepth<1) $directoryDepth=1; else if ($directoryDepth>10) $directoryDepth=10;
37
+		if ($directoryDepth<1) {
38
+			$directoryDepth=1;
39
+		} else if ($directoryDepth>10) {
40
+			$directoryDepth=10;
41
+		}
34 42
 		$this->directoryDepth = (int)$directoryDepth;
35 43
 	}
36 44
 
@@ -80,7 +88,9 @@  discard block
 block discarded – undo
80 88
 			$refPath = rtrim($this->path, "/\\");
81 89
 			$dir = rtrim(dirname($fn), "/\\");
82 90
 			for ($i = 0; $i < $this->directoryDepth; $i++) {
83
-				if (!@rmdir($dir)) break;
91
+				if (!@rmdir($dir)) {
92
+					break;
93
+				}
84 94
 				$dir = rtrim(dirname($dir), "/\\");
85 95
 			}
86 96
 		}
@@ -112,7 +122,9 @@  discard block
 block discarded – undo
112 122
 		for ($i = 0, $idx = 0; $i < $this->directoryDepth; $i++, $idx += 2) {
113 123
 			$path .= '/'.substr($hash, $idx, 2);
114 124
 		}
115
-		if ($autoCreateDirectory) @mkdir($path, 0777, true);
125
+		if ($autoCreateDirectory) {
126
+			@mkdir($path, 0777, true);
127
+		}
116 128
 		$path .= '/'.$hash;
117 129
 		return $path;
118 130
 	}
Please login to merge, or discard this patch.
classes/class.smtp.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -929,7 +929,7 @@
 block discarded – undo
929 929
      * Send raw data to the server.
930 930
      * @param string $data The data to send
931 931
      * @access public
932
-     * @return integer|boolean The number of bytes sent to the server or false on error
932
+     * @return integer The number of bytes sent to the server or false on error
933 933
      */
934 934
     public function client_send($data)
935 935
     {
Please login to merge, or discard this patch.
Spacing   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
             default:
228 228
                 //Normalize line breaks
229 229
                 $str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str);
230
-                echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
230
+                echo gmdate('Y-m-d H:i:s')."\t".str_replace(
231 231
                     "\n",
232 232
                     "\n                   \t                  ",
233 233
                     trim($str)
@@ -274,14 +274,14 @@  discard block
 block discarded – undo
274 274
             $socket_context = stream_context_create($options);
275 275
             //Suppress errors; connection failures are handled at a higher level
276 276
             $this->smtp_conn = @stream_socket_client(
277
-                $host . ":" . $port,
277
+                $host.":".$port,
278 278
                 $errno,
279 279
                 $errstr,
280 280
                 $timeout,
281 281
                 STREAM_CLIENT_CONNECT,
282 282
                 $socket_context
283 283
             );
284
-        } else {
284
+        }else {
285 285
             //Fall back to fsockopen which should work in more places, but is missing some features
286 286
             $this->edebug(
287 287
                 "Connection: stream_socket_client not available, falling back to fsockopen",
@@ -303,7 +303,7 @@  discard block
 block discarded – undo
303 303
                 $errstr
304 304
             );
305 305
             $this->edebug(
306
-                'SMTP ERROR: ' . $this->error['error']
306
+                'SMTP ERROR: '.$this->error['error']
307 307
                 . ": $errstr ($errno)",
308 308
                 self::DEBUG_CLIENT
309 309
             );
@@ -312,17 +312,17 @@  discard block
 block discarded – undo
312 312
         $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
313 313
         // SMTP server can take longer to respond, give longer timeout for first read
314 314
         // Windows does not have support for this timeout function
315
-        if (substr(PHP_OS, 0, 3) != 'WIN') {
315
+        if (substr(PHP_OS, 0, 3)!='WIN') {
316 316
             $max = ini_get('max_execution_time');
317 317
             // Don't bother if unlimited
318
-            if ($max != 0 && $timeout > $max) {
318
+            if ($max!=0 && $timeout > $max) {
319 319
                 @set_time_limit($timeout);
320 320
             }
321 321
             stream_set_timeout($this->smtp_conn, $timeout, 0);
322 322
         }
323 323
         // Get any announcement
324 324
         $announce = $this->get_lines();
325
-        $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
325
+        $this->edebug('SERVER -> CLIENT: '.$announce, self::DEBUG_SERVER);
326 326
         return true;
327 327
     }
328 328
 
@@ -381,9 +381,9 @@  discard block
 block discarded – undo
381 381
                 return false;
382 382
             }
383 383
 
384
-            self::edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL);
384
+            self::edebug('Auth method requested: '.($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL);
385 385
             self::edebug(
386
-                'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']),
386
+                'Auth methods available on the server: '.implode(',', $this->server_caps['AUTH']),
387 387
                 self::DEBUG_LOWLEVEL
388 388
             );
389 389
 
@@ -417,7 +417,7 @@  discard block
 block discarded – undo
417 417
                 // Send encoded username and password
418 418
                 if (!$this->sendCommand(
419 419
                     'User & Password',
420
-                    base64_encode("\0" . $username . "\0" . $password),
420
+                    base64_encode("\0".$username."\0".$password),
421 421
                     235
422 422
                 )
423 423
                 ) {
@@ -463,7 +463,7 @@  discard block
 block discarded – undo
463 463
 
464 464
                 if (!$this->sendCommand(
465 465
                     'AUTH NTLM',
466
-                    'AUTH NTLM ' . base64_encode($msg1),
466
+                    'AUTH NTLM '.base64_encode($msg1),
467 467
                     334
468 468
                 )
469 469
                 ) {
@@ -495,7 +495,7 @@  discard block
 block discarded – undo
495 495
                 $challenge = base64_decode(substr($this->last_reply, 4));
496 496
 
497 497
                 // Build the response
498
-                $response = $username . ' ' . $this->hmac($challenge, $password);
498
+                $response = $username.' '.$this->hmac($challenge, $password);
499 499
 
500 500
                 // send encoded credentials
501 501
                 return $this->sendCommand('Username', base64_encode($response), 235);
@@ -539,7 +539,7 @@  discard block
 block discarded – undo
539 539
         $k_ipad = $key ^ $ipad;
540 540
         $k_opad = $key ^ $opad;
541 541
 
542
-        return md5($k_opad . pack('H*', md5($k_ipad . $data)));
542
+        return md5($k_opad.pack('H*', md5($k_ipad.$data)));
543 543
     }
544 544
 
545 545
     /**
@@ -622,13 +622,13 @@  discard block
 block discarded – undo
622 622
 
623 623
         $field = substr($lines[0], 0, strpos($lines[0], ':'));
624 624
         $in_headers = false;
625
-        if (!empty($field) && strpos($field, ' ') === false) {
625
+        if (!empty($field) && strpos($field, ' ')===false) {
626 626
             $in_headers = true;
627 627
         }
628 628
 
629 629
         foreach ($lines as $line) {
630 630
             $lines_out = array();
631
-            if ($in_headers and $line == '') {
631
+            if ($in_headers and $line=='') {
632 632
                 $in_headers = false;
633 633
             }
634 634
             //Break this line up into several smaller lines if it's too long
@@ -640,18 +640,18 @@  discard block
 block discarded – undo
640 640
                 //Deliberately matches both false and 0
641 641
                 if (!$pos) {
642 642
                     //No nice break found, add a hard break
643
-                    $pos = self::MAX_LINE_LENGTH - 1;
643
+                    $pos = self::MAX_LINE_LENGTH-1;
644 644
                     $lines_out[] = substr($line, 0, $pos);
645 645
                     $line = substr($line, $pos);
646
-                } else {
646
+                }else {
647 647
                     //Break at the found point
648 648
                     $lines_out[] = substr($line, 0, $pos);
649 649
                     //Move along by the amount we dealt with
650
-                    $line = substr($line, $pos + 1);
650
+                    $line = substr($line, $pos+1);
651 651
                 }
652 652
                 //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1
653 653
                 if ($in_headers) {
654
-                    $line = "\t" . $line;
654
+                    $line = "\t".$line;
655 655
                 }
656 656
             }
657 657
             $lines_out[] = $line;
@@ -659,17 +659,17 @@  discard block
 block discarded – undo
659 659
             //Send the lines to the server
660 660
             foreach ($lines_out as $line_out) {
661 661
                 //RFC2821 section 4.5.2
662
-                if (!empty($line_out) and $line_out[0] == '.') {
663
-                    $line_out = '.' . $line_out;
662
+                if (!empty($line_out) and $line_out[0]=='.') {
663
+                    $line_out = '.'.$line_out;
664 664
                 }
665
-                $this->client_send($line_out . self::CRLF);
665
+                $this->client_send($line_out.self::CRLF);
666 666
             }
667 667
         }
668 668
 
669 669
         //Message data has been sent, complete the command
670 670
         //Increase timelimit for end of DATA command
671 671
         $savetimelimit = $this->Timelimit;
672
-        $this->Timelimit = $this->Timelimit * 2;
672
+        $this->Timelimit = $this->Timelimit*2;
673 673
         $result = $this->sendCommand('DATA END', '.', 250);
674 674
         //Restore timelimit
675 675
         $this->Timelimit = $savetimelimit;
@@ -703,11 +703,11 @@  discard block
 block discarded – undo
703 703
      */
704 704
     protected function sendHello($hello, $host)
705 705
     {
706
-        $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250);
706
+        $noerror = $this->sendCommand($hello, $hello.' '.$host, 250);
707 707
         $this->helo_rply = $this->last_reply;
708 708
         if ($noerror) {
709 709
             $this->parseHelloFields($hello);
710
-        } else {
710
+        }else {
711 711
             $this->server_caps = null;
712 712
         }
713 713
         return $noerror;
@@ -733,9 +733,9 @@  discard block
 block discarded – undo
733 733
                 if (!$n) {
734 734
                     $name = $type;
735 735
                     $fields = $fields[0];
736
-                } else {
736
+                }else {
737 737
                     $name = array_shift($fields);
738
-                    if ($name == 'SIZE') {
738
+                    if ($name=='SIZE') {
739 739
                         $fields = ($fields) ? $fields[0] : 0;
740 740
                     }
741 741
                 }
@@ -760,7 +760,7 @@  discard block
 block discarded – undo
760 760
         $useVerp = ($this->do_verp ? ' XVERP' : '');
761 761
         return $this->sendCommand(
762 762
             'MAIL FROM',
763
-            'MAIL FROM:<' . $from . '>' . $useVerp,
763
+            'MAIL FROM:<'.$from.'>'.$useVerp,
764 764
             250
765 765
         );
766 766
     }
@@ -797,7 +797,7 @@  discard block
 block discarded – undo
797 797
     {
798 798
         return $this->sendCommand(
799 799
             'RCPT TO',
800
-            'RCPT TO:<' . $toaddr . '>',
800
+            'RCPT TO:<'.$toaddr.'>',
801 801
             array(250, 251)
802 802
         );
803 803
     }
@@ -828,7 +828,7 @@  discard block
 block discarded – undo
828 828
             $this->setError("Called $command without being connected");
829 829
             return false;
830 830
         }
831
-        $this->client_send($commandstring . self::CRLF);
831
+        $this->client_send($commandstring.self::CRLF);
832 832
 
833 833
         $this->last_reply = $this->get_lines();
834 834
         // Fetch SMTP code and possible error code explanation
@@ -842,14 +842,14 @@  discard block
 block discarded – undo
842 842
                 '',
843 843
                 $this->last_reply
844 844
             );
845
-        } else {
845
+        }else {
846 846
             // Fall back to simple parsing if regex fails
847 847
             $code = substr($this->last_reply, 0, 3);
848 848
             $code_ex = null;
849 849
             $detail = substr($this->last_reply, 4);
850 850
         }
851 851
 
852
-        $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
852
+        $this->edebug('SERVER -> CLIENT: '.$this->last_reply, self::DEBUG_SERVER);
853 853
 
854 854
         if (!in_array($code, (array)$expect)) {
855 855
             $this->setError(
@@ -859,7 +859,7 @@  discard block
 block discarded – undo
859 859
                 $code_ex
860 860
             );
861 861
             $this->edebug(
862
-                'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply,
862
+                'SMTP ERROR: '.$this->error['error'].': '.$this->last_reply,
863 863
                 self::DEBUG_CLIENT
864 864
             );
865 865
             return false;
@@ -921,7 +921,7 @@  discard block
 block discarded – undo
921 921
     public function turn()
922 922
     {
923 923
         $this->setError('The SMTP TURN command is not implemented');
924
-        $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT);
924
+        $this->edebug('SMTP NOTICE: '.$this->error['error'], self::DEBUG_CLIENT);
925 925
         return false;
926 926
     }
927 927
 
@@ -985,10 +985,10 @@  discard block
 block discarded – undo
985 985
 
986 986
         // the tight logic knot ;)
987 987
         if (!array_key_exists($name, $this->server_caps)) {
988
-            if ($name == 'HELO') {
988
+            if ($name=='HELO') {
989 989
                 return $this->server_caps['EHLO'];
990 990
             }
991
-            if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) {
991
+            if ($name=='EHLO' || array_key_exists('EHLO', $this->server_caps)) {
992 992
                 return false;
993 993
             }
994 994
             $this->setError('HELO handshake was used. Client knows nothing about server extensions');
@@ -1027,7 +1027,7 @@  discard block
 block discarded – undo
1027 1027
         $endtime = 0;
1028 1028
         stream_set_timeout($this->smtp_conn, $this->Timeout);
1029 1029
         if ($this->Timelimit > 0) {
1030
-            $endtime = time() + $this->Timelimit;
1030
+            $endtime = time()+$this->Timelimit;
1031 1031
         }
1032 1032
         while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
1033 1033
             $str = @fgets($this->smtp_conn, 515);
@@ -1036,14 +1036,14 @@  discard block
 block discarded – undo
1036 1036
             $data .= $str;
1037 1037
             $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL);
1038 1038
             // If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen
1039
-            if ((isset($str[3]) and $str[3] == ' ')) {
1039
+            if ((isset($str[3]) and $str[3]==' ')) {
1040 1040
                 break;
1041 1041
             }
1042 1042
             // Timed-out? Log and break
1043 1043
             $info = stream_get_meta_data($this->smtp_conn);
1044 1044
             if ($info['timed_out']) {
1045 1045
                 $this->edebug(
1046
-                    'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)',
1046
+                    'SMTP -> get_lines(): timed-out ('.$this->Timeout.' sec)',
1047 1047
                     self::DEBUG_LOWLEVEL
1048 1048
                 );
1049 1049
                 break;
@@ -1052,7 +1052,7 @@  discard block
 block discarded – undo
1052 1052
             if ($endtime and time() > $endtime) {
1053 1053
                 $this->edebug(
1054 1054
                     'SMTP -> get_lines(): timelimit reached ('.
1055
-                    $this->Timelimit . ' sec)',
1055
+                    $this->Timelimit.' sec)',
1056 1056
                     self::DEBUG_LOWLEVEL
1057 1057
                 );
1058 1058
                 break;
Please login to merge, or discard this patch.
Indentation   +1104 added lines, -1104 removed lines patch added patch discarded remove patch
@@ -26,418 +26,418 @@  discard block
 block discarded – undo
26 26
  */
27 27
 class SMTP
28 28
 {
29
-    /**
30
-     * The PHPMailer SMTP version number.
31
-     * @type string
32
-     */
33
-    const VERSION = '5.2.10';
34
-
35
-    /**
36
-     * SMTP line break constant.
37
-     * @type string
38
-     */
39
-    const CRLF = "\r\n";
40
-
41
-    /**
42
-     * The SMTP port to use if one is not specified.
43
-     * @type integer
44
-     */
45
-    const DEFAULT_SMTP_PORT = 25;
46
-
47
-    /**
48
-     * The maximum line length allowed by RFC 2822 section 2.1.1
49
-     * @type integer
50
-     */
51
-    const MAX_LINE_LENGTH = 998;
52
-
53
-    /**
54
-     * Debug level for no output
55
-     */
56
-    const DEBUG_OFF = 0;
57
-
58
-    /**
59
-     * Debug level to show client -> server messages
60
-     */
61
-    const DEBUG_CLIENT = 1;
62
-
63
-    /**
64
-     * Debug level to show client -> server and server -> client messages
65
-     */
66
-    const DEBUG_SERVER = 2;
67
-
68
-    /**
69
-     * Debug level to show connection status, client -> server and server -> client messages
70
-     */
71
-    const DEBUG_CONNECTION = 3;
72
-
73
-    /**
74
-     * Debug level to show all messages
75
-     */
76
-    const DEBUG_LOWLEVEL = 4;
77
-
78
-    /**
79
-     * The PHPMailer SMTP Version number.
80
-     * @type string
81
-     * @deprecated Use the `VERSION` constant instead
82
-     * @see SMTP::VERSION
83
-     */
84
-    public $Version = '5.2.10';
85
-
86
-    /**
87
-     * SMTP server port number.
88
-     * @type integer
89
-     * @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead
90
-     * @see SMTP::DEFAULT_SMTP_PORT
91
-     */
92
-    public $SMTP_PORT = 25;
93
-
94
-    /**
95
-     * SMTP reply line ending.
96
-     * @type string
97
-     * @deprecated Use the `CRLF` constant instead
98
-     * @see SMTP::CRLF
99
-     */
100
-    public $CRLF = "\r\n";
101
-
102
-    /**
103
-     * Debug output level.
104
-     * Options:
105
-     * * self::DEBUG_OFF (`0`) No debug output, default
106
-     * * self::DEBUG_CLIENT (`1`) Client commands
107
-     * * self::DEBUG_SERVER (`2`) Client commands and server responses
108
-     * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status
109
-     * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages
110
-     * @type integer
111
-     */
112
-    public $do_debug = self::DEBUG_OFF;
113
-
114
-    /**
115
-     * How to handle debug output.
116
-     * Options:
117
-     * * `echo` Output plain-text as-is, appropriate for CLI
118
-     * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output
119
-     * * `error_log` Output to error log as configured in php.ini
120
-     *
121
-     * Alternatively, you can provide a callable expecting two params: a message string and the debug level:
122
-     * <code>
123
-     * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
124
-     * </code>
125
-     * @type string|callable
126
-     */
127
-    public $Debugoutput = 'echo';
128
-
129
-    /**
130
-     * Whether to use VERP.
131
-     * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
132
-     * @link http://www.postfix.org/VERP_README.html Info on VERP
133
-     * @type boolean
134
-     */
135
-    public $do_verp = false;
136
-
137
-    /**
138
-     * The timeout value for connection, in seconds.
139
-     * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
140
-     * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure.
141
-     * @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2
142
-     * @type integer
143
-     */
144
-    public $Timeout = 300;
145
-
146
-    /**
147
-     * How long to wait for commands to complete, in seconds.
148
-     * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
149
-     * @type integer
150
-     */
151
-    public $Timelimit = 300;
152
-
153
-    /**
154
-     * The socket for the server connection.
155
-     * @type resource
156
-     */
157
-    protected $smtp_conn;
158
-
159
-    /**
160
-     * Error information, if any, for the last SMTP command.
161
-     * @type array
162
-     */
163
-    protected $error = array(
164
-        'error' => '',
165
-        'detail' => '',
166
-        'smtp_code' => '',
167
-        'smtp_code_ex' => ''
168
-    );
169
-
170
-    /**
171
-     * The reply the server sent to us for HELO.
172
-     * If null, no HELO string has yet been received.
173
-     * @type string|null
174
-     */
175
-    protected $helo_rply = null;
176
-
177
-    /**
178
-     * The set of SMTP extensions sent in reply to EHLO command.
179
-     * Indexes of the array are extension names.
180
-     * Value at index 'HELO' or 'EHLO' (according to command that was sent)
181
-     * represents the server name. In case of HELO it is the only element of the array.
182
-     * Other values can be boolean TRUE or an array containing extension options.
183
-     * If null, no HELO/EHLO string has yet been received.
184
-     * @type array|null
185
-     */
186
-    protected $server_caps = null;
187
-
188
-    /**
189
-     * The most recent reply received from the server.
190
-     * @type string
191
-     */
192
-    protected $last_reply = '';
193
-
194
-    /**
195
-     * Output debugging info via a user-selected method.
196
-     * @see SMTP::$Debugoutput
197
-     * @see SMTP::$do_debug
198
-     * @param string $str Debug string to output
199
-     * @param integer $level The debug level of this message; see DEBUG_* constants
200
-     * @return void
201
-     */
202
-    protected function edebug($str, $level = 0)
203
-    {
204
-        if ($level > $this->do_debug) {
205
-            return;
206
-        }
207
-        //Avoid clash with built-in function names
208
-        if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
209
-            call_user_func($this->Debugoutput, $str, $this->do_debug);
210
-            return;
211
-        }
212
-        switch ($this->Debugoutput) {
213
-            case 'error_log':
214
-                //Don't output, just log
215
-                error_log($str);
216
-                break;
217
-            case 'html':
218
-                //Cleans up output a bit for a better looking, HTML-safe output
219
-                echo htmlentities(
220
-                    preg_replace('/[\r\n]+/', '', $str),
221
-                    ENT_QUOTES,
222
-                    'UTF-8'
223
-                )
224
-                . "<br>\n";
225
-                break;
226
-            case 'echo':
227
-            default:
228
-                //Normalize line breaks
229
-                $str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str);
230
-                echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
231
-                    "\n",
232
-                    "\n                   \t                  ",
233
-                    trim($str)
234
-                )."\n";
235
-        }
236
-    }
237
-
238
-    /**
239
-     * Connect to an SMTP server.
240
-     * @param string $host SMTP server IP or host name
241
-     * @param integer $port The port number to connect to
242
-     * @param integer $timeout How long to wait for the connection to open
243
-     * @param array $options An array of options for stream_context_create()
244
-     * @access public
245
-     * @return boolean
246
-     */
247
-    public function connect($host, $port = null, $timeout = 30, $options = array())
248
-    {
249
-        static $streamok;
250
-        //This is enabled by default since 5.0.0 but some providers disable it
251
-        //Check this once and cache the result
252
-        if (is_null($streamok)) {
253
-            $streamok = function_exists('stream_socket_client');
254
-        }
255
-        // Clear errors to avoid confusion
256
-        $this->setError('');
257
-        // Make sure we are __not__ connected
258
-        if ($this->connected()) {
259
-            // Already connected, generate error
260
-            $this->setError('Already connected to a server');
261
-            return false;
262
-        }
263
-        if (empty($port)) {
264
-            $port = self::DEFAULT_SMTP_PORT;
265
-        }
266
-        // Connect to the SMTP server
267
-        $this->edebug(
268
-            "Connection: opening to $host:$port, timeout=$timeout, options=".var_export($options, true),
269
-            self::DEBUG_CONNECTION
270
-        );
271
-        $errno = 0;
272
-        $errstr = '';
273
-        if ($streamok) {
274
-            $socket_context = stream_context_create($options);
275
-            //Suppress errors; connection failures are handled at a higher level
276
-            $this->smtp_conn = @stream_socket_client(
277
-                $host . ":" . $port,
278
-                $errno,
279
-                $errstr,
280
-                $timeout,
281
-                STREAM_CLIENT_CONNECT,
282
-                $socket_context
283
-            );
284
-        } else {
285
-            //Fall back to fsockopen which should work in more places, but is missing some features
286
-            $this->edebug(
287
-                "Connection: stream_socket_client not available, falling back to fsockopen",
288
-                self::DEBUG_CONNECTION
289
-            );
290
-            $this->smtp_conn = fsockopen(
291
-                $host,
292
-                $port,
293
-                $errno,
294
-                $errstr,
295
-                $timeout
296
-            );
297
-        }
298
-        // Verify we connected properly
299
-        if (!is_resource($this->smtp_conn)) {
300
-            $this->setError(
301
-                'Failed to connect to server',
302
-                $errno,
303
-                $errstr
304
-            );
305
-            $this->edebug(
306
-                'SMTP ERROR: ' . $this->error['error']
307
-                . ": $errstr ($errno)",
308
-                self::DEBUG_CLIENT
309
-            );
310
-            return false;
311
-        }
312
-        $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
313
-        // SMTP server can take longer to respond, give longer timeout for first read
314
-        // Windows does not have support for this timeout function
315
-        if (substr(PHP_OS, 0, 3) != 'WIN') {
316
-            $max = ini_get('max_execution_time');
317
-            // Don't bother if unlimited
318
-            if ($max != 0 && $timeout > $max) {
319
-                @set_time_limit($timeout);
320
-            }
321
-            stream_set_timeout($this->smtp_conn, $timeout, 0);
322
-        }
323
-        // Get any announcement
324
-        $announce = $this->get_lines();
325
-        $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
326
-        return true;
327
-    }
328
-
329
-    /**
330
-     * Initiate a TLS (encrypted) session.
331
-     * @access public
332
-     * @return boolean
333
-     */
334
-    public function startTLS()
335
-    {
336
-        if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
337
-            return false;
338
-        }
339
-        // Begin encrypted connection
340
-        if (!stream_socket_enable_crypto(
341
-            $this->smtp_conn,
342
-            true,
343
-            STREAM_CRYPTO_METHOD_TLS_CLIENT
344
-        )) {
345
-            return false;
346
-        }
347
-        return true;
348
-    }
349
-
350
-    /**
351
-     * Perform SMTP authentication.
352
-     * Must be run after hello().
353
-     * @see hello()
354
-     * @param string $username    The user name
355
-     * @param string $password    The password
356
-     * @param string $authtype    The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5)
357
-     * @param string $realm       The auth realm for NTLM
358
-     * @param string $workstation The auth workstation for NTLM
359
-     * @access public
360
-     * @return boolean True if successfully authenticated.
361
-     */
362
-    public function authenticate(
363
-        $username,
364
-        $password,
365
-        $authtype = null,
366
-        $realm = '',
367
-        $workstation = ''
368
-    ) {
369
-        if (!$this->server_caps) {
370
-            $this->setError('Authentication is not allowed before HELO/EHLO');
371
-            return false;
372
-        }
373
-
374
-        if (array_key_exists('EHLO', $this->server_caps)) {
375
-        // SMTP extensions are available. Let's try to find a proper authentication method
376
-
377
-            if (!array_key_exists('AUTH', $this->server_caps)) {
378
-                $this->setError('Authentication is not allowed at this stage');
379
-                // 'at this stage' means that auth may be allowed after the stage changes
380
-                // e.g. after STARTTLS
381
-                return false;
382
-            }
383
-
384
-            self::edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL);
385
-            self::edebug(
386
-                'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']),
387
-                self::DEBUG_LOWLEVEL
388
-            );
389
-
390
-            if (empty($authtype)) {
391
-                foreach (array('LOGIN', 'CRAM-MD5', 'NTLM', 'PLAIN') as $method) {
392
-                    if (in_array($method, $this->server_caps['AUTH'])) {
393
-                        $authtype = $method;
394
-                        break;
395
-                    }
396
-                }
397
-                if (empty($authtype)) {
398
-                    $this->setError('No supported authentication methods found');
399
-                    return false;
400
-                }
401
-                self::edebug('Auth method selected: '.$authtype, self::DEBUG_LOWLEVEL);
402
-            }
403
-
404
-            if (!in_array($authtype, $this->server_caps['AUTH'])) {
405
-                $this->setError("The requested authentication method \"$authtype\" is not supported by the server");
406
-                return false;
407
-            }
408
-        } elseif (empty($authtype)) {
409
-            $authtype = 'LOGIN';
410
-        }
411
-        switch ($authtype) {
412
-            case 'PLAIN':
413
-                // Start authentication
414
-                if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) {
415
-                    return false;
416
-                }
417
-                // Send encoded username and password
418
-                if (!$this->sendCommand(
419
-                    'User & Password',
420
-                    base64_encode("\0" . $username . "\0" . $password),
421
-                    235
422
-                )
423
-                ) {
424
-                    return false;
425
-                }
426
-                break;
427
-            case 'LOGIN':
428
-                // Start authentication
429
-                if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) {
430
-                    return false;
431
-                }
432
-                if (!$this->sendCommand("Username", base64_encode($username), 334)) {
433
-                    return false;
434
-                }
435
-                if (!$this->sendCommand("Password", base64_encode($password), 235)) {
436
-                    return false;
437
-                }
438
-                break;
439
-            case 'NTLM':
440
-                /*
29
+	/**
30
+	 * The PHPMailer SMTP version number.
31
+	 * @type string
32
+	 */
33
+	const VERSION = '5.2.10';
34
+
35
+	/**
36
+	 * SMTP line break constant.
37
+	 * @type string
38
+	 */
39
+	const CRLF = "\r\n";
40
+
41
+	/**
42
+	 * The SMTP port to use if one is not specified.
43
+	 * @type integer
44
+	 */
45
+	const DEFAULT_SMTP_PORT = 25;
46
+
47
+	/**
48
+	 * The maximum line length allowed by RFC 2822 section 2.1.1
49
+	 * @type integer
50
+	 */
51
+	const MAX_LINE_LENGTH = 998;
52
+
53
+	/**
54
+	 * Debug level for no output
55
+	 */
56
+	const DEBUG_OFF = 0;
57
+
58
+	/**
59
+	 * Debug level to show client -> server messages
60
+	 */
61
+	const DEBUG_CLIENT = 1;
62
+
63
+	/**
64
+	 * Debug level to show client -> server and server -> client messages
65
+	 */
66
+	const DEBUG_SERVER = 2;
67
+
68
+	/**
69
+	 * Debug level to show connection status, client -> server and server -> client messages
70
+	 */
71
+	const DEBUG_CONNECTION = 3;
72
+
73
+	/**
74
+	 * Debug level to show all messages
75
+	 */
76
+	const DEBUG_LOWLEVEL = 4;
77
+
78
+	/**
79
+	 * The PHPMailer SMTP Version number.
80
+	 * @type string
81
+	 * @deprecated Use the `VERSION` constant instead
82
+	 * @see SMTP::VERSION
83
+	 */
84
+	public $Version = '5.2.10';
85
+
86
+	/**
87
+	 * SMTP server port number.
88
+	 * @type integer
89
+	 * @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead
90
+	 * @see SMTP::DEFAULT_SMTP_PORT
91
+	 */
92
+	public $SMTP_PORT = 25;
93
+
94
+	/**
95
+	 * SMTP reply line ending.
96
+	 * @type string
97
+	 * @deprecated Use the `CRLF` constant instead
98
+	 * @see SMTP::CRLF
99
+	 */
100
+	public $CRLF = "\r\n";
101
+
102
+	/**
103
+	 * Debug output level.
104
+	 * Options:
105
+	 * * self::DEBUG_OFF (`0`) No debug output, default
106
+	 * * self::DEBUG_CLIENT (`1`) Client commands
107
+	 * * self::DEBUG_SERVER (`2`) Client commands and server responses
108
+	 * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status
109
+	 * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages
110
+	 * @type integer
111
+	 */
112
+	public $do_debug = self::DEBUG_OFF;
113
+
114
+	/**
115
+	 * How to handle debug output.
116
+	 * Options:
117
+	 * * `echo` Output plain-text as-is, appropriate for CLI
118
+	 * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output
119
+	 * * `error_log` Output to error log as configured in php.ini
120
+	 *
121
+	 * Alternatively, you can provide a callable expecting two params: a message string and the debug level:
122
+	 * <code>
123
+	 * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
124
+	 * </code>
125
+	 * @type string|callable
126
+	 */
127
+	public $Debugoutput = 'echo';
128
+
129
+	/**
130
+	 * Whether to use VERP.
131
+	 * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
132
+	 * @link http://www.postfix.org/VERP_README.html Info on VERP
133
+	 * @type boolean
134
+	 */
135
+	public $do_verp = false;
136
+
137
+	/**
138
+	 * The timeout value for connection, in seconds.
139
+	 * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
140
+	 * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure.
141
+	 * @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2
142
+	 * @type integer
143
+	 */
144
+	public $Timeout = 300;
145
+
146
+	/**
147
+	 * How long to wait for commands to complete, in seconds.
148
+	 * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
149
+	 * @type integer
150
+	 */
151
+	public $Timelimit = 300;
152
+
153
+	/**
154
+	 * The socket for the server connection.
155
+	 * @type resource
156
+	 */
157
+	protected $smtp_conn;
158
+
159
+	/**
160
+	 * Error information, if any, for the last SMTP command.
161
+	 * @type array
162
+	 */
163
+	protected $error = array(
164
+		'error' => '',
165
+		'detail' => '',
166
+		'smtp_code' => '',
167
+		'smtp_code_ex' => ''
168
+	);
169
+
170
+	/**
171
+	 * The reply the server sent to us for HELO.
172
+	 * If null, no HELO string has yet been received.
173
+	 * @type string|null
174
+	 */
175
+	protected $helo_rply = null;
176
+
177
+	/**
178
+	 * The set of SMTP extensions sent in reply to EHLO command.
179
+	 * Indexes of the array are extension names.
180
+	 * Value at index 'HELO' or 'EHLO' (according to command that was sent)
181
+	 * represents the server name. In case of HELO it is the only element of the array.
182
+	 * Other values can be boolean TRUE or an array containing extension options.
183
+	 * If null, no HELO/EHLO string has yet been received.
184
+	 * @type array|null
185
+	 */
186
+	protected $server_caps = null;
187
+
188
+	/**
189
+	 * The most recent reply received from the server.
190
+	 * @type string
191
+	 */
192
+	protected $last_reply = '';
193
+
194
+	/**
195
+	 * Output debugging info via a user-selected method.
196
+	 * @see SMTP::$Debugoutput
197
+	 * @see SMTP::$do_debug
198
+	 * @param string $str Debug string to output
199
+	 * @param integer $level The debug level of this message; see DEBUG_* constants
200
+	 * @return void
201
+	 */
202
+	protected function edebug($str, $level = 0)
203
+	{
204
+		if ($level > $this->do_debug) {
205
+			return;
206
+		}
207
+		//Avoid clash with built-in function names
208
+		if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
209
+			call_user_func($this->Debugoutput, $str, $this->do_debug);
210
+			return;
211
+		}
212
+		switch ($this->Debugoutput) {
213
+			case 'error_log':
214
+				//Don't output, just log
215
+				error_log($str);
216
+				break;
217
+			case 'html':
218
+				//Cleans up output a bit for a better looking, HTML-safe output
219
+				echo htmlentities(
220
+					preg_replace('/[\r\n]+/', '', $str),
221
+					ENT_QUOTES,
222
+					'UTF-8'
223
+				)
224
+				. "<br>\n";
225
+				break;
226
+			case 'echo':
227
+			default:
228
+				//Normalize line breaks
229
+				$str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str);
230
+				echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
231
+					"\n",
232
+					"\n                   \t                  ",
233
+					trim($str)
234
+				)."\n";
235
+		}
236
+	}
237
+
238
+	/**
239
+	 * Connect to an SMTP server.
240
+	 * @param string $host SMTP server IP or host name
241
+	 * @param integer $port The port number to connect to
242
+	 * @param integer $timeout How long to wait for the connection to open
243
+	 * @param array $options An array of options for stream_context_create()
244
+	 * @access public
245
+	 * @return boolean
246
+	 */
247
+	public function connect($host, $port = null, $timeout = 30, $options = array())
248
+	{
249
+		static $streamok;
250
+		//This is enabled by default since 5.0.0 but some providers disable it
251
+		//Check this once and cache the result
252
+		if (is_null($streamok)) {
253
+			$streamok = function_exists('stream_socket_client');
254
+		}
255
+		// Clear errors to avoid confusion
256
+		$this->setError('');
257
+		// Make sure we are __not__ connected
258
+		if ($this->connected()) {
259
+			// Already connected, generate error
260
+			$this->setError('Already connected to a server');
261
+			return false;
262
+		}
263
+		if (empty($port)) {
264
+			$port = self::DEFAULT_SMTP_PORT;
265
+		}
266
+		// Connect to the SMTP server
267
+		$this->edebug(
268
+			"Connection: opening to $host:$port, timeout=$timeout, options=".var_export($options, true),
269
+			self::DEBUG_CONNECTION
270
+		);
271
+		$errno = 0;
272
+		$errstr = '';
273
+		if ($streamok) {
274
+			$socket_context = stream_context_create($options);
275
+			//Suppress errors; connection failures are handled at a higher level
276
+			$this->smtp_conn = @stream_socket_client(
277
+				$host . ":" . $port,
278
+				$errno,
279
+				$errstr,
280
+				$timeout,
281
+				STREAM_CLIENT_CONNECT,
282
+				$socket_context
283
+			);
284
+		} else {
285
+			//Fall back to fsockopen which should work in more places, but is missing some features
286
+			$this->edebug(
287
+				"Connection: stream_socket_client not available, falling back to fsockopen",
288
+				self::DEBUG_CONNECTION
289
+			);
290
+			$this->smtp_conn = fsockopen(
291
+				$host,
292
+				$port,
293
+				$errno,
294
+				$errstr,
295
+				$timeout
296
+			);
297
+		}
298
+		// Verify we connected properly
299
+		if (!is_resource($this->smtp_conn)) {
300
+			$this->setError(
301
+				'Failed to connect to server',
302
+				$errno,
303
+				$errstr
304
+			);
305
+			$this->edebug(
306
+				'SMTP ERROR: ' . $this->error['error']
307
+				. ": $errstr ($errno)",
308
+				self::DEBUG_CLIENT
309
+			);
310
+			return false;
311
+		}
312
+		$this->edebug('Connection: opened', self::DEBUG_CONNECTION);
313
+		// SMTP server can take longer to respond, give longer timeout for first read
314
+		// Windows does not have support for this timeout function
315
+		if (substr(PHP_OS, 0, 3) != 'WIN') {
316
+			$max = ini_get('max_execution_time');
317
+			// Don't bother if unlimited
318
+			if ($max != 0 && $timeout > $max) {
319
+				@set_time_limit($timeout);
320
+			}
321
+			stream_set_timeout($this->smtp_conn, $timeout, 0);
322
+		}
323
+		// Get any announcement
324
+		$announce = $this->get_lines();
325
+		$this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
326
+		return true;
327
+	}
328
+
329
+	/**
330
+	 * Initiate a TLS (encrypted) session.
331
+	 * @access public
332
+	 * @return boolean
333
+	 */
334
+	public function startTLS()
335
+	{
336
+		if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
337
+			return false;
338
+		}
339
+		// Begin encrypted connection
340
+		if (!stream_socket_enable_crypto(
341
+			$this->smtp_conn,
342
+			true,
343
+			STREAM_CRYPTO_METHOD_TLS_CLIENT
344
+		)) {
345
+			return false;
346
+		}
347
+		return true;
348
+	}
349
+
350
+	/**
351
+	 * Perform SMTP authentication.
352
+	 * Must be run after hello().
353
+	 * @see hello()
354
+	 * @param string $username    The user name
355
+	 * @param string $password    The password
356
+	 * @param string $authtype    The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5)
357
+	 * @param string $realm       The auth realm for NTLM
358
+	 * @param string $workstation The auth workstation for NTLM
359
+	 * @access public
360
+	 * @return boolean True if successfully authenticated.
361
+	 */
362
+	public function authenticate(
363
+		$username,
364
+		$password,
365
+		$authtype = null,
366
+		$realm = '',
367
+		$workstation = ''
368
+	) {
369
+		if (!$this->server_caps) {
370
+			$this->setError('Authentication is not allowed before HELO/EHLO');
371
+			return false;
372
+		}
373
+
374
+		if (array_key_exists('EHLO', $this->server_caps)) {
375
+		// SMTP extensions are available. Let's try to find a proper authentication method
376
+
377
+			if (!array_key_exists('AUTH', $this->server_caps)) {
378
+				$this->setError('Authentication is not allowed at this stage');
379
+				// 'at this stage' means that auth may be allowed after the stage changes
380
+				// e.g. after STARTTLS
381
+				return false;
382
+			}
383
+
384
+			self::edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL);
385
+			self::edebug(
386
+				'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']),
387
+				self::DEBUG_LOWLEVEL
388
+			);
389
+
390
+			if (empty($authtype)) {
391
+				foreach (array('LOGIN', 'CRAM-MD5', 'NTLM', 'PLAIN') as $method) {
392
+					if (in_array($method, $this->server_caps['AUTH'])) {
393
+						$authtype = $method;
394
+						break;
395
+					}
396
+				}
397
+				if (empty($authtype)) {
398
+					$this->setError('No supported authentication methods found');
399
+					return false;
400
+				}
401
+				self::edebug('Auth method selected: '.$authtype, self::DEBUG_LOWLEVEL);
402
+			}
403
+
404
+			if (!in_array($authtype, $this->server_caps['AUTH'])) {
405
+				$this->setError("The requested authentication method \"$authtype\" is not supported by the server");
406
+				return false;
407
+			}
408
+		} elseif (empty($authtype)) {
409
+			$authtype = 'LOGIN';
410
+		}
411
+		switch ($authtype) {
412
+			case 'PLAIN':
413
+				// Start authentication
414
+				if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) {
415
+					return false;
416
+				}
417
+				// Send encoded username and password
418
+				if (!$this->sendCommand(
419
+					'User & Password',
420
+					base64_encode("\0" . $username . "\0" . $password),
421
+					235
422
+				)
423
+				) {
424
+					return false;
425
+				}
426
+				break;
427
+			case 'LOGIN':
428
+				// Start authentication
429
+				if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) {
430
+					return false;
431
+				}
432
+				if (!$this->sendCommand("Username", base64_encode($username), 334)) {
433
+					return false;
434
+				}
435
+				if (!$this->sendCommand("Password", base64_encode($password), 235)) {
436
+					return false;
437
+				}
438
+				break;
439
+			case 'NTLM':
440
+				/*
441 441
                  * ntlm_sasl_client.php
442 442
                  * Bundled with Permission
443 443
                  *
@@ -445,166 +445,166 @@  discard block
 block discarded – undo
445 445
                  * http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx
446 446
                  * PROTOCOL Docs http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication
447 447
                  */
448
-                require_once 'extras/ntlm_sasl_client.php';
449
-                $temp = new stdClass;
450
-                $ntlm_client = new ntlm_sasl_client_class;
451
-                //Check that functions are available
452
-                if (!$ntlm_client->Initialize($temp)) {
453
-                    $this->setError($temp->error);
454
-                    $this->edebug(
455
-                        'You need to enable some modules in your php.ini file: '
456
-                        . $this->error['error'],
457
-                        self::DEBUG_CLIENT
458
-                    );
459
-                    return false;
460
-                }
461
-                //msg1
462
-                $msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1
463
-
464
-                if (!$this->sendCommand(
465
-                    'AUTH NTLM',
466
-                    'AUTH NTLM ' . base64_encode($msg1),
467
-                    334
468
-                )
469
-                ) {
470
-                    return false;
471
-                }
472
-                //Though 0 based, there is a white space after the 3 digit number
473
-                //msg2
474
-                $challenge = substr($this->last_reply, 3);
475
-                $challenge = base64_decode($challenge);
476
-                $ntlm_res = $ntlm_client->NTLMResponse(
477
-                    substr($challenge, 24, 8),
478
-                    $password
479
-                );
480
-                //msg3
481
-                $msg3 = $ntlm_client->TypeMsg3(
482
-                    $ntlm_res,
483
-                    $username,
484
-                    $realm,
485
-                    $workstation
486
-                );
487
-                // send encoded username
488
-                return $this->sendCommand('Username', base64_encode($msg3), 235);
489
-            case 'CRAM-MD5':
490
-                // Start authentication
491
-                if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) {
492
-                    return false;
493
-                }
494
-                // Get the challenge
495
-                $challenge = base64_decode(substr($this->last_reply, 4));
496
-
497
-                // Build the response
498
-                $response = $username . ' ' . $this->hmac($challenge, $password);
499
-
500
-                // send encoded credentials
501
-                return $this->sendCommand('Username', base64_encode($response), 235);
502
-            default:
503
-                $this->setError("Authentication method \"$authtype\" is not supported");
504
-                return false;
505
-        }
506
-        return true;
507
-    }
508
-
509
-    /**
510
-     * Calculate an MD5 HMAC hash.
511
-     * Works like hash_hmac('md5', $data, $key)
512
-     * in case that function is not available
513
-     * @param string $data The data to hash
514
-     * @param string $key  The key to hash with
515
-     * @access protected
516
-     * @return string
517
-     */
518
-    protected function hmac($data, $key)
519
-    {
520
-        if (function_exists('hash_hmac')) {
521
-            return hash_hmac('md5', $data, $key);
522
-        }
523
-
524
-        // The following borrowed from
525
-        // http://php.net/manual/en/function.mhash.php#27225
526
-
527
-        // RFC 2104 HMAC implementation for php.
528
-        // Creates an md5 HMAC.
529
-        // Eliminates the need to install mhash to compute a HMAC
530
-        // by Lance Rushing
531
-
532
-        $bytelen = 64; // byte length for md5
533
-        if (strlen($key) > $bytelen) {
534
-            $key = pack('H*', md5($key));
535
-        }
536
-        $key = str_pad($key, $bytelen, chr(0x00));
537
-        $ipad = str_pad('', $bytelen, chr(0x36));
538
-        $opad = str_pad('', $bytelen, chr(0x5c));
539
-        $k_ipad = $key ^ $ipad;
540
-        $k_opad = $key ^ $opad;
541
-
542
-        return md5($k_opad . pack('H*', md5($k_ipad . $data)));
543
-    }
544
-
545
-    /**
546
-     * Check connection state.
547
-     * @access public
548
-     * @return boolean True if connected.
549
-     */
550
-    public function connected()
551
-    {
552
-        if (is_resource($this->smtp_conn)) {
553
-            $sock_status = stream_get_meta_data($this->smtp_conn);
554
-            if ($sock_status['eof']) {
555
-                // The socket is valid but we are not connected
556
-                $this->edebug(
557
-                    'SMTP NOTICE: EOF caught while checking if connected',
558
-                    self::DEBUG_CLIENT
559
-                );
560
-                $this->close();
561
-                return false;
562
-            }
563
-            return true; // everything looks good
564
-        }
565
-        return false;
566
-    }
567
-
568
-    /**
569
-     * Close the socket and clean up the state of the class.
570
-     * Don't use this function without first trying to use QUIT.
571
-     * @see quit()
572
-     * @access public
573
-     * @return void
574
-     */
575
-    public function close()
576
-    {
577
-        $this->setError('');
578
-        $this->server_caps = null;
579
-        $this->helo_rply = null;
580
-        if (is_resource($this->smtp_conn)) {
581
-            // close the connection and cleanup
582
-            fclose($this->smtp_conn);
583
-            $this->smtp_conn = null; //Makes for cleaner serialization
584
-            $this->edebug('Connection: closed', self::DEBUG_CONNECTION);
585
-        }
586
-    }
587
-
588
-    /**
589
-     * Send an SMTP DATA command.
590
-     * Issues a data command and sends the msg_data to the server,
591
-     * finializing the mail transaction. $msg_data is the message
592
-     * that is to be send with the headers. Each header needs to be
593
-     * on a single line followed by a <CRLF> with the message headers
594
-     * and the message body being separated by and additional <CRLF>.
595
-     * Implements rfc 821: DATA <CRLF>
596
-     * @param string $msg_data Message data to send
597
-     * @access public
598
-     * @return boolean
599
-     */
600
-    public function data($msg_data)
601
-    {
602
-        //This will use the standard timelimit
603
-        if (!$this->sendCommand('DATA', 'DATA', 354)) {
604
-            return false;
605
-        }
606
-
607
-        /* The server is ready to accept data!
448
+				require_once 'extras/ntlm_sasl_client.php';
449
+				$temp = new stdClass;
450
+				$ntlm_client = new ntlm_sasl_client_class;
451
+				//Check that functions are available
452
+				if (!$ntlm_client->Initialize($temp)) {
453
+					$this->setError($temp->error);
454
+					$this->edebug(
455
+						'You need to enable some modules in your php.ini file: '
456
+						. $this->error['error'],
457
+						self::DEBUG_CLIENT
458
+					);
459
+					return false;
460
+				}
461
+				//msg1
462
+				$msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1
463
+
464
+				if (!$this->sendCommand(
465
+					'AUTH NTLM',
466
+					'AUTH NTLM ' . base64_encode($msg1),
467
+					334
468
+				)
469
+				) {
470
+					return false;
471
+				}
472
+				//Though 0 based, there is a white space after the 3 digit number
473
+				//msg2
474
+				$challenge = substr($this->last_reply, 3);
475
+				$challenge = base64_decode($challenge);
476
+				$ntlm_res = $ntlm_client->NTLMResponse(
477
+					substr($challenge, 24, 8),
478
+					$password
479
+				);
480
+				//msg3
481
+				$msg3 = $ntlm_client->TypeMsg3(
482
+					$ntlm_res,
483
+					$username,
484
+					$realm,
485
+					$workstation
486
+				);
487
+				// send encoded username
488
+				return $this->sendCommand('Username', base64_encode($msg3), 235);
489
+			case 'CRAM-MD5':
490
+				// Start authentication
491
+				if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) {
492
+					return false;
493
+				}
494
+				// Get the challenge
495
+				$challenge = base64_decode(substr($this->last_reply, 4));
496
+
497
+				// Build the response
498
+				$response = $username . ' ' . $this->hmac($challenge, $password);
499
+
500
+				// send encoded credentials
501
+				return $this->sendCommand('Username', base64_encode($response), 235);
502
+			default:
503
+				$this->setError("Authentication method \"$authtype\" is not supported");
504
+				return false;
505
+		}
506
+		return true;
507
+	}
508
+
509
+	/**
510
+	 * Calculate an MD5 HMAC hash.
511
+	 * Works like hash_hmac('md5', $data, $key)
512
+	 * in case that function is not available
513
+	 * @param string $data The data to hash
514
+	 * @param string $key  The key to hash with
515
+	 * @access protected
516
+	 * @return string
517
+	 */
518
+	protected function hmac($data, $key)
519
+	{
520
+		if (function_exists('hash_hmac')) {
521
+			return hash_hmac('md5', $data, $key);
522
+		}
523
+
524
+		// The following borrowed from
525
+		// http://php.net/manual/en/function.mhash.php#27225
526
+
527
+		// RFC 2104 HMAC implementation for php.
528
+		// Creates an md5 HMAC.
529
+		// Eliminates the need to install mhash to compute a HMAC
530
+		// by Lance Rushing
531
+
532
+		$bytelen = 64; // byte length for md5
533
+		if (strlen($key) > $bytelen) {
534
+			$key = pack('H*', md5($key));
535
+		}
536
+		$key = str_pad($key, $bytelen, chr(0x00));
537
+		$ipad = str_pad('', $bytelen, chr(0x36));
538
+		$opad = str_pad('', $bytelen, chr(0x5c));
539
+		$k_ipad = $key ^ $ipad;
540
+		$k_opad = $key ^ $opad;
541
+
542
+		return md5($k_opad . pack('H*', md5($k_ipad . $data)));
543
+	}
544
+
545
+	/**
546
+	 * Check connection state.
547
+	 * @access public
548
+	 * @return boolean True if connected.
549
+	 */
550
+	public function connected()
551
+	{
552
+		if (is_resource($this->smtp_conn)) {
553
+			$sock_status = stream_get_meta_data($this->smtp_conn);
554
+			if ($sock_status['eof']) {
555
+				// The socket is valid but we are not connected
556
+				$this->edebug(
557
+					'SMTP NOTICE: EOF caught while checking if connected',
558
+					self::DEBUG_CLIENT
559
+				);
560
+				$this->close();
561
+				return false;
562
+			}
563
+			return true; // everything looks good
564
+		}
565
+		return false;
566
+	}
567
+
568
+	/**
569
+	 * Close the socket and clean up the state of the class.
570
+	 * Don't use this function without first trying to use QUIT.
571
+	 * @see quit()
572
+	 * @access public
573
+	 * @return void
574
+	 */
575
+	public function close()
576
+	{
577
+		$this->setError('');
578
+		$this->server_caps = null;
579
+		$this->helo_rply = null;
580
+		if (is_resource($this->smtp_conn)) {
581
+			// close the connection and cleanup
582
+			fclose($this->smtp_conn);
583
+			$this->smtp_conn = null; //Makes for cleaner serialization
584
+			$this->edebug('Connection: closed', self::DEBUG_CONNECTION);
585
+		}
586
+	}
587
+
588
+	/**
589
+	 * Send an SMTP DATA command.
590
+	 * Issues a data command and sends the msg_data to the server,
591
+	 * finializing the mail transaction. $msg_data is the message
592
+	 * that is to be send with the headers. Each header needs to be
593
+	 * on a single line followed by a <CRLF> with the message headers
594
+	 * and the message body being separated by and additional <CRLF>.
595
+	 * Implements rfc 821: DATA <CRLF>
596
+	 * @param string $msg_data Message data to send
597
+	 * @access public
598
+	 * @return boolean
599
+	 */
600
+	public function data($msg_data)
601
+	{
602
+		//This will use the standard timelimit
603
+		if (!$this->sendCommand('DATA', 'DATA', 354)) {
604
+			return false;
605
+		}
606
+
607
+		/* The server is ready to accept data!
608 608
          * According to rfc821 we should not send more than 1000 characters on a single line (including the CRLF)
609 609
          * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into
610 610
          * smaller lines to fit within the limit.
@@ -612,541 +612,541 @@  discard block
 block discarded – undo
612 612
          * NOTE: this does not count towards line-length limit.
613 613
          */
614 614
 
615
-        // Normalize line breaks before exploding
616
-        $lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $msg_data));
615
+		// Normalize line breaks before exploding
616
+		$lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $msg_data));
617 617
 
618
-        /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field
618
+		/* To distinguish between a complete RFC822 message and a plain message body, we check if the first field
619 619
          * of the first line (':' separated) does not contain a space then it _should_ be a header and we will
620 620
          * process all lines before a blank line as headers.
621 621
          */
622 622
 
623
-        $field = substr($lines[0], 0, strpos($lines[0], ':'));
624
-        $in_headers = false;
625
-        if (!empty($field) && strpos($field, ' ') === false) {
626
-            $in_headers = true;
627
-        }
628
-
629
-        foreach ($lines as $line) {
630
-            $lines_out = array();
631
-            if ($in_headers and $line == '') {
632
-                $in_headers = false;
633
-            }
634
-            //Break this line up into several smaller lines if it's too long
635
-            //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len),
636
-            while (isset($line[self::MAX_LINE_LENGTH])) {
637
-                //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on
638
-                //so as to avoid breaking in the middle of a word
639
-                $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' ');
640
-                //Deliberately matches both false and 0
641
-                if (!$pos) {
642
-                    //No nice break found, add a hard break
643
-                    $pos = self::MAX_LINE_LENGTH - 1;
644
-                    $lines_out[] = substr($line, 0, $pos);
645
-                    $line = substr($line, $pos);
646
-                } else {
647
-                    //Break at the found point
648
-                    $lines_out[] = substr($line, 0, $pos);
649
-                    //Move along by the amount we dealt with
650
-                    $line = substr($line, $pos + 1);
651
-                }
652
-                //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1
653
-                if ($in_headers) {
654
-                    $line = "\t" . $line;
655
-                }
656
-            }
657
-            $lines_out[] = $line;
658
-
659
-            //Send the lines to the server
660
-            foreach ($lines_out as $line_out) {
661
-                //RFC2821 section 4.5.2
662
-                if (!empty($line_out) and $line_out[0] == '.') {
663
-                    $line_out = '.' . $line_out;
664
-                }
665
-                $this->client_send($line_out . self::CRLF);
666
-            }
667
-        }
668
-
669
-        //Message data has been sent, complete the command
670
-        //Increase timelimit for end of DATA command
671
-        $savetimelimit = $this->Timelimit;
672
-        $this->Timelimit = $this->Timelimit * 2;
673
-        $result = $this->sendCommand('DATA END', '.', 250);
674
-        //Restore timelimit
675
-        $this->Timelimit = $savetimelimit;
676
-        return $result;
677
-    }
678
-
679
-    /**
680
-     * Send an SMTP HELO or EHLO command.
681
-     * Used to identify the sending server to the receiving server.
682
-     * This makes sure that client and server are in a known state.
683
-     * Implements RFC 821: HELO <SP> <domain> <CRLF>
684
-     * and RFC 2821 EHLO.
685
-     * @param string $host The host name or IP to connect to
686
-     * @access public
687
-     * @return boolean
688
-     */
689
-    public function hello($host = '')
690
-    {
691
-        //Try extended hello first (RFC 2821)
692
-        return (boolean)($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host));
693
-    }
694
-
695
-    /**
696
-     * Send an SMTP HELO or EHLO command.
697
-     * Low-level implementation used by hello()
698
-     * @see hello()
699
-     * @param string $hello The HELO string
700
-     * @param string $host The hostname to say we are
701
-     * @access protected
702
-     * @return boolean
703
-     */
704
-    protected function sendHello($hello, $host)
705
-    {
706
-        $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250);
707
-        $this->helo_rply = $this->last_reply;
708
-        if ($noerror) {
709
-            $this->parseHelloFields($hello);
710
-        } else {
711
-            $this->server_caps = null;
712
-        }
713
-        return $noerror;
714
-    }
715
-
716
-    /**
717
-     * Parse a reply to HELO/EHLO command to discover server extensions.
718
-     * In case of HELO, the only parameter that can be discovered is a server name.
719
-     * @access protected
720
-     * @param string $type - 'HELO' or 'EHLO'
721
-     */
722
-    protected function parseHelloFields($type)
723
-    {
724
-        $this->server_caps = array();
725
-        $lines = explode("\n", $this->last_reply);
726
-        foreach ($lines as $n => $s) {
727
-            $s = trim(substr($s, 4));
728
-            if (!$s) {
729
-                continue;
730
-            }
731
-            $fields = explode(' ', $s);
732
-            if (!empty($fields)) {
733
-                if (!$n) {
734
-                    $name = $type;
735
-                    $fields = $fields[0];
736
-                } else {
737
-                    $name = array_shift($fields);
738
-                    if ($name == 'SIZE') {
739
-                        $fields = ($fields) ? $fields[0] : 0;
740
-                    }
741
-                }
742
-                $this->server_caps[$name] = ($fields ? $fields : true);
743
-            }
744
-        }
745
-    }
746
-
747
-    /**
748
-     * Send an SMTP MAIL command.
749
-     * Starts a mail transaction from the email address specified in
750
-     * $from. Returns true if successful or false otherwise. If True
751
-     * the mail transaction is started and then one or more recipient
752
-     * commands may be called followed by a data command.
753
-     * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
754
-     * @param string $from Source address of this message
755
-     * @access public
756
-     * @return boolean
757
-     */
758
-    public function mail($from)
759
-    {
760
-        $useVerp = ($this->do_verp ? ' XVERP' : '');
761
-        return $this->sendCommand(
762
-            'MAIL FROM',
763
-            'MAIL FROM:<' . $from . '>' . $useVerp,
764
-            250
765
-        );
766
-    }
767
-
768
-    /**
769
-     * Send an SMTP QUIT command.
770
-     * Closes the socket if there is no error or the $close_on_error argument is true.
771
-     * Implements from rfc 821: QUIT <CRLF>
772
-     * @param boolean $close_on_error Should the connection close if an error occurs?
773
-     * @access public
774
-     * @return boolean
775
-     */
776
-    public function quit($close_on_error = true)
777
-    {
778
-        $noerror = $this->sendCommand('QUIT', 'QUIT', 221);
779
-        $err = $this->error; //Save any error
780
-        if ($noerror or $close_on_error) {
781
-            $this->close();
782
-            $this->error = $err; //Restore any error from the quit command
783
-        }
784
-        return $noerror;
785
-    }
786
-
787
-    /**
788
-     * Send an SMTP RCPT command.
789
-     * Sets the TO argument to $toaddr.
790
-     * Returns true if the recipient was accepted false if it was rejected.
791
-     * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
792
-     * @param string $toaddr The address the message is being sent to
793
-     * @access public
794
-     * @return boolean
795
-     */
796
-    public function recipient($toaddr)
797
-    {
798
-        return $this->sendCommand(
799
-            'RCPT TO',
800
-            'RCPT TO:<' . $toaddr . '>',
801
-            array(250, 251)
802
-        );
803
-    }
804
-
805
-    /**
806
-     * Send an SMTP RSET command.
807
-     * Abort any transaction that is currently in progress.
808
-     * Implements rfc 821: RSET <CRLF>
809
-     * @access public
810
-     * @return boolean True on success.
811
-     */
812
-    public function reset()
813
-    {
814
-        return $this->sendCommand('RSET', 'RSET', 250);
815
-    }
816
-
817
-    /**
818
-     * Send a command to an SMTP server and check its return code.
819
-     * @param string $command       The command name - not sent to the server
820
-     * @param string $commandstring The actual command to send
821
-     * @param integer|array $expect     One or more expected integer success codes
822
-     * @access protected
823
-     * @return boolean True on success.
824
-     */
825
-    protected function sendCommand($command, $commandstring, $expect)
826
-    {
827
-        if (!$this->connected()) {
828
-            $this->setError("Called $command without being connected");
829
-            return false;
830
-        }
831
-        $this->client_send($commandstring . self::CRLF);
832
-
833
-        $this->last_reply = $this->get_lines();
834
-        // Fetch SMTP code and possible error code explanation
835
-        $matches = array();
836
-        if (preg_match("/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/", $this->last_reply, $matches)) {
837
-            $code = $matches[1];
838
-            $code_ex = (count($matches) > 2 ? $matches[2] : null);
839
-            // Cut off error code from each response line
840
-            $detail = preg_replace(
841
-                "/{$code}[ -]".($code_ex ? str_replace('.', '\\.', $code_ex).' ' : '')."/m",
842
-                '',
843
-                $this->last_reply
844
-            );
845
-        } else {
846
-            // Fall back to simple parsing if regex fails
847
-            $code = substr($this->last_reply, 0, 3);
848
-            $code_ex = null;
849
-            $detail = substr($this->last_reply, 4);
850
-        }
851
-
852
-        $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
853
-
854
-        if (!in_array($code, (array)$expect)) {
855
-            $this->setError(
856
-                "$command command failed",
857
-                $detail,
858
-                $code,
859
-                $code_ex
860
-            );
861
-            $this->edebug(
862
-                'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply,
863
-                self::DEBUG_CLIENT
864
-            );
865
-            return false;
866
-        }
867
-
868
-        $this->setError('');
869
-        return true;
870
-    }
871
-
872
-    /**
873
-     * Send an SMTP SAML command.
874
-     * Starts a mail transaction from the email address specified in $from.
875
-     * Returns true if successful or false otherwise. If True
876
-     * the mail transaction is started and then one or more recipient
877
-     * commands may be called followed by a data command. This command
878
-     * will send the message to the users terminal if they are logged
879
-     * in and send them an email.
880
-     * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
881
-     * @param string $from The address the message is from
882
-     * @access public
883
-     * @return boolean
884
-     */
885
-    public function sendAndMail($from)
886
-    {
887
-        return $this->sendCommand('SAML', "SAML FROM:$from", 250);
888
-    }
889
-
890
-    /**
891
-     * Send an SMTP VRFY command.
892
-     * @param string $name The name to verify
893
-     * @access public
894
-     * @return boolean
895
-     */
896
-    public function verify($name)
897
-    {
898
-        return $this->sendCommand('VRFY', "VRFY $name", array(250, 251));
899
-    }
900
-
901
-    /**
902
-     * Send an SMTP NOOP command.
903
-     * Used to keep keep-alives alive, doesn't actually do anything
904
-     * @access public
905
-     * @return boolean
906
-     */
907
-    public function noop()
908
-    {
909
-        return $this->sendCommand('NOOP', 'NOOP', 250);
910
-    }
911
-
912
-    /**
913
-     * Send an SMTP TURN command.
914
-     * This is an optional command for SMTP that this class does not support.
915
-     * This method is here to make the RFC821 Definition complete for this class
916
-     * and _may_ be implemented in future
917
-     * Implements from rfc 821: TURN <CRLF>
918
-     * @access public
919
-     * @return boolean
920
-     */
921
-    public function turn()
922
-    {
923
-        $this->setError('The SMTP TURN command is not implemented');
924
-        $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT);
925
-        return false;
926
-    }
927
-
928
-    /**
929
-     * Send raw data to the server.
930
-     * @param string $data The data to send
931
-     * @access public
932
-     * @return integer|boolean The number of bytes sent to the server or false on error
933
-     */
934
-    public function client_send($data)
935
-    {
936
-        $this->edebug("CLIENT -> SERVER: $data", self::DEBUG_CLIENT);
937
-        return fwrite($this->smtp_conn, $data);
938
-    }
939
-
940
-    /**
941
-     * Get the latest error.
942
-     * @access public
943
-     * @return array
944
-     */
945
-    public function getError()
946
-    {
947
-        return $this->error;
948
-    }
949
-
950
-    /**
951
-     * Get SMTP extensions available on the server
952
-     * @access public
953
-     * @return array|null
954
-     */
955
-    public function getServerExtList()
956
-    {
957
-        return $this->server_caps;
958
-    }
959
-
960
-    /**
961
-     * A multipurpose method
962
-     * The method works in three ways, dependent on argument value and current state
963
-     *   1. HELO/EHLO was not sent - returns null and set up $this->error
964
-     *   2. HELO was sent
965
-     *     $name = 'HELO': returns server name
966
-     *     $name = 'EHLO': returns boolean false
967
-     *     $name = any string: returns null and set up $this->error
968
-     *   3. EHLO was sent
969
-     *     $name = 'HELO'|'EHLO': returns server name
970
-     *     $name = any string: if extension $name exists, returns boolean True
971
-     *       or its options. Otherwise returns boolean False
972
-     * In other words, one can use this method to detect 3 conditions:
973
-     *  - null returned: handshake was not or we don't know about ext (refer to $this->error)
974
-     *  - false returned: the requested feature exactly not exists
975
-     *  - positive value returned: the requested feature exists
976
-     * @param string $name Name of SMTP extension or 'HELO'|'EHLO'
977
-     * @return mixed
978
-     */
979
-    public function getServerExt($name)
980
-    {
981
-        if (!$this->server_caps) {
982
-            $this->setError('No HELO/EHLO was sent');
983
-            return null;
984
-        }
985
-
986
-        // the tight logic knot ;)
987
-        if (!array_key_exists($name, $this->server_caps)) {
988
-            if ($name == 'HELO') {
989
-                return $this->server_caps['EHLO'];
990
-            }
991
-            if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) {
992
-                return false;
993
-            }
994
-            $this->setError('HELO handshake was used. Client knows nothing about server extensions');
995
-            return null;
996
-        }
997
-
998
-        return $this->server_caps[$name];
999
-    }
1000
-
1001
-    /**
1002
-     * Get the last reply from the server.
1003
-     * @access public
1004
-     * @return string
1005
-     */
1006
-    public function getLastReply()
1007
-    {
1008
-        return $this->last_reply;
1009
-    }
1010
-
1011
-    /**
1012
-     * Read the SMTP server's response.
1013
-     * Either before eof or socket timeout occurs on the operation.
1014
-     * With SMTP we can tell if we have more lines to read if the
1015
-     * 4th character is '-' symbol. If it is a space then we don't
1016
-     * need to read anything else.
1017
-     * @access protected
1018
-     * @return string
1019
-     */
1020
-    protected function get_lines()
1021
-    {
1022
-        // If the connection is bad, give up straight away
1023
-        if (!is_resource($this->smtp_conn)) {
1024
-            return '';
1025
-        }
1026
-        $data = '';
1027
-        $endtime = 0;
1028
-        stream_set_timeout($this->smtp_conn, $this->Timeout);
1029
-        if ($this->Timelimit > 0) {
1030
-            $endtime = time() + $this->Timelimit;
1031
-        }
1032
-        while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
1033
-            $str = @fgets($this->smtp_conn, 515);
1034
-            $this->edebug("SMTP -> get_lines(): \$data was \"$data\"", self::DEBUG_LOWLEVEL);
1035
-            $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL);
1036
-            $data .= $str;
1037
-            $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL);
1038
-            // If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen
1039
-            if ((isset($str[3]) and $str[3] == ' ')) {
1040
-                break;
1041
-            }
1042
-            // Timed-out? Log and break
1043
-            $info = stream_get_meta_data($this->smtp_conn);
1044
-            if ($info['timed_out']) {
1045
-                $this->edebug(
1046
-                    'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)',
1047
-                    self::DEBUG_LOWLEVEL
1048
-                );
1049
-                break;
1050
-            }
1051
-            // Now check if reads took too long
1052
-            if ($endtime and time() > $endtime) {
1053
-                $this->edebug(
1054
-                    'SMTP -> get_lines(): timelimit reached ('.
1055
-                    $this->Timelimit . ' sec)',
1056
-                    self::DEBUG_LOWLEVEL
1057
-                );
1058
-                break;
1059
-            }
1060
-        }
1061
-        return $data;
1062
-    }
1063
-
1064
-    /**
1065
-     * Enable or disable VERP address generation.
1066
-     * @param boolean $enabled
1067
-     */
1068
-    public function setVerp($enabled = false)
1069
-    {
1070
-        $this->do_verp = $enabled;
1071
-    }
1072
-
1073
-    /**
1074
-     * Get VERP address generation mode.
1075
-     * @return boolean
1076
-     */
1077
-    public function getVerp()
1078
-    {
1079
-        return $this->do_verp;
1080
-    }
1081
-
1082
-    /**
1083
-     * Set error messages and codes.
1084
-     * @param string $message The error message
1085
-     * @param string $detail Further detail on the error
1086
-     * @param string $smtp_code An associated SMTP error code
1087
-     * @param string $smtp_code_ex Extended SMTP code
1088
-     */
1089
-    protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '')
1090
-    {
1091
-        $this->error = array(
1092
-            'error' => $message,
1093
-            'detail' => $detail,
1094
-            'smtp_code' => $smtp_code,
1095
-            'smtp_code_ex' => $smtp_code_ex
1096
-        );
1097
-    }
1098
-
1099
-    /**
1100
-     * Set debug output method.
1101
-     * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it.
1102
-     */
1103
-    public function setDebugOutput($method = 'echo')
1104
-    {
1105
-        $this->Debugoutput = $method;
1106
-    }
1107
-
1108
-    /**
1109
-     * Get debug output method.
1110
-     * @return string
1111
-     */
1112
-    public function getDebugOutput()
1113
-    {
1114
-        return $this->Debugoutput;
1115
-    }
1116
-
1117
-    /**
1118
-     * Set debug output level.
1119
-     * @param integer $level
1120
-     */
1121
-    public function setDebugLevel($level = 0)
1122
-    {
1123
-        $this->do_debug = $level;
1124
-    }
1125
-
1126
-    /**
1127
-     * Get debug output level.
1128
-     * @return integer
1129
-     */
1130
-    public function getDebugLevel()
1131
-    {
1132
-        return $this->do_debug;
1133
-    }
1134
-
1135
-    /**
1136
-     * Set SMTP timeout.
1137
-     * @param integer $timeout
1138
-     */
1139
-    public function setTimeout($timeout = 0)
1140
-    {
1141
-        $this->Timeout = $timeout;
1142
-    }
1143
-
1144
-    /**
1145
-     * Get SMTP timeout.
1146
-     * @return integer
1147
-     */
1148
-    public function getTimeout()
1149
-    {
1150
-        return $this->Timeout;
1151
-    }
623
+		$field = substr($lines[0], 0, strpos($lines[0], ':'));
624
+		$in_headers = false;
625
+		if (!empty($field) && strpos($field, ' ') === false) {
626
+			$in_headers = true;
627
+		}
628
+
629
+		foreach ($lines as $line) {
630
+			$lines_out = array();
631
+			if ($in_headers and $line == '') {
632
+				$in_headers = false;
633
+			}
634
+			//Break this line up into several smaller lines if it's too long
635
+			//Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len),
636
+			while (isset($line[self::MAX_LINE_LENGTH])) {
637
+				//Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on
638
+				//so as to avoid breaking in the middle of a word
639
+				$pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' ');
640
+				//Deliberately matches both false and 0
641
+				if (!$pos) {
642
+					//No nice break found, add a hard break
643
+					$pos = self::MAX_LINE_LENGTH - 1;
644
+					$lines_out[] = substr($line, 0, $pos);
645
+					$line = substr($line, $pos);
646
+				} else {
647
+					//Break at the found point
648
+					$lines_out[] = substr($line, 0, $pos);
649
+					//Move along by the amount we dealt with
650
+					$line = substr($line, $pos + 1);
651
+				}
652
+				//If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1
653
+				if ($in_headers) {
654
+					$line = "\t" . $line;
655
+				}
656
+			}
657
+			$lines_out[] = $line;
658
+
659
+			//Send the lines to the server
660
+			foreach ($lines_out as $line_out) {
661
+				//RFC2821 section 4.5.2
662
+				if (!empty($line_out) and $line_out[0] == '.') {
663
+					$line_out = '.' . $line_out;
664
+				}
665
+				$this->client_send($line_out . self::CRLF);
666
+			}
667
+		}
668
+
669
+		//Message data has been sent, complete the command
670
+		//Increase timelimit for end of DATA command
671
+		$savetimelimit = $this->Timelimit;
672
+		$this->Timelimit = $this->Timelimit * 2;
673
+		$result = $this->sendCommand('DATA END', '.', 250);
674
+		//Restore timelimit
675
+		$this->Timelimit = $savetimelimit;
676
+		return $result;
677
+	}
678
+
679
+	/**
680
+	 * Send an SMTP HELO or EHLO command.
681
+	 * Used to identify the sending server to the receiving server.
682
+	 * This makes sure that client and server are in a known state.
683
+	 * Implements RFC 821: HELO <SP> <domain> <CRLF>
684
+	 * and RFC 2821 EHLO.
685
+	 * @param string $host The host name or IP to connect to
686
+	 * @access public
687
+	 * @return boolean
688
+	 */
689
+	public function hello($host = '')
690
+	{
691
+		//Try extended hello first (RFC 2821)
692
+		return (boolean)($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host));
693
+	}
694
+
695
+	/**
696
+	 * Send an SMTP HELO or EHLO command.
697
+	 * Low-level implementation used by hello()
698
+	 * @see hello()
699
+	 * @param string $hello The HELO string
700
+	 * @param string $host The hostname to say we are
701
+	 * @access protected
702
+	 * @return boolean
703
+	 */
704
+	protected function sendHello($hello, $host)
705
+	{
706
+		$noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250);
707
+		$this->helo_rply = $this->last_reply;
708
+		if ($noerror) {
709
+			$this->parseHelloFields($hello);
710
+		} else {
711
+			$this->server_caps = null;
712
+		}
713
+		return $noerror;
714
+	}
715
+
716
+	/**
717
+	 * Parse a reply to HELO/EHLO command to discover server extensions.
718
+	 * In case of HELO, the only parameter that can be discovered is a server name.
719
+	 * @access protected
720
+	 * @param string $type - 'HELO' or 'EHLO'
721
+	 */
722
+	protected function parseHelloFields($type)
723
+	{
724
+		$this->server_caps = array();
725
+		$lines = explode("\n", $this->last_reply);
726
+		foreach ($lines as $n => $s) {
727
+			$s = trim(substr($s, 4));
728
+			if (!$s) {
729
+				continue;
730
+			}
731
+			$fields = explode(' ', $s);
732
+			if (!empty($fields)) {
733
+				if (!$n) {
734
+					$name = $type;
735
+					$fields = $fields[0];
736
+				} else {
737
+					$name = array_shift($fields);
738
+					if ($name == 'SIZE') {
739
+						$fields = ($fields) ? $fields[0] : 0;
740
+					}
741
+				}
742
+				$this->server_caps[$name] = ($fields ? $fields : true);
743
+			}
744
+		}
745
+	}
746
+
747
+	/**
748
+	 * Send an SMTP MAIL command.
749
+	 * Starts a mail transaction from the email address specified in
750
+	 * $from. Returns true if successful or false otherwise. If True
751
+	 * the mail transaction is started and then one or more recipient
752
+	 * commands may be called followed by a data command.
753
+	 * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
754
+	 * @param string $from Source address of this message
755
+	 * @access public
756
+	 * @return boolean
757
+	 */
758
+	public function mail($from)
759
+	{
760
+		$useVerp = ($this->do_verp ? ' XVERP' : '');
761
+		return $this->sendCommand(
762
+			'MAIL FROM',
763
+			'MAIL FROM:<' . $from . '>' . $useVerp,
764
+			250
765
+		);
766
+	}
767
+
768
+	/**
769
+	 * Send an SMTP QUIT command.
770
+	 * Closes the socket if there is no error or the $close_on_error argument is true.
771
+	 * Implements from rfc 821: QUIT <CRLF>
772
+	 * @param boolean $close_on_error Should the connection close if an error occurs?
773
+	 * @access public
774
+	 * @return boolean
775
+	 */
776
+	public function quit($close_on_error = true)
777
+	{
778
+		$noerror = $this->sendCommand('QUIT', 'QUIT', 221);
779
+		$err = $this->error; //Save any error
780
+		if ($noerror or $close_on_error) {
781
+			$this->close();
782
+			$this->error = $err; //Restore any error from the quit command
783
+		}
784
+		return $noerror;
785
+	}
786
+
787
+	/**
788
+	 * Send an SMTP RCPT command.
789
+	 * Sets the TO argument to $toaddr.
790
+	 * Returns true if the recipient was accepted false if it was rejected.
791
+	 * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
792
+	 * @param string $toaddr The address the message is being sent to
793
+	 * @access public
794
+	 * @return boolean
795
+	 */
796
+	public function recipient($toaddr)
797
+	{
798
+		return $this->sendCommand(
799
+			'RCPT TO',
800
+			'RCPT TO:<' . $toaddr . '>',
801
+			array(250, 251)
802
+		);
803
+	}
804
+
805
+	/**
806
+	 * Send an SMTP RSET command.
807
+	 * Abort any transaction that is currently in progress.
808
+	 * Implements rfc 821: RSET <CRLF>
809
+	 * @access public
810
+	 * @return boolean True on success.
811
+	 */
812
+	public function reset()
813
+	{
814
+		return $this->sendCommand('RSET', 'RSET', 250);
815
+	}
816
+
817
+	/**
818
+	 * Send a command to an SMTP server and check its return code.
819
+	 * @param string $command       The command name - not sent to the server
820
+	 * @param string $commandstring The actual command to send
821
+	 * @param integer|array $expect     One or more expected integer success codes
822
+	 * @access protected
823
+	 * @return boolean True on success.
824
+	 */
825
+	protected function sendCommand($command, $commandstring, $expect)
826
+	{
827
+		if (!$this->connected()) {
828
+			$this->setError("Called $command without being connected");
829
+			return false;
830
+		}
831
+		$this->client_send($commandstring . self::CRLF);
832
+
833
+		$this->last_reply = $this->get_lines();
834
+		// Fetch SMTP code and possible error code explanation
835
+		$matches = array();
836
+		if (preg_match("/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/", $this->last_reply, $matches)) {
837
+			$code = $matches[1];
838
+			$code_ex = (count($matches) > 2 ? $matches[2] : null);
839
+			// Cut off error code from each response line
840
+			$detail = preg_replace(
841
+				"/{$code}[ -]".($code_ex ? str_replace('.', '\\.', $code_ex).' ' : '')."/m",
842
+				'',
843
+				$this->last_reply
844
+			);
845
+		} else {
846
+			// Fall back to simple parsing if regex fails
847
+			$code = substr($this->last_reply, 0, 3);
848
+			$code_ex = null;
849
+			$detail = substr($this->last_reply, 4);
850
+		}
851
+
852
+		$this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
853
+
854
+		if (!in_array($code, (array)$expect)) {
855
+			$this->setError(
856
+				"$command command failed",
857
+				$detail,
858
+				$code,
859
+				$code_ex
860
+			);
861
+			$this->edebug(
862
+				'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply,
863
+				self::DEBUG_CLIENT
864
+			);
865
+			return false;
866
+		}
867
+
868
+		$this->setError('');
869
+		return true;
870
+	}
871
+
872
+	/**
873
+	 * Send an SMTP SAML command.
874
+	 * Starts a mail transaction from the email address specified in $from.
875
+	 * Returns true if successful or false otherwise. If True
876
+	 * the mail transaction is started and then one or more recipient
877
+	 * commands may be called followed by a data command. This command
878
+	 * will send the message to the users terminal if they are logged
879
+	 * in and send them an email.
880
+	 * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
881
+	 * @param string $from The address the message is from
882
+	 * @access public
883
+	 * @return boolean
884
+	 */
885
+	public function sendAndMail($from)
886
+	{
887
+		return $this->sendCommand('SAML', "SAML FROM:$from", 250);
888
+	}
889
+
890
+	/**
891
+	 * Send an SMTP VRFY command.
892
+	 * @param string $name The name to verify
893
+	 * @access public
894
+	 * @return boolean
895
+	 */
896
+	public function verify($name)
897
+	{
898
+		return $this->sendCommand('VRFY', "VRFY $name", array(250, 251));
899
+	}
900
+
901
+	/**
902
+	 * Send an SMTP NOOP command.
903
+	 * Used to keep keep-alives alive, doesn't actually do anything
904
+	 * @access public
905
+	 * @return boolean
906
+	 */
907
+	public function noop()
908
+	{
909
+		return $this->sendCommand('NOOP', 'NOOP', 250);
910
+	}
911
+
912
+	/**
913
+	 * Send an SMTP TURN command.
914
+	 * This is an optional command for SMTP that this class does not support.
915
+	 * This method is here to make the RFC821 Definition complete for this class
916
+	 * and _may_ be implemented in future
917
+	 * Implements from rfc 821: TURN <CRLF>
918
+	 * @access public
919
+	 * @return boolean
920
+	 */
921
+	public function turn()
922
+	{
923
+		$this->setError('The SMTP TURN command is not implemented');
924
+		$this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT);
925
+		return false;
926
+	}
927
+
928
+	/**
929
+	 * Send raw data to the server.
930
+	 * @param string $data The data to send
931
+	 * @access public
932
+	 * @return integer|boolean The number of bytes sent to the server or false on error
933
+	 */
934
+	public function client_send($data)
935
+	{
936
+		$this->edebug("CLIENT -> SERVER: $data", self::DEBUG_CLIENT);
937
+		return fwrite($this->smtp_conn, $data);
938
+	}
939
+
940
+	/**
941
+	 * Get the latest error.
942
+	 * @access public
943
+	 * @return array
944
+	 */
945
+	public function getError()
946
+	{
947
+		return $this->error;
948
+	}
949
+
950
+	/**
951
+	 * Get SMTP extensions available on the server
952
+	 * @access public
953
+	 * @return array|null
954
+	 */
955
+	public function getServerExtList()
956
+	{
957
+		return $this->server_caps;
958
+	}
959
+
960
+	/**
961
+	 * A multipurpose method
962
+	 * The method works in three ways, dependent on argument value and current state
963
+	 *   1. HELO/EHLO was not sent - returns null and set up $this->error
964
+	 *   2. HELO was sent
965
+	 *     $name = 'HELO': returns server name
966
+	 *     $name = 'EHLO': returns boolean false
967
+	 *     $name = any string: returns null and set up $this->error
968
+	 *   3. EHLO was sent
969
+	 *     $name = 'HELO'|'EHLO': returns server name
970
+	 *     $name = any string: if extension $name exists, returns boolean True
971
+	 *       or its options. Otherwise returns boolean False
972
+	 * In other words, one can use this method to detect 3 conditions:
973
+	 *  - null returned: handshake was not or we don't know about ext (refer to $this->error)
974
+	 *  - false returned: the requested feature exactly not exists
975
+	 *  - positive value returned: the requested feature exists
976
+	 * @param string $name Name of SMTP extension or 'HELO'|'EHLO'
977
+	 * @return mixed
978
+	 */
979
+	public function getServerExt($name)
980
+	{
981
+		if (!$this->server_caps) {
982
+			$this->setError('No HELO/EHLO was sent');
983
+			return null;
984
+		}
985
+
986
+		// the tight logic knot ;)
987
+		if (!array_key_exists($name, $this->server_caps)) {
988
+			if ($name == 'HELO') {
989
+				return $this->server_caps['EHLO'];
990
+			}
991
+			if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) {
992
+				return false;
993
+			}
994
+			$this->setError('HELO handshake was used. Client knows nothing about server extensions');
995
+			return null;
996
+		}
997
+
998
+		return $this->server_caps[$name];
999
+	}
1000
+
1001
+	/**
1002
+	 * Get the last reply from the server.
1003
+	 * @access public
1004
+	 * @return string
1005
+	 */
1006
+	public function getLastReply()
1007
+	{
1008
+		return $this->last_reply;
1009
+	}
1010
+
1011
+	/**
1012
+	 * Read the SMTP server's response.
1013
+	 * Either before eof or socket timeout occurs on the operation.
1014
+	 * With SMTP we can tell if we have more lines to read if the
1015
+	 * 4th character is '-' symbol. If it is a space then we don't
1016
+	 * need to read anything else.
1017
+	 * @access protected
1018
+	 * @return string
1019
+	 */
1020
+	protected function get_lines()
1021
+	{
1022
+		// If the connection is bad, give up straight away
1023
+		if (!is_resource($this->smtp_conn)) {
1024
+			return '';
1025
+		}
1026
+		$data = '';
1027
+		$endtime = 0;
1028
+		stream_set_timeout($this->smtp_conn, $this->Timeout);
1029
+		if ($this->Timelimit > 0) {
1030
+			$endtime = time() + $this->Timelimit;
1031
+		}
1032
+		while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
1033
+			$str = @fgets($this->smtp_conn, 515);
1034
+			$this->edebug("SMTP -> get_lines(): \$data was \"$data\"", self::DEBUG_LOWLEVEL);
1035
+			$this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL);
1036
+			$data .= $str;
1037
+			$this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL);
1038
+			// If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen
1039
+			if ((isset($str[3]) and $str[3] == ' ')) {
1040
+				break;
1041
+			}
1042
+			// Timed-out? Log and break
1043
+			$info = stream_get_meta_data($this->smtp_conn);
1044
+			if ($info['timed_out']) {
1045
+				$this->edebug(
1046
+					'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)',
1047
+					self::DEBUG_LOWLEVEL
1048
+				);
1049
+				break;
1050
+			}
1051
+			// Now check if reads took too long
1052
+			if ($endtime and time() > $endtime) {
1053
+				$this->edebug(
1054
+					'SMTP -> get_lines(): timelimit reached ('.
1055
+					$this->Timelimit . ' sec)',
1056
+					self::DEBUG_LOWLEVEL
1057
+				);
1058
+				break;
1059
+			}
1060
+		}
1061
+		return $data;
1062
+	}
1063
+
1064
+	/**
1065
+	 * Enable or disable VERP address generation.
1066
+	 * @param boolean $enabled
1067
+	 */
1068
+	public function setVerp($enabled = false)
1069
+	{
1070
+		$this->do_verp = $enabled;
1071
+	}
1072
+
1073
+	/**
1074
+	 * Get VERP address generation mode.
1075
+	 * @return boolean
1076
+	 */
1077
+	public function getVerp()
1078
+	{
1079
+		return $this->do_verp;
1080
+	}
1081
+
1082
+	/**
1083
+	 * Set error messages and codes.
1084
+	 * @param string $message The error message
1085
+	 * @param string $detail Further detail on the error
1086
+	 * @param string $smtp_code An associated SMTP error code
1087
+	 * @param string $smtp_code_ex Extended SMTP code
1088
+	 */
1089
+	protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '')
1090
+	{
1091
+		$this->error = array(
1092
+			'error' => $message,
1093
+			'detail' => $detail,
1094
+			'smtp_code' => $smtp_code,
1095
+			'smtp_code_ex' => $smtp_code_ex
1096
+		);
1097
+	}
1098
+
1099
+	/**
1100
+	 * Set debug output method.
1101
+	 * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it.
1102
+	 */
1103
+	public function setDebugOutput($method = 'echo')
1104
+	{
1105
+		$this->Debugoutput = $method;
1106
+	}
1107
+
1108
+	/**
1109
+	 * Get debug output method.
1110
+	 * @return string
1111
+	 */
1112
+	public function getDebugOutput()
1113
+	{
1114
+		return $this->Debugoutput;
1115
+	}
1116
+
1117
+	/**
1118
+	 * Set debug output level.
1119
+	 * @param integer $level
1120
+	 */
1121
+	public function setDebugLevel($level = 0)
1122
+	{
1123
+		$this->do_debug = $level;
1124
+	}
1125
+
1126
+	/**
1127
+	 * Get debug output level.
1128
+	 * @return integer
1129
+	 */
1130
+	public function getDebugLevel()
1131
+	{
1132
+		return $this->do_debug;
1133
+	}
1134
+
1135
+	/**
1136
+	 * Set SMTP timeout.
1137
+	 * @param integer $timeout
1138
+	 */
1139
+	public function setTimeout($timeout = 0)
1140
+	{
1141
+		$this->Timeout = $timeout;
1142
+	}
1143
+
1144
+	/**
1145
+	 * Get SMTP timeout.
1146
+	 * @return integer
1147
+	 */
1148
+	public function getTimeout()
1149
+	{
1150
+		return $this->Timeout;
1151
+	}
1152 1152
 }
1153 1153
\ No newline at end of file
Please login to merge, or discard this patch.
classes/Utilities.class.php 3 patches
Doc Comments   +22 added lines patch added patch discarded remove patch
@@ -174,6 +174,10 @@  discard block
 block discarded – undo
174 174
 		return trim($test);
175 175
 	}
176 176
 
177
+	/**
178
+	 * @param string $monitorType
179
+	 * @param boolean $isBlocked
180
+	 */
177 181
 	public static function logBlockListStats($server, $monitorType, $isBlocked){
178 182
 		if(Setup::$settings['log_rbl_stats']==0) return true;
179 183
 		$mysql = new _MySQL();
@@ -403,6 +407,12 @@  discard block
 block discarded – undo
403 407
 			);
404 408
 	}
405 409
 
410
+	/**
411
+	 * @param string $host
412
+	 * @param boolean $isBlocked
413
+	 * @param string $rDNS
414
+	 * @param string $status
415
+	 */
406 416
 	public static function makeAPICallback($url, $host, $isBlocked, $rDNS, $status){
407 417
 		if(substr($url,0,4)!='http') return false;
408 418
 
@@ -438,6 +448,10 @@  discard block
 block discarded – undo
438 448
 		return false;
439 449
 	}
440 450
 
451
+	 /**
452
+	  * @param string $beginText
453
+	  * @param string $endText
454
+	  */
441 455
 	 public static function parseBetweenText(
442 456
 		$text,
443 457
 		$beginText,
@@ -471,6 +485,11 @@  discard block
 block discarded – undo
471 485
 		return ($firstResultOnlyNoArray && empty($results) ? '' : $results);
472 486
 	 }
473 487
 
488
+	/**
489
+	 * @param _MySQL $mysql
490
+	 *
491
+	 * @return string
492
+	 */
474 493
 	public static function getNextMonitor($mysql){
475 494
 		$ipDomain = $mysql->runQueryReturnVar("select ipDomain from monitors where beenChecked = 0");
476 495
 		$mysql->runQuery("update monitors set beenChecked = 1 where ipDomain = '".$mysql->escape($ipDomain)."'");
@@ -518,6 +537,9 @@  discard block
 block discarded – undo
518 537
 		}
519 538
 	}
520 539
 
540
+	/**
541
+	 * @param string $command
542
+	 */
521 543
 	public static function run_in_background($command, $priority = 0) {
522 544
 		$log = Setup::$settings['log_path'];
523 545
 		if($priority !=0){
Please login to merge, or discard this patch.
Braces   +93 added lines, -40 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
 		while($row = mysqli_fetch_array($rs, MYSQL_ASSOC)){
33 33
 			if($row['monitorType']=='ip'){
34 34
 				$cacheData['ips'][] = $row['host'];
35
-			}else{
35
+			} else{
36 36
 				$cacheData['domains'][] = $row['host'];
37 37
 			}
38 38
 		}
@@ -58,20 +58,20 @@  discard block
 block discarded – undo
58 58
 				if($r!='') {
59 59
 					self::$isBlocked = 1;
60 60
 					self::logBlockListStats($server, 'ip', true);
61
-				}else{
61
+				} else{
62 62
 					self::logBlockListStats($server, 'ip', false);
63 63
 				}
64 64
 				if($r!='' || $reportClean==true) {
65 65
 					$return[] = array(trim($server),$r);
66 66
 				}
67 67
 			}
68
-		}else{
68
+		} else{
69 69
 			foreach(self::$domainBlacklists as $server){
70 70
 				$r = self::domainCheck($domainOrIp, $server);
71 71
 				if($r!='') {
72 72
 					self::$isBlocked = 1;
73 73
 					self::logBlockListStats($server, 'domain', true);
74
-				}else{
74
+				} else{
75 75
 					self::logBlockListStats($server, 'domain', false);
76 76
 				}
77 77
 				if($r!='' || $reportClean==true) {
@@ -113,17 +113,23 @@  discard block
 block discarded – undo
113 113
 				$testArray = explode("\t", $test);
114 114
 				$test = end($testArray);
115 115
 				$test = str_replace(array('\'','"'),'',$test);
116
-			}else{
116
+			} else{
117 117
 				$test = 'blocked';
118 118
 			}
119 119
 		}
120
-		if(strripos($test,'not found')!==false) return '';
121
-		if(strripos($test,'SERVFAIL')!==false) return '';
120
+		if(strripos($test,'not found')!==false) {
121
+			return '';
122
+		}
123
+		if(strripos($test,'SERVFAIL')!==false) {
124
+			return '';
125
+		}
122 126
 		return trim($test);
123 127
 	}
124 128
 
125 129
 	public static function ipCheck($ip, $server){
126
-		if(_IpAddresses::isIPAddress($ip)===false) return '';
130
+		if(_IpAddresses::isIPAddress($ip)===false) {
131
+			return '';
132
+		}
127 133
 		$server = trim($server);
128 134
 
129 135
 		$parts = explode('.', $ip);
@@ -164,23 +170,31 @@  discard block
 block discarded – undo
164 170
 						$test = (isset($a[1])) ? 'Listed ' . $a[1] : $test2;
165 171
 					break;
166 172
 				}
167
-				if($test2!='') $test = $test2;
168
-			}else{
173
+				if($test2!='') {
174
+					$test = $test2;
175
+				}
176
+			} else{
169 177
 				$test = 'blocked';
170 178
 			}
171 179
 		}
172
-		if(strripos($test,'not found')!==false) return '';
173
-		if(strripos($test,'SERVFAIL')!==false) return '';
180
+		if(strripos($test,'not found')!==false) {
181
+			return '';
182
+		}
183
+		if(strripos($test,'SERVFAIL')!==false) {
184
+			return '';
185
+		}
174 186
 		return trim($test);
175 187
 	}
176 188
 
177 189
 	public static function logBlockListStats($server, $monitorType, $isBlocked){
178
-		if(Setup::$settings['log_rbl_stats']==0) return true;
190
+		if(Setup::$settings['log_rbl_stats']==0) {
191
+			return true;
192
+		}
179 193
 		$mysql = new _MySQL();
180 194
 		$mysql->connect(Setup::$connectionArray);
181 195
 		if($isBlocked){
182 196
 			$sql = "update blockLists set blocksToday=(blocksToday+1), lastBlockReport=now() where host = '".$mysql->escape($server)."' and monitorType = '$monitorType';";
183
-		}else{
197
+		} else{
184 198
 			$sql = "update blockLists set cleanToday=(cleanToday+1) where host = '".$mysql->escape($server)."' and monitorType = '$monitorType';";
185 199
 		}
186 200
 		$mysql->runQuery($sql);
@@ -202,7 +216,9 @@  discard block
 block discarded – undo
202 216
 	public static function updateDomains($domains, $monitorGroupId){
203 217
 		$domains = trim($domains);
204 218
 		$monitorGroupId = (int)$monitorGroupId;
205
-		if($monitorGroupId===0) return false;
219
+		if($monitorGroupId===0) {
220
+			return false;
221
+		}
206 222
 		$mysql = new _MySQL();
207 223
 		$mysql->connect(Setup::$connectionArray);
208 224
 		$mysql->runQuery("update monitors set keepOnUpdate = 0 where isDomain = 1 and monitorGroupId = $monitorGroupId");
@@ -241,7 +257,9 @@  discard block
 block discarded – undo
241 257
 	public static function updateIPs($ips, $monitorGroupId){
242 258
 		$ips = trim($ips);
243 259
 		$monitorGroupId = (int)$monitorGroupId;
244
-		if($monitorGroupId===0) return false;
260
+		if($monitorGroupId===0) {
261
+			return false;
262
+		}
245 263
 		$mysql = new _MySQL();
246 264
 		$mysql->connect(Setup::$connectionArray);
247 265
 		$mysql->runQuery("update monitors set keepOnUpdate = 0 where isDomain = 0 and monitorGroupId = $monitorGroupId");
@@ -267,16 +285,25 @@  discard block
 block discarded – undo
267 285
 						keepOnUpdate = 1
268 286
 						");
269 287
 				}
270
-			}else{
288
+			} else{
271 289
 				//cidr /24's max...
272 290
 				if(trim($i)!=''){
273
-					if(strpos($i, ' ')!==false) continue;
274
-					if(strpos($i, ':')!==false) continue;
291
+					if(strpos($i, ' ')!==false) {
292
+						continue;
293
+					}
294
+					if(strpos($i, ':')!==false) {
295
+						continue;
296
+					}
275 297
 					$range = _IpAddresses::cidrToRange($i);
276
-					if($range===false) continue;
298
+					if($range===false) {
299
+						continue;
300
+					}
277 301
 					$start = explode('.', $range[0]);
278 302
 					$end = explode('.', $range[1]);
279
-					if($range[0]==0) continue;// starts with 0
303
+					if($range[0]==0) {
304
+						continue;
305
+					}
306
+					// starts with 0
280 307
 					for($i = $start[3]; $i <= $end[3]; $i++){
281 308
 						$host = "{$start[0]}.{$start[1]}.{$start[2]}.$i";
282 309
 						if(_IpAddresses::isIPAddress($host)){
@@ -308,7 +335,7 @@  discard block
 block discarded – undo
308 335
 	public static function isLoggedIn(){
309 336
 		if(isset($_SESSION['id']) && (int)$_SESSION['id'] > 0){
310 337
 			return $_SESSION['id'];
311
-		}else{
338
+		} else{
312 339
 			return false;
313 340
 		}
314 341
 	}
@@ -353,7 +380,7 @@  discard block
 block discarded – undo
353 380
 		where ";
354 381
 		if(trim($apiKey) != ''){
355 382
 			$sql .= " apiKey = '".$mysql->escape($apiKey)."'";
356
-		}else{
383
+		} else{
357 384
 			$sql .= " passwd = '".$mysql->escape(md5($passwd))."' 
358 385
 			and username = '".$mysql->escape($userName)."'";
359 386
 		}
@@ -369,12 +396,12 @@  discard block
 block discarded – undo
369 396
 	public static function lookupHostDNS($host){
370 397
 		if(_IpAddresses::isIPAddress($host)){
371 398
 			return _IpAddresses::getHostByIp($host);
372
-		}else{
399
+		} else{
373 400
 			$host = escapeshellarg($host);
374 401
 			exec('host -t a -W 2 '.$host, $output, $return);
375 402
 			if ($return !== 0) {
376 403
 				return '';
377
-			}else{
404
+			} else{
378 405
 				$output = implode($output);
379 406
 				$ips = _IpAddresses::getAllIPsFromString($output, true);
380 407
 				$ir = "";
@@ -404,7 +431,9 @@  discard block
 block discarded – undo
404 431
 	}
405 432
 
406 433
 	public static function makeAPICallback($url, $host, $isBlocked, $rDNS, $status){
407
-		if(substr($url,0,4)!='http') return false;
434
+		if(substr($url,0,4)!='http') {
435
+			return false;
436
+		}
408 437
 
409 438
 		$vars = json_encode(
410 439
 			array(
@@ -424,7 +453,9 @@  discard block
 block discarded – undo
424 453
 			curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
425 454
 			curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
426 455
 			curl_exec($ch);
427
-			if (curl_errno($ch)) $err = false;
456
+			if (curl_errno($ch)) {
457
+				$err = false;
458
+			}
428 459
 		} catch (Exception $e) {
429 460
 			$err = false;
430 461
 		}
@@ -449,10 +480,14 @@  discard block
 block discarded – undo
449 480
 		$endPos = 0;
450 481
 		while(true) {
451 482
 				$beginPos = stripos($text, $beginText, $endPos);
452
-				if($beginPos===false) break;
483
+				if($beginPos===false) {
484
+					break;
485
+				}
453 486
 				$beginPos = $beginPos+strlen($beginText);
454 487
 				$endPos = stripos($text, $endText, $beginPos);
455
-				if($endPos===false) break;
488
+				if($endPos===false) {
489
+					break;
490
+				}
456 491
 				$result = substr($text, $beginPos, $endPos-$beginPos);
457 492
 				if($removeSpace){
458 493
 						$result = str_replace("\t","",$result);
@@ -465,8 +500,12 @@  discard block
 block discarded – undo
465 500
 				if($removeHtmlTags){
466 501
 						$result = strip_tags($result);
467 502
 				}
468
-				if($firstResultOnlyNoArray) return $result;
469
-				if($result != '') $results[] = $result;
503
+				if($firstResultOnlyNoArray) {
504
+					return $result;
505
+				}
506
+				if($result != '') {
507
+					$results[] = $result;
508
+				}
470 509
 		}
471 510
 		return ($firstResultOnlyNoArray && empty($results) ? '' : $results);
472 511
 	 }
@@ -480,40 +519,54 @@  discard block
 block discarded – undo
480 519
 	public static function getHostChangeCount($mysql, $monitorGroupId = 0) {
481 520
 		$sql = '';
482 521
 		$monitorGroupId = (int)$monitorGroupId;
483
-		if($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
522
+		if($monitorGroupId > 0) {
523
+			$sql = " and monitorGroupId = $monitorGroupId";
524
+		}
484 525
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors where lastStatusChanged = 1 $sql");
485 526
 	}
486 527
 
487 528
 	public static function getHostErrorCount($mysql, $monitorGroupId = 0, $onlyNew = false) {
488 529
 		$sql = '';
489 530
 		$monitorGroupId = (int)$monitorGroupId;
490
-		if($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
491
-		if($onlyNew) $sql .= " and lastStatusChanged = 1 ";
531
+		if($monitorGroupId > 0) {
532
+			$sql = " and monitorGroupId = $monitorGroupId";
533
+		}
534
+		if($onlyNew) {
535
+			$sql .= " and lastStatusChanged = 1 ";
536
+		}
492 537
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors where isBlocked = 1 $sql");
493 538
 	}
494 539
 
495 540
 	public static function getHostCleanCount($mysql, $monitorGroupId = 0, $onlyNew = false) {
496 541
 		$sql = '';
497 542
 		$monitorGroupId = (int)$monitorGroupId;
498
-		if($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
499
-		if($onlyNew) $sql .= " and lastStatusChanged = 1 ";
543
+		if($monitorGroupId > 0) {
544
+			$sql = " and monitorGroupId = $monitorGroupId";
545
+		}
546
+		if($onlyNew) {
547
+			$sql .= " and lastStatusChanged = 1 ";
548
+		}
500 549
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors where isBlocked = 0 $sql");
501 550
 	}
502 551
 
503 552
 	public static function getHostCount($mysql, $monitorGroupId = 0) {
504 553
 		$sql = '';
505 554
 		$monitorGroupId = (int)$monitorGroupId;
506
-		if($monitorGroupId > 0) $sql = " where monitorGroupId = $monitorGroupId";
555
+		if($monitorGroupId > 0) {
556
+			$sql = " where monitorGroupId = $monitorGroupId";
557
+		}
507 558
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors $sql");
508 559
 	}
509 560
 
510 561
 	//CREDIT: http://braincrafted.com/php-background-processes/
511 562
 	public static function is_process_running($pid){
512 563
 		$pid = (int)$pid;
513
-		if($pid == 0) return false;
564
+		if($pid == 0) {
565
+			return false;
566
+		}
514 567
 		if(file_exists('/proc/'.$pid)){
515 568
 			return true;
516
-		}else{
569
+		} else{
517 570
 			return false;
518 571
 		}
519 572
 	}
@@ -522,7 +575,7 @@  discard block
 block discarded – undo
522 575
 		$log = Setup::$settings['log_path'];
523 576
 		if($priority !=0){
524 577
 			$pid = shell_exec("nohup nice -n $priority $command >> $log 2>&1 & echo $!");
525
-		}else{
578
+		} else{
526 579
 			$pid = shell_exec("nohup $command >> $log 2>&1 & echo $!");
527 580
 		}
528 581
 		return($pid);
Please login to merge, or discard this patch.
Spacing   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -12,12 +12,12 @@  discard block
 block discarded – undo
12 12
 	public static $frequencyCheckOptions = array('1hour', '2hour', '8hour', 'daily', 'weekly');
13 13
 	public static $mysql = false;
14 14
 
15
-	public static function setBlockLists(){
15
+	public static function setBlockLists() {
16 16
 		$localCache = new _FileCache('blacklistmonitor-Utilities-BlockLists', 60);
17 17
 		$cacheKey = 'bl';
18 18
 		$cacheData = $localCache->get($cacheKey);
19
-		if ($cacheData !== false) {
20
-			if(isset($cacheData['domains']) && isset($cacheData['ips']) ) {
19
+		if ($cacheData!==false) {
20
+			if (isset($cacheData['domains']) && isset($cacheData['ips'])) {
21 21
 				self::$domainBlacklists = $cacheData['domains'];
22 22
 				self::$ipBlacklists = $cacheData['ips'];
23 23
 				return true;
@@ -29,10 +29,10 @@  discard block
 block discarded – undo
29 29
 		$rs = $mysql->runQuery($sql);
30 30
 		$cacheData['domains'] = array();
31 31
 		$cacheData['ips'] = array();
32
-		while($row = mysqli_fetch_array($rs)){
33
-			if($row['monitorType']=='ip'){
32
+		while ($row = mysqli_fetch_array($rs)) {
33
+			if ($row['monitorType']=='ip') {
34 34
 				$cacheData['ips'][] = $row['host'];
35
-			}else{
35
+			}else {
36 36
 				$cacheData['domains'][] = $row['host'];
37 37
 			}
38 38
 		}
@@ -43,46 +43,46 @@  discard block
 block discarded – undo
43 43
 		return false;
44 44
 	}
45 45
 
46
-	public static function randomDNSServer(){
47
-		return Setup::$settings['dns_servers'][mt_rand(0,(count(Setup::$settings['dns_servers'])-1))];
46
+	public static function randomDNSServer() {
47
+		return Setup::$settings['dns_servers'][mt_rand(0, (count(Setup::$settings['dns_servers'])-1))];
48 48
 	}
49 49
 
50 50
 	public static $isBlocked = 0;
51 51
 	
52
-	public static function checkBlacklists($domainOrIp, $reportClean=false){
52
+	public static function checkBlacklists($domainOrIp, $reportClean = false) {
53 53
 		self::$isBlocked = 0;
54 54
 		$return = array();
55
-		if(_IpAddresses::isIPAddress($domainOrIp)){
56
-			foreach(self::$ipBlacklists as $server){
55
+		if (_IpAddresses::isIPAddress($domainOrIp)) {
56
+			foreach (self::$ipBlacklists as $server) {
57 57
 				$r = self::ipCheck($domainOrIp, $server);
58
-				if($r!='') {
58
+				if ($r!='') {
59 59
 					self::$isBlocked = 1;
60 60
 					self::logBlockListStats($server, 'ip', true);
61
-				}else{
61
+				}else {
62 62
 					self::logBlockListStats($server, 'ip', false);
63 63
 				}
64
-				if($r!='' || $reportClean==true) {
65
-					$return[] = array(trim($server),$r);
64
+				if ($r!='' || $reportClean==true) {
65
+					$return[] = array(trim($server), $r);
66 66
 				}
67 67
 			}
68
-		}else{
69
-			foreach(self::$domainBlacklists as $server){
68
+		}else {
69
+			foreach (self::$domainBlacklists as $server) {
70 70
 				$r = self::domainCheck($domainOrIp, $server);
71
-				if($r!='') {
71
+				if ($r!='') {
72 72
 					self::$isBlocked = 1;
73 73
 					self::logBlockListStats($server, 'domain', true);
74
-				}else{
74
+				}else {
75 75
 					self::logBlockListStats($server, 'domain', false);
76 76
 				}
77
-				if($r!='' || $reportClean==true) {
78
-					$return[] = array(trim($server),$r);
77
+				if ($r!='' || $reportClean==true) {
78
+					$return[] = array(trim($server), $r);
79 79
 				}
80 80
 			}
81 81
 		}
82 82
 		return $return;
83 83
 	}
84 84
 
85
-	public static function domainCheck($domain, $server){
85
+	public static function domainCheck($domain, $server) {
86 86
 		$server = trim($server);
87 87
 		$host = escapeshellarg("$domain.$server");
88 88
 		$t = "dig @".self::randomDNSServer()." +time=".Setup::$settings['dns_request_timeout']." $host";
@@ -98,8 +98,8 @@  discard block
 block discarded – undo
98 98
 		$testArray = explode("\t", $test);
99 99
 		$test = end($testArray);
100 100
 
101
-		if(trim($test)!=''){
102
-			if(Setup::$settings['rbl_txt_extended_status']){
101
+		if (trim($test)!='') {
102
+			if (Setup::$settings['rbl_txt_extended_status']) {
103 103
 				$t = "dig @".self::randomDNSServer()." +time=".Setup::$settings['dns_request_timeout']." $host txt";
104 104
 		//		echo("$t</br>");
105 105
 				$text = shell_exec($t);
@@ -112,18 +112,18 @@  discard block
 block discarded – undo
112 112
 					true);
113 113
 				$testArray = explode("\t", $test);
114 114
 				$test = end($testArray);
115
-				$test = str_replace(array('\'','"'),'',$test);
116
-			}else{
115
+				$test = str_replace(array('\'', '"'), '', $test);
116
+			}else {
117 117
 				$test = 'blocked';
118 118
 			}
119 119
 		}
120
-		if(strripos($test,'not found')!==false) return '';
121
-		if(strripos($test,'SERVFAIL')!==false) return '';
120
+		if (strripos($test, 'not found')!==false) return '';
121
+		if (strripos($test, 'SERVFAIL')!==false) return '';
122 122
 		return trim($test);
123 123
 	}
124 124
 
125
-	public static function ipCheck($ip, $server){
126
-		if(_IpAddresses::isIPAddress($ip)===false) return '';
125
+	public static function ipCheck($ip, $server) {
126
+		if (_IpAddresses::isIPAddress($ip)===false) return '';
127 127
 		$server = trim($server);
128 128
 
129 129
 		$parts = explode('.', $ip);
@@ -143,8 +143,8 @@  discard block
 block discarded – undo
143 143
 		$testArray = preg_split("/IN\s+A\s+/i", $test);
144 144
 		$test = trim(end($testArray));
145 145
 		//		echo "<pre>$test</pre>\n";
146
-		if(trim($test)!=''){
147
-			if(Setup::$settings['rbl_txt_extended_status']){
146
+		if (trim($test)!='') {
147
+			if (Setup::$settings['rbl_txt_extended_status']) {
148 148
 				$t = "dig @".self::randomDNSServer()." +time=".Setup::$settings['dns_request_timeout']." $host txt";
149 149
 		//		echo("$t</br>");
150 150
 				$text = shell_exec($t);
@@ -157,41 +157,41 @@  discard block
 block discarded – undo
157 157
 					true);
158 158
 				$testArray = preg_split("/IN\s+TXT\s+/i", $test2);
159 159
 				$test2 = trim(end($testArray));
160
-				$test2 = str_replace(array('\'','"'),'',$test2);
161
-				switch($server){
160
+				$test2 = str_replace(array('\'', '"'), '', $test2);
161
+				switch ($server) {
162 162
 					case 'bl.mailspike.net':
163
-						$a = explode("|",$test2);
164
-						$test = (isset($a[1])) ? 'Listed ' . $a[1] : $test2;
163
+						$a = explode("|", $test2);
164
+						$test = (isset($a[1])) ? 'Listed '.$a[1] : $test2;
165 165
 					break;
166 166
 				}
167
-				if($test2!='') $test = $test2;
168
-			}else{
167
+				if ($test2!='') $test = $test2;
168
+			}else {
169 169
 				$test = 'blocked';
170 170
 			}
171 171
 		}
172
-		if(strripos($test,'not found')!==false) return '';
173
-		if(strripos($test,'SERVFAIL')!==false) return '';
172
+		if (strripos($test, 'not found')!==false) return '';
173
+		if (strripos($test, 'SERVFAIL')!==false) return '';
174 174
 		return trim($test);
175 175
 	}
176 176
 
177
-	public static function logBlockListStats($server, $monitorType, $isBlocked){
178
-		if(Setup::$settings['log_rbl_stats']==0) return true;
177
+	public static function logBlockListStats($server, $monitorType, $isBlocked) {
178
+		if (Setup::$settings['log_rbl_stats']==0) return true;
179 179
 		$mysql = new _MySQL();
180 180
 		$mysql->connect(Setup::$connectionArray);
181
-		if($isBlocked){
181
+		if ($isBlocked) {
182 182
 			$sql = "update blockLists set blocksToday=(blocksToday+1), lastBlockReport=now() where host = '".$mysql->escape($server)."' and monitorType = '$monitorType';";
183
-		}else{
183
+		}else {
184 184
 			$sql = "update blockLists set cleanToday=(cleanToday+1) where host = '".$mysql->escape($server)."' and monitorType = '$monitorType';";
185 185
 		}
186 186
 		$mysql->runQuery($sql);
187 187
 		$mysql->close();
188 188
 	}
189 189
 
190
-	public static function ensureGroupExists($groupName){
190
+	public static function ensureGroupExists($groupName) {
191 191
 		$mysql = new _MySQL();
192 192
 		$mysql->connect(Setup::$connectionArray);
193 193
 		$id = $mysql->runQueryReturnVar("select id from monitorGroup where groupName = '".$mysql->escape($groupName)."'");
194
-		if($id===false){
194
+		if ($id===false) {
195 195
 			$mysql->runQuery("insert into monitorGroup set groupName = '".$mysql->escape($groupName)."'");
196 196
 			$id = $mysql->identity;
197 197
 		}
@@ -199,23 +199,23 @@  discard block
 block discarded – undo
199 199
 		return $id;
200 200
 	}
201 201
 
202
-	public static function updateDomains($domains, $monitorGroupId){
202
+	public static function updateDomains($domains, $monitorGroupId) {
203 203
 		$domains = trim($domains);
204 204
 		$monitorGroupId = (int)$monitorGroupId;
205
-		if($monitorGroupId===0) return false;
205
+		if ($monitorGroupId===0) return false;
206 206
 		$mysql = new _MySQL();
207 207
 		$mysql->connect(Setup::$connectionArray);
208 208
 		$mysql->runQuery("update monitors set keepOnUpdate = 0 where isDomain = 1 and monitorGroupId = $monitorGroupId");
209 209
 		$mysql->runQuery("update users set lastUpdate = '".$mysql->escape(date('Y-m-d H:i:s'))."'");
210 210
 		$mysql->runQuery("update monitorGroup set domains = '".$mysql->escape($domains)."' where id = $monitorGroupId");
211 211
 		$domainArray = preg_split('/\s+/', $domains);
212
-		foreach($domainArray as $d){
212
+		foreach ($domainArray as $d) {
213 213
 			$d = trim($d);
214 214
 			$d = str_ireplace('http://', '', $d);
215 215
 			$d = str_ireplace('https://', '', $d);
216 216
 			$d = str_ireplace('/', '', $d);
217 217
 			$d = preg_replace('/[[:^print:]]/', '', $d);
218
-			if($d != ''){
218
+			if ($d!='') {
219 219
 				$mysql->runQuery("
220 220
 					update monitors set
221 221
 						keepOnUpdate = 1
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
 						and ipDomain = '".$mysql->escape($d)."'
225 225
 						and isDomain = 1
226 226
 				");
227
-				if($mysql->affectedRows == 0){
227
+				if ($mysql->affectedRows==0) {
228 228
 					$mysql->runQuery("insert ignore into monitors set
229 229
 					monitorGroupId = $monitorGroupId,
230 230
 					ipDomain = '".$mysql->escape($d)."',
@@ -238,19 +238,19 @@  discard block
 block discarded – undo
238 238
 		$mysql->close();
239 239
 	}
240 240
 
241
-	public static function updateIPs($ips, $monitorGroupId){
241
+	public static function updateIPs($ips, $monitorGroupId) {
242 242
 		$ips = trim($ips);
243 243
 		$monitorGroupId = (int)$monitorGroupId;
244
-		if($monitorGroupId===0) return false;
244
+		if ($monitorGroupId===0) return false;
245 245
 		$mysql = new _MySQL();
246 246
 		$mysql->connect(Setup::$connectionArray);
247 247
 		$mysql->runQuery("update monitors set keepOnUpdate = 0 where isDomain = 0 and monitorGroupId = $monitorGroupId");
248 248
 		$mysql->runQuery("update users set lastUpdate = '".$mysql->escape(date('Y-m-d H:i:s'))."'");
249 249
 		$mysql->runQuery("update monitorGroup set ips = '".$mysql->escape($ips)."' where id = $monitorGroupId");
250
-		$ipsArray  = preg_split('/\s+/', $ips);
251
-		foreach($ipsArray as $i){
250
+		$ipsArray = preg_split('/\s+/', $ips);
251
+		foreach ($ipsArray as $i) {
252 252
 			// ip checks
253
-			if(_IpAddresses::isIPAddress($i)){
253
+			if (_IpAddresses::isIPAddress($i)) {
254 254
 				$mysql->runQuery("
255 255
 					update monitors set
256 256
 					keepOnUpdate = 1
@@ -259,7 +259,7 @@  discard block
 block discarded – undo
259 259
 						and ipDomain = '".$mysql->escape($i)."'
260 260
 						and isDomain = 0
261 261
 					");
262
-				if($mysql->affectedRows == 0){
262
+				if ($mysql->affectedRows==0) {
263 263
 					$mysql->runQuery("insert ignore into monitors set
264 264
 						monitorGroupId = $monitorGroupId,
265 265
 						ipDomain = '".$mysql->escape($i)."', 
@@ -267,19 +267,19 @@  discard block
 block discarded – undo
267 267
 						keepOnUpdate = 1
268 268
 						");
269 269
 				}
270
-			}else{
270
+			}else {
271 271
 				//cidr /24's max...
272
-				if(trim($i)!=''){
273
-					if(strpos($i, ' ')!==false) continue;
274
-					if(strpos($i, ':')!==false) continue;
272
+				if (trim($i)!='') {
273
+					if (strpos($i, ' ')!==false) continue;
274
+					if (strpos($i, ':')!==false) continue;
275 275
 					$range = _IpAddresses::cidrToRange($i);
276
-					if($range===false) continue;
276
+					if ($range===false) continue;
277 277
 					$start = explode('.', $range[0]);
278 278
 					$end = explode('.', $range[1]);
279
-					if($range[0]==0) continue;// starts with 0
280
-					for($i = $start[3]; $i <= $end[3]; $i++){
279
+					if ($range[0]==0) continue; // starts with 0
280
+					for ($i = $start[3]; $i <= $end[3]; $i++) {
281 281
 						$host = "{$start[0]}.{$start[1]}.{$start[2]}.$i";
282
-						if(_IpAddresses::isIPAddress($host)){
282
+						if (_IpAddresses::isIPAddress($host)) {
283 283
 							$mysql->runQuery("
284 284
 								update monitors set
285 285
 									keepOnUpdate = 1
@@ -288,7 +288,7 @@  discard block
 block discarded – undo
288 288
 										and ipDomain = '".$mysql->escape($host)."'
289 289
 										and isDomain = 0
290 290
 								");
291
-							if($mysql->affectedRows == 0){
291
+							if ($mysql->affectedRows==0) {
292 292
 								$mysql->runQuery("insert ignore into monitors set
293 293
 									monitorGroupId = $monitorGroupId,
294 294
 									ipDomain = '".$mysql->escape($host)."',
@@ -305,15 +305,15 @@  discard block
 block discarded – undo
305 305
 		$mysql->close();
306 306
 	}
307 307
 
308
-	public static function isLoggedIn(){
309
-		if(isset($_SESSION['id']) && (int)$_SESSION['id'] > 0){
308
+	public static function isLoggedIn() {
309
+		if (isset($_SESSION['id']) && (int)$_SESSION['id'] > 0) {
310 310
 			return $_SESSION['id'];
311
-		}else{
311
+		}else {
312 312
 			return false;
313 313
 		}
314 314
 	}
315 315
 
316
-	public static function getAccount(){
316
+	public static function getAccount() {
317 317
 		$mysql = new _MySQL();
318 318
 		$mysql->connect(Setup::$connectionArray);
319 319
 		$ret = false;
@@ -330,12 +330,12 @@  discard block
 block discarded – undo
330 330
 				apiCallbackURL,
331 331
 				checkFrequency
332 332
 			from users limit 1");
333
-		while($row = mysqli_fetch_array($rs)){
333
+		while ($row = mysqli_fetch_array($rs)) {
334 334
 			$ret = $row;
335 335
 		}
336 336
 		$mysql->close();
337 337
 
338
-		if(!$ret){
338
+		if (!$ret) {
339 339
 			//account
340 340
 			_Logging::appLog("no user account");
341 341
 			exit();
@@ -344,44 +344,44 @@  discard block
 block discarded – undo
344 344
 		return $ret;
345 345
 	}
346 346
 
347
-	public static function validateLogin($userName, $passwd, $api = false, $apiKey = ''){
347
+	public static function validateLogin($userName, $passwd, $api = false, $apiKey = '') {
348 348
 		$mysql = new _MySQL();
349 349
 		$mysql->connect(Setup::$connectionArray);
350 350
 		$sql = "
351 351
 		select username
352 352
 		from users
353 353
 		where ";
354
-		if(trim($apiKey) != ''){
354
+		if (trim($apiKey)!='') {
355 355
 			$sql .= " apiKey = '".$mysql->escape($apiKey)."'";
356
-		}else{
356
+		}else {
357 357
 			$sql .= " passwd = '".$mysql->escape(md5($passwd))."' 
358 358
 			and username = '".$mysql->escape($userName)."'";
359 359
 		}
360 360
 		$rs = $mysql->runQuery($sql);
361 361
 		$id = 0;
362
-		while($row = mysqli_fetch_array($rs)){
362
+		while ($row = mysqli_fetch_array($rs)) {
363 363
 			$id = 1;
364 364
 		}
365 365
 		$mysql->close();
366 366
 		return $id;
367 367
 	}
368 368
 
369
-	public static function lookupHostDNS($host){
370
-		if(_IpAddresses::isIPAddress($host)){
369
+	public static function lookupHostDNS($host) {
370
+		if (_IpAddresses::isIPAddress($host)) {
371 371
 			return _IpAddresses::getHostByIp($host);
372
-		}else{
372
+		}else {
373 373
 			$host = escapeshellarg($host);
374 374
 			exec('host -t a -W 2 '.$host, $output, $return);
375
-			if ($return !== 0) {
375
+			if ($return!==0) {
376 376
 				return '';
377
-			}else{
377
+			}else {
378 378
 				$output = implode($output);
379 379
 				$ips = _IpAddresses::getAllIPsFromString($output, true);
380 380
 				$ir = "";
381
-				foreach($ips as $ip){
381
+				foreach ($ips as $ip) {
382 382
 					$ir .= "$ip,";
383 383
 				}
384
-				return trim($ir,',');
384
+				return trim($ir, ',');
385 385
 			}
386 386
 
387 387
 			/*
@@ -394,7 +394,7 @@  discard block
 block discarded – undo
394 394
 		}
395 395
 	}
396 396
 
397
-	public static function testAPICallback($url){
397
+	public static function testAPICallback($url) {
398 398
 		return self::makeAPICallback($url,
399 399
 			'samplehosttest.com', 
400 400
 			true, 
@@ -403,8 +403,8 @@  discard block
 block discarded – undo
403 403
 			);
404 404
 	}
405 405
 
406
-	public static function makeAPICallback($url, $host, $isBlocked, $rDNS, $status){
407
-		if(substr($url,0,4)!='http') return false;
406
+	public static function makeAPICallback($url, $host, $isBlocked, $rDNS, $status) {
407
+		if (substr($url, 0, 4)!='http') return false;
408 408
 
409 409
 		$vars = json_encode(
410 410
 			array(
@@ -415,14 +415,14 @@  discard block
 block discarded – undo
415 415
 			)
416 416
 		);
417 417
 		$err = true;
418
-		try{
418
+		try {
419 419
 			$ch = curl_init();
420
-			curl_setopt($ch,CURLOPT_URL,$url);
421
-			curl_setopt($ch,CURLOPT_POST,true);
422
-			curl_setopt($ch,CURLOPT_FAILONERROR,true);
423
-			curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
424
-			curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
425
-			curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
420
+			curl_setopt($ch, CURLOPT_URL, $url);
421
+			curl_setopt($ch, CURLOPT_POST, true);
422
+			curl_setopt($ch, CURLOPT_FAILONERROR, true);
423
+			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
424
+			curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
425
+			curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
426 426
 			curl_exec($ch);
427 427
 			if (curl_errno($ch)) $err = false;
428 428
 		} catch (Exception $e) {
@@ -431,7 +431,7 @@  discard block
 block discarded – undo
431 431
 		return $err;
432 432
 	}
433 433
 
434
-	public static function isValidEmail($emailAddress){
434
+	public static function isValidEmail($emailAddress) {
435 435
 		if (filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
436 436
 			return true;
437 437
 		}
@@ -442,36 +442,36 @@  discard block
 block discarded – undo
442 442
 		$text,
443 443
 		$beginText,
444 444
 		$endText,
445
-		$removeSpace=true,
446
-		$removeHtmlTags=true,
447
-		$firstResultOnlyNoArray=false) {
445
+		$removeSpace = true,
446
+		$removeHtmlTags = true,
447
+		$firstResultOnlyNoArray = false) {
448 448
 		$results = array();
449 449
 		$endPos = 0;
450
-		while(true) {
450
+		while (true) {
451 451
 				$beginPos = stripos($text, $beginText, $endPos);
452
-				if($beginPos===false) break;
452
+				if ($beginPos===false) break;
453 453
 				$beginPos = $beginPos+strlen($beginText);
454 454
 				$endPos = stripos($text, $endText, $beginPos);
455
-				if($endPos===false) break;
455
+				if ($endPos===false) break;
456 456
 				$result = substr($text, $beginPos, $endPos-$beginPos);
457
-				if($removeSpace){
458
-						$result = str_replace("\t","",$result);
459
-						$result = str_replace("\n","",$result);
460
-						$result = preg_replace("/  /"," ",$result);
461
-						$result = preg_replace("~[\s]{2}?[\t]?~i"," ",$result);
462
-						$result = str_replace("  "," ",$result);
457
+				if ($removeSpace) {
458
+						$result = str_replace("\t", "", $result);
459
+						$result = str_replace("\n", "", $result);
460
+						$result = preg_replace("/  /", " ", $result);
461
+						$result = preg_replace("~[\s]{2}?[\t]?~i", " ", $result);
462
+						$result = str_replace("  ", " ", $result);
463 463
 						$result = trim($result);
464 464
 				}
465
-				if($removeHtmlTags){
465
+				if ($removeHtmlTags) {
466 466
 						$result = strip_tags($result);
467 467
 				}
468
-				if($firstResultOnlyNoArray) return $result;
469
-				if($result != '') $results[] = $result;
468
+				if ($firstResultOnlyNoArray) return $result;
469
+				if ($result!='') $results[] = $result;
470 470
 		}
471 471
 		return ($firstResultOnlyNoArray && empty($results) ? '' : $results);
472 472
 	 }
473 473
 
474
-	public static function getNextMonitor($mysql){
474
+	public static function getNextMonitor($mysql) {
475 475
 		$ipDomain = $mysql->runQueryReturnVar("select ipDomain from monitors where beenChecked = 0");
476 476
 		$mysql->runQuery("update monitors set beenChecked = 1 where ipDomain = '".$mysql->escape($ipDomain)."'");
477 477
 		return $ipDomain;
@@ -480,49 +480,49 @@  discard block
 block discarded – undo
480 480
 	public static function getHostChangeCount($mysql, $monitorGroupId = 0) {
481 481
 		$sql = '';
482 482
 		$monitorGroupId = (int)$monitorGroupId;
483
-		if($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
483
+		if ($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
484 484
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors where lastStatusChanged = 1 $sql");
485 485
 	}
486 486
 
487 487
 	public static function getHostErrorCount($mysql, $monitorGroupId = 0, $onlyNew = false) {
488 488
 		$sql = '';
489 489
 		$monitorGroupId = (int)$monitorGroupId;
490
-		if($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
491
-		if($onlyNew) $sql .= " and lastStatusChanged = 1 ";
490
+		if ($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
491
+		if ($onlyNew) $sql .= " and lastStatusChanged = 1 ";
492 492
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors where isBlocked = 1 $sql");
493 493
 	}
494 494
 
495 495
 	public static function getHostCleanCount($mysql, $monitorGroupId = 0, $onlyNew = false) {
496 496
 		$sql = '';
497 497
 		$monitorGroupId = (int)$monitorGroupId;
498
-		if($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
499
-		if($onlyNew) $sql .= " and lastStatusChanged = 1 ";
498
+		if ($monitorGroupId > 0) $sql = " and monitorGroupId = $monitorGroupId";
499
+		if ($onlyNew) $sql .= " and lastStatusChanged = 1 ";
500 500
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors where isBlocked = 0 $sql");
501 501
 	}
502 502
 
503 503
 	public static function getHostCount($mysql, $monitorGroupId = 0) {
504 504
 		$sql = '';
505 505
 		$monitorGroupId = (int)$monitorGroupId;
506
-		if($monitorGroupId > 0) $sql = " where monitorGroupId = $monitorGroupId";
506
+		if ($monitorGroupId > 0) $sql = " where monitorGroupId = $monitorGroupId";
507 507
 		return $mysql->runQueryReturnVar("select COALESCE(count(ipDomain),0) as cnt from monitors $sql");
508 508
 	}
509 509
 
510 510
 	//CREDIT: http://braincrafted.com/php-background-processes/
511
-	public static function is_process_running($pid){
511
+	public static function is_process_running($pid) {
512 512
 		$pid = (int)$pid;
513
-		if($pid == 0) return false;
514
-		if(file_exists('/proc/'.$pid)){
513
+		if ($pid==0) return false;
514
+		if (file_exists('/proc/'.$pid)) {
515 515
 			return true;
516
-		}else{
516
+		}else {
517 517
 			return false;
518 518
 		}
519 519
 	}
520 520
 
521 521
 	public static function run_in_background($command, $priority = 0) {
522 522
 		$log = Setup::$settings['log_path'];
523
-		if($priority !=0){
523
+		if ($priority!=0) {
524 524
 			$pid = shell_exec("nohup nice -n $priority $command >> $log 2>&1 & echo $!");
525
-		}else{
525
+		}else {
526 526
 			$pid = shell_exec("nohup $command >> $log 2>&1 & echo $!");
527 527
 		}
528 528
 		return($pid);
Please login to merge, or discard this patch.
account.php 2 patches
Spacing   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
 class_exists('_MySQL', false) or include('classes/_MySQL.class.php');
6 6
 class_exists('PHPMailer', false) or include('classes/class.phpmailer.php');
7 7
 
8
-if(Utilities::isLoggedIn()===false){
8
+if (Utilities::isLoggedIn()===false) {
9 9
 	header('Location: login.php');
10 10
 	exit();
11 11
 }
@@ -13,17 +13,17 @@  discard block
 block discarded – undo
13 13
 $titlePreFix = "account";
14 14
 $message = array();
15 15
 
16
-$username = array_key_exists('username', $_POST) ? substr(trim($_POST['username']),0,100) : '';
17
-$noticeEmailAddresses = array_key_exists('noticeEmailAddresses', $_POST) ? substr($_POST['noticeEmailAddresses'],0,8000) : '';
18
-$textMessageEmails = array_key_exists('textMessageEmails', $_POST) ? substr($_POST['textMessageEmails'],0,8000) : '';
19
-$passwd = array_key_exists('passwd', $_POST) ? substr($_POST['passwd'],0,32) : '';
20
-$passwdOld = array_key_exists('passwdOld', $_POST) ? substr($_POST['passwdOld'],0,32) : '';
21
-$apiKey = array_key_exists('apiKey', $_POST) ? substr($_POST['apiKey'],0,32) : '';
16
+$username = array_key_exists('username', $_POST) ? substr(trim($_POST['username']), 0, 100) : '';
17
+$noticeEmailAddresses = array_key_exists('noticeEmailAddresses', $_POST) ? substr($_POST['noticeEmailAddresses'], 0, 8000) : '';
18
+$textMessageEmails = array_key_exists('textMessageEmails', $_POST) ? substr($_POST['textMessageEmails'], 0, 8000) : '';
19
+$passwd = array_key_exists('passwd', $_POST) ? substr($_POST['passwd'], 0, 32) : '';
20
+$passwdOld = array_key_exists('passwdOld', $_POST) ? substr($_POST['passwdOld'], 0, 32) : '';
21
+$apiKey = array_key_exists('apiKey', $_POST) ? substr($_POST['apiKey'], 0, 32) : '';
22 22
 $disableEmailNotices = array_key_exists('disableEmailNotices', $_POST) ? (int)$_POST['disableEmailNotices'] : 0;
23 23
 $beenChecked = array_key_exists('beenChecked', $_POST) ? (int)$_POST['beenChecked'] : 0;
24
-$twitterHandle = array_key_exists('twitterHandle', $_POST) ? substr(trim($_POST['twitterHandle']),0,15) : '';
25
-$twitterHandle = str_replace('@','',$twitterHandle);
26
-$apiCallbackURL = array_key_exists('apiCallbackURL', $_POST) ? substr(trim($_POST['apiCallbackURL']),0,2000) : '';
24
+$twitterHandle = array_key_exists('twitterHandle', $_POST) ? substr(trim($_POST['twitterHandle']), 0, 15) : '';
25
+$twitterHandle = str_replace('@', '', $twitterHandle);
26
+$apiCallbackURL = array_key_exists('apiCallbackURL', $_POST) ? substr(trim($_POST['apiCallbackURL']), 0, 2000) : '';
27 27
 $testUrl = array_key_exists('testUrl', $_GET) ? $_GET['testUrl'] : '';
28 28
 
29 29
 $mysql = new _MySQL();
@@ -32,40 +32,40 @@  discard block
 block discarded – undo
32 32
 // audit check frequency
33 33
 $checkFrequency = array_key_exists('checkFrequency', $_POST) ? $_POST['checkFrequency'] : '';
34 34
 
35
-if($testUrl!=''){
36
-	if(Utilities::testAPICallback($testUrl)){
35
+if ($testUrl!='') {
36
+	if (Utilities::testAPICallback($testUrl)) {
37 37
 		echo('true');
38
-	}else{
38
+	}else {
39 39
 		echo('false');
40 40
 	}
41 41
 	exit();
42 42
 }
43 43
 
44 44
 if (isset($_POST["submit"])) {
45
-	if($passwd=='') $message[] = 'You must select a password.';
45
+	if ($passwd=='') $message[] = 'You must select a password.';
46 46
 
47
-	if($passwdOld != $passwd){
47
+	if ($passwdOld!=$passwd) {
48 48
 		$passwdOld = md5($passwd);
49 49
 	}
50 50
 
51
-	$ta = explode("\n",$noticeEmailAddresses);
51
+	$ta = explode("\n", $noticeEmailAddresses);
52 52
 	$noticeEmailAddresses = "";
53
-	foreach($ta as $e){
53
+	foreach ($ta as $e) {
54 54
 		$e = trim($e);
55
-		if(Utilities::isValidEmail($e)){
55
+		if (Utilities::isValidEmail($e)) {
56 56
 			$noticeEmailAddresses .= "$e\n";
57 57
 		}
58 58
 	}
59
-	$ta = explode("\n",$textMessageEmails);
59
+	$ta = explode("\n", $textMessageEmails);
60 60
 	$textMessageEmails = "";
61
-	foreach($ta as $e){
61
+	foreach ($ta as $e) {
62 62
 		$e = trim($e);
63
-		if(Utilities::isValidEmail($e)){
63
+		if (Utilities::isValidEmail($e)) {
64 64
 			$textMessageEmails .= "$e\n";
65 65
 		}
66 66
 	}
67 67
 	//TODO: make sure blacklists are domains with an ip address on them
68
-	if(count($message) == 0){
68
+	if (count($message)==0) {
69 69
 		//update
70 70
 		$mysql->runQuery("
71 71
 			update users set username = '".$mysql->escape($username)."',
@@ -81,11 +81,11 @@  discard block
 block discarded – undo
81 81
 			checkFrequency = '".$mysql->escape($checkFrequency)."',
82 82
 			disableEmailNotices = $disableEmailNotices
83 83
 			");
84
-		if($beenChecked==1){
84
+		if ($beenChecked==1) {
85 85
 			$mysql->runQuery("update users set beenChecked = 0");
86 86
 				$message[] = "Check scheduled.";
87 87
 		}
88
-		if($twitterHandle!=''){
88
+		if ($twitterHandle!='') {
89 89
 			$t = new Twitter();
90 90
 			$t->follow($twitterHandle);
91 91
 		}
@@ -93,7 +93,7 @@  discard block
 block discarded – undo
93 93
 	}
94 94
 }
95 95
 $user = Utilities::getAccount();
96
-if(!$user){
96
+if (!$user) {
97 97
 	//invalid account
98 98
 	echo("<script>window.location='login.php?logout=1';</script>");
99 99
 	exit();
@@ -106,8 +106,8 @@  discard block
 block discarded – undo
106 106
 <div class="row">
107 107
 	<div class="col-md-3">
108 108
 	<ul class="nav nav-pills nav-stacked">
109
-		<li>Hosts Total <span class="badge pull-right"><?php echo(number_format(Utilities::getHostCount($mysql)));?></span></li>
110
-		<li>Hosts Blocked <span class="badge pull-right"><?php echo(number_format(Utilities::getHostErrorCount($mysql)));?></span></li>
109
+		<li>Hosts Total <span class="badge pull-right"><?php echo(number_format(Utilities::getHostCount($mysql))); ?></span></li>
110
+		<li>Hosts Blocked <span class="badge pull-right"><?php echo(number_format(Utilities::getHostErrorCount($mysql))); ?></span></li>
111 111
 	</ul>
112 112
 	</div>
113 113
 </div>
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
 </script>
137 137
 
138 138
 <?php
139
-foreach($message as $m){
139
+foreach ($message as $m) {
140 140
 	echo("<div class=\"alert alert-info alert-dismissable\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>$m</div>");
141 141
 }
142 142
 ?>
@@ -145,30 +145,30 @@  discard block
 block discarded – undo
145 145
 	<div class="form-group">
146 146
 		<label class="col-sm-3 control-label" for="username">Login Username</label>
147 147
 		<div class="col-sm-6">
148
-			<input class="form-control" type="text" id="username" name="username" value="<?php echo($user['username']);?>" placeholder="username">
148
+			<input class="form-control" type="text" id="username" name="username" value="<?php echo($user['username']); ?>" placeholder="username">
149 149
 		</div>
150 150
 	</div>
151 151
 	<div class="form-group">
152 152
 		<label class="col-sm-3 control-label" for="passwd">Password</label>
153 153
 		<div class="col-sm-6">
154
-			<input class="form-control" type="password" name="passwd" id="passwd" value="<?php echo($user['passwd']);?>" class="form-control" placeholder="Password">
154
+			<input class="form-control" type="password" name="passwd" id="passwd" value="<?php echo($user['passwd']); ?>" class="form-control" placeholder="Password">
155 155
 		</div>
156 156
 	</div>
157 157
 	<div class="form-group">
158 158
 		<label class="col-sm-3 control-label" for="apiKey">API Key</label>
159 159
 		<div class="col-sm-6">
160
-			<input class="form-control" maxlength="32" type="text" id="apiKey" name="apiKey" value="<?php echo($user['apiKey']);?>" placeholder="api key">
160
+			<input class="form-control" maxlength="32" type="text" id="apiKey" name="apiKey" value="<?php echo($user['apiKey']); ?>" placeholder="api key">
161 161
 		</div>
162 162
 	</div>
163 163
 	<div class="form-group">
164 164
 		<label class="col-sm-3 control-label" for="checkFrequency">Check Frequency</label>
165 165
 		<div class="col-sm-6">
166 166
 			<select id="checkFrequency" name="checkFrequency" class="form-control">
167
-				<option value="weekly"<?php if($user['checkFrequency']=='weekly') echo ' selected'?>>Weekly</option>
168
-				<option value="daily"<?php if($user['checkFrequency']=='daily') echo ' selected'?>>Daily</option>
169
-				<option value="8hour"<?php if($user['checkFrequency']=='8hour') echo ' selected'?>>Every 8 Hours</option>
170
-				<option value="2hour"<?php if($user['checkFrequency']=='2hour') echo ' selected'?>>Every 2 Hours</option>
171
-				<option value="1hour"<?php if($user['checkFrequency']=='1hour') echo ' selected'?>>Hourly</option>
167
+				<option value="weekly"<?php if ($user['checkFrequency']=='weekly') echo ' selected'?>>Weekly</option>
168
+				<option value="daily"<?php if ($user['checkFrequency']=='daily') echo ' selected'?>>Daily</option>
169
+				<option value="8hour"<?php if ($user['checkFrequency']=='8hour') echo ' selected'?>>Every 8 Hours</option>
170
+				<option value="2hour"<?php if ($user['checkFrequency']=='2hour') echo ' selected'?>>Every 2 Hours</option>
171
+				<option value="1hour"<?php if ($user['checkFrequency']=='1hour') echo ' selected'?>>Hourly</option>
172 172
 			</select>
173 173
 		</div>
174 174
 	</div>
@@ -190,7 +190,7 @@  discard block
 block discarded – undo
190 190
 		<div class="col-sm-6">
191 191
 			<div class="input-group">
192 192
 				<span class="input-group-addon">@</span>
193
-				<input class="form-control" type="text" id="twitterHandle" name="twitterHandle" value="<?php echo($user['twitterHandle']);?>" placeholder="twitter username">
193
+				<input class="form-control" type="text" id="twitterHandle" name="twitterHandle" value="<?php echo($user['twitterHandle']); ?>" placeholder="twitter username">
194 194
 			</div>
195 195
 		</div>
196 196
 	</div>
@@ -200,7 +200,7 @@  discard block
 block discarded – undo
200 200
 		</label>
201 201
 		<div class="col-sm-6">
202 202
 			<div class="input-group">
203
-				<input class="form-control" type="text" id="apiCallbackURL" name="apiCallbackURL" value="<?php echo($user['apiCallbackURL']);?>" placeholder="api callback url">
203
+				<input class="form-control" type="text" id="apiCallbackURL" name="apiCallbackURL" value="<?php echo($user['apiCallbackURL']); ?>" placeholder="api callback url">
204 204
 				<span class="input-group-btn">
205 205
 					<button class="btn btn-default" type="button" onclick="testAPIUrl()">Test Callback</button>
206 206
 				</span>
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
 		</div>
210 210
 	</div>
211 211
 	<div class="form-group">
212
-		<label class="col-sm-3 control-label" for="disableEmailNotices"><input type="checkbox" id="disableEmailNotices" name="disableEmailNotices" value="1" class="input-block-level" <?php if($user['disableEmailNotices']==1) echo(' checked');?>></label>
212
+		<label class="col-sm-3 control-label" for="disableEmailNotices"><input type="checkbox" id="disableEmailNotices" name="disableEmailNotices" value="1" class="input-block-level" <?php if ($user['disableEmailNotices']==1) echo(' checked'); ?>></label>
213 213
 		<div class="col-sm-6">
214 214
 			Disable Notices<br/><small>You can pause receiving email/text alerts when your status changes.  Useful if you have a frequently changing network.  This does not pause api call backs.</small>
215 215
 		</div>
@@ -225,7 +225,7 @@  discard block
 block discarded – undo
225 225
 			<button type="submit" name="submit" value="submit" class="btn btn-primary">Save changes</button>
226 226
 		</div>
227 227
 	</div>
228
-	<input type="hidden" value="<?php echo($user['passwd']);?>" name="passwdOld"/>
228
+	<input type="hidden" value="<?php echo($user['passwd']); ?>" name="passwdOld"/>
229 229
 </form>
230 230
 
231 231
 <br/><br/><br/><br/>
Please login to merge, or discard this patch.
Braces   +13 added lines, -5 removed lines patch added patch discarded remove patch
@@ -35,14 +35,16 @@  discard block
 block discarded – undo
35 35
 if($testUrl!=''){
36 36
 	if(Utilities::testAPICallback($testUrl)){
37 37
 		echo('true');
38
-	}else{
38
+	} else{
39 39
 		echo('false');
40 40
 	}
41 41
 	exit();
42 42
 }
43 43
 
44 44
 if (isset($_POST["submit"])) {
45
-	if($passwd=='') $message[] = 'You must select a password.';
45
+	if($passwd=='') {
46
+		$message[] = 'You must select a password.';
47
+	}
46 48
 
47 49
 	if($passwdOld != $passwd){
48 50
 		$passwdOld = md5($passwd);
@@ -164,7 +166,8 @@  discard block
 block discarded – undo
164 166
 		<label class="col-sm-3 control-label" for="checkFrequency">Check Frequency</label>
165 167
 		<div class="col-sm-6">
166 168
 			<select id="checkFrequency" name="checkFrequency" class="form-control">
167
-				<option value="weekly"<?php if($user['checkFrequency']=='weekly') echo ' selected'?>>Weekly</option>
169
+				<option value="weekly"<?php if($user['checkFrequency']=='weekly') {
170
+	echo ' selected'?>>Weekly</option>
168 171
 				<option value="daily"<?php if($user['checkFrequency']=='daily') echo ' selected'?>>Daily</option>
169 172
 				<option value="8hour"<?php if($user['checkFrequency']=='8hour') echo ' selected'?>>Every 8 Hours</option>
170 173
 				<option value="2hour"<?php if($user['checkFrequency']=='2hour') echo ' selected'?>>Every 2 Hours</option>
@@ -190,7 +193,9 @@  discard block
 block discarded – undo
190 193
 		<div class="col-sm-6">
191 194
 			<div class="input-group">
192 195
 				<span class="input-group-addon">@</span>
193
-				<input class="form-control" type="text" id="twitterHandle" name="twitterHandle" value="<?php echo($user['twitterHandle']);?>" placeholder="twitter username">
196
+				<input class="form-control" type="text" id="twitterHandle" name="twitterHandle" value="<?php echo($user['twitterHandle']);
197
+}
198
+?>" placeholder="twitter username">
194 199
 			</div>
195 200
 		</div>
196 201
 	</div>
@@ -209,7 +214,10 @@  discard block
 block discarded – undo
209 214
 		</div>
210 215
 	</div>
211 216
 	<div class="form-group">
212
-		<label class="col-sm-3 control-label" for="disableEmailNotices"><input type="checkbox" id="disableEmailNotices" name="disableEmailNotices" value="1" class="input-block-level" <?php if($user['disableEmailNotices']==1) echo(' checked');?>></label>
217
+		<label class="col-sm-3 control-label" for="disableEmailNotices"><input type="checkbox" id="disableEmailNotices" name="disableEmailNotices" value="1" class="input-block-level" <?php if($user['disableEmailNotices']==1) {
218
+	echo(' checked');
219
+}
220
+?>></label>
213 221
 		<div class="col-sm-6">
214 222
 			Disable Notices<br/><small>You can pause receiving email/text alerts when your status changes.  Useful if you have a frequently changing network.  This does not pause api call backs.</small>
215 223
 		</div>
Please login to merge, or discard this patch.
accountSubnav.inc.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@
 block discarded – undo
1 1
 <div id="accountSubnav">
2 2
 	<ul class="nav nav-tabs">
3
-		<li <?php if($pageName=='account.php') echo('class="active"');?>><a href="account.php">Profile</a></li>
4
-		<li <?php if($pageName=='monitorGroup.php') echo('class="active"');?>><a href="monitorGroup.php">Monitor Groups</a></li>
5
-		<li <?php if($pageName=='blockLists.php') echo('class="active"');?>><a href="blockLists.php">Block Lists</a></li>
6
-		<li <?php if($pageName=='apiDocumentation.php') echo('class="active"');?>><a href="apiDocumentation.php">API Documentation</a></li>
3
+		<li <?php if ($pageName=='account.php') echo('class="active"'); ?>><a href="account.php">Profile</a></li>
4
+		<li <?php if ($pageName=='monitorGroup.php') echo('class="active"'); ?>><a href="monitorGroup.php">Monitor Groups</a></li>
5
+		<li <?php if ($pageName=='blockLists.php') echo('class="active"'); ?>><a href="blockLists.php">Block Lists</a></li>
6
+		<li <?php if ($pageName=='apiDocumentation.php') echo('class="active"'); ?>><a href="apiDocumentation.php">API Documentation</a></li>
7 7
 	</ul>
8 8
 </div>
9 9
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +16 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,8 +1,20 @@
 block discarded – undo
1 1
 <div id="accountSubnav">
2 2
 	<ul class="nav nav-tabs">
3
-		<li <?php if($pageName=='account.php') echo('class="active"');?>><a href="account.php">Profile</a></li>
4
-		<li <?php if($pageName=='monitorGroup.php') echo('class="active"');?>><a href="monitorGroup.php">Monitor Groups</a></li>
5
-		<li <?php if($pageName=='blockLists.php') echo('class="active"');?>><a href="blockLists.php">Block Lists</a></li>
6
-		<li <?php if($pageName=='apiDocumentation.php') echo('class="active"');?>><a href="apiDocumentation.php">API Documentation</a></li>
3
+		<li <?php if($pageName=='account.php') {
4
+	echo('class="active"');
5
+}
6
+?>><a href="account.php">Profile</a></li>
7
+		<li <?php if($pageName=='monitorGroup.php') {
8
+	echo('class="active"');
9
+}
10
+?>><a href="monitorGroup.php">Monitor Groups</a></li>
11
+		<li <?php if($pageName=='blockLists.php') {
12
+	echo('class="active"');
13
+}
14
+?>><a href="blockLists.php">Block Lists</a></li>
15
+		<li <?php if($pageName=='apiDocumentation.php') {
16
+	echo('class="active"');
17
+}
18
+?>><a href="apiDocumentation.php">API Documentation</a></li>
7 19
 	</ul>
8 20
 </div>
9 21
\ No newline at end of file
Please login to merge, or discard this patch.
api.php 3 patches
Switch Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -24,51 +24,51 @@  discard block
 block discarded – undo
24 24
 }
25 25
 
26 26
 switch($type){
27
-	case 'updateDomains':
28
-		if($groupName=='') {
29
-			$result['status'] = 'groupName is required';
27
+		case 'updateDomains':
28
+			if($groupName=='') {
29
+				$result['status'] = 'groupName is required';
30
+				break;
31
+			}
32
+			$id = Utilities::ensureGroupExists($groupName);
33
+			Utilities::updateDomains($data, $id);
34
+			$result['status'] = 'success';
30 35
 			break;
31
-		}
32
-		$id = Utilities::ensureGroupExists($groupName);
33
-		Utilities::updateDomains($data, $id);
34
-		$result['status'] = 'success';
35
-		break;
36 36
 
37
-	case 'updateIPs':
38
-		if($groupName=='') {
39
-			$result['status'] = 'groupName is required';
37
+		case 'updateIPs':
38
+			if($groupName=='') {
39
+				$result['status'] = 'groupName is required';
40
+				break;
41
+			}
42
+			$id = Utilities::ensureGroupExists($groupName);
43
+			Utilities::updateIPs($data, $id);
44
+			$result['status'] = 'success';
40 45
 			break;
41
-		}
42
-		$id = Utilities::ensureGroupExists($groupName);
43
-		Utilities::updateIPs($data, $id);
44
-		$result['status'] = 'success';
45
-		break;
46 46
 
47
-	case 'checkHostStatus':
48
-		$result['status'] = 'success';
49
-		Utilities::setBlockLists();
50
-		$result['result'] = Utilities::checkBlacklists($data);
51
-		break;
47
+		case 'checkHostStatus':
48
+			$result['status'] = 'success';
49
+			Utilities::setBlockLists();
50
+			$result['result'] = Utilities::checkBlacklists($data);
51
+			break;
52 52
 
53
-	case 'clearAllHostAndGroupData':
54
-		$mysql = new _MySQL();
55
-		$mysql->connect(Setup::$connectionArray);
56
-		$mysql->runQuery("truncate table monitors");
57
-		$mysql->runQuery("truncate table monitorGroup");
58
-		$result['status'] = 'success';
59
-		break;
53
+		case 'clearAllHostAndGroupData':
54
+			$mysql = new _MySQL();
55
+			$mysql->connect(Setup::$connectionArray);
56
+			$mysql->runQuery("truncate table monitors");
57
+			$mysql->runQuery("truncate table monitorGroup");
58
+			$result['status'] = 'success';
59
+			break;
60 60
 
61
-	case 'blacklistStatus':
62
-		$localCache = new _FileCache('blacklistmonitor-api', 90);
63
-		$cacheKey = md5("$username|$passwd|$apiKey|$type|$data");
64
-		$cacheData = $localCache->get($cacheKey);
65
-		if ($cacheData !== false) {
66
-			output($cacheData);
67
-		}
68
-		$mysql = new _MySQL();
69
-		$mysql->connect(Setup::$connectionArray);
70
-		$searchSQL = '';
71
-		switch($data){
61
+		case 'blacklistStatus':
62
+			$localCache = new _FileCache('blacklistmonitor-api', 90);
63
+			$cacheKey = md5("$username|$passwd|$apiKey|$type|$data");
64
+			$cacheData = $localCache->get($cacheKey);
65
+			if ($cacheData !== false) {
66
+				output($cacheData);
67
+			}
68
+			$mysql = new _MySQL();
69
+			$mysql->connect(Setup::$connectionArray);
70
+			$searchSQL = '';
71
+			switch($data){
72 72
 			case 'changed':
73 73
 				$searchSQL .= " and lastStatusChanged = 1 ";
74 74
 				break;
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
 				break;
80 80
 			case 'all':
81 81
 			default:
82
-		}
82
+			}
83 83
 
84 84
 		$rs = $mysql->runQuery("
85 85
 			select ipDomain,isBlocked,rDNS,status,lastStatusChangeTime,lastUpdate
@@ -101,8 +101,8 @@  discard block
 block discarded – undo
101 101
 		$localCache->set($cacheKey, $result);
102 102
 		break;
103 103
 
104
-	default:
105
-		$result['status'] = 'no such method';
104
+		default:
105
+			$result['status'] = 'no such method';
106 106
 }
107 107
 
108 108
 output();
Please login to merge, or discard this patch.
Braces   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@
 block discarded – undo
42 42
 				domains = '".$mysql->escape($domains)."'
43 43
 			where id = $id
44 44
 			");
45
-	}else{
45
+	} else{
46 46
 		$mysql->runQuery("
47 47
 			insert into monitorGroup set groupName = '".$mysql->escape($groupName)."',
48 48
 				ips = '".$mysql->escape($ips)."',
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -18,14 +18,14 @@  discard block
 block discarded – undo
18 18
 );
19 19
 
20 20
 $id = Utilities::validateLogin($username, $passwd, true, $apiKey);
21
-if($id == 0) {
21
+if ($id==0) {
22 22
 	$result['status'] = 'invalid login';
23 23
 	output();
24 24
 }
25 25
 
26
-switch($type){
26
+switch ($type) {
27 27
 	case 'updateDomains':
28
-		if($groupName=='') {
28
+		if ($groupName=='') {
29 29
 			$result['status'] = 'groupName is required';
30 30
 			break;
31 31
 		}
@@ -35,7 +35,7 @@  discard block
 block discarded – undo
35 35
 		break;
36 36
 
37 37
 	case 'updateIPs':
38
-		if($groupName=='') {
38
+		if ($groupName=='') {
39 39
 			$result['status'] = 'groupName is required';
40 40
 			break;
41 41
 		}
@@ -62,13 +62,13 @@  discard block
 block discarded – undo
62 62
 		$localCache = new _FileCache('blacklistmonitor-api', 90);
63 63
 		$cacheKey = md5("$username|$passwd|$apiKey|$type|$data");
64 64
 		$cacheData = $localCache->get($cacheKey);
65
-		if ($cacheData !== false) {
65
+		if ($cacheData!==false) {
66 66
 			output($cacheData);
67 67
 		}
68 68
 		$mysql = new _MySQL();
69 69
 		$mysql->connect(Setup::$connectionArray);
70 70
 		$searchSQL = '';
71
-		switch($data){
71
+		switch ($data) {
72 72
 			case 'changed':
73 73
 				$searchSQL .= " and lastStatusChanged = 1 ";
74 74
 				break;
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 			where 1=1 $searchSQL");
88 88
 		$result['status'] = 'success';
89 89
 		$result['result'] = array();
90
-		while($row = mysqli_fetch_array($rs)){
90
+		while ($row = mysqli_fetch_array($rs)) {
91 91
 			$result['result'][] = array(
92 92
 				'host'=>$row['ipDomain'],
93 93
 				'isBlocked'=>$row['isBlocked'],
@@ -107,11 +107,11 @@  discard block
 block discarded – undo
107 107
 
108 108
 output();
109 109
 
110
-function output($data = false){
110
+function output($data = false) {
111 111
 	global $result;
112
-	if($data!==false){
112
+	if ($data!==false) {
113 113
 		echo(json_encode($data));
114
-	}else{
114
+	}else {
115 115
 		echo(json_encode($result));
116 116
 	}
117 117
 	exit();
Please login to merge, or discard this patch.
apiDocumentation.php 1 patch
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -2,7 +2,7 @@  discard block
 block discarded – undo
2 2
 class_exists('Setup', false) or include('classes/Setup.class.php');
3 3
 class_exists('Utilities', false) or include('classes/Utilities.class.php');
4 4
 
5
-if(Utilities::isLoggedIn()===false){
5
+if (Utilities::isLoggedIn()===false) {
6 6
 	header('Location: login.php');
7 7
 	exit();
8 8
 }
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
 	</tr>
29 29
 	<tr>
30 30
 		<td>apiKey</td>
31
-		<td>Your api key: <?php echo $user['apiKey'];?></td>
31
+		<td>Your api key: <?php echo $user['apiKey']; ?></td>
32 32
 	</tr>
33 33
 	<tr>
34 34
 		<td>type</td>
@@ -65,7 +65,7 @@  discard block
 block discarded – undo
65 65
 <br/>
66 66
 <pre>
67 67
 &lt;?php
68
-$apiKey = '<?php echo $user['apiKey'];?>';
68
+$apiKey = '<?php echo $user['apiKey']; ?>';
69 69
 
70 70
 $requestBody =
71 71
 	&quot;apiKey=&quot;.urlencode($apiKey).
Please login to merge, or discard this patch.
blockLists.php 2 patches
Braces   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -21,7 +21,7 @@  discard block
 block discarded – undo
21 21
 			update blockLists
22 22
 			set isActive = '0'
23 23
 			where md5(host) = '".$mysql->escape($host)."'");
24
-	}else{
24
+	} else{
25 25
 		$mysql->runQuery("
26 26
 			update blockLists
27 27
 			set isActive = '1'
@@ -103,7 +103,7 @@  discard block
 block discarded – undo
103 103
 			echo('<td style="text-align: center;">');
104 104
 			if($row['isActive']==0){
105 105
 				echo('<a data-blstatus="0" data-host="'.md5($row['host']).'" id="'.md5($row['host']).'" class="blockListLinks glyphicon glyphicon-remove" href="#"></a></td>');
106
-			}else{
106
+			} else{
107 107
 				echo('<a data-blstatus="1" data-host="'.md5($row['host']).'" id="'.md5($row['host']).'" class="blockListLinks glyphicon glyphicon-ok" href="#"></a></td>');
108 108
 			}
109 109
 			echo('<td style="white-space: nowrap"><a target="_blank" href="'.$row['website'].'">'.$row['host'].'</a></td>');
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
 class_exists('Utilities', false) or include('classes/Utilities.class.php');
4 4
 class_exists('_MySQL', false) or include('classes/_MySQL.class.php');
5 5
 
6
-if(Utilities::isLoggedIn()===false){
6
+if (Utilities::isLoggedIn()===false) {
7 7
 	header('Location: login.php?location='.urlencode('hosts.php'));
8 8
 	exit();
9 9
 }
@@ -15,13 +15,13 @@  discard block
 block discarded – undo
15 15
 $user = Utilities::getAccount();
16 16
 $mysql = new _MySQL();
17 17
 $mysql->connect(Setup::$connectionArray);
18
-if($host != ''){
19
-	if($toggle==0){
18
+if ($host!='') {
19
+	if ($toggle==0) {
20 20
 		$mysql->runQuery("
21 21
 			update blockLists
22 22
 			set isActive = '0'
23 23
 			where md5(host) = '".$mysql->escape($host)."'");
24
-	}else{
24
+	}else {
25 25
 		$mysql->runQuery("
26 26
 			update blockLists
27 27
 			set isActive = '1'
@@ -98,28 +98,28 @@  discard block
 block discarded – undo
98 98
 		</thead>
99 99
 		<tbody>
100 100
 		<?php
101
-		while($row = mysqli_fetch_array($rs)){
101
+		while ($row = mysqli_fetch_array($rs)) {
102 102
 			echo('<tr>');
103 103
 			echo('<td style="text-align: center;">');
104
-			if($row['isActive']==0){
104
+			if ($row['isActive']==0) {
105 105
 				echo('<a data-blstatus="0" data-host="'.md5($row['host']).'" id="'.md5($row['host']).'" class="blockListLinks glyphicon glyphicon-remove" href="#"></a></td>');
106
-			}else{
106
+			}else {
107 107
 				echo('<a data-blstatus="1" data-host="'.md5($row['host']).'" id="'.md5($row['host']).'" class="blockListLinks glyphicon glyphicon-ok" href="#"></a></td>');
108 108
 			}
109 109
 			echo('<td style="white-space: nowrap"><a target="_blank" href="'.$row['website'].'">'.$row['host'].'</a></td>');
110 110
 			echo('<td style="white-space: nowrap">'.($row['monitorType']=='ip' ? 'IP' : 'Domain').'</td>');
111 111
 			echo('<td>'.$row['description'].'</td>');
112 112
 			echo('<td style="text-align: center;">');
113
-			switch($row['importance']){
113
+			switch ($row['importance']) {
114 114
 				case 3: echo('<span class="label label-primary">High</span>'); break;
115 115
 				case 2: echo('<span class="label label-info">Medium</span>'); break;
116 116
 				case 1: echo('<span class="label label-default">Low</span>'); break;
117 117
 			}
118 118
 			echo('</td>');
119
-			echo('<td style="white-space: nowrap">'.number_format($row['blocksToday'],0).'</td>');
120
-			echo('<td style="white-space: nowrap">'.number_format($row['cleanToday'],0).'</td>');
121
-			echo('<td style="white-space: nowrap">'.number_format($row['blocksYesterday'],0).'</td>');
122
-			echo('<td style="white-space: nowrap">'.number_format($row['cleanYesterday'],0).'</td>');
119
+			echo('<td style="white-space: nowrap">'.number_format($row['blocksToday'], 0).'</td>');
120
+			echo('<td style="white-space: nowrap">'.number_format($row['cleanToday'], 0).'</td>');
121
+			echo('<td style="white-space: nowrap">'.number_format($row['blocksYesterday'], 0).'</td>');
122
+			echo('<td style="white-space: nowrap">'.number_format($row['cleanYesterday'], 0).'</td>');
123 123
 			echo('</tr>');
124 124
 		}
125 125
 		$mysql->close();
Please login to merge, or discard this patch.
classes/Setup.class.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -9,22 +9,22 @@  discard block
 block discarded – undo
9 9
 
10 10
 	public function __construct() {
11 11
 
12
-		if(self::$instance===null){
12
+		if (self::$instance===null) {
13 13
 
14
-			if(!file_exists('/etc/blacklistmonitor.cfg')) echo('no config file in /etc/blacklistmonitor.cfg');
14
+			if (!file_exists('/etc/blacklistmonitor.cfg')) echo('no config file in /etc/blacklistmonitor.cfg');
15 15
 			ini_set('error_reporting', E_ALL | E_STRICT | E_NOTICE);
16 16
 			$cfg = parse_ini_file('/etc/blacklistmonitor.cfg', false);
17 17
 			ini_set('display_errors', $cfg['display_errors']);
18 18
 			ini_set('error_log', $cfg['log_path']);
19 19
 
20 20
 			self::$settings = $cfg;
21
-			self::$settings['dns_servers'] = explode(',',$cfg['dns_servers']);
21
+			self::$settings['dns_servers'] = explode(',', $cfg['dns_servers']);
22 22
 
23 23
 			// clean up
24
-			if(Setup::$settings['rbl_txt_extended_status']=='true' ||
25
-			  Setup::$settings['rbl_txt_extended_status']=='1'){
24
+			if (Setup::$settings['rbl_txt_extended_status']=='true' ||
25
+			  Setup::$settings['rbl_txt_extended_status']=='1') {
26 26
 				Setup::$settings['rbl_txt_extended_status'] = true;
27
-			}else{
27
+			}else {
28 28
 				Setup::$settings['rbl_txt_extended_status'] = false;
29 29
 			}
30 30
 
@@ -44,6 +44,6 @@  discard block
 block discarded – undo
44 44
 }
45 45
 
46 46
 Setup::$instance = new Setup();
47
-if(php_sapi_name()!=='cli'){
47
+if (php_sapi_name()!=='cli') {
48 48
 	session_start();
49 49
 }
50 50
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +4 added lines, -2 removed lines patch added patch discarded remove patch
@@ -11,7 +11,9 @@  discard block
 block discarded – undo
11 11
 
12 12
 		if(self::$instance===null){
13 13
 
14
-			if(!file_exists('/etc/blacklistmonitor.cfg')) echo('no config file in /etc/blacklistmonitor.cfg');
14
+			if(!file_exists('/etc/blacklistmonitor.cfg')) {
15
+				echo('no config file in /etc/blacklistmonitor.cfg');
16
+			}
15 17
 			ini_set('error_reporting', E_ALL | E_STRICT | E_NOTICE);
16 18
 			$cfg = parse_ini_file('/etc/blacklistmonitor.cfg', false);
17 19
 			ini_set('display_errors', $cfg['display_errors']);
@@ -24,7 +26,7 @@  discard block
 block discarded – undo
24 26
 			if(Setup::$settings['rbl_txt_extended_status']=='true' ||
25 27
 			  Setup::$settings['rbl_txt_extended_status']=='1'){
26 28
 				Setup::$settings['rbl_txt_extended_status'] = true;
27
-			}else{
29
+			} else{
28 30
 				Setup::$settings['rbl_txt_extended_status'] = false;
29 31
 			}
30 32
 
Please login to merge, or discard this patch.