From a3bc938449da10fbda2c539a5edf90c1ad388e56 Mon Sep 17 00:00:00 2001 From: Paul Wilde Date: Tue, 10 Aug 2021 21:14:47 +0100 Subject: [PATCH] added mozilla autoconfig file generation --- src/core/init/loader.php | 3 --- src/core/init/responder.php | 36 ++++++++++++++++--------- src/public/autoconfig.php | 39 +++++++++++++++++++++++++++ src/public/autodiscover.php | 30 +++++++++++++++++++++ src/sample-config/config.sample.ini | 3 +++ src/sample-config/services.sample.ini | 10 ++++--- 6 files changed, 101 insertions(+), 20 deletions(-) create mode 100644 src/public/autoconfig.php create mode 100644 src/public/autodiscover.php diff --git a/src/core/init/loader.php b/src/core/init/loader.php index 8255be7..47ea6f7 100644 --- a/src/core/init/loader.php +++ b/src/core/init/loader.php @@ -19,9 +19,6 @@ class Loader { break; default: $p = $this->get_page_name(); - if (substr($p,0,6) != "/admin") { - header('Content-Type: application/json'); // <-- header declaration - } if(substr($p,0,1) == "/") { Core::$CurrentPage = substr($p,1); } else { diff --git a/src/core/init/responder.php b/src/core/init/responder.php index 1c5e292..9a49c66 100644 --- a/src/core/init/responder.php +++ b/src/core/init/responder.php @@ -1,5 +1,6 @@ get_response(); @@ -13,8 +14,19 @@ class Responder { } } private function send_response($response){ - // Send json encoded response - echo json_encode($response, true); + switch ($response->content_type){ + case "json": + header('Content-Type: application/json'); + // Send json encoded response + echo json_encode($response, true); + break; + case "xml": + header('Content-Type: application/xml'); + include ($response->content); + break; + } + + } private function get_response(){ $resp = false; @@ -25,8 +37,8 @@ class Responder { case "get/all": $resp = $this->all_urls(); break; - case "get/select": - $resp = $this->selection(); + case "mail/config-v1.1.xml": + $resp = $this->moz_auto_config(); break; case "none": case "test": @@ -40,8 +52,6 @@ class Responder { return $resp; } private function all_urls(){ - - // This would be the default request from, say, an app. $response = new Response(); // TODO:: Will work out a better message later @@ -49,23 +59,22 @@ class Responder { // Cycle through each service and add to payload foreach (Core::$Config["Services"] as $key => $service){ - $response->payload[$key] = $service; + $response->content[$key] = $service; } return $response; } - private function selection(){ + private function moz_auto_config(){ $response = new Response(); - $response->message = "Not Implemented"; - $uri = Core::full_url(); - $response->payload = parse_url($uri); + $response->content_type = "xml"; + $response->content = "public/autoconfig.php"; return $response; } private function dummy_response(){ // Generate a dummy response for testing $response = new Response(); $response->message = "OK, here's some scrumptious data! Enjoy!"; - $response->payload = array("data" => array("some_data" => "Ohhhhhmmmm nom nom nom nom nom nom", + $response->content = array("data" => array("some_data" => "Ohhhhhmmmm nom nom nom nom nom nom", "extra_data" => array("garnish" => "buuuuuuuuuuurp")), "more_data" => "yuuuuuum yum yum yum"); return $response; @@ -79,8 +88,9 @@ class Responder { } class Response { public $url; + public $content_type = "json"; public $message; - public $payload = array(); + public $content = array(); public function __construct(){ // add requested page to response. I don't know why, but it could helpful for diagnostics at some point $this->url = Core::$CurrentPage; diff --git a/src/public/autoconfig.php b/src/public/autoconfig.php new file mode 100644 index 0000000..a3dc9a7 --- /dev/null +++ b/src/public/autoconfig.php @@ -0,0 +1,39 @@ + + + "> + + + + "> + + + + + + + + + "> + + + + + + + + + diff --git a/src/public/autodiscover.php b/src/public/autodiscover.php new file mode 100644 index 0000000..4c62467 --- /dev/null +++ b/src/public/autodiscover.php @@ -0,0 +1,30 @@ + + + + email + settings + + IMAP + server.hostname.com + 993 + off + + off + on + on + + + SMTP + server.hostname.com + 587 + off + + off + TLS + on + off + off + + + + diff --git a/src/sample-config/config.sample.ini b/src/sample-config/config.sample.ini index d5ecc51..8653f68 100644 --- a/src/sample-config/config.sample.ini +++ b/src/sample-config/config.sample.ini @@ -1,6 +1,9 @@ ; Sample config.ini file. ; Copy this file to "config/config.ini" and adjust the settings to your requirements +; Set the base domain for use with this service +Domain = example.com + ; Admin User configuration ; not in use yet ;[AdminUser] diff --git a/src/sample-config/services.sample.ini b/src/sample-config/services.sample.ini index 1464ae0..1632eb7 100644 --- a/src/sample-config/services.sample.ini +++ b/src/sample-config/services.sample.ini @@ -1,14 +1,16 @@ [InMail] +Type = "IMAP" Server = "imap.example.com" -Protocol = "IMAP" Port = 993 -TLS = true +SocketType = SSL +Authentication = password-cleartext [OutMail] +Type = "SMTP" Server = "smtp.example.com" -Protocol = "SMTP" Port = 465 -TLS = true +SocketType = SSL +Authentication = password-cleartext [CalDav] Server = "https://caldav.example.com/etc/etc/"