mirror of https://github.com/bjdgyc/anylink.git
100 lines
2.5 KiB
Go
100 lines
2.5 KiB
Go
package admin
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/bjdgyc/anylink/base"
|
|
"github.com/bjdgyc/anylink/dbdata"
|
|
)
|
|
|
|
func CustomCert(w http.ResponseWriter, r *http.Request) {
|
|
cert, _, err := r.FormFile("cert")
|
|
if err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
key, _, err := r.FormFile("key")
|
|
if err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
certFile, err := os.OpenFile(base.Cfg.CertFile, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600)
|
|
if err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
defer certFile.Close()
|
|
if _, err := io.Copy(certFile, cert); err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
keyFile, err := os.OpenFile(base.Cfg.CertKey, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600)
|
|
if err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
defer keyFile.Close()
|
|
if _, err := io.Copy(keyFile, key); err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
if tlscert, _, err := dbdata.ParseCert(); err != nil {
|
|
RespError(w, RespInternalErr, fmt.Sprintf("证书不合法,请重新上传:%v", err))
|
|
return
|
|
} else {
|
|
dbdata.LoadCertificate(tlscert)
|
|
}
|
|
RespSucess(w, "上传成功")
|
|
}
|
|
func GetCertSetting(w http.ResponseWriter, r *http.Request) {
|
|
sess := dbdata.GetXdb().NewSession()
|
|
defer sess.Close()
|
|
data := &dbdata.SettingLetsEncrypt{}
|
|
if err := dbdata.SettingGet(data); err != nil {
|
|
dbdata.SettingSessAdd(sess, data)
|
|
RespError(w, RespInternalErr, err)
|
|
}
|
|
userData := &dbdata.LegoUserData{}
|
|
if err := dbdata.SettingGet(userData); err != nil {
|
|
dbdata.SettingSessAdd(sess, userData)
|
|
}
|
|
RespSucess(w, data)
|
|
}
|
|
func CreatCert(w http.ResponseWriter, r *http.Request) {
|
|
if err := r.ParseForm(); err != nil {
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
return
|
|
}
|
|
body, err := io.ReadAll(r.Body)
|
|
if err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
defer r.Body.Close()
|
|
config := &dbdata.SettingLetsEncrypt{}
|
|
if err := json.Unmarshal(body, config); err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
if err := dbdata.SettingSet(config); err != nil {
|
|
RespError(w, RespInternalErr, err)
|
|
return
|
|
}
|
|
client := dbdata.LeGoClient{}
|
|
if err := client.NewClient(config); err != nil {
|
|
base.Error(err)
|
|
RespError(w, RespInternalErr, fmt.Sprintf("获取证书失败:%v", err))
|
|
return
|
|
}
|
|
if err := client.GetCert(config.Domain); err != nil {
|
|
base.Error(err)
|
|
RespError(w, RespInternalErr, fmt.Sprintf("获取证书失败:%v", err))
|
|
return
|
|
}
|
|
RespSucess(w, "生成证书成功")
|
|
}
|