]> git.mxchange.org Git - friendica.git/blobdiff - include/auth_ejabberd.php
Documentation added
[friendica.git] / include / auth_ejabberd.php
index 9254fb804f3f8c881acc10fac7527d88d7674414..8ee3af8e2be23148342d2eb84bcffb6707ba8da4 100755 (executable)
@@ -143,38 +143,45 @@ class exAuth {
        /**
         * @brief Check if the given username exists
         *
-        * @param string $aCommand The command string
+        * @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])) {
                        $this->writeLog("[exAuth] invalid isuser command, no username given");
                        fwrite(STDOUT, pack("nn", 2, 0));
+                       return;
+               }
+
+               // Now we check if the given user is valid
+               $sUser = str_replace(array("%20", "(a)"), array(" ", "@"), $aCommand[1]);
+               $this->writeDebugLog("[debug] checking isuser for ". $sUser."@".$aCommand[2]);
+
+               // 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 {
-                       // Now we check if the given user is valid
-                       $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 {
-                               $sQuery = "SELECT `uid` FROM `user` WHERE `nickname`='".dbesc($sUser)."'";
-                               $this->writeDebugLog("[debug] using query ". $sQuery);
-                               $r = q($sQuery);
-                               $found = dbm::is_result($r);
-                       }
-                       if ($found) {
-                               // The user is okay
-                               $this->writeLog("[exAuth] valid user: ". $sUser);
-                               fwrite(STDOUT, pack("nn", 2, 1));
-                       } else {
-                               // The user isn't okay
-                               $this->writeLog("[exAuth] invalid user: ". $sUser);
-                               fwrite(STDOUT, pack("nn", 2, 0));
-                       }
+                       $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) {
+                       // The user is okay
+                       $this->writeLog("[exAuth] valid user: ". $sUser);
+                       fwrite(STDOUT, pack("nn", 2, 1));
+               } else {
+                       // The user isn't okay
+                       $this->writeLog("[exAuth] invalid user: ". $sUser);
+                       fwrite(STDOUT, pack("nn", 2, 0));
                }
        }
 
@@ -209,47 +216,54 @@ class exAuth {
        /**
         * @brief Authenticate the givven user and password
         *
-        * @param string $aCommand The command string
+        * @param array $aCommand The command array
         */
        private function auth($aCommand) {
-               global $a;
+               $a = get_app();
 
                // check user authentication
                if (sizeof($aCommand) != 4) {
                        $this->writeLog("[exAuth] invalid auth command, data missing");
                        fwrite(STDOUT, pack("nn", 2, 0));
-               } else {
-                       // We now check if the password match
-                       $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 {
-                               $sQuery = "SELECT `uid`, `password` FROM `user` WHERE `nickname`='".dbesc($sUser)."'";
-                               $this->writeDebugLog("[debug] using query ". $sQuery);
-                               if ($oResult = q($sQuery)) {
-                                       $uid = $oResult[0]["uid"];
-                                       $Error = ($oResult[0]["password"] != hash('whirlpool',$aCommand[3]));
-                               } else {
-                                       $this->writeLog("[MySQL] invalid query: ". $sQuery);
-                                       $Error = true;
-                                       $uid = -1;
-                               }
-                               if ($Error) {
-                                       $oConfig = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = 'xmpp' AND `k`='password' LIMIT 1;", intval($uid));
-                                       $this->writeLog("[exAuth] got password ".$oConfig[0]["v"]);
-                                       $Error = ($aCommand[3] != $oConfig[0]["v"]);
-                               }
+                       return;
+               }
+
+               // We now check if the password match
+               $sUser = str_replace(array("%20", "(a)"), array(" ", "@"), $aCommand[1]);
+               $this->writeDebugLog("[debug] doing auth for ".$sUser."@".$aCommand[2]);
+
+               // 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)) {
+                               $uid = $oResult[0]["uid"];
+                               $Error = ($oResult[0]["password"] != hash('whirlpool',$aCommand[3]));
+                       } else {
+                               $this->writeLog("[MySQL] invalid query: ". $sQuery);
+                               $Error = true;
+                               $uid = -1;
                        }
                        if ($Error) {
-                               $this->writeLog("[exAuth] authentification failed for user ".$sUser."@". $aCommand[2]);
-                               fwrite(STDOUT, pack("nn", 2, 0));
-                       } else {
-                               $this->writeLog("[exAuth] authentificated user ".$sUser."@".$aCommand[2]);
-                               fwrite(STDOUT, pack("nn", 2, 1));
+                               $oConfig = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = 'xmpp' AND `k`='password' LIMIT 1;", intval($uid));
+                               $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) {
+                       $this->writeLog("[exAuth] authentification failed for user ".$sUser."@". $aCommand[2]);
+                       fwrite(STDOUT, pack("nn", 2, 0));
+               } else {
+                       $this->writeLog("[exAuth] authentificated user ".$sUser."@".$aCommand[2]);
+                       fwrite(STDOUT, pack("nn", 2, 1));
                }
        }