X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FUtil%2FExAuth.php;h=d341682e806d04419743f9d5f698b87d375f395e;hb=37422dfa34855e36a6ce410b0241b4a662d0b33d;hp=5ae24534ac3e87f96fb2923529bfc08fa4b5dde1;hpb=d23c1c0da7448e4bf2f815f0ed3023521f21ab20;p=friendica.git diff --git a/src/Util/ExAuth.php b/src/Util/ExAuth.php index 5ae24534ac..d341682e80 100644 --- a/src/Util/ExAuth.php +++ b/src/Util/ExAuth.php @@ -13,14 +13,14 @@ * Installation: * * - Change it's owner to whichever user is running the server, ie. ejabberd - * $ chown ejabberd:ejabberd /path/to/friendica/scripts/auth_ejabberd.php + * $ chown ejabberd:ejabberd /path/to/friendica/bin/auth_ejabberd.php * * - Change the access mode so it is readable only to the user ejabberd and has exec - * $ chmod 700 /path/to/friendica/scripts/auth_ejabberd.php + * $ chmod 700 /path/to/friendica/bin/auth_ejabberd.php * * - Edit your ejabberd.cfg file, comment out your auth_method and add: * {auth_method, external}. - * {extauth_program, "/path/to/friendica/script/auth_ejabberd.php"}. + * {extauth_program, "/path/to/friendica/bin/auth_ejabberd.php"}. * * - Restart your ejabberd service, you should be able to login with your friendica auth info * @@ -36,12 +36,8 @@ namespace Friendica\Util; use Friendica\Core\Config; use Friendica\Core\PConfig; -use Friendica\Database\DBM; +use Friendica\Database\DBA; use Friendica\Model\User; -use dba; - -require_once 'include/dba.php'; -require_once 'include/dba.php'; class ExAuth { @@ -51,7 +47,6 @@ class ExAuth /** * @brief Create the class * - * @param boolean $bDebug Debug mode */ public function __construct() { @@ -67,12 +62,13 @@ class ExAuth * parameters * * @return null + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public function readStdin() { while (!feof(STDIN)) { // Quit if the database connection went down - if (!dba::connected()) { + if (!DBA::connected()) { $this->writeLog(LOG_ERR, 'the database connection went down'); return; } @@ -123,10 +119,11 @@ class ExAuth * @brief Check if the given username exists * * @param array $aCommand The command array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function isUser(array $aCommand) { - $a = get_app(); + $a = \get_app(); // Check if there is a username if (!isset($aCommand[1])) { @@ -140,12 +137,12 @@ 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]) { + if ($a->getHostName() == $aCommand[2]) { $this->writeLog(LOG_INFO, 'internal user check for ' . $sUser . '@' . $aCommand[2]); - $found = dba::exists('user', ['nickname' => $sUser]); + $found = DBA::exists('user', ['nickname' => $sUser]); } else { $found = false; } @@ -169,11 +166,12 @@ class ExAuth /** * @brief Check remote user existance via HTTP(S) * - * @param string $host The hostname - * @param string $user Username - * @param boolean $ssl Should the check be done via SSL? + * @param string $host The hostname + * @param string $user Username + * @param boolean $ssl Should the check be done via SSL? * * @return boolean Was the user found? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function checkUser($host, $user, $ssl) { @@ -181,17 +179,17 @@ class ExAuth $url = ($ssl ? 'https' : 'http') . '://' . $host . '/noscrape/' . $user; - $data = z_fetch_url($url); + $curlResult = Network::curl($url); - if (!is_array($data)) { + if (!$curlResult->isSuccess()) { return false; } - if ($data['return_code'] != '200') { + if ($curlResult->getReturnCode() != 200) { return false; } - $json = @json_decode($data['body']); + $json = @json_decode($curlResult->getBody()); if (!is_object($json)) { return false; } @@ -203,10 +201,11 @@ class ExAuth * @brief Authenticate the given user and password * * @param array $aCommand The command array + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function auth(array $aCommand) { - $a = get_app(); + $a = \get_app(); // check user authentication if (sizeof($aCommand) != 4) { @@ -220,14 +219,14 @@ 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]) { + if ($a->getHostName() == $aCommand[2]) { $this->writeLog(LOG_INFO, 'internal auth for ' . $sUser . '@' . $aCommand[2]); - $aUser = dba::selectFirst('user', ['uid', 'password'], ['nickname' => $sUser]); - if (DBM::is_result($aUser)) { + $aUser = DBA::selectFirst('user', ['uid', 'password', 'legacy_password'], ['nickname' => $sUser]); + if (DBA::isResult($aUser)) { $uid = $aUser['uid']; $success = User::authenticate($aUser, $aCommand[3]); $Error = $success === false; @@ -298,6 +297,7 @@ class ExAuth * @brief Set the hostname for this process * * @param string $host The hostname + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private function setHost($host) {