began new go version to lessen resource requirements
This commit is contained in:
parent
1df0b80c1f
commit
acef6e76d7
10 changed files with 223 additions and 20 deletions
31
src/global/global.go
Normal file
31
src/global/global.go
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
package global
|
||||||
|
import (
|
||||||
|
. "mailautoconf/structs"
|
||||||
|
"github.com/vaughan0/go-ini"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
var ThisSession Session
|
||||||
|
var MainConfig Config
|
||||||
|
const defaultConfigDir string = "default-config/"
|
||||||
|
const configDir string = "config/"
|
||||||
|
|
||||||
|
func NewConfig() Config {
|
||||||
|
fmt.Println("Loading Config…")
|
||||||
|
cfg := "default-config/config.default.ini"
|
||||||
|
conf, err := ini.LoadFile(cfg)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
}
|
||||||
|
fmt.Println(conf)
|
||||||
|
fmt.Println("Loading Services…")
|
||||||
|
srv := "default-config/services.default.ini"
|
||||||
|
serv, err2 := ini.LoadFile(srv)
|
||||||
|
if err2 != nil {
|
||||||
|
fmt.Println(err2.Error())
|
||||||
|
}
|
||||||
|
fmt.Println(serv)
|
||||||
|
newcfg := Config{}
|
||||||
|
return newcfg
|
||||||
|
}
|
7
src/go.mod
Normal file
7
src/go.mod
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module mailautoconf
|
||||||
|
|
||||||
|
go 1.16
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec // indirect
|
||||||
|
)
|
2
src/go.sum
Normal file
2
src/go.sum
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec h1:DGmKwyZwEB8dI7tbLt/I/gQuP559o/0FrAkHKlQM/Ks=
|
||||||
|
github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYMLkxyrugmfwE/DLJyW8Ro9mkphwuVErQ0iUw=
|
16
src/mailautoconf.go
Normal file
16
src/mailautoconf.go
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"log"
|
||||||
|
"mailautoconf/web/handler"
|
||||||
|
. "mailautoconf/global"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
MainConfig = NewConfig()
|
||||||
|
http.HandleFunc("/", handler.WebHandler)
|
||||||
|
fmt.Println("Starting up Web Listener on port 8080")
|
||||||
|
log.Fatal(http.ListenAndServe(":8080", nil))
|
||||||
|
}
|
20
src/main.go
20
src/main.go
|
@ -1,20 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net/http"
|
|
||||||
"log"
|
|
||||||
)
|
|
||||||
|
|
||||||
func handler(w http.ResponseWriter, r *http.Request) {
|
|
||||||
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
http.HandleFunc("/", handler)
|
|
||||||
log.Fatal(http.ListenAndServe(":8080", nil))
|
|
||||||
}
|
|
||||||
|
|
||||||
func do_this(){
|
|
||||||
fmt.Println("doing this")
|
|
||||||
}
|
|
18
src/structs/structs.go
Normal file
18
src/structs/structs.go
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package structs
|
||||||
|
// I don't like the name of this package, consider naming it "core" or
|
||||||
|
// separating out the structs and core functions
|
||||||
|
|
||||||
|
import "net/http"
|
||||||
|
|
||||||
|
type Session struct {
|
||||||
|
ResponseWriter http.ResponseWriter
|
||||||
|
Request *http.Request
|
||||||
|
Path string
|
||||||
|
WebContent string
|
||||||
|
}
|
||||||
|
type Config struct {
|
||||||
|
Services []Service
|
||||||
|
}
|
||||||
|
type Service struct {
|
||||||
|
|
||||||
|
}
|
58
src/templates/autoconfig.html
Normal file
58
src/templates/autoconfig.html
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<!-- The below link has config-v1.1.xml information
|
||||||
|
https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat -->
|
||||||
|
<clientConfig version="1.1">
|
||||||
|
<emailProvider id="<?php echo Core::$Config["PrimaryDomain"]?>">
|
||||||
|
<?php foreach (Core::$Config["Domain"] as $domain){ ?>
|
||||||
|
<domain><?php echo $domain; ?></domain>
|
||||||
|
<?php } ?>
|
||||||
|
<displayName>%EMAILADDRESS%</displayName>
|
||||||
|
<?php if($services["InMail"]&& $services["InMail"]["Enabled"]){
|
||||||
|
$service = $services["InMail"]; ?>
|
||||||
|
<incomingServer type="<?php echo strtolower($service["Type"]);?>">
|
||||||
|
<hostname><?php echo $service["Server"];?></hostname>
|
||||||
|
<port><?php echo $service["Port"];?></port>
|
||||||
|
<socketType><?php echo $service["SocketType"];?></socketType>
|
||||||
|
<username><?php echo $this->get_username($service,$email_address); ?></username>
|
||||||
|
<authentication><?php echo $service["Authentication"];?></authentication>
|
||||||
|
</incomingServer>
|
||||||
|
<?php }
|
||||||
|
if($services["OutMail"]&& $services["OutMail"]["Enabled"]){
|
||||||
|
$service = $services["OutMail"]; ?>
|
||||||
|
<outgoingServer type="<?php echo strtolower($service["Type"]);?>">
|
||||||
|
<hostname><?php echo $service["Server"];?></hostname>
|
||||||
|
<port><?php echo $service["Port"];?></port>
|
||||||
|
<socketType><?php echo $service["SocketType"];?></socketType>
|
||||||
|
<username><?php echo $this->get_username($service,$email_address);?></username>
|
||||||
|
<authentication><?php echo $service["Authentication"];?></authentication>
|
||||||
|
</outgoingServer>
|
||||||
|
<?php }
|
||||||
|
if ($services["AddressBook"] && $services["AddressBook"]["Enabled"]) {
|
||||||
|
$service = $services["AddressBook"]; ?>
|
||||||
|
<addressBook type="<?php echo strtolower($service["Type"]); ?>">
|
||||||
|
<username><?php echo $this->get_username($service,$email_address);?></username>
|
||||||
|
<authentication><?php echo $service["Authentication"];?></authentication>
|
||||||
|
<serverURL><?php echo $service["Server"];?></serverURL>
|
||||||
|
</addressBook>
|
||||||
|
<?php }
|
||||||
|
if ($services["Calendar"] && $services["Calendar"]["Enabled"]){
|
||||||
|
$service = $services["Calendar"] ;?>
|
||||||
|
<calendar type="<?php echo strtolower($service["Type"]);?>">
|
||||||
|
<username><?php echo $this->get_username($service,$email_address);?></username>
|
||||||
|
<authentication><?php echo $service["Authentication"];?></authentication>
|
||||||
|
<serverURL><?php echo $service["Server"];?></serverURL>
|
||||||
|
</calendar>
|
||||||
|
<?php }
|
||||||
|
if ($services["WebMail"] && $services["WebMail"]["Enabled"]) {
|
||||||
|
$service = $services["WebMail"]; ?>
|
||||||
|
<webMail>
|
||||||
|
<loginPage url="<?php echo $service["Server"];?>" />
|
||||||
|
<loginPageInfo url="<?php echo $service["Server"];?>">
|
||||||
|
<username><?php echo $this->get_username($service,$email_address);?></username>
|
||||||
|
<usernameField id="<?php echo $service["UsernameDivID"];?>" name="<?php echo $service["UsernameDivName"];?>" />
|
||||||
|
<passwordField name="<?php echo $service["PasswordDivName"];?>" />
|
||||||
|
<loginButton id="<?php echo $service["SubmitButtonID"];?>" name="<?php echo $service["SubmitButtonName"];?>"/>
|
||||||
|
</loginPageInfo>
|
||||||
|
</webMail>
|
||||||
|
<?php } ?>
|
||||||
|
</emailProvider>
|
||||||
|
</clientConfig>
|
45
src/templates/autodiscover.html
Normal file
45
src/templates/autodiscover.html
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
<!-- Example POST Request (sent from client) :
|
||||||
|
<?xml version="1.0" \?\>
|
||||||
|
<Autodiscover xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006">
|
||||||
|
<Request>
|
||||||
|
<EMailAddress>your@email.address</EMailAddress>
|
||||||
|
<AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema>
|
||||||
|
</Request>
|
||||||
|
</Autodiscover> -->
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<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>
|
||||||
|
<?php if ($conf["InMail"] && $conf["InMail"]["Enabled"]){
|
||||||
|
$in = $conf["InMail"];?>
|
||||||
|
<Protocol>
|
||||||
|
<Type><?php echo $in["Type"];?></Type>
|
||||||
|
<Server><?php echo $in["Server"];?></Server>
|
||||||
|
<Port><?php echo $in["Port"];?></Port>
|
||||||
|
<DomainRequired><?php echo Core::$Config["RequireAuthDomain"] ? "on" : "off";?></DomainRequired>
|
||||||
|
<LoginName><?php echo isset($matches[1]) ? $matches[1] : false ; ?></LoginName>
|
||||||
|
<SPA><?php echo $in["SPA"] ? "on" : "off";?></SPA>
|
||||||
|
<SSL><?php echo $in["SocketType"] == "SSL" ? "on" : "off";?></SSL>
|
||||||
|
<AuthRequired><?php echo $in["NoAuthRequired"] ? "off" : "on";?></AuthRequired>
|
||||||
|
</Protocol>
|
||||||
|
<?php }
|
||||||
|
if ($conf["OutMail"]&& $conf["OutMail"]["Enabled"]) {
|
||||||
|
$out = $conf["OutMail"];?>
|
||||||
|
<Protocol>
|
||||||
|
<Type><?php echo $out["Type"];?></Type>
|
||||||
|
<Server><?php echo $out["Server"];?></Server>
|
||||||
|
<Port><?php echo $out["Port"];?></Port>
|
||||||
|
<DomainRequired><?php echo Core::$Config["RequireAuthDomain"] ? "on" : "off";?></DomainRequired>
|
||||||
|
<LoginName><?php echo isset($matches[1]) ? $matches[1] : false ; ?></LoginName>
|
||||||
|
<SPA><?php echo $in["SPA"] ? "on" : "off";?></SPA>
|
||||||
|
<Encryption><?php echo $in["SocketType"];?></Encryption>
|
||||||
|
<AuthRequired><?php echo $in["NoAuthRequired"] ? "off" : "on";?></AuthRequired>
|
||||||
|
<UsePOPAuth><?php echo $in["POPAuth"] ? "on" : "off";?></UsePOPAuth>
|
||||||
|
<SMTPLast><?php echo $in["SMTPLast"] ? "on" : "off";?></SMTPLast>
|
||||||
|
</Protocol>
|
||||||
|
<?php } ?>
|
||||||
|
</Account>
|
||||||
|
</Response>
|
||||||
|
</Autodiscover>
|
32
src/web/handler/handler.go
Normal file
32
src/web/handler/handler.go
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package handler
|
||||||
|
import (
|
||||||
|
. "mailautoconf/structs"
|
||||||
|
. "mailautoconf/global"
|
||||||
|
"mailautoconf/web/responses"
|
||||||
|
"strings"
|
||||||
|
"net/http"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
func WebHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ThisSession = Session{}
|
||||||
|
ThisSession.ResponseWriter = w
|
||||||
|
ThisSession.Request = r
|
||||||
|
ThisSession.Path = strings.ToLower(r.URL.Path[1:])
|
||||||
|
|
||||||
|
switch ThisSession.Path {
|
||||||
|
case "mail/config-v1.1.xml":
|
||||||
|
ThisSession.WebContent = responses.MozAutoconfig()
|
||||||
|
case "autodiscover/autodiscover.xml":
|
||||||
|
ThisSession.WebContent = responses.MsAutoDiscoverXML()
|
||||||
|
case "autodiscover/autodiscover.json":
|
||||||
|
ThisSession.WebContent = responses.MsAutoDiscoverJSON()
|
||||||
|
default:
|
||||||
|
ThisSession.WebContent = responses.DefaultResponse()
|
||||||
|
}
|
||||||
|
|
||||||
|
writeWebOutput()
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeWebOutput () {
|
||||||
|
fmt.Fprintf(ThisSession.ResponseWriter, ThisSession.WebContent)
|
||||||
|
}
|
14
src/web/responses/responses.go
Normal file
14
src/web/responses/responses.go
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package responses
|
||||||
|
|
||||||
|
func MozAutoconfig() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
func MsAutoDiscoverXML() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
func MsAutoDiscoverJSON() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
func DefaultResponse() string {
|
||||||
|
return ""
|
||||||
|
}
|
Loading…
Reference in a new issue