2ee31dccf04a6b98d1755ef928dd254a1173b128
[moodle.git] / auth / nntp / auth.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Authentication Plugin: NNTP Authentication
19  * Authenticates against an NNTP server.
20  *
21  * @package auth_nntp
22  * @author Martin Dougiamas
23  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
24  */
26 defined('MOODLE_INTERNAL') || die();
28 require_once($CFG->libdir.'/authlib.php');
30 /**
31  * NNTP authentication plugin.
32  */
33 class auth_plugin_nntp extends auth_plugin_base {
35     /**
36      * Constructor.
37      */
38     public function __construct() {
39         $this->authtype = 'nntp';
40         $this->config = get_config('auth_nntp');
41     }
43     /**
44      * Old syntax of class constructor. Deprecated in PHP7.
45      *
46      * @deprecated since Moodle 3.1
47      */
48     public function auth_plugin_nntp() {
49         debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
50         self::__construct();
51     }
53     /**
54      * Returns true if the username and password work and false if they are
55      * wrong or don't exist.
56      *
57      * @param string $username The username
58      * @param string $password The password
59      * @return bool Authentication success or failure.
60      */
61     function user_login ($username, $password) {
62         if (! function_exists('imap_open')) {
63             print_error('auth_nntpnotinstalled','auth_nntp');
64             exit;
65         }
67         global $CFG;
69         // try each multiple host
70         $hosts = explode(';', $this->config->host);
71         foreach ($hosts as $host) {
72             $host = '{' . trim($host) . ':' . $this->config->port . '/nntp}';
74             error_reporting(0);
75             $connection = imap_open($host, $username, $password, OP_HALFOPEN);
76             error_reporting($CFG->debug);
78             if ($connection) {
79                 imap_close($connection);
80                 return true;
81             }
82         }
83         return false;
84     }
86     function prevent_local_passwords() {
87         return true;
88     }
90     /**
91      * Returns true if this authentication plugin is 'internal'.
92      *
93      * @return bool
94      */
95     function is_internal() {
96         return false;
97     }
99     /**
100      * Returns true if this authentication plugin can change the user's
101      * password.
102      *
103      * @return bool
104      */
105     function can_change_password() {
106         return false;
107     }