From 4919aaf8d8dd42701d0349719c96eb5f695f7eef Mon Sep 17 00:00:00 2001 From: Cassowary Rusnov Date: Tue, 5 Sep 2023 13:25:24 -0700 Subject: [PATCH] WIP commit --- lib/Hooks/UserHooks.php | 241 ++++++++++++++++++++-------------------- 1 file changed, 119 insertions(+), 122 deletions(-) diff --git a/lib/Hooks/UserHooks.php b/lib/Hooks/UserHooks.php index 358fc51..003eec3 100644 --- a/lib/Hooks/UserHooks.php +++ b/lib/Hooks/UserHooks.php @@ -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; } }