cleanup require_once

This commit is contained in:
Synox 2018-02-23 22:48:48 +01:00
parent 76789e8dad
commit 56d86c8e46
6 changed files with 18 additions and 26 deletions

View File

@ -1,7 +1,7 @@
<?php <?php
class AutoLinkExtension { class AutoLinkExtension {
static public function auto_link_text($string) { static public function auto_link_text(string $string) {
$string = preg_replace_callback("/ $string = preg_replace_callback("/
((?<![\"']) # don't look inside quotes ((?<![\"']) # don't look inside quotes

View File

@ -2,11 +2,13 @@
/* /*
input: input:
$user - User object User $user - User object
$config - config array array $config - config array
$emails - array of emails array $emails - array of emails
*/ */
require_once './autolink.php';
// Load HTML Purifier // Load HTML Purifier
$purifier_config = HTMLPurifier_Config::createDefault(); $purifier_config = HTMLPurifier_Config::createDefault();
$purifier_config->set('HTML.Nofollow', true); $purifier_config->set('HTML.Nofollow', true);

View File

@ -16,7 +16,7 @@ class ImapClient {
* @param $user User * @param $user User
* @return array * @return array
*/ */
function get_emails(User $user): array { public function get_emails(User $user): array {
// Search for mails with the recipient $address in TO or CC. // Search for mails with the recipient $address in TO or CC.
$mailsIdsTo = imap_sort($this->mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'TO "' . $user->address . '"'); $mailsIdsTo = imap_sort($this->mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'TO "' . $user->address . '"');
$mailsIdsCc = imap_sort($this->mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'CC "' . $user->address . '"'); $mailsIdsCc = imap_sort($this->mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'CC "' . $user->address . '"');
@ -34,7 +34,7 @@ class ImapClient {
* @param $user User * @param $user User
* @internal param the $username matching username * @internal param the $username matching username
*/ */
function delete_email(string $mailid, User $user) { public function delete_email(string $mailid, User $user) {
if ($this->_load_one_email($mailid, $user) !== null) { if ($this->_load_one_email($mailid, $user) !== null) {
$this->mailbox->deleteMail($mailid); $this->mailbox->deleteMail($mailid);
$this->mailbox->expungeDeletedMails(); $this->mailbox->expungeDeletedMails();
@ -54,7 +54,7 @@ class ImapClient {
* @internal param the $username matching username * @internal param the $username matching username
*/ */
function download_email(int $mailid, User $user) { public function download_email(int $mailid, User $user) {
if ($this->_load_one_email($mailid, $user) !== null) { if ($this->_load_one_email($mailid, $user) !== null) {
header("Content-Type: message/rfc822; charset=utf-8"); header("Content-Type: message/rfc822; charset=utf-8");
header("Content-Disposition: attachment; filename=\"" . $user->address . "-" . $mailid . ".eml\""); header("Content-Disposition: attachment; filename=\"" . $user->address . "-" . $mailid . ".eml\"");
@ -71,7 +71,7 @@ class ImapClient {
/** /**
* Load exactly one email, the $address in TO or CC has to match. * Load exactly one email, the $address in TO or CC has to match.
*/ */
function _load_one_email(int $mailid, User $user): \PhpImap\IncomingMail { private function _load_one_email(int $mailid, User $user): \PhpImap\IncomingMail {
// in order to avoid https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References // in order to avoid https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References
// the recipient in the email has to match the $address. // the recipient in the email has to match the $address.
$emails = $this->_load_emails(array($mailid), $user); $emails = $this->_load_emails(array($mailid), $user);
@ -85,7 +85,7 @@ class ImapClient {
* @param $user User * @param $user User
* @return array of emails * @return array of emails
*/ */
function _load_emails(array $mail_ids, User $user) { private function _load_emails(array $mail_ids, User $user) {
$emails = array(); $emails = array();
foreach ($mail_ids as $id) { foreach ($mail_ids as $id) {
$mail = $this->mailbox->getMail($id); $mail = $this->mailbox->getMail($id);
@ -100,7 +100,7 @@ class ImapClient {
/** /**
* deletes messages older than X days. * deletes messages older than X days.
*/ */
function delete_old_messages(string $delete_messages_older_than) { public function delete_old_messages(string $delete_messages_older_than) {
$ids = $this->mailbox->searchMailbox('BEFORE ' . date('d-M-Y', strtotime($delete_messages_older_than))); $ids = $this->mailbox->searchMailbox('BEFORE ' . date('d-M-Y', strtotime($delete_messages_older_than)));
foreach ($ids as $id) { foreach ($ids as $id) {
$this->mailbox->deleteMail($id); $this->mailbox->deleteMail($id);

View File

@ -5,26 +5,18 @@ require_once '../../config.php';
# load php dependencies: # load php dependencies:
require_once './backend-libs/autoload.php'; require_once './backend-libs/autoload.php';
require_once './user.php'; require_once './user.php';
require_once './autolink.php'; require_once './imap_client.php';
require_once './pages.php'; require_once './pages.php';
require_once './router.php'; require_once './router.php';
require_once './imap_client.php';
$imapClient = new ImapClient($config['imap']['url'], $config['imap']['username'], $config['imap']['password']);
$router = new Router($_SERVER['REQUEST_METHOD'], $_GET['action'] ?? NULL, $_GET, $_POST, $_SERVER['QUERY_STRING'], $config); $router = new Router($_SERVER['REQUEST_METHOD'], $_GET['action'] ?? NULL, $_GET, $_POST, $_SERVER['QUERY_STRING'], $config);
$page = $router->route(); $page = $router->route();
// TODO: remove $mailbox
$mailbox = new PhpImap\Mailbox($config['imap']['url'],
$config['imap']['username'],
$config['imap']['password']);
$imapClient = new ImapClient($config['imap']['url'], $config['imap']['username'], $config['imap']['password']);
$page->invoke($imapClient); $page->invoke($imapClient);
// delete after each request // delete after each request
$imapClient->delete_old_messages($config['delete_messages_older_than']); $imapClient->delete_old_messages($config['delete_messages_older_than']);
?> ?>

View File

@ -1,5 +1,7 @@
<?php <?php
require_once './imap_client.php';
abstract class Page { abstract class Page {
function invoke(ImapClient $imapClient) { function invoke(ImapClient $imapClient) {

View File

@ -40,15 +40,11 @@ class Router {
} elseif ($this->action === 'random') { } elseif ($this->action === 'random') {
return new RedirectToRandomAddressPage($this->config['domains']); return new RedirectToRandomAddressPage($this->config['domains']);
} elseif (empty($this->query_string)) {
return new RedirectToRandomAddressPage($this->config['domains']);
} elseif (!empty($this->query_string)) { } elseif (!empty($this->query_string)) {
return new DisplayEmailsPage($this->query_string, $this->config); return new DisplayEmailsPage($this->query_string, $this->config);
} else { } else {
return new InvalidRequestPage(); return new RedirectToRandomAddressPage($this->config['domains']);
} }
} }
} }