|
8 | 8 | * See the COPYING-README file. |
9 | 9 | */ |
10 | 10 |
|
11 | | -use OCA\user_external\imap\imap_rcube; |
12 | | - |
13 | 11 | /** |
14 | 12 | * User authentication against an IMAP mail server |
15 | 13 | * |
@@ -87,31 +85,30 @@ public function checkPassword($uid, $password) { |
87 | 85 | $groups[] = $pieces[1]; |
88 | 86 | } |
89 | 87 |
|
90 | | - $rcube = new imap_rcube(); |
91 | | - |
92 | | - $params = ["port"=>$this->port, "timeout"=>10]; |
| 88 | + $protocol = $this->sslmode ? "imaps" : "imap"; |
| 89 | + $url = "{$protocol}://{$this->mailbox}:{$this->port}"; |
| 90 | + $ch = curl_init(); |
| 91 | + curl_setopt($ch, CURLOPT_URL, $url); |
| 92 | + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); |
| 93 | + curl_setopt($ch, CURLOPT_USERPWD, $username.":".$password); |
| 94 | + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); |
93 | 95 |
|
94 | | - $params["ssl_mode"] = $this->sslmode ? $this->sslmode : null; |
95 | | - $params["force_caps"] = false; |
96 | | - $canconnect = $rcube->connect( |
97 | | - $this->mailbox, |
98 | | - $username, |
99 | | - $password, |
100 | | - $params |
101 | | - ); |
| 96 | + $canconnect = curl_exec($ch); |
102 | 97 |
|
103 | 98 | if($canconnect) { |
104 | | - $rcube->closeConnection(); |
| 99 | + curl_close($ch); |
105 | 100 | $uid = mb_strtolower($uid); |
106 | 101 | $this->storeUser($uid, $groups); |
107 | 102 | return $uid; |
108 | 103 | } else { |
109 | 104 | OC::$server->getLogger()->error( |
110 | | - 'ERROR: Could not connect via roundcube lib: '.$rcube->error, |
| 105 | + 'ERROR: Could not connect to imap server via curl: '.curl_error($ch), |
111 | 106 | ['app' => 'user_external'] |
112 | 107 | ); |
113 | 108 | } |
114 | 109 |
|
| 110 | + curl_close($ch); |
| 111 | + |
115 | 112 | return false; |
116 | 113 | } |
117 | 114 | } |
0 commit comments