added mozilla autoconfig file generation
This commit is contained in:
parent
7342c1ccda
commit
a3bc938449
6 changed files with 101 additions and 20 deletions
|
@ -19,9 +19,6 @@ class Loader {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$p = $this->get_page_name();
|
$p = $this->get_page_name();
|
||||||
if (substr($p,0,6) != "/admin") {
|
|
||||||
header('Content-Type: application/json'); // <-- header declaration
|
|
||||||
}
|
|
||||||
if(substr($p,0,1) == "/") {
|
if(substr($p,0,1) == "/") {
|
||||||
Core::$CurrentPage = substr($p,1);
|
Core::$CurrentPage = substr($p,1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
class Responder {
|
class Responder {
|
||||||
|
private $Response;
|
||||||
public function show_response(){
|
public function show_response(){
|
||||||
// get the response detailed by the url requested
|
// get the response detailed by the url requested
|
||||||
$response = $this->get_response();
|
$response = $this->get_response();
|
||||||
|
@ -13,8 +14,19 @@ class Responder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private function send_response($response){
|
private function send_response($response){
|
||||||
|
switch ($response->content_type){
|
||||||
|
case "json":
|
||||||
|
header('Content-Type: application/json');
|
||||||
// Send json encoded response
|
// Send json encoded response
|
||||||
echo json_encode($response, true);
|
echo json_encode($response, true);
|
||||||
|
break;
|
||||||
|
case "xml":
|
||||||
|
header('Content-Type: application/xml');
|
||||||
|
include ($response->content);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
private function get_response(){
|
private function get_response(){
|
||||||
$resp = false;
|
$resp = false;
|
||||||
|
@ -25,8 +37,8 @@ class Responder {
|
||||||
case "get/all":
|
case "get/all":
|
||||||
$resp = $this->all_urls();
|
$resp = $this->all_urls();
|
||||||
break;
|
break;
|
||||||
case "get/select":
|
case "mail/config-v1.1.xml":
|
||||||
$resp = $this->selection();
|
$resp = $this->moz_auto_config();
|
||||||
break;
|
break;
|
||||||
case "none":
|
case "none":
|
||||||
case "test":
|
case "test":
|
||||||
|
@ -40,8 +52,6 @@ class Responder {
|
||||||
return $resp;
|
return $resp;
|
||||||
}
|
}
|
||||||
private function all_urls(){
|
private function all_urls(){
|
||||||
|
|
||||||
// This would be the default request from, say, an app.
|
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
|
|
||||||
// TODO:: Will work out a better message later
|
// TODO:: Will work out a better message later
|
||||||
|
@ -49,23 +59,22 @@ class Responder {
|
||||||
|
|
||||||
// Cycle through each service and add to payload
|
// Cycle through each service and add to payload
|
||||||
foreach (Core::$Config["Services"] as $key => $service){
|
foreach (Core::$Config["Services"] as $key => $service){
|
||||||
$response->payload[$key] = $service;
|
$response->content[$key] = $service;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
private function selection(){
|
private function moz_auto_config(){
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
$response->message = "Not Implemented";
|
$response->content_type = "xml";
|
||||||
$uri = Core::full_url();
|
$response->content = "public/autoconfig.php";
|
||||||
$response->payload = parse_url($uri);
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
private function dummy_response(){
|
private function dummy_response(){
|
||||||
// Generate a dummy response for testing
|
// Generate a dummy response for testing
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
$response->message = "OK, here's some scrumptious data! Enjoy!";
|
$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")),
|
"extra_data" => array("garnish" => "buuuuuuuuuuurp")),
|
||||||
"more_data" => "yuuuuuum yum yum yum");
|
"more_data" => "yuuuuuum yum yum yum");
|
||||||
return $response;
|
return $response;
|
||||||
|
@ -79,8 +88,9 @@ class Responder {
|
||||||
}
|
}
|
||||||
class Response {
|
class Response {
|
||||||
public $url;
|
public $url;
|
||||||
|
public $content_type = "json";
|
||||||
public $message;
|
public $message;
|
||||||
public $payload = array();
|
public $content = array();
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
// add requested page to response. I don't know why, but it could helpful for diagnostics at some point
|
// add requested page to response. I don't know why, but it could helpful for diagnostics at some point
|
||||||
$this->url = Core::$CurrentPage;
|
$this->url = Core::$CurrentPage;
|
||||||
|
|
39
src/public/autoconfig.php
Normal file
39
src/public/autoconfig.php
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
$conf = Core::$Config["Services"];
|
||||||
|
$data = Core::get_get_data();
|
||||||
|
$email_provided = false;
|
||||||
|
if ($data["path"]) {
|
||||||
|
$query = parse_url($data["path"]);
|
||||||
|
$email = explode("=",$query["query"]);
|
||||||
|
if ($email[0] == "emailaddress") {
|
||||||
|
$email = $email[1];
|
||||||
|
$email_provided = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<clientConfig version="1.1">
|
||||||
|
<emailProvider id="<?php echo Core::$Config["Domain"]?>">
|
||||||
|
<domain><?php echo Core::$Config["Domain"]?></domain>
|
||||||
|
<displayName><?php echo $email_provided ? $email : "%EMAILADDRESS%" ;?></displayName>
|
||||||
|
<?php if($conf["InMail"]){
|
||||||
|
$in = $conf["InMail"]; ?>
|
||||||
|
<incomingServer type="<?php echo $in["Type"];?>">
|
||||||
|
<hostname><?php echo $in["Server"];?></hostname>
|
||||||
|
<port><?php echo $in["Port"];?></port>
|
||||||
|
<socketType><?php echo $in["SocketType"];?></socketType>
|
||||||
|
<username><?php echo $email_provided ? $email : "%EMAILADDRESS%";?></username>
|
||||||
|
<authentication><?php echo $in["Authentication"];?></authentication>
|
||||||
|
</incomingServer>
|
||||||
|
<?php } ?>
|
||||||
|
<?php if($conf["InMail"]){
|
||||||
|
$out = $conf["InMail"]; ?>
|
||||||
|
<outgoingServer type="<?php echo $out["Type"];?>">
|
||||||
|
<hostname><?php echo $out["Server"];?></hostname>
|
||||||
|
<port><?php echo $out["Port"];?></port>
|
||||||
|
<socketType><?php echo $out["SocketType"];?></socketType>
|
||||||
|
<username><?php echo $email_provided ? $email : "%EMAILADDRESS%";?></username>
|
||||||
|
<authentication><?php echo $out["Authentication"];?></authentication>
|
||||||
|
</outgoingServer>
|
||||||
|
<?php } ?>
|
||||||
|
</emailProvider>
|
||||||
|
</clientConfig>
|
30
src/public/autodiscover.php
Normal file
30
src/public/autodiscover.php
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
|
||||||
|
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
|
||||||
|
<Account>
|
||||||
|
<AccountType>email</AccountType>
|
||||||
|
<Action>settings</Action>
|
||||||
|
<Protocol>
|
||||||
|
<Type>IMAP</Type>
|
||||||
|
<Server>server.hostname.com</Server>
|
||||||
|
<Port>993</Port>
|
||||||
|
<DomainRequired>off</DomainRequired>
|
||||||
|
<LoginName><?php echo $matches[1]; ?></LoginName>
|
||||||
|
<SPA>off</SPA>
|
||||||
|
<SSL>on</SSL>
|
||||||
|
<AuthRequired>on</AuthRequired>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol>
|
||||||
|
<Type>SMTP</Type>
|
||||||
|
<Server>server.hostname.com</Server>
|
||||||
|
<Port>587</Port>
|
||||||
|
<DomainRequired>off</DomainRequired>
|
||||||
|
<LoginName><?php echo $matches[1]; ?></LoginName>
|
||||||
|
<SPA>off</SPA>
|
||||||
|
<Encryption>TLS</Encryption>
|
||||||
|
<AuthRequired>on</AuthRequired>
|
||||||
|
<UsePOPAuth>off</UsePOPAuth>
|
||||||
|
<SMTPLast>off</SMTPLast>
|
||||||
|
</Protocol>
|
||||||
|
</Account>
|
||||||
|
</Response>
|
||||||
|
</Autodiscover>
|
|
@ -1,6 +1,9 @@
|
||||||
; Sample config.ini file.
|
; Sample config.ini file.
|
||||||
; Copy this file to "config/config.ini" and adjust the settings to your requirements
|
; 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
|
; Admin User configuration
|
||||||
; not in use yet
|
; not in use yet
|
||||||
;[AdminUser]
|
;[AdminUser]
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
[InMail]
|
[InMail]
|
||||||
|
Type = "IMAP"
|
||||||
Server = "imap.example.com"
|
Server = "imap.example.com"
|
||||||
Protocol = "IMAP"
|
|
||||||
Port = 993
|
Port = 993
|
||||||
TLS = true
|
SocketType = SSL
|
||||||
|
Authentication = password-cleartext
|
||||||
|
|
||||||
[OutMail]
|
[OutMail]
|
||||||
|
Type = "SMTP"
|
||||||
Server = "smtp.example.com"
|
Server = "smtp.example.com"
|
||||||
Protocol = "SMTP"
|
|
||||||
Port = 465
|
Port = 465
|
||||||
TLS = true
|
SocketType = SSL
|
||||||
|
Authentication = password-cleartext
|
||||||
|
|
||||||
[CalDav]
|
[CalDav]
|
||||||
Server = "https://caldav.example.com/etc/etc/"
|
Server = "https://caldav.example.com/etc/etc/"
|
||||||
|
|
Loading…
Reference in a new issue