Continued: master
authorRoland Häder <roland@mxchange.org>
Wed, 6 Sep 2023 02:36:45 +0000 (04:36 +0200)
committerRoland Häder <roland@mxchange.org>
Wed, 6 Sep 2023 02:43:42 +0000 (04:43 +0200)
- removed last remaining closing PHP tag
- added type-hints for scalar parameter
- fixed possible E_NOTICE and E_WARNING when configuration file exists but
  contains invalid data
- fixed BadFunctionCallException

config/db_config.php.dist
libs/lib_connect.php
libs/lib_detector.php
libs/lib_general.php

index a6368fb10b047b34fae2b61a165e4cd447eab99b..5cc2b394c23b0724f04518e68ed1229e20c33fff 100644 (file)
@@ -39,6 +39,3 @@ $GLOBALS['ctracker_debug_enabled'] = FALSE;
 
 // Email recipient for all emails
 $GLOBALS['ctracker_email'] = 'you@domain.invalid';
-
-// [EOF]
-?>
index f3c0161f91a252e295cf13a92efd008be3df0a68..269062421a5aa80ce032ab03d46c9759e116b56c 100644 (file)
@@ -66,18 +66,22 @@ function isCrackerTrackerDatabaseLinkUp () {
 }
 
 // Database error detected
