summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--domain_test.go2
-rw-r--r--handler.go2
-rw-r--r--handler_test.go29
-rw-r--r--server.go4
-rw-r--r--server_test.go7
-rw-r--r--statistics/mailgraph.cgi16
-rw-r--r--struct.go5
-rw-r--r--utilities.go4
-rw-r--r--utilities_test.go4
-rw-r--r--views/about.html2
-rw-r--r--views/about_de.html2
-rw-r--r--views/footer.html20
-rw-r--r--views/howto.html2
-rw-r--r--views/howto_de.html2
-rw-r--r--views/index.html2
-rw-r--r--views/index_de.html4
-rw-r--r--views/navbar_de.html2
-rw-r--r--views/password.html2
-rw-r--r--views/password_de.html2
-rw-r--r--views/register.html2
-rw-r--r--views/register_de.html2
-rw-r--r--views/server.html4
-rw-r--r--views/server_de.html6
-rw-r--r--views/user.html16
-rw-r--r--views/user_de.html18
26 files changed, 106 insertions, 57 deletions
diff --git a/Makefile b/Makefile
index f6aa928..95cb3b5 100644
--- a/Makefile
+++ b/Makefile
@@ -118,7 +118,7 @@ _run_test: $(_TEST_FILES)
touch $@
test_all: import
- @FREEMAIL_SMTP_MAILER_MX=localhost FREEMAIL_DB_CREDENTIALS=':memory:' go test $(RACE) $(VERBOSE) $(EXTERNAL)
+ @FREEMAIL_SMTP_MAILER_MX=localhost.iamfabulous.de FREEMAIL_DB_CREDENTIALS=':memory:' go test $(RACE) $(VERBOSE) $(EXTERNAL)
benchmark: import
DB_FREEMAIL_LOG=false FREEMAIL_DB_CREDENTIALS=":memory:" go test $(VERBOSE) -bench=".*"
diff --git a/domain_test.go b/domain_test.go
index af80d0d..1d3dde6 100644
--- a/domain_test.go
+++ b/domain_test.go
@@ -54,7 +54,7 @@ func TestValidateDomainMX(t *testing.T) {
if d.ValidateDomainMX(os.Getenv("FREEMAIL_SMTP_MAILER_MX")) {
t.Fatal("google.cm MX record doesn't point to this server.")
}
- d.Name = "iamfabulous.de"
+ d.Name = os.Getenv("FREEMAIL_SMTP_MAILER_MX")
if !d.ValidateDomainMX(os.Getenv("FREEMAIL_SMTP_MAILER_MX")) {
t.Fatal(os.Getenv("FREEMAIL_SMTP_MAILER_MX") + " MX should point to this server.")
}
diff --git a/handler.go b/handler.go
index 021a852..e372052 100644
--- a/handler.go
+++ b/handler.go
@@ -260,7 +260,7 @@ func ChangeLocaleHandler(w http.ResponseWriter, r *http.Request) {
locale := r.URL.Query().Get("to")
var page string
- if session.Values["page"] == "" {
+ if session.Values["page"] == "" || session.Values["page"] == nil {
page = "/"
} else {
page = session.Values["page"].(string)
diff --git a/handler_test.go b/handler_test.go
index 2ea7494..8bbf36a 100644
--- a/handler_test.go
+++ b/handler_test.go
@@ -4,6 +4,7 @@ import (
"net/http"
"net/http/httptest"
"net/url"
+ "os"
"strings"
"testing"
)
@@ -92,10 +93,15 @@ func BenchmarkRegisterHandler(b *testing.B) {
}
func TestCreateNewEntryHandler(t *testing.T) {
+ if testing.Short() || !*testExternal {
+ t.Skip("Skipping test to avoid external network.")
+ }
+
+ domain := os.Getenv("FREEMAIL_SMTP_MAILER_MX")
form := url.Values{}
- form.Set("Email", "createNewEntry@localhost")
- form.Set("ConfirmEmail", "createNewEntry@localhost")
+ form.Set("Email", "createNewEntry@"+domain)
+ form.Set("ConfirmEmail", "createNewEntry@"+domain)
form.Set("Password", "Password")
form.Set("ConfirmPassword", "Password")
@@ -342,15 +348,20 @@ func BenchmarkPasswordHandler(b *testing.B) {
func TestChangePasswordHandler(t *testing.T) {
+ if testing.Short() || !*testExternal {
+ t.Skip("Skipping test to avoid external network.")
+ }
+
// Test with the correct form
form := url.Values{}
- if err := CreateNewEntry("test@localhost", Md5Hash("Password")); err != nil {
+ domain := os.Getenv("FREEMAIL_SMTP_MAILER_MX")
+ if err := CreateNewEntry("test@"+domain, Md5Hash("Password")); err != nil {
t.Fatal(err)
}
- form.Set("Email", "test@localhost")
+ form.Set("Email", "test@"+domain)
form.Set("Password", "Password")
form.Set("ConfirmPassword", "password")
form.Set("NewPassword", "password")
@@ -395,11 +406,11 @@ func TestChangePasswordHandler(t *testing.T) {
form = url.Values{}
- if err = CreateNewEntry("test1@localhost", Md5Hash("Password")); err != nil {
+ if err = CreateNewEntry("test1@"+domain, Md5Hash("Password")); err != nil {
t.Fatal(err)
}
- form.Set("Email", "test1@localhost")
+ form.Set("Email", "test1@"+domain)
form.Set("Password", "Password")
form.Set("ConfirmPassword", "Password")
form.Set("NewPassword", "password")
@@ -439,11 +450,11 @@ func TestChangePasswordHandler(t *testing.T) {
form = url.Values{}
- if err = CreateNewEntry("test2@localhost", Md5Hash("Password")); err != nil {
+ if err = CreateNewEntry("test2@"+domain, Md5Hash("Password")); err != nil {
t.Fatal(err)
}
- form.Set("Email", "test2@localhost")
+ form.Set("Email", "test2@"+domain)
form.Set("Password", "password")
form.Set("ConfirmPassword", "Password")
form.Set("NewPassword", "Password")
@@ -483,7 +494,7 @@ func TestChangePasswordHandler(t *testing.T) {
form = url.Values{}
- form.Set("Email", "nonexistent@localhost")
+ form.Set("Email", "nonexistent@"+domain)
form.Set("Password", "password")
form.Set("ConfirmPassword", "Password")
form.Set("NewPassword", "Password")
diff --git a/server.go b/server.go
index 975b549..e5e5d56 100644
--- a/server.go
+++ b/server.go
@@ -53,6 +53,10 @@ func CreateNewEntry(email, password string) error {
func ExecTemplate(template string, w http.ResponseWriter, r *http.Request, flash Flash) error {
l := GetLanguage(r)
+ flash.Language = l
+ if l != "" {
+ l = "_" + l
+ }
template = template + l + ".html"
index := mainTempl.Lookup(template)
diff --git a/server_test.go b/server_test.go
index ba84bc7..8ad3151 100644
--- a/server_test.go
+++ b/server_test.go
@@ -1,11 +1,16 @@
package main
import (
+ "os"
"testing"
)
func TestCreateNewEntry(t *testing.T) {
- err := CreateNewEntry("foobar@localhost", "password")
+ if testing.Short() || !*testExternal {
+ t.Skip("Skipping test to avoid external network.")
+ }
+ domain := os.Getenv("FREEMAIL_SMTP_MAILER_MX")
+ err := CreateNewEntry("foobar@"+domain, "password")
if err != nil {
t.Fatal(err)
}
diff --git a/statistics/mailgraph.cgi b/statistics/mailgraph.cgi
index 69d539a..60c81a2 100644
--- a/statistics/mailgraph.cgi
+++ b/statistics/mailgraph.cgi
@@ -193,7 +193,7 @@ sub print_html()
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Mail statistics for Libremail</title>
+<title>Mail Statistics for Libremail</title>
<meta http-equiv="Refresh" content="300" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
@@ -276,7 +276,7 @@ a:hover { text-decoration: underline; }
<div class="container">
<div class="row">
<div class="cold-md-12">
- <h1>Mail statistics for Libremail</h1>
+ <h1>Mail Statistics for Libremail</h1>
<div class="well">
HEADER
@@ -319,7 +319,17 @@ HEADER
<script>
\$(document).ready(function(){
\$('.dropdown-toggle').dropdown();
- })
+ });
+ var _paq = _paq || [];
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//a.iamfabulous.de/";
+ _paq.push(['setTrackerUrl', u+'piwik.php']);
+ _paq.push(['setSiteId', 12]);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
+ })();
</script>
</body></html>
FOOTER
diff --git a/struct.go b/struct.go
index bcc94c8..a59b766 100644
--- a/struct.go
+++ b/struct.go
@@ -49,8 +49,9 @@ type Request struct {
}
type Flash struct {
- Success []interface{}
- Error []interface{}
+ Success []interface{}
+ Error []interface{}
+ Language string
}
type ChangePasswordReq struct {
diff --git a/utilities.go b/utilities.go
index 602d4fe..f3b0ece 100644
--- a/utilities.go
+++ b/utilities.go
@@ -38,7 +38,7 @@ func GetLanguage(r *http.Request) string {
} else {
if c.Value != "" {
if c.Value == "de" {
- return "_" + c.Value
+ return c.Value
} else {
return ""
}
@@ -50,7 +50,7 @@ func GetLanguage(r *http.Request) string {
lang := r.Header["Accept-Language"][0]
l := strings.TrimSpace(strings.Split(lang, ",")[0])
if l == "de" {
- return "_" + l
+ return l
}
return ""
}
diff --git a/utilities_test.go b/utilities_test.go
index 4431241..d69c530 100644
--- a/utilities_test.go
+++ b/utilities_test.go
@@ -43,9 +43,9 @@ func TestGetLanguage(t *testing.T) {
}
request.AddCookie(&cookie)
lang = GetLanguage(request)
- if lang != "_de" {
+ if lang != "de" {
t.Log(lang)
- t.Fatal("Expected '_de' as lang.")
+ t.Fatal("Expected 'de' as lang.")
}
// Test language with lang=en
diff --git a/views/about.html b/views/about.html
index 0e75f60..364bc28 100644
--- a/views/about.html
+++ b/views/about.html
@@ -62,4 +62,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/about_de.html b/views/about_de.html
index 0f46fed..7cee528 100644
--- a/views/about_de.html
+++ b/views/about_de.html
@@ -63,4 +63,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/footer.html b/views/footer.html
index 19c589b..007474b 100644
--- a/views/footer.html
+++ b/views/footer.html
@@ -19,7 +19,25 @@
<script>
$(document).ready(function(){
$('.dropdown-toggle').dropdown();
- })
+ });
+ var _paq = _paq || [];
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//a.iamfabulous.de/";
+ _paq.push(['setTrackerUrl', u+'piwik.php']);
+ _paq.push(['setSiteId', 12]);
+ /*
+ _paq.push([function () {
+ if (!this.getCustomVariable(1)) {
+ this.setCustomVariable(1, "Language", {{.}}, "visit");
+ }
+ }]);
+ */
+ _paq.push(['setCustomVariable', 1, "Language",{{.}}, "visit"]);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
+ })();
</script>
</body>
</html>
diff --git a/views/howto.html b/views/howto.html
index 03bb4f7..72a4e3f 100644
--- a/views/howto.html
+++ b/views/howto.html
@@ -49,4 +49,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/howto_de.html b/views/howto_de.html
index b573a09..76ce646 100644
--- a/views/howto_de.html
+++ b/views/howto_de.html
@@ -46,4 +46,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/index.html b/views/index.html
index 423f176..4e5b2ee 100644
--- a/views/index.html
+++ b/views/index.html
@@ -44,4 +44,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/index_de.html b/views/index_de.html
index 839c5c6..f563b9e 100644
--- a/views/index_de.html
+++ b/views/index_de.html
@@ -8,7 +8,7 @@
<p>Genervt from Spam? Sie brauchen nur ein E-Mail Adresse? Oder Sie besitzen eine eigene Domain und möchten darüber E-Mails versenden?
<strong>Hier sind Sie genau richtig!</strong>
<br>Komplett kostenlos und werbefrei!</p>
- <p><a class="btn btn-primary btn-lg btn-raised" href="/about" role="button"><span class="fa fa-sign-in"></span> Neue Adresse &raquo;</a></p>
+ <p><a class="btn btn-primary btn-lg btn-raised" href="/register" role="button"><span class="fa fa-sign-in"></span> Neue Adresse &raquo;</a></p>
</div>
</div>
<div class="container">
@@ -43,4 +43,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/navbar_de.html b/views/navbar_de.html
index 747d4b8..e5f35f7 100644
--- a/views/navbar_de.html
+++ b/views/navbar_de.html
@@ -22,7 +22,7 @@
<a class="" href="/locale?to=en" title="Change to English"><span class="fa fa-language"></span> en</a>
</li>
<li class="dropdown">
- <a class="" href="/register" title="Nutzer" data-target="#" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span> Mehr <span class="caret"></span></a>
+ <a class="" href="/register" title="Nutzer" data-target="#" data-toggle="dropdown"><span class="fa fa-plus"></span> Mehr <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li>
<a class="" href="/about" title="Über uns"><span class="glyphicon glyphicon-file"></span> Über uns</a>
diff --git a/views/password.html b/views/password.html
index c5bedee..2b109d5 100644
--- a/views/password.html
+++ b/views/password.html
@@ -73,4 +73,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/password_de.html b/views/password_de.html
index 606ff4b..66792d5 100644
--- a/views/password_de.html
+++ b/views/password_de.html
@@ -73,4 +73,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/register.html b/views/register.html
index c063fa0..5971686 100644
--- a/views/register.html
+++ b/views/register.html
@@ -85,4 +85,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/register_de.html b/views/register_de.html
index a6423d4..a2c6a54 100644
--- a/views/register_de.html
+++ b/views/register_de.html
@@ -85,4 +85,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/server.html b/views/server.html
index b14fbf6..ef2929c 100644
--- a/views/server.html
+++ b/views/server.html
@@ -14,7 +14,7 @@
<h2>Webmail</h2>
<p>You can use the webmail interface to browse your emails with your webbrowser of choice. Use <a href="https://iamfabulous.de/webmail" title="Webmail">this link <span class="fa fa-external-link-square"></a> to open roundcube now.
<br>
- <strong>Use your mail adress and the passwort as credentials to log in.</strong>
+ <strong>Use your mail address and the passwort as credentials to log in.</strong>
<br>
The TLS certificate is signed to 'webmail.iamfabulous.de'
</p>
@@ -76,4 +76,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/server_de.html b/views/server_de.html
index 8cdebf5..eeb26b9 100644
--- a/views/server_de.html
+++ b/views/server_de.html
@@ -12,9 +12,9 @@
<ul class="list-unstyled">
<li>
<h2>Webmail</h2>
- <p>Nutzen Sie ihren Browser, um ihre E-Mails zu lesen. Unser Webmail finden sie unter <a href="https://iamfabulous.de/webmail" title="Webmail">diesem Link <span class="fa fa-external-link-square"></a>.
+ <p>Nutzen Sie Ihren Browser, um Ihre E-Mails zu lesen. Unser Webmail finden Sie unter <a href="https://iamfabulous.de/webmail" title="Webmail">diesem Link <span class="fa fa-external-link-square"></a>.
<br>
- <strong>Loggen Sie sich mit Ihrer kompletten E-Mail Adresse und ihrem Passwort ein.</strong>
+ <strong>Loggen Sie sich mit Ihrer kompletten E-Mail Adresse und Ihrem Passwort ein.</strong>
<br>
Das TLS Zertifikat ist auf 'webmail.iamfabulous.de' signiert.
</p>
@@ -78,4 +78,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/user.html b/views/user.html
index d8a5175..58798ce 100644
--- a/views/user.html
+++ b/views/user.html
@@ -12,27 +12,27 @@
<p>
You can change your password here.
<br>
- <a class="btn btn-primary btn-raised" href="/password" role="button">Change Password &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="/password" role="button"><span class="fa fa-lock"></span> Change Password &raquo;</a>
</p>
<br>
- <h2 id="sign_up">Create new adress</h2>
+ <h2 id="sign_up">Create new address</h2>
<p>
- Looking for a new adress? Click here.
+ Looking for a new mail address? Click here.
<br>
- <a class="btn btn-primary btn-raised" href="/register" role="button">Create New Account&raquo;</a>
+ <a class="btn btn-primary btn-raised" href="/register" role="button"><span class="fa fa-user-plus"></span> Create New Account&raquo;</a>
</p>
<br>
<h2 id="login">Login</h2>
<p>The easiest way is to use our webmail interface. You can find it <a href="https://iamfabulous.de/webmail" title="Webmail" target="_blank">here <span class="fa fa-external-link"></span></a>.
<br>
- Log in with your full mail adress and your password.
+ Log in with your full mail address and your password.
<br>
- <a class="btn btn-primary btn-raised" href="https://iamfabulous.de/webmail" role="button">Webmail &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="https://iamfabulous.de/webmail" role="button"><span class="glyphicon glyphicon-envelope"></span> Login with your browser &raquo;</a>
<br>
<br>
If you want to use your own client, see here for connection details.
<br>
- <a class="btn btn-primary btn-raised" href="/server" role="button" title="Server | Connection details">Connection details &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="/server" role="button" title="Server | Connection details"><span class="glyphicon glyphicon-cog"></span> Connection details &raquo;</a>
</p>
<!--p>
See <a href="/howto#login" title="How to login">here</a> for more details.
@@ -43,4 +43,4 @@
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}
diff --git a/views/user_de.html b/views/user_de.html
index 454b69f..a1e67d8 100644
--- a/views/user_de.html
+++ b/views/user_de.html
@@ -10,34 +10,34 @@
<div class="well well-lg">
<h2 id="change_password">Ändere das Passwort</h2>
<p>
- Sie können hier ihr Passwort ändern.
+ Sie können hier Ihr Passwort ändern.
<br>
- <a class="btn btn-primary btn-raised" href="/password" role="button">Ändere dein Passwort &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="/password" role="button"><span class="fa fa-lock"></span> Ändere dein Passwort &raquo;</a>
</p>
<br>
<h2 id="sign_up">Erstelle eine neue Adresse</h2>
<p>
- Sie wollen eine neue E-Mail Adresse? Klicken sie hier.
+ Sie wollen eine neue E-Mail Adresse? Klicken Sie hier.
<br>
- <a class="btn btn-primary btn-raised" href="/register" role="button">Neue E-Mail Adresse &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="/register" role="button"><span class="fa fa-user-plus"></span> Neue E-Mail Adresse &raquo;</a>
</p>
<br>
<h2 id="login">Login</h2>
<p>
- Verwalten Sie ihre neue E-Mail Adresse einfach über unser intuitives webbasiertes Portal. Sie finden es <a href="https://iamfabulous.de/webmail" title="Webmail" target="_blank">hier <span class="fa fa-external-link"></span></a>.
+ Verwalten Sie Ihre neue E-Mail Adresse einfach über unser intuitives webbasiertes Portal. Sie finden es <a href="https://iamfabulous.de/webmail" title="Webmail" target="_blank">hier <span class="fa fa-external-link"></span></a>.
<br>
Loggen Sie sich mit Ihrer E-Mail Adresse und Ihrem Passwort ein.
<br>
- <a class="btn btn-primary btn-raised" href="https://iamfabulous.de/webmail" role="button">Logge dich in dein E-Mail Konto ein &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="https://iamfabulous.de/webmail" role="button"><span class="glyphicon glyphicon-envelope"></span> Logge dich in dein E-Mail Konto ein &raquo;</a>
<br>
<br>
- Wenn Sie ihren eigenen Klienten nutzen wollen, schauen Sie hier für Verbindungsdetails.
+ Wenn Sie Ihren eigenen Klienten nutzen wollen, schauen Sie hier für Verbindungsdetails.
<br>
- <a class="btn btn-primary btn-raised" href="/server" role="button" title="Server | Verbindungsdetails">Verbindungsdetails &raquo;</a>
+ <a class="btn btn-primary btn-raised" href="/server" role="button" title="Server | Verbindungsdetails"><span class="glyphicon glyphicon-cog"></span> Verbindungsdetails &raquo;</a>
</p>
</div>
</div>
</div>
</div>
-{{template "footer.html"}}
+{{template "footer.html" .Language}}