*
*/
+use Friendica\App;
+
if (sizeof($_SERVER["argv"]) == 0)
die();
global $a, $db;
-if (is_null($a))
- $a = new App;
+if (is_null($a)) {
+ $a = new App(dirname(__DIR__));
+}
if (is_null($db)) {
@include(".htconfig.php");
// 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");
* @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));
}
}
* @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));
}
}
fclose($this->rLogFile);
}
}
-?>