-function crackerTrackerDatabaseError ($F, $L) {
+function crackerTrackerDatabaseError (string $file, int $line) {
        // Should we debug?
        if (isCrackerTrackerDebug()) {
                // Output error
-               print 'Function    : ' . $F . '<br />';
-               print 'Line        : ' . $L . '<br />';
-               if (isset($GLOBALS['ctracker_link'])) {
-                       print 'MySQL error : ' . mysqli_error($GLOBALS['ctracker_link']) . '<br />';
+               print 'Function    : ' . $file . '<br />' . PHP_EOL;
+               print 'Line        : ' . $line . '<br />' . PHP_EOL;
+               if (isset($GLOBALS['ctracker_link']) && $GLOBALS['ctracker_link'] !== false) {
+                       print 'MySQL error : ' . mysqli_error($GLOBALS['ctracker_link']) . '<br />' . PHP_EOL;
                } else {
-                       print 'No MySQLi available.<br />';
+                       print 'No MySQLi available.<br />' . PHP_EOL;
+               }
+               if (isset($GLOBALS['ctracker_last_sql'])) {
+                       print 'Last SQL    : '. $GLOBALS['ctracker_last_sql'] . '<br />' . PHP_EOL;
+               } else {
+                       print 'No last SQL command available.<br />' . PHP_EOL;
                }
-               print 'Last SQL    : '. $GLOBALS['ctracker_last_sql'] . '<br />';
        }
 
        // Currently only die here
@@ -100,11 +104,11 @@ function crackerTrackerCloseDatabaseLink () {
 }
 
 // Inserts given array, if IP/check_get combination was not found
-function crackerTrackerInsertArray ($table, array $rowData) {
+function crackerTrackerInsertArray (string $table, array $rowData) {
        // Is it found?
        if (!isCrackerTrackerEntryFound($rowData)) {
                // Reset insert id
-               $GLOBALS['ctracker_last_insert_id'] = FALSE;
+               $GLOBALS['ctracker_last_insert_id'] = false;
 
                // Run it
                runCrackerTrackerSql(sprintf("INSERT INTO `%s` (`%s`) VALUES(%s)",
@@ -122,7 +126,7 @@ function crackerTrackerInsertArray ($table, array $rowData) {
 }
 
 // Updates a given entry by just counting it up
-function updateCrackerTrackerEntry (array $rowData, $countColumn = 'count') {
+function updateCrackerTrackerEntry (array $rowData, string $countColumn = 'count') {
        // The link should be up here
        if (!isCrackerTrackerDatabaseLinkUp()) {
                // Throw exception
@@ -159,7 +163,7 @@ function isCrackerTrackerEntryFound (array $rowData) {
 }
 
 // Escapes the string
-function crackerTrackerEscapeString ($string) {
+function crackerTrackerEscapeString (string $string) {
        // Is the link up?
        if (!isCrackerTrackerDatabaseLinkUp()) {
                // Then we cant use mysqli_real_escape_string!
@@ -177,7 +181,7 @@ function crackerTrackerEscapeString ($string) {
 }
 
 // Runs an SQL query and checks for errors
-function runCrackerTrackerSql ($sqlString, $function, $line) {
+function runCrackerTrackerSql (string $sqlString, string $function, int $line) {
        // Is the link up?
        if (!isCrackerTrackerDatabaseLinkUp()) {
                // Abort here
@@ -195,9 +199,9 @@ function runCrackerTrackerSql ($sqlString, $function, $line) {
 }
 
 // Checks wether a table was found
-function isCrackerTrackerTableCreated ($table) {
+function isCrackerTrackerTableCreated (string $table) {
        // Default is not found
-       $found = FALSE;
+       $found = false;
 
        // Run the query
        $result = runCrackerTrackerSql('SHOW TABLES', __FUNCTION__, __LINE__);
@@ -210,7 +214,7 @@ function isCrackerTrackerTableCreated ($table) {
                // Is the table there?
                if ($tab == $table) {
                        // Okay, found. So abort
-                       $found = TRUE;
+                       $found = true;
                        break;
                }
        }
@@ -223,7 +227,7 @@ function isCrackerTrackerTableCreated ($table) {
 }
 
 // Creates the given table with columns
-function crackerTrackerCreateTable ($table, array $columns, array $keys) {
+function crackerTrackerCreateTable (string $table, array $columns, array $keys) {
        // Begin the SQL
        $sqlString = 'CREATE TABLE IF NOT EXISTS `' . $table . '` (';
 
@@ -240,7 +244,7 @@ function crackerTrackerCreateTable ($table, array $columns, array $keys) {
        $sqlString .= 'PRIMARY KEY (`' . $table . '`), ';
 
        // Add keys
-       foreach ($keys as $key=>$type) {
+       foreach ($keys as $key => $type) {
                // Add this entry
                $sqlString .= '' . $type . ' (`' . $key . '`), ';
        }
@@ -253,7 +257,7 @@ function crackerTrackerCreateTable ($table, array $columns, array $keys) {
 }
 
 // Inits a table by inserting 
-function crackerTrackerInitTable ($table) {
+function crackerTrackerInitTable (string $table) {
        // Prepare SQL and run it
        runCrackerTrackerSql('INSERT INTO `' . $table . '` (`' . $table . '`) VALUES (NULL)');
 }
@@ -310,7 +314,7 @@ function crackerTrackerLoadConfig () {
 }
 
 // Getter for config
-function getCrackerTrackerConfig ($entry) {
+function getCrackerTrackerConfig (string $entry) {
        // Is the config entry there?
        if (!isset($GLOBALS['ctracker_config'][$entry])) {
                // Then better die here, else we may have an endless loop
@@ -332,7 +336,7 @@ function isCrackerTrackerIpSuspicious () {
        // Skip this silently if we have not config
        if (!isCrackerTrackerDatabaseLinkUp()) {
                // Skip this step silently, all is not suspicious
-               return FALSE;
+               return false;
        }
 
        // Check if an entry is there
@@ -345,7 +349,7 @@ function isCrackerTrackerIpSuspicious () {
        $found = ($rows > 0);
 
        // And again?
-       if ($found === TRUE) {
+       if ($found === true) {
                // Yes, one is found, then load it
                $result = runCrackerTrackerSql("SELECT SQL_SMALL_RESULT * FROM `ctracker_data` USE INDEX (`remote_proxy_last`) WHERE `remote_addr`='" . determineCrackerTrackerRealRemoteAddress() . "' OR `proxy_addr`='" . getenv('REMOTE_ADDR') . "' ORDER BY `last_attempt` DESC LIMIT 1", __FUNCTION__, __LINE__);
 
@@ -369,7 +373,7 @@ function ifCrackerTrackerIpHasTicket () {
        $found = (mysqli_num_rows($result) == 1);
 
        // And again?
-       if ($found === TRUE) {
+       if ($found === true) {
                // Cache the ticket data
                $GLOBALS['ctracker_last_ticket'] = mysqli_fetch_array($result);
        }
index d0cf25d4988f3830c92cdd284216f939fbb175fd..122f773c465a188479bb3c8ba5b0e65a6c6e40d5 100644 (file)
@@ -223,7 +223,7 @@ function initCrackerTrackerArrays () {
 
        // Also block these requests (mostly you don't want CONNECT to some SMTP sites)
        $GLOBALS['ctracker_blocked_methods'] = [
-               'CONNECT' => TRUE,
+               'CONNECT' => true,
        ];
 
        // Init more elements
@@ -236,8 +236,8 @@ function initCrackerTrackerArrays () {
 // Checks for worms
 function isCrackerTrackerWormDetected () {
        // Check against the whole list
-       $GLOBALS['ctracker_checked_get'] = urldecode(str_ireplace($GLOBALS['ctracker_get_blacklist'], '*', crackerTrackerQueryString(TRUE)));
-       $GLOBALS['ctracker_checked_ua']  = urldecode(str_ireplace($GLOBALS['ctracker_ua_blacklist'], '*', crackerTrackerUserAgent(TRUE)));
+       $GLOBALS['ctracker_checked_get'] = urldecode(str_ireplace($GLOBALS['ctracker_get_blacklist'], '*', crackerTrackerQueryString(true)));
+       $GLOBALS['ctracker_checked_ua']  = urldecode(str_ireplace($GLOBALS['ctracker_ua_blacklist'], '*', crackerTrackerUserAgent(true)));
 
        /*
         * If it differs to original and the *whole* request string is not in
@@ -245,9 +245,9 @@ function isCrackerTrackerWormDetected () {
         */
        $isWorm = (
                (
-                       $GLOBALS['ctracker_checked_get'] != crackerTrackerQueryString(TRUE) && (!in_array(crackerTrackerQueryString(TRUE), $GLOBALS['ctracker_whitelist']))
+                       $GLOBALS['ctracker_checked_get'] != crackerTrackerQueryString(true) && (!in_array(crackerTrackerQueryString(true), $GLOBALS['ctracker_whitelist']))
                ) || (
-                       $GLOBALS['ctracker_checked_ua'] != crackerTrackerUserAgent(TRUE)
+                       $GLOBALS['ctracker_checked_ua'] != crackerTrackerUserAgent(true)
                ) || (
                        isset($GLOBALS['ctracker_blocked_methods'][crackerTrackerRequestMethod()])
                )
@@ -312,7 +312,7 @@ function sendCrackerTrackerTicketMails () {
 }
 
 // Sends a mail out
-function crackerTrackerSendMail ($mail, $recipient = NULL, $subject = NULL) {
+function crackerTrackerSendMail (string $mail, string $recipient = NULL, string $subject = NULL) {
        // Construct dummy array
        $rowData = [
                'remote_addr'    => determineCrackerTrackerRealRemoteAddress(),
@@ -330,7 +330,7 @@ function crackerTrackerSendMail ($mail, $recipient = NULL, $subject = NULL) {
                        print 'Recipient=' . $recipient . '<br />Subject=' . $subject . '<br />Text=<pre>' . $mail . '</pre>';
 
                        // All fine
-                       return TRUE;
+                       return true;
                } elseif (!is_null($recipient)) {
                        // Recipient specified
                        return mail($recipient, $subject, $mail, $GLOBALS['ctracker_header']);
@@ -346,7 +346,7 @@ function crackerTrackerSendMail ($mail, $recipient = NULL, $subject = NULL) {
                print 'Recipient=' . $recipient . '<br />Subject=' . $subject . '<br />Text=<pre>' . $mail . '</pre>';
 
                // All fine
-               return TRUE;
+               return true;
        }
 }
 
@@ -381,8 +381,11 @@ Filtered POST string : ' . $GLOBALS['ctracker_checked_post'] . '
 
 // Sleeps for a random time and aborts the script
 function crackerTrackerDie () {
-       // Close database link
-       crackerTrackerCloseDatabaseLink();
+       // Check if link is up
+       if (isCrackerTrackerDatabaseLinkUp()) {
+               // Close database link
+               crackerTrackerCloseDatabaseLink();
+       }
 
        // Do only sleep if debug/developer mode is not enabled
        if (!isCrackerTrackerDebug()) {
index d6e1a87900ce077b9bcbb0faec7cfca0dfd8ff14..ad4f25bc2e38077a3b0b3c513f6e2e76d644ee65 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 // Implode recursive a multi-dimension array, taken from www.php.net
-function implode_r ($glue, $array, $array_name = NULL) {
+function implode_r (string $glue, array $array, string $array_name = NULL) {
        $return = [];
        while (list($key,$value) = @each($array)) {
                if (is_array($value)) {
@@ -90,7 +90,7 @@ function crackerTrackerLoadConfiguration () {
 // Getter for ctracker_debug_enabled
 function isCrackerTrackerDebug () {
        // Is it set?
-       $result = ((isset($GLOBALS['ctracker_debug_enabled'])) && ($GLOBALS['ctracker_debug_enabled'] === TRUE));
+       $result = ((isset($GLOBALS['ctracker_debug_enabled'])) && ($GLOBALS['ctracker_debug_enabled'] === true));
 
        // Debug message
        //* DEBUG: */ error_log('result=' . intval($result));
@@ -139,7 +139,7 @@ function isCrackerTrackerProxyUsed () {
 }
 
 // Detects the user-agent string
-function crackerTrackerUserAgent ($sanitize = FALSE) {
+function crackerTrackerUserAgent (bool $sanitize = false) {
        // Default is 'unknown'
        $ua = 'unknown';
 
@@ -150,7 +150,7 @@ function crackerTrackerUserAgent ($sanitize = FALSE) {
        }
 
        // Sanitize it?
-       if ($sanitize === TRUE) {
+       if ($sanitize === true) {
                // Sanitize ...
                $ua = crackerTrackerSanitize($ua);
        }
@@ -160,7 +160,7 @@ function crackerTrackerUserAgent ($sanitize = FALSE) {
 }
 
 // Detects the script name
-function crackerTrackerScriptName ($sanitize = FALSE) {
+function crackerTrackerScriptName (bool $sanitize = false) {
        // Default is NULL
        $scriptName = NULL;
 
@@ -171,7 +171,7 @@ function crackerTrackerScriptName ($sanitize = FALSE) {
        }
 
        // Sanitize it?
-       if ($sanitize === TRUE) {
+       if ($sanitize === true) {
                // Sanitize ...
                $scriptName = crackerTrackerSanitize($scriptName);
        }
@@ -181,7 +181,7 @@ function crackerTrackerScriptName ($sanitize = FALSE) {
 }
 
 // Detects the query string
-function crackerTrackerQueryString ($sanitize = FALSE) {
+function crackerTrackerQueryString (bool $sanitize = false) {
        // Default is NULL
        $query = NULL;
 
@@ -195,7 +195,7 @@ function crackerTrackerQueryString ($sanitize = FALSE) {
        }
 
        // Sanitize it?
-       if ((!empty($query)) && ($sanitize === TRUE)) {
+       if ((!empty($query)) && ($sanitize === true)) {
                // Sanitize ...
                $query = crackerTrackerSanitize($query);
        }
@@ -205,7 +205,7 @@ function crackerTrackerQueryString ($sanitize = FALSE) {
 }
 
 // Detects the server's name
-function crackerTrackerServerName ($sanitize = FALSE) {
+function crackerTrackerServerName (bool $sanitize = false) {
        // Default is NULL
        $serverName = NULL;
 
@@ -216,7 +216,7 @@ function crackerTrackerServerName ($sanitize = FALSE) {
        }
 
        // Sanitize it?
-       if ($sanitize === TRUE) {
+       if ($sanitize === true) {
                // Sanitize ...
                $serverName = crackerTrackerSanitize($serverName);
        }
@@ -226,7 +226,7 @@ function crackerTrackerServerName ($sanitize = FALSE) {
 }
 
 // Detects the referer
-function crackerTrackerReferer ($sanitize = FALSE) {
+function crackerTrackerReferer (bool $sanitize = false) {
        // Default is a dash
        $referer = '-';
 
@@ -237,7 +237,7 @@ function crackerTrackerReferer ($sanitize = FALSE) {
        }
 
        // Sanitize it?
-       if ($sanitize === TRUE) {
+       if ($sanitize === true) {
                // Sanitize ...
                $referer = crackerTrackerSanitize($referer);
        }
@@ -486,7 +486,7 @@ function getCrackerTrackerTicketId () {
 function sendCrackerTrackerCookie () {
        // Set the cookie
        // @TODO Why can't domain be set to value from crackerTrackerServerName() ?
-       setcookie('ctracker_ticket', getCrackerTrackerTicketId(), (time() + 60*60*24), '/', '', crackerTrackerSecured(), TRUE);
+       setcookie('ctracker_ticket', getCrackerTrackerTicketId(), (time() + 60*60*24), '/', '', crackerTrackerSecured(), true);
        $_COOKIE['ctracker_ticket'] = getCrackerTrackerTicketId();
 }
 
@@ -528,7 +528,7 @@ function crackerTrackerSendRawRedirect ($url) {
 
        // check if running on IIS < 6 with CGI-PHP
        if ((isset($_SERVER['SERVER_SOFTWARE'])) && (isset($_SERVER['GATEWAY_INTERFACE'])) &&
-               (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== FALSE) &&
+               (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== false) &&
                (preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($_SERVER['SERVER_SOFTWARE']), $matches)) &&
                ($matches[1] < 6)) {
                // Send the IIS header
@@ -610,7 +610,7 @@ function ifCtrackerTrackerAntiSpamFieldGiven () {
        // Is request method POST?
        if (crackerTrackerRequestMethod() != 'POST') {
                // Cannot be given
-               return FALSE;
+               return false;
        }
 
        // Walk through all fields
@@ -618,7 +618,7 @@ function ifCtrackerTrackerAntiSpamFieldGiven () {
                // Is one found?
                if (in_array($fieldName, $_POST) && !empty($_POST[$fieldName])) {
                        // Filled out!
-                       return TRUE;
+                       return true;
                }
        }
 }