]> git.mxchange.org Git - friendica.git/blobdiff - include/auth_ejabberd.php
Merge pull request #3779 from annando/event-data
[friendica.git] / include / auth_ejabberd.php
index e1900dc7304df8501794b5f9537fc050d59f3e85..14f5dcfe0c797271ab5d09720223c2a8675d82a8 100755 (executable)
@@ -32,6 +32,8 @@
  *
  */
 
+use Friendica\App;
+
 if (sizeof($_SERVER["argv"]) == 0)
        die();
 
@@ -45,17 +47,16 @@ $directory = realpath($directory."/..");
 chdir($directory);
 require_once("boot.php");
 
-global $a, $db;
+global $a;
 
-if (is_null($a))
-       $a = new App;
+if (empty($a)) {
+       $a = new App(dirname(__DIR__));
+}
 
-if (is_null($db)) {
-       @include(".htconfig.php");
-       require_once("include/dba.php");
-       $db = new dba($db_host, $db_user, $db_pass, $db_data);
-       unset($db_host, $db_user, $db_pass, $db_data);
-};
+@include(".htconfig.php");
+require_once("include/dba.php");
+dba::connect($db_host, $db_user, $db_pass, $db_data);
+unset($db_host, $db_user, $db_pass, $db_data);
 
 // the logfile to which to write, should be writeable by the user which is running the server
 $sLogFile = get_config('jabber','logfile');
@@ -78,22 +79,20 @@ class exAuth {
         * @param boolean $bDebug Debug mode
         */
        public function __construct($sLogFile, $bDebug) {
-               global $db;
-
                // setter
                $this->sLogFile         = $sLogFile;
                $this->bDebug           = $bDebug;
 
                // Open the logfile if the logfile name is defined
                if ($this->sLogFile != '')
-                       $this->rLogFile = fopen($this->sLogFile, "a") or die("Error opening log file: ". $this->sLogFile);
+                       $this->rLogFile = fopen($this->sLogFile, "a") || die("Error opening log file: ". $this->sLogFile);
 
                $this->writeLog("[exAuth] start");
 
                // We are connected to the SQL server and are having a log file.
                do {
                        // Quit if the database connection went down
-                       if (!$db->connected()) {
+                       if (!dba::connected()) {
                                $this->writeDebugLog("[debug] the database connection went down");
                                return;
                        }
@@ -146,7 +145,7 @@ class exAuth {
         * @param array $aCommand The command array
         */
        private function isuser($aCommand) {
-               global $a;
+               $a = get_app();
 
                // Check if there is a username
                if (!isset($aCommand[1])) {
@@ -159,14 +158,19 @@ class exAuth {
                $sUser = str_replace(array("%20", "(a)"), array(" ", "@"), $aCommand[1]);
                $this->writeDebugLog("[debug] checking isuser for ". $sUser."@".$aCommand[2]);
 
-               // If the hostnames doesn't match, we try to check remotely
-               if ($a->get_hostname() != $aCommand[2])
-                       $found = $this->check_user($aCommand[2], $aCommand[1], true);
-               else {
+               // Does the hostname match? So we try directly
+               if ($a->get_hostname() == $aCommand[2]) {
                        $sQuery = "SELECT `uid` FROM `user` WHERE `nickname`='".dbesc($sUser)."'";
                        $this->writeDebugLog("[debug] using query ". $sQuery);
                        $r = q($sQuery);
                        $found = dbm::is_result($r);
+               } else {
+                       $found = false;
+               }
+
+               // If the hostnames doesn't match or there is some failure, we try to check remotely
+               if (!$found) {
+                       $found = $this->check_user($aCommand[2], $aCommand[1], true);
                }
 
                if ($found) {
@@ -214,7 +218,7 @@ class exAuth {
         * @param array $aCommand The command array
         */
        private function auth($aCommand) {
-               global $a;
+               $a = get_app();
 
                // check user authentication
                if (sizeof($aCommand) != 4) {
@@ -227,10 +231,8 @@ class exAuth {
                $sUser = str_replace(array("%20", "(a)"), array(" ", "@"), $aCommand[1]);
                $this->writeDebugLog("[debug] doing auth for ".$sUser."@".$aCommand[2]);
 
-               // If the hostnames doesn't match, we try to authenticate remotely
-               if ($a->get_hostname() != $aCommand[2])
-                       $Error = !$this->check_credentials($aCommand[2], $aCommand[1], $aCommand[3], true);
-               else {
+               // Does the hostname match? So we try directly
+               if ($a->get_hostname() == $aCommand[2]) {
                        $sQuery = "SELECT `uid`, `password` FROM `user` WHERE `nickname`='".dbesc($sUser)."'";
                        $this->writeDebugLog("[debug] using query ". $sQuery);
                        if ($oResult = q($sQuery)) {
@@ -246,6 +248,13 @@ class exAuth {
                                $this->writeLog("[exAuth] got password ".$oConfig[0]["v"]);
                                $Error = ($aCommand[3] != $oConfig[0]["v"]);
                        }
+               } else {
+                       $Error = true;
+               }
+
+               // If the hostnames doesn't match or there is some failure, we try to check remotely
+               if ($Error) {
+                       $Error = !$this->check_credentials($aCommand[2], $aCommand[1], $aCommand[3], true);
                }
 
                if ($Error) {
@@ -322,4 +331,3 @@ class exAuth {
                        fclose($this->rLogFile);
        }
 }
-?>