WIP commit
This commit is contained in:
parent
20c991ccf1
commit
4919aaf8d8
@ -24,17 +24,18 @@ class UserHooks {
|
||||
}
|
||||
private function createUserCB() {
|
||||
return function (\OC\User\User $user, string $password) {
|
||||
$uid = $user->getUID();
|
||||
$name = $user->getDisplayName();
|
||||
$email_suffix = $this->config->getEmailAddressSuffix();
|
||||
$quota = $this->config->getEmailQuotaMB();
|
||||
$newuser = array(
|
||||
'userid' => $uid,
|
||||
'password' => $password,
|
||||
'name' => $name,
|
||||
'email' => $uid . $email_suffix,
|
||||
'quota' => $quota // in MB
|
||||
'email' => $user->getUID() . $this->config->getEmailAddressSuffix(),
|
||||
'displayed_name' => $user->getDisplayName(),
|
||||
'raw_password' => $password,
|
||||
'quota_bytes' => $this->config->getEmailQuotaMB() * 1024 * 1024,
|
||||
'enabled' => true,
|
||||
'enable_imap' => true,
|
||||
'spam_enable' => true,
|
||||
'spam_mark_as_read' => true,
|
||||
'spam_threshold' => 80
|
||||
);
|
||||
|
||||
if($this->createEmailAccount($newuser)) {
|
||||
$this->logger->warning(
|
||||
"Automatically created mail account for uid " . $uid
|
||||
@ -49,132 +50,128 @@ class UserHooks {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private function deleteUserCB() {
|
||||
return function (\OC\User\User $user) {
|
||||
$uid = $user->getUID();
|
||||
$email_suffix = $this->config->getEmailAddressSuffix();
|
||||
$email = $uid . $email_suffix;
|
||||
$user_data = array('email' => $email);
|
||||
if($this->deleteEmailAccount($user_data))
|
||||
$this->logger->warning(
|
||||
"Deleted mail account: " . $email, $this->logContext);
|
||||
else $this->logger->error("Error deleting mail account" . $uid);
|
||||
$email = $user->getUID() . $this->config->getEmailAddressSuffix();
|
||||
if($this->deleteEmailAccount($email)) {
|
||||
$this->logger->warning("Deleted mail account: " . $email, $this->logContext);
|
||||
} else {
|
||||
$this->logger->error("Error deleting mail account" . $email);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private function updateEmailPasswordCB() {
|
||||
return function (\OC\User\User $user, string $password) {
|
||||
$uid = $user->getUID();
|
||||
$email_suffix = $this->config->getEmailAddressSuffix();
|
||||
$email = $uid . $email_suffix;
|
||||
$user_data = array(
|
||||
'email' => $email,
|
||||
'password' => $password
|
||||
);
|
||||
if($this->updateEmailPassword($user_data))
|
||||
$this->logger->warning(
|
||||
"Updated glesys password for account: " . $email,
|
||||
$this->logContext);
|
||||
else $this->logger->error(
|
||||
"Error updating mail password for account" . $uid);
|
||||
$email = $user->getUID() . $this->config->getEmailAddressSuffix();
|
||||
if($this->updateEmailPassword($email, $password)) {
|
||||
$this->logger->warning("Updated glesys password for account: " . $email, $this->logContext);
|
||||
} else {
|
||||
$this->logger->error("Error updating mail password for account" . $email);
|
||||
}
|
||||
};
|
||||
}
|
||||
private function createImapFolders($user_data) {
|
||||
$server = 'mail.glesys.se';
|
||||
$email = $user_data['email'];
|
||||
$passw = $user_data['password'];
|
||||
$folders = array('Sent', 'Drafts', 'Trash', 'Junk', 'Archive');
|
||||
$mbox = \imap_open("{" . $server . "}", $email, $passw, OP_HALFOPEN);
|
||||
if(!$mbox){
|
||||
$message = "can't connect: " . \imap_last_error();
|
||||
$this->logger->error($message);
|
||||
return false;
|
||||
}
|
||||
foreach ($folders as $folder) {
|
||||
if (! @\imap_createmailbox(
|
||||
$mbox,
|
||||
\imap_utf7_encode("{".$server."}INBOX.".$folder))) {
|
||||
$message = 'Error creating ' . $folder . ' folder: ' .
|
||||
\imap_last_error();
|
||||
$this->logger->error($message);
|
||||
}
|
||||
}
|
||||
\imap_close($mbox);
|
||||
return true;
|
||||
// $server = 'mail.glesys.se';
|
||||
// $email = $user_data['email'];
|
||||
// $passw = $user_data['password'];
|
||||
// $folders = array('Sent', 'Drafts', 'Trash', 'Junk', 'Archive');
|
||||
// $mbox = \imap_open("{" . $server . "}", $email, $passw, OP_HALFOPEN);
|
||||
// if(!$mbox){
|
||||
// $message = "can't connect: " . \imap_last_error();
|
||||
// $this->logger->error($message);
|
||||
// return false;
|
||||
// }
|
||||
// foreach ($folders as $folder) {
|
||||
// if (! @\imap_createmailbox(
|
||||
// $mbox,
|
||||
// \imap_utf7_encode("{".$server."}INBOX.".$folder))) {
|
||||
// $message = 'Error creating ' . $folder . ' folder: ' .
|
||||
// \imap_last_error();
|
||||
// $this->logger->error($message);
|
||||
// }
|
||||
// }
|
||||
// \imap_close($mbox);
|
||||
// return true;
|
||||
}
|
||||
|
||||
private function createEmailAccount($user_data) {
|
||||
$keys = $this->config->getGlesysKeys();
|
||||
$fields = array(
|
||||
'emailaccount' => $user_data['email'],
|
||||
'password' => $user_data['password'],
|
||||
'quota' => $user_data['quota']
|
||||
);
|
||||
$query = http_build_query($fields);
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL,
|
||||
'https://api.glesys.com/email/createaccount/');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $keys);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch)) {
|
||||
$message = 'Error:' . curl_error($ch);
|
||||
$this->logger->error($message);
|
||||
return false;
|
||||
}
|
||||
curl_close($ch);
|
||||
$xml = simplexml_load_string($result);
|
||||
$code = $xml->status->code;
|
||||
if ($code == 200) return $this->createImapFolders($user_data);
|
||||
else $this->logger->warning(
|
||||
"Error: non-200 status: " . $xml->status->text);
|
||||
return false;
|
||||
// $keys = $this->config->getGlesysKeys();
|
||||
// $fields = array(
|
||||
// 'emailaccount' => $user_data['email'],
|
||||
// 'password' => $user_data['password'],
|
||||
// 'quota' => $user_data['quota']
|
||||
// );
|
||||
// $query = http_build_query($fields);
|
||||
// $ch = curl_init();
|
||||
// curl_setopt($ch, CURLOPT_URL,
|
||||
// 'https://api.glesys.com/email/createaccount/');
|
||||
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
// curl_setopt($ch, CURLOPT_POST, 1);
|
||||
// curl_setopt($ch, CURLOPT_USERPWD, $keys);
|
||||
// curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
|
||||
// $result = curl_exec($ch);
|
||||
// if (curl_errno($ch)) {
|
||||
// $message = 'Error:' . curl_error($ch);
|
||||
// $this->logger->error($message);
|
||||
// return false;
|
||||
// }
|
||||
// curl_close($ch);
|
||||
// $xml = simplexml_load_string($result);
|
||||
// $code = $xml->status->code;
|
||||
// if ($code == 200) return $this->createImapFolders($user_data);
|
||||
// else $this->logger->warning(
|
||||
// "Error: non-200 status: " . $xml->status->text);
|
||||
// return false;
|
||||
}
|
||||
private function deleteEmailAccount($user_data){
|
||||
$ch = curl_init();
|
||||
$keys = $this->config->getGlesysKeys();
|
||||
curl_setopt($ch, CURLOPT_URL, 'https://api.glesys.com/email/delete/');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, "email=" . $user_data["email"]);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $keys);
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch)) {
|
||||
$message = 'Error: ' . curl_error($ch);
|
||||
$this->logger->error($message);
|
||||
return false;
|
||||
}
|
||||
curl_close($ch);
|
||||
return true;
|
||||
|
||||
private function deleteEmailAccount($user_data) {
|
||||
// $ch = curl_init();
|
||||
// $keys = $this->config->getGlesysKeys();
|
||||
// curl_setopt($ch, CURLOPT_URL, 'https://api.glesys.com/email/delete/');
|
||||
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
// curl_setopt($ch, CURLOPT_POSTFIELDS, "email=" . $user_data["email"]);
|
||||
// curl_setopt($ch, CURLOPT_POST, 1);
|
||||
// curl_setopt($ch, CURLOPT_USERPWD, $keys);
|
||||
// $result = curl_exec($ch);
|
||||
// if (curl_errno($ch)) {
|
||||
// $message = 'Error: ' . curl_error($ch);
|
||||
// $this->logger->error($message);
|
||||
// return false;
|
||||
// }
|
||||
// curl_close($ch);
|
||||
// return true;
|
||||
}
|
||||
|
||||
private function updateEmailPassword($user_data) {
|
||||
$keys = $this->config->getGlesysKeys();
|
||||
$fields = array(
|
||||
'emailaccount' => $user_data['email'],
|
||||
'password' => $user_data['password']
|
||||
);
|
||||
$query = http_build_query($fields);
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL,
|
||||
'https://api.glesys.com/email/editaccount/');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $keys);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch)) {
|
||||
$message = 'Error:' . curl_error($ch);
|
||||
$this->logger->error($message);
|
||||
return false;
|
||||
}
|
||||
curl_close($ch);
|
||||
$xml = simplexml_load_string($result);
|
||||
$code = $xml->status->code;
|
||||
if ($code != 200){
|
||||
$this->logger->warning(
|
||||
"Error: non-200 status: " . $xml->status->text);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
// $keys = $this->config->getGlesysKeys();
|
||||
// $fields = array(
|
||||
// 'emailaccount' => $user_data['email'],
|
||||
// 'password' => $user_data['password']
|
||||
// );
|
||||
// $query = http_build_query($fields);
|
||||
// $ch = curl_init();
|
||||
// curl_setopt($ch, CURLOPT_URL,
|
||||
// 'https://api.glesys.com/email/editaccount/');
|
||||
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
// curl_setopt($ch, CURLOPT_POST, 1);
|
||||
// curl_setopt($ch, CURLOPT_USERPWD, $keys);
|
||||
// curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
|
||||
// $result = curl_exec($ch);
|
||||
// if (curl_errno($ch)) {
|
||||
// $message = 'Error:' . curl_error($ch);
|
||||
// $this->logger->error($message);
|
||||
// return false;
|
||||
// }
|
||||
// curl_close($ch);
|
||||
// $xml = simplexml_load_string($result);
|
||||
// $code = $xml->status->code;
|
||||
// if ($code != 200){
|
||||
// $this->logger->warning(
|
||||
// "Error: non-200 status: " . $xml->status->text);
|
||||
// return false;
|
||||
// }
|
||||
// return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user