X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FExAuth.php;h=a6851c3852441358d184cc3ca785434c17773fab;hb=c69fa859c468bb881530abfa0ce8f78d43f68a89;hp=c68cd41166668d5b428f29557da7d74492c876f8;hpb=8db5b121ff0ac7a7f218605e039ad8f273f18ae3;p=friendica.git diff --git a/src/Util/ExAuth.php b/src/Util/ExAuth.php index c68cd41166..a6851c3852 100644 --- a/src/Util/ExAuth.php +++ b/src/Util/ExAuth.php @@ -38,6 +38,7 @@ use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Database\DBM; use Friendica\Model\User; +use Friendica\Util\Network; use dba; require_once 'include/dba.php'; @@ -46,7 +47,6 @@ class ExAuth { private $bDebug; private $host; - private $pidfile; /** * @brief Create the class @@ -140,7 +140,7 @@ class ExAuth $this->setHost($aCommand[2]); // Now we check if the given user is valid - $sUser = str_replace(array('%20', '(a)'), array(' ', '@'), $aCommand[1]); + $sUser = str_replace(['%20', '(a)'], [' ', '@'], $aCommand[1]); // Does the hostname match? So we try directly if ($a->get_hostname() == $aCommand[2]) { @@ -181,7 +181,7 @@ class ExAuth $url = ($ssl ? 'https' : 'http') . '://' . $host . '/noscrape/' . $user; - $data = z_fetch_url($url); + $data = Network::curl($url); if (!is_array($data)) { return false; @@ -220,16 +220,17 @@ class ExAuth $this->setHost($aCommand[2]); // We now check if the password match - $sUser = str_replace(array('%20', '(a)'), array(' ', '@'), $aCommand[1]); + $sUser = str_replace(['%20', '(a)'], [' ', '@'], $aCommand[1]); // Does the hostname match? So we try directly if ($a->get_hostname() == $aCommand[2]) { $this->writeLog(LOG_INFO, 'internal auth for ' . $sUser . '@' . $aCommand[2]); - $aUser = dba::select('user', ['uid', 'password'], ['nickname' => $sUser], ['limit' => 1]); + $aUser = dba::selectFirst('user', ['uid', 'password', 'legacy_password'], ['nickname' => $sUser]); if (DBM::is_result($aUser)) { - $uid = User::authenticate($aUser, $aCommand[3]); - $Error = $uid === false; + $uid = $aUser['uid']; + $success = User::authenticate($aUser, $aCommand[3]); + $Error = $success === false; } else { $this->writeLog(LOG_WARNING, 'user not found: ' . $sUser); $Error = true; @@ -270,7 +271,9 @@ class ExAuth */ private function checkCredentials($host, $user, $password, $ssl) { - $url = ($ssl ? 'https' : 'http') . '://' . $host . '/api/account/verify_credentials.json'; + $this->writeLog(LOG_INFO, 'external credential check for ' . $user . '@' . $host); + + $url = ($ssl ? 'https' : 'http') . '://' . $host . '/api/account/verify_credentials.json?skip_status=true'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); @@ -308,24 +311,25 @@ class ExAuth $lockpath = Config::get('jabber', 'lockpath'); if (is_null($lockpath)) { + $this->writeLog(LOG_INFO, 'No lockpath defined.'); return; } - $this->pidfile = new Pidfile($lockpath, $host); - if ($this->pidfile->isRunning()) { - $oldpid = $this->pidfile->pid(); - $this->writeLog(LOG_INFO, 'Process ' . $oldpid . ' was running for ' . $this->pidfile->runningTime() . ' seconds and will now be killed'); - $this->pidfile->kill(); - - // Wait until the other process is hopefully killed - sleep(2); - - $this->pidfile = new Pidfile($lockpath, $host); - if ($oldpid == $this->pidfile->pid()) { - $this->writeLog(LOG_ERR, 'Process ' . $oldpid . "wasn't killed in time. We now quit our process."); + $file = $lockpath . DIRECTORY_SEPARATOR . $host; + if (PidFile::isRunningProcess($file)) { + if (PidFile::killProcess($file)) { + $this->writeLog(LOG_INFO, 'Old process was successfully killed'); + } else { + $this->writeLog(LOG_ERR, "The old Process wasn't killed in time. We now quit our process."); die(); } } + + // Now it is safe to create the pid file + PidFile::create($file); + if (!file_exists($file)) { + $this->writeLog(LOG_WARNING, 'Logfile ' . $file . " couldn't be created."); + } } /**