- Added cert store hot reload to fix newly ssl cert not loaded
- Optimized SMTP structure and UI
This commit is contained in:
Toby Chui 2024-04-28 22:25:05 +08:00
parent fc9240fbac
commit e24f31bdef
4 changed files with 11 additions and 43 deletions

View File

@ -101,6 +101,7 @@ func AcmeCheckAndHandleRenewCertificate(w http.ResponseWriter, r *http.Request)
} else { } else {
//This port do not support ACME //This port do not support ACME
utils.SendErrorResponse(w, "ACME renew only support web server listening on port 80 (http) or 443 (https)") utils.SendErrorResponse(w, "ACME renew only support web server listening on port 80 (http) or 443 (https)")
return
} }
//Add a 3 second delay to make sure everything is settle down //Add a 3 second delay to make sure everything is settle down
@ -109,6 +110,10 @@ func AcmeCheckAndHandleRenewCertificate(w http.ResponseWriter, r *http.Request)
// Pass over to the acmeHandler to deal with the communication // Pass over to the acmeHandler to deal with the communication
acmeHandler.HandleRenewCertificate(w, r) acmeHandler.HandleRenewCertificate(w, r)
//Update the TLS cert store buffer
tlsCertManager.UpdateLoadedCertList()
//Restore original settings
if dynamicProxyRouter.Option.Port == 443 { if dynamicProxyRouter.Option.Port == 443 {
if !isForceHttpsRedirectEnabledOriginally { if !isForceHttpsRedirectEnabledOriginally {
//Default is off. Turn the redirection off //Default is off. Turn the redirection off

View File

@ -25,12 +25,6 @@ func HandleSMTPSet(w http.ResponseWriter, r *http.Request) {
return return
} }
domain, err := utils.PostPara(r, "domain")
if err != nil {
//Assume domain is empty, raised by issue #129
domain = ""
}
portString, err := utils.PostPara(r, "port") portString, err := utils.PostPara(r, "port")
if err != nil { if err != nil {
utils.SendErrorResponse(w, "port must be a valid integer") utils.SendErrorResponse(w, "port must be a valid integer")
@ -76,7 +70,6 @@ func HandleSMTPSet(w http.ResponseWriter, r *http.Request) {
//Set the email sender properties //Set the email sender properties
thisEmailSender := email.Sender{ thisEmailSender := email.Sender{
Hostname: strings.TrimSpace(hostname), Hostname: strings.TrimSpace(hostname),
Domain: strings.TrimSpace(domain),
Port: port, Port: port,
Username: strings.TrimSpace(username), Username: strings.TrimSpace(username),
Password: strings.TrimSpace(password), Password: strings.TrimSpace(password),

View File

@ -13,7 +13,6 @@ import (
type Sender struct { type Sender struct {
Hostname string //E.g. mail.gandi.net Hostname string //E.g. mail.gandi.net
Domain string //E.g. arozos.com
Port int //E.g. 587 Port int //E.g. 587
Username string //Username of the email account Username string //Username of the email account
Password string //Password of the email account Password string //Password of the email account
@ -21,10 +20,9 @@ type Sender struct {
} }
// Create a new email sender object // Create a new email sender object
func NewEmailSender(hostname string, domain string, port int, username string, password string, senderAddr string) *Sender { func NewEmailSender(hostname string, port int, username string, password string, senderAddr string) *Sender {
return &Sender{ return &Sender{
Hostname: hostname, Hostname: hostname,
Domain: domain,
Port: port, Port: port,
Username: username, Username: username,
Password: password, Password: password,
@ -52,12 +50,8 @@ func (s *Sender) SendEmail(to string, subject string, content string) error {
content + "\n\n") content + "\n\n")
//Login to the SMTP server //Login to the SMTP server
var auth smtp.Auth //Username can be username (e.g. admin) or email (e.g. admin@example.com), depending on SMTP service provider
if s.Domain == "" { auth := smtp.PlainAuth("", s.Username, s.Password, s.Hostname)
auth = smtp.PlainAuth("", s.Username, s.Password, s.Hostname)
} else {
auth = smtp.PlainAuth("", s.Username+"@"+s.Domain, s.Password, s.Hostname)
}
err := smtp.SendMail(s.Hostname+":"+strconv.Itoa(s.Port), auth, s.SenderAddr, []string{to}, msg) err := smtp.SendMail(s.Hostname+":"+strconv.Itoa(s.Port), auth, s.SenderAddr, []string{to}, msg)
if err != nil { if err != nil {

View File

@ -65,21 +65,9 @@
<div class="field"> <div class="field">
<p><i class="caret down icon"></i> Credentials for SMTP server authentications</p> <p><i class="caret down icon"></i> Credentials for SMTP server authentications</p>
<div class="two fields"> <div class="field">
<div class="field"> <label>Sender Username / Email</label>
<label>Sender Username</label> <input type="text" name="username" placeholder="e.g. admin or admin@mydomain.com">
<input type="text" name="username" placeholder="E.g. admin">
</div>
<div class="field">
<label>Sender Domain</label>
<div class="ui labeled input">
<div class="ui basic label">
@
</div>
<input type="text" name="domain" min="1" max="65534" placeholder="E.g. arozos.com">
</div>
</div>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
@ -272,7 +260,6 @@
e.preventDefault(); e.preventDefault();
var data = { var data = {
hostname: $('input[name=hostname]').val(), hostname: $('input[name=hostname]').val(),
domain: $('input[name=domain]').val(),
port: parseInt($('input[name=port]').val()), port: parseInt($('input[name=port]').val()),
username: $('input[name=username]').val(), username: $('input[name=username]').val(),
password: $('input[name=password]').val(), password: $('input[name=password]').val(),
@ -306,7 +293,6 @@
function initSMTPSettings(){ function initSMTPSettings(){
$.get("/api/tools/smtp/get", function(data){ $.get("/api/tools/smtp/get", function(data){
$('#email-form input[name=hostname]').val(data.Hostname); $('#email-form input[name=hostname]').val(data.Hostname);
$('#email-form input[name=domain]').val(data.Domain);
$('#email-form input[name=port]').val(data.Port); $('#email-form input[name=port]').val(data.Port);
$('#email-form input[name=username]').val(data.Username); $('#email-form input[name=username]').val(data.Username);
$('#email-form input[name=senderAddr]').val(data.SenderAddr); $('#email-form input[name=senderAddr]').val(data.SenderAddr);
@ -345,16 +331,6 @@
form.find('input[name="hostname"]').parent().removeClass('error'); form.find('input[name="hostname"]').parent().removeClass('error');
} }
// validate domain, now allow empty string (for smtp that dont use domain as input)
/*
const domain = form.find('input[name="domain"]').val().trim();
if (!domainRegex.test(domain)) {
form.find('input[name="domain"]').parent().addClass('error');
isValid = false;
} else {
form.find('input[name="domain"]').parent().removeClass('error');
}
*/
// validate username // validate username
const username = form.find('input[name="username"]').val().trim(); const username = form.find('input[name="username"]').val().trim();