mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
fix goroutine and memory leak
This commit is contained in:
parent
61496e3727
commit
40fcebbaae
3 changed files with 23 additions and 19 deletions
|
@ -59,7 +59,8 @@ type serverFileSystemType struct {
|
|||
}
|
||||
|
||||
func (f serverFileSystemType) Exists(prefix string, _path string) bool {
|
||||
_, err := f.Open(path.Join(prefix, _path))
|
||||
file, err := f.Open(path.Join(prefix, _path))
|
||||
defer file.Close()
|
||||
return err == nil
|
||||
}
|
||||
|
||||
|
|
|
@ -24,9 +24,11 @@ func InitRouter() *gin.Engine {
|
|||
accept := c.Request.Header.Get("Accept")
|
||||
if strings.Contains(accept, "text/html") {
|
||||
file, _ := mustFS("").Open("index.html")
|
||||
defer file.Close()
|
||||
stat, _ := file.Stat()
|
||||
c.DataFromReader(http.StatusOK, stat.Size(), "text/html",
|
||||
bufio.NewReader(file), nil)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"crypto/ecdsa"
|
||||
"crypto/elliptic"
|
||||
"crypto/rand"
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"github.com/0xJacky/Nginx-UI/server/model"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
|
@ -15,9 +14,11 @@ import (
|
|||
"github.com/go-acme/lego/v4/challenge/http01"
|
||||
"github.com/go-acme/lego/v4/lego"
|
||||
"github.com/go-acme/lego/v4/registration"
|
||||
"github.com/pkg/errors"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -70,15 +71,20 @@ func GetCertInfo(domain string) (key *x509.Certificate, err error) {
|
|||
|
||||
var response *http.Response
|
||||
|
||||
ts := &http.Transport{
|
||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
||||
client := &http.Client{
|
||||
Transport: &http.Transport{
|
||||
DialContext: (&net.Dialer{
|
||||
Timeout: 5 * time.Second,
|
||||
}).DialContext,
|
||||
DisableKeepAlives: true,
|
||||
},
|
||||
Timeout: 5 * time.Second,
|
||||
}
|
||||
|
||||
client := &http.Client{Transport: ts}
|
||||
|
||||
response, err = client.Get("https://" + domain)
|
||||
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, "get cert info error")
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -99,8 +105,7 @@ func IssueCert(domain string) error {
|
|||
// Create a user. New accounts need an email and private key to start.
|
||||
privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert generate key error")
|
||||
}
|
||||
|
||||
myUser := MyUser{
|
||||
|
@ -118,8 +123,7 @@ func IssueCert(domain string) error {
|
|||
// A client facilitates communication with the CA server.
|
||||
client, err := lego.NewClient(config)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert new client error")
|
||||
}
|
||||
|
||||
err = client.Challenge.SetHTTP01Provider(
|
||||
|
@ -128,15 +132,14 @@ func IssueCert(domain string) error {
|
|||
),
|
||||
)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert challenge fail")
|
||||
}
|
||||
|
||||
// New users will need to register
|
||||
reg, err := client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true})
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert register fail")
|
||||
}
|
||||
myUser.Registration = reg
|
||||
|
||||
|
@ -146,15 +149,13 @@ func IssueCert(domain string) error {
|
|||
}
|
||||
certificates, err := client.Certificate.Obtain(request)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert fail to obtain")
|
||||
}
|
||||
saveDir := nginx.GetNginxConfPath("ssl/" + domain)
|
||||
if _, err := os.Stat(saveDir); os.IsNotExist(err) {
|
||||
err = os.Mkdir(saveDir, 0755)
|
||||
if err != nil {
|
||||
log.Println("fail to create", saveDir)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert fail to create")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -164,13 +165,13 @@ func IssueCert(domain string) error {
|
|||
certificates.Certificate, 0644)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert write fullchain.cer fail")
|
||||
}
|
||||
err = ioutil.WriteFile(filepath.Join(saveDir, domain+".key"),
|
||||
certificates.PrivateKey, 0644)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
return errors.Wrap(err, "issue cert write key fail")
|
||||
}
|
||||
|
||||
nginx.ReloadNginx()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue