From ee1f67b3cd8205a63f8109b04d860f04dddf2ec5 Mon Sep 17 00:00:00 2001 From: Hintay Date: Fri, 5 May 2023 12:47:30 +0800 Subject: [PATCH] refactor: project structure --- main.go | 86 ++++--------- server/api/cert.go | 6 +- server/api/config.go | 4 +- server/api/dns_credential.go | 2 +- server/api/domain.go | 8 +- server/api/nginx_log.go | 4 +- server/api/ngx.go | 108 ++++++++-------- server/api/pty.go | 2 +- server/api/template.go | 2 +- server/{pkg => internal}/cert/auto_cert.go | 0 server/{pkg => internal}/cert/cert.go | 4 +- server/{pkg => internal}/cert/cert_info.go | 0 .../cert/config/acmedns.toml | 0 .../{pkg => internal}/cert/config/alidns.toml | 0 .../cert/config/allinkl.toml | 0 .../cert/config/arvancloud.toml | 0 .../cert/config/auroradns.toml | 0 .../cert/config/autodns.toml | 0 .../{pkg => internal}/cert/config/azure.toml | 0 .../cert/config/bindman.toml | 0 .../cert/config/bluecat.toml | 0 .../cert/config/brandit.toml | 0 .../{pkg => internal}/cert/config/bunny.toml | 0 .../cert/config/checkdomain.toml | 0 .../{pkg => internal}/cert/config/civo.toml | 0 .../cert/config/clouddns.toml | 0 .../cert/config/cloudflare.toml | 0 .../cert/config/cloudns.toml | 0 .../cert/config/cloudxns.toml | 0 .../{pkg => internal}/cert/config/config.go | 0 .../{pkg => internal}/cert/config/conoha.toml | 0 .../cert/config/constellix.toml | 0 .../{pkg => internal}/cert/config/desec.toml | 0 .../cert/config/designate.toml | 0 .../cert/config/digitalocean.toml | 0 .../cert/config/dnshomede.toml | 0 .../cert/config/dnsimple.toml | 0 .../cert/config/dnsmadeeasy.toml | 0 .../{pkg => internal}/cert/config/dnspod.toml | 0 .../{pkg => internal}/cert/config/dode.toml | 0 .../cert/config/domeneshop.toml | 0 .../cert/config/dreamhost.toml | 0 .../cert/config/duckdns.toml | 0 server/{pkg => internal}/cert/config/dyn.toml | 0 .../{pkg => internal}/cert/config/dynu.toml | 0 .../cert/config/easydns.toml | 0 .../cert/config/edgedns.toml | 0 .../{pkg => internal}/cert/config/epik.toml | 0 .../{pkg => internal}/cert/config/exec.toml | 0 .../cert/config/exoscale.toml | 0 .../cert/config/freemyip.toml | 0 .../{pkg => internal}/cert/config/gandi.toml | 0 .../cert/config/gandiv5.toml | 0 .../{pkg => internal}/cert/config/gcloud.toml | 0 .../{pkg => internal}/cert/config/gcore.toml | 0 .../{pkg => internal}/cert/config/glesys.toml | 0 .../cert/config/godaddy.toml | 0 .../cert/config/googledomains.toml | 0 .../cert/config/hetzner.toml | 0 .../cert/config/hostingde.toml | 0 .../cert/config/hosttech.toml | 0 .../cert/config/httpreq.toml | 0 .../cert/config/hurricane.toml | 0 .../cert/config/hyperone.toml | 0 .../cert/config/ibmcloud.toml | 0 server/{pkg => internal}/cert/config/iij.toml | 0 .../{pkg => internal}/cert/config/iijdpf.toml | 0 .../cert/config/infoblox.toml | 0 .../cert/config/infomaniak.toml | 0 .../cert/config/internetbs.toml | 0 .../{pkg => internal}/cert/config/inwx.toml | 0 .../{pkg => internal}/cert/config/ionos.toml | 0 .../cert/config/iwantmyname.toml | 0 .../{pkg => internal}/cert/config/joker.toml | 0 .../{pkg => internal}/cert/config/liara.toml | 0 .../cert/config/lightsail.toml | 0 .../{pkg => internal}/cert/config/linode.toml | 0 .../cert/config/liquidweb.toml | 0 .../{pkg => internal}/cert/config/loopia.toml | 0 .../{pkg => internal}/cert/config/luadns.toml | 0 .../cert/config/mydnsjp.toml | 0 .../cert/config/mythicbeasts.toml | 0 .../cert/config/namecheap.toml | 0 .../cert/config/namedotcom.toml | 0 .../cert/config/namesilo.toml | 0 .../cert/config/nearlyfreespeech.toml | 0 .../{pkg => internal}/cert/config/netcup.toml | 0 .../cert/config/netlify.toml | 0 .../cert/config/nicmanager.toml | 0 .../cert/config/nifcloud.toml | 0 .../{pkg => internal}/cert/config/njalla.toml | 0 .../{pkg => internal}/cert/config/nodion.toml | 0 server/{pkg => internal}/cert/config/ns1.toml | 0 .../cert/config/oraclecloud.toml | 0 server/{pkg => internal}/cert/config/otc.toml | 0 server/{pkg => internal}/cert/config/ovh.toml | 0 .../{pkg => internal}/cert/config/pdns.toml | 0 .../{pkg => internal}/cert/config/plesk.toml | 0 .../cert/config/porkbun.toml | 0 .../cert/config/rackspace.toml | 0 .../{pkg => internal}/cert/config/regru.toml | 0 .../cert/config/rfc2136.toml | 0 .../cert/config/rimuhosting.toml | 0 .../cert/config/route53.toml | 0 .../cert/config/safedns.toml | 0 .../cert/config/sakuracloud.toml | 0 .../cert/config/scaleway.toml | 0 .../cert/config/selectel.toml | 0 .../cert/config/servercow.toml | 0 .../{pkg => internal}/cert/config/simply.toml | 0 .../{pkg => internal}/cert/config/sonic.toml | 0 .../cert/config/stackpath.toml | 0 .../cert/config/tencentcloud.toml | 0 .../cert/config/transip.toml | 0 .../cert/config/ultradns.toml | 0 .../cert/config/variomedia.toml | 0 .../cert/config/vegadns.toml | 0 .../{pkg => internal}/cert/config/vercel.toml | 0 .../{pkg => internal}/cert/config/versio.toml | 0 .../cert/config/vinyldns.toml | 0 .../cert/config/vkcloud.toml | 0 .../{pkg => internal}/cert/config/vscale.toml | 0 .../{pkg => internal}/cert/config/vultr.toml | 0 .../cert/config/websupport.toml | 0 .../{pkg => internal}/cert/config/wedos.toml | 0 .../{pkg => internal}/cert/config/yandex.toml | 0 .../cert/config/yandexcloud.toml | 0 .../{pkg => internal}/cert/config/zoneee.toml | 0 .../{pkg => internal}/cert/config/zonomi.toml | 0 .../{pkg => internal}/cert/dns/config_env.go | 2 +- .../cert/dns/config_env_test.go | 2 +- .../cert/dns/tencent_cloud_dns_test.go | 121 ++++++++++++++++++ .../config_list/config_list.go | 0 server/{pkg => internal}/helper/copy.go | 0 server/{pkg => internal}/helper/file.go | 0 server/{pkg => internal}/helper/tar.go | 0 .../{pkg => internal}/nginx/build_config.go | 0 .../nginx/conf/nextcloud_ngx.conf | 0 server/{pkg => internal}/nginx/conf/test.conf | 0 server/{pkg => internal}/nginx/format_code.go | 0 server/{pkg => internal}/nginx/log.go | 0 server/{pkg => internal}/nginx/nginx.go | 0 .../nginx/ngx_conf_parse_test.go | 0 server/{pkg => internal}/nginx/parse.go | 0 server/{pkg => internal}/nginx/type.go | 0 server/{pkg => internal}/pty/pipeline.go | 0 server/{pkg => internal}/pty/type.go | 0 server/model/cert.go | 2 +- server/model/dns_credential.go | 2 +- server/pkg/cert/dns/tencent_cloud_dns_test.go | 121 ------------------ server/server.go | 46 +++++++ server/service/template.go | 2 +- server/service/upgrade.go | 2 +- server/test/acme_test.go | 2 +- server/test/cert_test.go | 2 +- 155 files changed, 269 insertions(+), 261 deletions(-) rename server/{pkg => internal}/cert/auto_cert.go (100%) rename server/{pkg => internal}/cert/cert.go (97%) rename server/{pkg => internal}/cert/cert_info.go (100%) rename server/{pkg => internal}/cert/config/acmedns.toml (100%) rename server/{pkg => internal}/cert/config/alidns.toml (100%) rename server/{pkg => internal}/cert/config/allinkl.toml (100%) rename server/{pkg => internal}/cert/config/arvancloud.toml (100%) rename server/{pkg => internal}/cert/config/auroradns.toml (100%) rename server/{pkg => internal}/cert/config/autodns.toml (100%) rename server/{pkg => internal}/cert/config/azure.toml (100%) rename server/{pkg => internal}/cert/config/bindman.toml (100%) rename server/{pkg => internal}/cert/config/bluecat.toml (100%) rename server/{pkg => internal}/cert/config/brandit.toml (100%) rename server/{pkg => internal}/cert/config/bunny.toml (100%) rename server/{pkg => internal}/cert/config/checkdomain.toml (100%) rename server/{pkg => internal}/cert/config/civo.toml (100%) rename server/{pkg => internal}/cert/config/clouddns.toml (100%) rename server/{pkg => internal}/cert/config/cloudflare.toml (100%) rename server/{pkg => internal}/cert/config/cloudns.toml (100%) rename server/{pkg => internal}/cert/config/cloudxns.toml (100%) rename server/{pkg => internal}/cert/config/config.go (100%) rename server/{pkg => internal}/cert/config/conoha.toml (100%) rename server/{pkg => internal}/cert/config/constellix.toml (100%) rename server/{pkg => internal}/cert/config/desec.toml (100%) rename server/{pkg => internal}/cert/config/designate.toml (100%) rename server/{pkg => internal}/cert/config/digitalocean.toml (100%) rename server/{pkg => internal}/cert/config/dnshomede.toml (100%) rename server/{pkg => internal}/cert/config/dnsimple.toml (100%) rename server/{pkg => internal}/cert/config/dnsmadeeasy.toml (100%) rename server/{pkg => internal}/cert/config/dnspod.toml (100%) rename server/{pkg => internal}/cert/config/dode.toml (100%) rename server/{pkg => internal}/cert/config/domeneshop.toml (100%) rename server/{pkg => internal}/cert/config/dreamhost.toml (100%) rename server/{pkg => internal}/cert/config/duckdns.toml (100%) rename server/{pkg => internal}/cert/config/dyn.toml (100%) rename server/{pkg => internal}/cert/config/dynu.toml (100%) rename server/{pkg => internal}/cert/config/easydns.toml (100%) rename server/{pkg => internal}/cert/config/edgedns.toml (100%) rename server/{pkg => internal}/cert/config/epik.toml (100%) rename server/{pkg => internal}/cert/config/exec.toml (100%) rename server/{pkg => internal}/cert/config/exoscale.toml (100%) rename server/{pkg => internal}/cert/config/freemyip.toml (100%) rename server/{pkg => internal}/cert/config/gandi.toml (100%) rename server/{pkg => internal}/cert/config/gandiv5.toml (100%) rename server/{pkg => internal}/cert/config/gcloud.toml (100%) rename server/{pkg => internal}/cert/config/gcore.toml (100%) rename server/{pkg => internal}/cert/config/glesys.toml (100%) rename server/{pkg => internal}/cert/config/godaddy.toml (100%) rename server/{pkg => internal}/cert/config/googledomains.toml (100%) rename server/{pkg => internal}/cert/config/hetzner.toml (100%) rename server/{pkg => internal}/cert/config/hostingde.toml (100%) rename server/{pkg => internal}/cert/config/hosttech.toml (100%) rename server/{pkg => internal}/cert/config/httpreq.toml (100%) rename server/{pkg => internal}/cert/config/hurricane.toml (100%) rename server/{pkg => internal}/cert/config/hyperone.toml (100%) rename server/{pkg => internal}/cert/config/ibmcloud.toml (100%) rename server/{pkg => internal}/cert/config/iij.toml (100%) rename server/{pkg => internal}/cert/config/iijdpf.toml (100%) rename server/{pkg => internal}/cert/config/infoblox.toml (100%) rename server/{pkg => internal}/cert/config/infomaniak.toml (100%) rename server/{pkg => internal}/cert/config/internetbs.toml (100%) rename server/{pkg => internal}/cert/config/inwx.toml (100%) rename server/{pkg => internal}/cert/config/ionos.toml (100%) rename server/{pkg => internal}/cert/config/iwantmyname.toml (100%) rename server/{pkg => internal}/cert/config/joker.toml (100%) rename server/{pkg => internal}/cert/config/liara.toml (100%) rename server/{pkg => internal}/cert/config/lightsail.toml (100%) rename server/{pkg => internal}/cert/config/linode.toml (100%) rename server/{pkg => internal}/cert/config/liquidweb.toml (100%) rename server/{pkg => internal}/cert/config/loopia.toml (100%) rename server/{pkg => internal}/cert/config/luadns.toml (100%) rename server/{pkg => internal}/cert/config/mydnsjp.toml (100%) rename server/{pkg => internal}/cert/config/mythicbeasts.toml (100%) rename server/{pkg => internal}/cert/config/namecheap.toml (100%) rename server/{pkg => internal}/cert/config/namedotcom.toml (100%) rename server/{pkg => internal}/cert/config/namesilo.toml (100%) rename server/{pkg => internal}/cert/config/nearlyfreespeech.toml (100%) rename server/{pkg => internal}/cert/config/netcup.toml (100%) rename server/{pkg => internal}/cert/config/netlify.toml (100%) rename server/{pkg => internal}/cert/config/nicmanager.toml (100%) rename server/{pkg => internal}/cert/config/nifcloud.toml (100%) rename server/{pkg => internal}/cert/config/njalla.toml (100%) rename server/{pkg => internal}/cert/config/nodion.toml (100%) rename server/{pkg => internal}/cert/config/ns1.toml (100%) rename server/{pkg => internal}/cert/config/oraclecloud.toml (100%) rename server/{pkg => internal}/cert/config/otc.toml (100%) rename server/{pkg => internal}/cert/config/ovh.toml (100%) rename server/{pkg => internal}/cert/config/pdns.toml (100%) rename server/{pkg => internal}/cert/config/plesk.toml (100%) rename server/{pkg => internal}/cert/config/porkbun.toml (100%) rename server/{pkg => internal}/cert/config/rackspace.toml (100%) rename server/{pkg => internal}/cert/config/regru.toml (100%) rename server/{pkg => internal}/cert/config/rfc2136.toml (100%) rename server/{pkg => internal}/cert/config/rimuhosting.toml (100%) rename server/{pkg => internal}/cert/config/route53.toml (100%) rename server/{pkg => internal}/cert/config/safedns.toml (100%) rename server/{pkg => internal}/cert/config/sakuracloud.toml (100%) rename server/{pkg => internal}/cert/config/scaleway.toml (100%) rename server/{pkg => internal}/cert/config/selectel.toml (100%) rename server/{pkg => internal}/cert/config/servercow.toml (100%) rename server/{pkg => internal}/cert/config/simply.toml (100%) rename server/{pkg => internal}/cert/config/sonic.toml (100%) rename server/{pkg => internal}/cert/config/stackpath.toml (100%) rename server/{pkg => internal}/cert/config/tencentcloud.toml (100%) rename server/{pkg => internal}/cert/config/transip.toml (100%) rename server/{pkg => internal}/cert/config/ultradns.toml (100%) rename server/{pkg => internal}/cert/config/variomedia.toml (100%) rename server/{pkg => internal}/cert/config/vegadns.toml (100%) rename server/{pkg => internal}/cert/config/vercel.toml (100%) rename server/{pkg => internal}/cert/config/versio.toml (100%) rename server/{pkg => internal}/cert/config/vinyldns.toml (100%) rename server/{pkg => internal}/cert/config/vkcloud.toml (100%) rename server/{pkg => internal}/cert/config/vscale.toml (100%) rename server/{pkg => internal}/cert/config/vultr.toml (100%) rename server/{pkg => internal}/cert/config/websupport.toml (100%) rename server/{pkg => internal}/cert/config/wedos.toml (100%) rename server/{pkg => internal}/cert/config/yandex.toml (100%) rename server/{pkg => internal}/cert/config/yandexcloud.toml (100%) rename server/{pkg => internal}/cert/config/zoneee.toml (100%) rename server/{pkg => internal}/cert/config/zonomi.toml (100%) rename server/{pkg => internal}/cert/dns/config_env.go (97%) rename server/{pkg => internal}/cert/dns/config_env_test.go (91%) create mode 100644 server/internal/cert/dns/tencent_cloud_dns_test.go rename server/{pkg => internal}/config_list/config_list.go (100%) rename server/{pkg => internal}/helper/copy.go (100%) rename server/{pkg => internal}/helper/file.go (100%) rename server/{pkg => internal}/helper/tar.go (100%) rename server/{pkg => internal}/nginx/build_config.go (100%) rename server/{pkg => internal}/nginx/conf/nextcloud_ngx.conf (100%) rename server/{pkg => internal}/nginx/conf/test.conf (100%) rename server/{pkg => internal}/nginx/format_code.go (100%) rename server/{pkg => internal}/nginx/log.go (100%) rename server/{pkg => internal}/nginx/nginx.go (100%) rename server/{pkg => internal}/nginx/ngx_conf_parse_test.go (100%) rename server/{pkg => internal}/nginx/parse.go (100%) rename server/{pkg => internal}/nginx/type.go (100%) rename server/{pkg => internal}/pty/pipeline.go (100%) rename server/{pkg => internal}/pty/type.go (100%) delete mode 100644 server/pkg/cert/dns/tencent_cloud_dns_test.go create mode 100644 server/server.go diff --git a/main.go b/main.go index 1e5ce430..c8b29f1c 100644 --- a/main.go +++ b/main.go @@ -1,74 +1,36 @@ package main import ( - "flag" - "fmt" - "github.com/0xJacky/Nginx-UI/server/analytic" - "github.com/0xJacky/Nginx-UI/server/model" - "github.com/0xJacky/Nginx-UI/server/pkg/cert" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" - "github.com/0xJacky/Nginx-UI/server/query" - "github.com/0xJacky/Nginx-UI/server/router" - "github.com/0xJacky/Nginx-UI/server/service" - "github.com/0xJacky/Nginx-UI/server/settings" - "github.com/gin-gonic/gin" - "github.com/go-co-op/gocron" - "github.com/jpillora/overseer" - "github.com/jpillora/overseer/fetcher" - "log" - "mime" - "net/http" - "time" + "flag" + "fmt" + "github.com/0xJacky/Nginx-UI/server" + "github.com/0xJacky/Nginx-UI/server/service" + "github.com/0xJacky/Nginx-UI/server/settings" + "github.com/gin-gonic/gin" + "github.com/jpillora/overseer" + "github.com/jpillora/overseer/fetcher" + "log" ) func main() { - var confPath string - flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file") - flag.Parse() + var confPath string + flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file") + flag.Parse() - settings.Init(confPath) + settings.Init(confPath) - gin.SetMode(settings.ServerSettings.RunMode) + gin.SetMode(settings.ServerSettings.RunMode) - r, err := service.GetRuntimeInfo() + r, err := service.GetRuntimeInfo() - if err != nil { - log.Fatalln(err) - } + if err != nil { + log.Fatalln(err) + } - overseer.Run(overseer.Config{ - Program: prog, - Address: fmt.Sprintf(":%s", settings.ServerSettings.HttpPort), - Fetcher: &fetcher.File{Path: r.ExPath}, - TerminateTimeout: 0, - }) -} - -func prog(state overseer.State) { - // Hack: fix wrong Content Type of .js file on some OS platforms - // See https://github.com/golang/go/issues/32350 - _ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8") - - log.Printf("Nginx config dir path: %s", nginx.GetConfPath()) - if "" != settings.ServerSettings.JwtSecret { - db := model.Init() - query.Init(db) - } - - s := gocron.NewScheduler(time.UTC) - job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoObtain) - - if err != nil { - log.Fatalf("AutoCert Job: %v, Err: %v\n", job, err) - } - - s.StartAsync() - - go analytic.RecordServerAnalytic() - - err = http.Serve(state.Listener, router.InitRouter()) - if err != nil { - log.Fatalln(err) - } - log.Println("[Nginx UI] server exiting") + overseer.Run(overseer.Config{ + Program: server.Program, + Address: fmt.Sprintf(":%s", settings.ServerSettings.HttpPort), + Fetcher: &fetcher.File{Path: r.ExPath}, + TerminateTimeout: 0, + }) } diff --git a/server/api/cert.go b/server/api/cert.go index b7a3c8a6..c6cf7af4 100644 --- a/server/api/cert.go +++ b/server/api/cert.go @@ -1,10 +1,10 @@ package api import ( + "github.com/0xJacky/Nginx-UI/server/internal/cert" + "github.com/0xJacky/Nginx-UI/server/internal/cert/dns" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/model" - "github.com/0xJacky/Nginx-UI/server/pkg/cert" - "github.com/0xJacky/Nginx-UI/server/pkg/cert/dns" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/spf13/cast" diff --git a/server/api/config.go b/server/api/config.go index 9674b771..4b876736 100644 --- a/server/api/config.go +++ b/server/api/config.go @@ -1,8 +1,8 @@ package api import ( - "github.com/0xJacky/Nginx-UI/server/pkg/config_list" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/config_list" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/query" "github.com/gin-gonic/gin" "log" diff --git a/server/api/dns_credential.go b/server/api/dns_credential.go index 0a1d399f..54725052 100644 --- a/server/api/dns_credential.go +++ b/server/api/dns_credential.go @@ -1,8 +1,8 @@ package api import ( + "github.com/0xJacky/Nginx-UI/server/internal/cert/dns" "github.com/0xJacky/Nginx-UI/server/model" - "github.com/0xJacky/Nginx-UI/server/pkg/cert/dns" "github.com/0xJacky/Nginx-UI/server/query" "github.com/gin-gonic/gin" "github.com/spf13/cast" diff --git a/server/api/domain.go b/server/api/domain.go index 22a781ae..2d1c575b 100644 --- a/server/api/domain.go +++ b/server/api/domain.go @@ -1,11 +1,11 @@ package api import ( + "github.com/0xJacky/Nginx-UI/server/internal/cert" + "github.com/0xJacky/Nginx-UI/server/internal/config_list" + "github.com/0xJacky/Nginx-UI/server/internal/helper" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/model" - "github.com/0xJacky/Nginx-UI/server/pkg/cert" - "github.com/0xJacky/Nginx-UI/server/pkg/config_list" - "github.com/0xJacky/Nginx-UI/server/pkg/helper" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" "github.com/0xJacky/Nginx-UI/server/query" "github.com/gin-gonic/gin" "log" diff --git a/server/api/nginx_log.go b/server/api/nginx_log.go index a3f0ad71..b7168040 100644 --- a/server/api/nginx_log.go +++ b/server/api/nginx_log.go @@ -2,8 +2,8 @@ package api import ( "encoding/json" - "github.com/0xJacky/Nginx-UI/server/pkg/helper" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/helper" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/settings" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" diff --git a/server/api/ngx.go b/server/api/ngx.go index f39eca8d..f5d6ef66 100644 --- a/server/api/ngx.go +++ b/server/api/ngx.go @@ -1,90 +1,90 @@ package api import ( - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" - "github.com/gin-gonic/gin" - "net/http" - "os" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" + "github.com/gin-gonic/gin" + "net/http" + "os" ) func BuildNginxConfig(c *gin.Context) { - var ngxConf nginx.NgxConfig - if !BindAndValid(c, &ngxConf) { - return - } - c.Set("maybe_error", "nginx_config_syntax_error") - c.JSON(http.StatusOK, gin.H{ - "content": ngxConf.BuildConfig(), - }) + var ngxConf nginx.NgxConfig + if !BindAndValid(c, &ngxConf) { + return + } + c.Set("maybe_error", "nginx_config_syntax_error") + c.JSON(http.StatusOK, gin.H{ + "content": ngxConf.BuildConfig(), + }) } func TokenizeNginxConfig(c *gin.Context) { - var json struct { - Content string `json:"content" binding:"required"` - } + var json struct { + Content string `json:"content" binding:"required"` + } - if !BindAndValid(c, &json) { - return - } + if !BindAndValid(c, &json) { + return + } - c.Set("maybe_error", "nginx_config_syntax_error") - ngxConfig := nginx.ParseNgxConfigByContent(json.Content) + c.Set("maybe_error", "nginx_config_syntax_error") + ngxConfig := nginx.ParseNgxConfigByContent(json.Content) - c.JSON(http.StatusOK, ngxConfig) + c.JSON(http.StatusOK, ngxConfig) } func FormatNginxConfig(c *gin.Context) { - var json struct { - Content string `json:"content" binding:"required"` - } + var json struct { + Content string `json:"content" binding:"required"` + } - if !BindAndValid(c, &json) { - return - } + if !BindAndValid(c, &json) { + return + } - c.Set("maybe_error", "nginx_config_syntax_error") - c.JSON(http.StatusOK, gin.H{ - "content": nginx.FmtCode(json.Content), - }) + c.Set("maybe_error", "nginx_config_syntax_error") + c.JSON(http.StatusOK, gin.H{ + "content": nginx.FmtCode(json.Content), + }) } func NginxStatus(c *gin.Context) { - pidPath := nginx.GetNginxPIDPath() + pidPath := nginx.GetNginxPIDPath() - running := true - if _, err := os.Stat(pidPath); err != nil { - running = false - } + running := true + if _, err := os.Stat(pidPath); err != nil { + running = false + } - c.JSON(http.StatusOK, gin.H{ - "running": running, - }) + c.JSON(http.StatusOK, gin.H{ + "running": running, + }) } func ReloadNginx(c *gin.Context) { - output := nginx.Reload() + output := nginx.Reload() - c.JSON(http.StatusOK, gin.H{ - "message": output, - "level": nginx.GetLogLevel(output), - }) + c.JSON(http.StatusOK, gin.H{ + "message": output, + "level": nginx.GetLogLevel(output), + }) } func TestNginx(c *gin.Context) { - output := nginx.TestConf() + output := nginx.TestConf() - c.JSON(http.StatusOK, gin.H{ - "message": output, - "level": nginx.GetLogLevel(output), - }) + c.JSON(http.StatusOK, gin.H{ + "message": output, + "level": nginx.GetLogLevel(output), + }) } func RestartNginx(c *gin.Context) { - output := nginx.Restart() + output := nginx.Restart() - c.JSON(http.StatusOK, gin.H{ - "message": output, - "level": nginx.GetLogLevel(output), - }) + c.JSON(http.StatusOK, gin.H{ + "message": output, + "level": nginx.GetLogLevel(output), + }) } diff --git a/server/api/pty.go b/server/api/pty.go index f6716dae..692bc6da 100644 --- a/server/api/pty.go +++ b/server/api/pty.go @@ -1,7 +1,7 @@ package api import ( - "github.com/0xJacky/Nginx-UI/server/pkg/pty" + "github.com/0xJacky/Nginx-UI/server/internal/pty" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "log" diff --git a/server/api/template.go b/server/api/template.go index ae5ab2e2..804728c5 100644 --- a/server/api/template.go +++ b/server/api/template.go @@ -1,7 +1,7 @@ package api import ( - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/service" "github.com/gin-gonic/gin" "net/http" diff --git a/server/pkg/cert/auto_cert.go b/server/internal/cert/auto_cert.go similarity index 100% rename from server/pkg/cert/auto_cert.go rename to server/internal/cert/auto_cert.go diff --git a/server/pkg/cert/cert.go b/server/internal/cert/cert.go similarity index 97% rename from server/pkg/cert/cert.go rename to server/internal/cert/cert.go index 71dba554..c8afcdaa 100644 --- a/server/pkg/cert/cert.go +++ b/server/internal/cert/cert.go @@ -6,8 +6,8 @@ import ( "crypto/elliptic" "crypto/rand" "crypto/tls" - dns2 "github.com/0xJacky/Nginx-UI/server/pkg/cert/dns" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + dns2 "github.com/0xJacky/Nginx-UI/server/internal/cert/dns" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/query" "github.com/0xJacky/Nginx-UI/server/settings" "github.com/go-acme/lego/v4/certcrypto" diff --git a/server/pkg/cert/cert_info.go b/server/internal/cert/cert_info.go similarity index 100% rename from server/pkg/cert/cert_info.go rename to server/internal/cert/cert_info.go diff --git a/server/pkg/cert/config/acmedns.toml b/server/internal/cert/config/acmedns.toml similarity index 100% rename from server/pkg/cert/config/acmedns.toml rename to server/internal/cert/config/acmedns.toml diff --git a/server/pkg/cert/config/alidns.toml b/server/internal/cert/config/alidns.toml similarity index 100% rename from server/pkg/cert/config/alidns.toml rename to server/internal/cert/config/alidns.toml diff --git a/server/pkg/cert/config/allinkl.toml b/server/internal/cert/config/allinkl.toml similarity index 100% rename from server/pkg/cert/config/allinkl.toml rename to server/internal/cert/config/allinkl.toml diff --git a/server/pkg/cert/config/arvancloud.toml b/server/internal/cert/config/arvancloud.toml similarity index 100% rename from server/pkg/cert/config/arvancloud.toml rename to server/internal/cert/config/arvancloud.toml diff --git a/server/pkg/cert/config/auroradns.toml b/server/internal/cert/config/auroradns.toml similarity index 100% rename from server/pkg/cert/config/auroradns.toml rename to server/internal/cert/config/auroradns.toml diff --git a/server/pkg/cert/config/autodns.toml b/server/internal/cert/config/autodns.toml similarity index 100% rename from server/pkg/cert/config/autodns.toml rename to server/internal/cert/config/autodns.toml diff --git a/server/pkg/cert/config/azure.toml b/server/internal/cert/config/azure.toml similarity index 100% rename from server/pkg/cert/config/azure.toml rename to server/internal/cert/config/azure.toml diff --git a/server/pkg/cert/config/bindman.toml b/server/internal/cert/config/bindman.toml similarity index 100% rename from server/pkg/cert/config/bindman.toml rename to server/internal/cert/config/bindman.toml diff --git a/server/pkg/cert/config/bluecat.toml b/server/internal/cert/config/bluecat.toml similarity index 100% rename from server/pkg/cert/config/bluecat.toml rename to server/internal/cert/config/bluecat.toml diff --git a/server/pkg/cert/config/brandit.toml b/server/internal/cert/config/brandit.toml similarity index 100% rename from server/pkg/cert/config/brandit.toml rename to server/internal/cert/config/brandit.toml diff --git a/server/pkg/cert/config/bunny.toml b/server/internal/cert/config/bunny.toml similarity index 100% rename from server/pkg/cert/config/bunny.toml rename to server/internal/cert/config/bunny.toml diff --git a/server/pkg/cert/config/checkdomain.toml b/server/internal/cert/config/checkdomain.toml similarity index 100% rename from server/pkg/cert/config/checkdomain.toml rename to server/internal/cert/config/checkdomain.toml diff --git a/server/pkg/cert/config/civo.toml b/server/internal/cert/config/civo.toml similarity index 100% rename from server/pkg/cert/config/civo.toml rename to server/internal/cert/config/civo.toml diff --git a/server/pkg/cert/config/clouddns.toml b/server/internal/cert/config/clouddns.toml similarity index 100% rename from server/pkg/cert/config/clouddns.toml rename to server/internal/cert/config/clouddns.toml diff --git a/server/pkg/cert/config/cloudflare.toml b/server/internal/cert/config/cloudflare.toml similarity index 100% rename from server/pkg/cert/config/cloudflare.toml rename to server/internal/cert/config/cloudflare.toml diff --git a/server/pkg/cert/config/cloudns.toml b/server/internal/cert/config/cloudns.toml similarity index 100% rename from server/pkg/cert/config/cloudns.toml rename to server/internal/cert/config/cloudns.toml diff --git a/server/pkg/cert/config/cloudxns.toml b/server/internal/cert/config/cloudxns.toml similarity index 100% rename from server/pkg/cert/config/cloudxns.toml rename to server/internal/cert/config/cloudxns.toml diff --git a/server/pkg/cert/config/config.go b/server/internal/cert/config/config.go similarity index 100% rename from server/pkg/cert/config/config.go rename to server/internal/cert/config/config.go diff --git a/server/pkg/cert/config/conoha.toml b/server/internal/cert/config/conoha.toml similarity index 100% rename from server/pkg/cert/config/conoha.toml rename to server/internal/cert/config/conoha.toml diff --git a/server/pkg/cert/config/constellix.toml b/server/internal/cert/config/constellix.toml similarity index 100% rename from server/pkg/cert/config/constellix.toml rename to server/internal/cert/config/constellix.toml diff --git a/server/pkg/cert/config/desec.toml b/server/internal/cert/config/desec.toml similarity index 100% rename from server/pkg/cert/config/desec.toml rename to server/internal/cert/config/desec.toml diff --git a/server/pkg/cert/config/designate.toml b/server/internal/cert/config/designate.toml similarity index 100% rename from server/pkg/cert/config/designate.toml rename to server/internal/cert/config/designate.toml diff --git a/server/pkg/cert/config/digitalocean.toml b/server/internal/cert/config/digitalocean.toml similarity index 100% rename from server/pkg/cert/config/digitalocean.toml rename to server/internal/cert/config/digitalocean.toml diff --git a/server/pkg/cert/config/dnshomede.toml b/server/internal/cert/config/dnshomede.toml similarity index 100% rename from server/pkg/cert/config/dnshomede.toml rename to server/internal/cert/config/dnshomede.toml diff --git a/server/pkg/cert/config/dnsimple.toml b/server/internal/cert/config/dnsimple.toml similarity index 100% rename from server/pkg/cert/config/dnsimple.toml rename to server/internal/cert/config/dnsimple.toml diff --git a/server/pkg/cert/config/dnsmadeeasy.toml b/server/internal/cert/config/dnsmadeeasy.toml similarity index 100% rename from server/pkg/cert/config/dnsmadeeasy.toml rename to server/internal/cert/config/dnsmadeeasy.toml diff --git a/server/pkg/cert/config/dnspod.toml b/server/internal/cert/config/dnspod.toml similarity index 100% rename from server/pkg/cert/config/dnspod.toml rename to server/internal/cert/config/dnspod.toml diff --git a/server/pkg/cert/config/dode.toml b/server/internal/cert/config/dode.toml similarity index 100% rename from server/pkg/cert/config/dode.toml rename to server/internal/cert/config/dode.toml diff --git a/server/pkg/cert/config/domeneshop.toml b/server/internal/cert/config/domeneshop.toml similarity index 100% rename from server/pkg/cert/config/domeneshop.toml rename to server/internal/cert/config/domeneshop.toml diff --git a/server/pkg/cert/config/dreamhost.toml b/server/internal/cert/config/dreamhost.toml similarity index 100% rename from server/pkg/cert/config/dreamhost.toml rename to server/internal/cert/config/dreamhost.toml diff --git a/server/pkg/cert/config/duckdns.toml b/server/internal/cert/config/duckdns.toml similarity index 100% rename from server/pkg/cert/config/duckdns.toml rename to server/internal/cert/config/duckdns.toml diff --git a/server/pkg/cert/config/dyn.toml b/server/internal/cert/config/dyn.toml similarity index 100% rename from server/pkg/cert/config/dyn.toml rename to server/internal/cert/config/dyn.toml diff --git a/server/pkg/cert/config/dynu.toml b/server/internal/cert/config/dynu.toml similarity index 100% rename from server/pkg/cert/config/dynu.toml rename to server/internal/cert/config/dynu.toml diff --git a/server/pkg/cert/config/easydns.toml b/server/internal/cert/config/easydns.toml similarity index 100% rename from server/pkg/cert/config/easydns.toml rename to server/internal/cert/config/easydns.toml diff --git a/server/pkg/cert/config/edgedns.toml b/server/internal/cert/config/edgedns.toml similarity index 100% rename from server/pkg/cert/config/edgedns.toml rename to server/internal/cert/config/edgedns.toml diff --git a/server/pkg/cert/config/epik.toml b/server/internal/cert/config/epik.toml similarity index 100% rename from server/pkg/cert/config/epik.toml rename to server/internal/cert/config/epik.toml diff --git a/server/pkg/cert/config/exec.toml b/server/internal/cert/config/exec.toml similarity index 100% rename from server/pkg/cert/config/exec.toml rename to server/internal/cert/config/exec.toml diff --git a/server/pkg/cert/config/exoscale.toml b/server/internal/cert/config/exoscale.toml similarity index 100% rename from server/pkg/cert/config/exoscale.toml rename to server/internal/cert/config/exoscale.toml diff --git a/server/pkg/cert/config/freemyip.toml b/server/internal/cert/config/freemyip.toml similarity index 100% rename from server/pkg/cert/config/freemyip.toml rename to server/internal/cert/config/freemyip.toml diff --git a/server/pkg/cert/config/gandi.toml b/server/internal/cert/config/gandi.toml similarity index 100% rename from server/pkg/cert/config/gandi.toml rename to server/internal/cert/config/gandi.toml diff --git a/server/pkg/cert/config/gandiv5.toml b/server/internal/cert/config/gandiv5.toml similarity index 100% rename from server/pkg/cert/config/gandiv5.toml rename to server/internal/cert/config/gandiv5.toml diff --git a/server/pkg/cert/config/gcloud.toml b/server/internal/cert/config/gcloud.toml similarity index 100% rename from server/pkg/cert/config/gcloud.toml rename to server/internal/cert/config/gcloud.toml diff --git a/server/pkg/cert/config/gcore.toml b/server/internal/cert/config/gcore.toml similarity index 100% rename from server/pkg/cert/config/gcore.toml rename to server/internal/cert/config/gcore.toml diff --git a/server/pkg/cert/config/glesys.toml b/server/internal/cert/config/glesys.toml similarity index 100% rename from server/pkg/cert/config/glesys.toml rename to server/internal/cert/config/glesys.toml diff --git a/server/pkg/cert/config/godaddy.toml b/server/internal/cert/config/godaddy.toml similarity index 100% rename from server/pkg/cert/config/godaddy.toml rename to server/internal/cert/config/godaddy.toml diff --git a/server/pkg/cert/config/googledomains.toml b/server/internal/cert/config/googledomains.toml similarity index 100% rename from server/pkg/cert/config/googledomains.toml rename to server/internal/cert/config/googledomains.toml diff --git a/server/pkg/cert/config/hetzner.toml b/server/internal/cert/config/hetzner.toml similarity index 100% rename from server/pkg/cert/config/hetzner.toml rename to server/internal/cert/config/hetzner.toml diff --git a/server/pkg/cert/config/hostingde.toml b/server/internal/cert/config/hostingde.toml similarity index 100% rename from server/pkg/cert/config/hostingde.toml rename to server/internal/cert/config/hostingde.toml diff --git a/server/pkg/cert/config/hosttech.toml b/server/internal/cert/config/hosttech.toml similarity index 100% rename from server/pkg/cert/config/hosttech.toml rename to server/internal/cert/config/hosttech.toml diff --git a/server/pkg/cert/config/httpreq.toml b/server/internal/cert/config/httpreq.toml similarity index 100% rename from server/pkg/cert/config/httpreq.toml rename to server/internal/cert/config/httpreq.toml diff --git a/server/pkg/cert/config/hurricane.toml b/server/internal/cert/config/hurricane.toml similarity index 100% rename from server/pkg/cert/config/hurricane.toml rename to server/internal/cert/config/hurricane.toml diff --git a/server/pkg/cert/config/hyperone.toml b/server/internal/cert/config/hyperone.toml similarity index 100% rename from server/pkg/cert/config/hyperone.toml rename to server/internal/cert/config/hyperone.toml diff --git a/server/pkg/cert/config/ibmcloud.toml b/server/internal/cert/config/ibmcloud.toml similarity index 100% rename from server/pkg/cert/config/ibmcloud.toml rename to server/internal/cert/config/ibmcloud.toml diff --git a/server/pkg/cert/config/iij.toml b/server/internal/cert/config/iij.toml similarity index 100% rename from server/pkg/cert/config/iij.toml rename to server/internal/cert/config/iij.toml diff --git a/server/pkg/cert/config/iijdpf.toml b/server/internal/cert/config/iijdpf.toml similarity index 100% rename from server/pkg/cert/config/iijdpf.toml rename to server/internal/cert/config/iijdpf.toml diff --git a/server/pkg/cert/config/infoblox.toml b/server/internal/cert/config/infoblox.toml similarity index 100% rename from server/pkg/cert/config/infoblox.toml rename to server/internal/cert/config/infoblox.toml diff --git a/server/pkg/cert/config/infomaniak.toml b/server/internal/cert/config/infomaniak.toml similarity index 100% rename from server/pkg/cert/config/infomaniak.toml rename to server/internal/cert/config/infomaniak.toml diff --git a/server/pkg/cert/config/internetbs.toml b/server/internal/cert/config/internetbs.toml similarity index 100% rename from server/pkg/cert/config/internetbs.toml rename to server/internal/cert/config/internetbs.toml diff --git a/server/pkg/cert/config/inwx.toml b/server/internal/cert/config/inwx.toml similarity index 100% rename from server/pkg/cert/config/inwx.toml rename to server/internal/cert/config/inwx.toml diff --git a/server/pkg/cert/config/ionos.toml b/server/internal/cert/config/ionos.toml similarity index 100% rename from server/pkg/cert/config/ionos.toml rename to server/internal/cert/config/ionos.toml diff --git a/server/pkg/cert/config/iwantmyname.toml b/server/internal/cert/config/iwantmyname.toml similarity index 100% rename from server/pkg/cert/config/iwantmyname.toml rename to server/internal/cert/config/iwantmyname.toml diff --git a/server/pkg/cert/config/joker.toml b/server/internal/cert/config/joker.toml similarity index 100% rename from server/pkg/cert/config/joker.toml rename to server/internal/cert/config/joker.toml diff --git a/server/pkg/cert/config/liara.toml b/server/internal/cert/config/liara.toml similarity index 100% rename from server/pkg/cert/config/liara.toml rename to server/internal/cert/config/liara.toml diff --git a/server/pkg/cert/config/lightsail.toml b/server/internal/cert/config/lightsail.toml similarity index 100% rename from server/pkg/cert/config/lightsail.toml rename to server/internal/cert/config/lightsail.toml diff --git a/server/pkg/cert/config/linode.toml b/server/internal/cert/config/linode.toml similarity index 100% rename from server/pkg/cert/config/linode.toml rename to server/internal/cert/config/linode.toml diff --git a/server/pkg/cert/config/liquidweb.toml b/server/internal/cert/config/liquidweb.toml similarity index 100% rename from server/pkg/cert/config/liquidweb.toml rename to server/internal/cert/config/liquidweb.toml diff --git a/server/pkg/cert/config/loopia.toml b/server/internal/cert/config/loopia.toml similarity index 100% rename from server/pkg/cert/config/loopia.toml rename to server/internal/cert/config/loopia.toml diff --git a/server/pkg/cert/config/luadns.toml b/server/internal/cert/config/luadns.toml similarity index 100% rename from server/pkg/cert/config/luadns.toml rename to server/internal/cert/config/luadns.toml diff --git a/server/pkg/cert/config/mydnsjp.toml b/server/internal/cert/config/mydnsjp.toml similarity index 100% rename from server/pkg/cert/config/mydnsjp.toml rename to server/internal/cert/config/mydnsjp.toml diff --git a/server/pkg/cert/config/mythicbeasts.toml b/server/internal/cert/config/mythicbeasts.toml similarity index 100% rename from server/pkg/cert/config/mythicbeasts.toml rename to server/internal/cert/config/mythicbeasts.toml diff --git a/server/pkg/cert/config/namecheap.toml b/server/internal/cert/config/namecheap.toml similarity index 100% rename from server/pkg/cert/config/namecheap.toml rename to server/internal/cert/config/namecheap.toml diff --git a/server/pkg/cert/config/namedotcom.toml b/server/internal/cert/config/namedotcom.toml similarity index 100% rename from server/pkg/cert/config/namedotcom.toml rename to server/internal/cert/config/namedotcom.toml diff --git a/server/pkg/cert/config/namesilo.toml b/server/internal/cert/config/namesilo.toml similarity index 100% rename from server/pkg/cert/config/namesilo.toml rename to server/internal/cert/config/namesilo.toml diff --git a/server/pkg/cert/config/nearlyfreespeech.toml b/server/internal/cert/config/nearlyfreespeech.toml similarity index 100% rename from server/pkg/cert/config/nearlyfreespeech.toml rename to server/internal/cert/config/nearlyfreespeech.toml diff --git a/server/pkg/cert/config/netcup.toml b/server/internal/cert/config/netcup.toml similarity index 100% rename from server/pkg/cert/config/netcup.toml rename to server/internal/cert/config/netcup.toml diff --git a/server/pkg/cert/config/netlify.toml b/server/internal/cert/config/netlify.toml similarity index 100% rename from server/pkg/cert/config/netlify.toml rename to server/internal/cert/config/netlify.toml diff --git a/server/pkg/cert/config/nicmanager.toml b/server/internal/cert/config/nicmanager.toml similarity index 100% rename from server/pkg/cert/config/nicmanager.toml rename to server/internal/cert/config/nicmanager.toml diff --git a/server/pkg/cert/config/nifcloud.toml b/server/internal/cert/config/nifcloud.toml similarity index 100% rename from server/pkg/cert/config/nifcloud.toml rename to server/internal/cert/config/nifcloud.toml diff --git a/server/pkg/cert/config/njalla.toml b/server/internal/cert/config/njalla.toml similarity index 100% rename from server/pkg/cert/config/njalla.toml rename to server/internal/cert/config/njalla.toml diff --git a/server/pkg/cert/config/nodion.toml b/server/internal/cert/config/nodion.toml similarity index 100% rename from server/pkg/cert/config/nodion.toml rename to server/internal/cert/config/nodion.toml diff --git a/server/pkg/cert/config/ns1.toml b/server/internal/cert/config/ns1.toml similarity index 100% rename from server/pkg/cert/config/ns1.toml rename to server/internal/cert/config/ns1.toml diff --git a/server/pkg/cert/config/oraclecloud.toml b/server/internal/cert/config/oraclecloud.toml similarity index 100% rename from server/pkg/cert/config/oraclecloud.toml rename to server/internal/cert/config/oraclecloud.toml diff --git a/server/pkg/cert/config/otc.toml b/server/internal/cert/config/otc.toml similarity index 100% rename from server/pkg/cert/config/otc.toml rename to server/internal/cert/config/otc.toml diff --git a/server/pkg/cert/config/ovh.toml b/server/internal/cert/config/ovh.toml similarity index 100% rename from server/pkg/cert/config/ovh.toml rename to server/internal/cert/config/ovh.toml diff --git a/server/pkg/cert/config/pdns.toml b/server/internal/cert/config/pdns.toml similarity index 100% rename from server/pkg/cert/config/pdns.toml rename to server/internal/cert/config/pdns.toml diff --git a/server/pkg/cert/config/plesk.toml b/server/internal/cert/config/plesk.toml similarity index 100% rename from server/pkg/cert/config/plesk.toml rename to server/internal/cert/config/plesk.toml diff --git a/server/pkg/cert/config/porkbun.toml b/server/internal/cert/config/porkbun.toml similarity index 100% rename from server/pkg/cert/config/porkbun.toml rename to server/internal/cert/config/porkbun.toml diff --git a/server/pkg/cert/config/rackspace.toml b/server/internal/cert/config/rackspace.toml similarity index 100% rename from server/pkg/cert/config/rackspace.toml rename to server/internal/cert/config/rackspace.toml diff --git a/server/pkg/cert/config/regru.toml b/server/internal/cert/config/regru.toml similarity index 100% rename from server/pkg/cert/config/regru.toml rename to server/internal/cert/config/regru.toml diff --git a/server/pkg/cert/config/rfc2136.toml b/server/internal/cert/config/rfc2136.toml similarity index 100% rename from server/pkg/cert/config/rfc2136.toml rename to server/internal/cert/config/rfc2136.toml diff --git a/server/pkg/cert/config/rimuhosting.toml b/server/internal/cert/config/rimuhosting.toml similarity index 100% rename from server/pkg/cert/config/rimuhosting.toml rename to server/internal/cert/config/rimuhosting.toml diff --git a/server/pkg/cert/config/route53.toml b/server/internal/cert/config/route53.toml similarity index 100% rename from server/pkg/cert/config/route53.toml rename to server/internal/cert/config/route53.toml diff --git a/server/pkg/cert/config/safedns.toml b/server/internal/cert/config/safedns.toml similarity index 100% rename from server/pkg/cert/config/safedns.toml rename to server/internal/cert/config/safedns.toml diff --git a/server/pkg/cert/config/sakuracloud.toml b/server/internal/cert/config/sakuracloud.toml similarity index 100% rename from server/pkg/cert/config/sakuracloud.toml rename to server/internal/cert/config/sakuracloud.toml diff --git a/server/pkg/cert/config/scaleway.toml b/server/internal/cert/config/scaleway.toml similarity index 100% rename from server/pkg/cert/config/scaleway.toml rename to server/internal/cert/config/scaleway.toml diff --git a/server/pkg/cert/config/selectel.toml b/server/internal/cert/config/selectel.toml similarity index 100% rename from server/pkg/cert/config/selectel.toml rename to server/internal/cert/config/selectel.toml diff --git a/server/pkg/cert/config/servercow.toml b/server/internal/cert/config/servercow.toml similarity index 100% rename from server/pkg/cert/config/servercow.toml rename to server/internal/cert/config/servercow.toml diff --git a/server/pkg/cert/config/simply.toml b/server/internal/cert/config/simply.toml similarity index 100% rename from server/pkg/cert/config/simply.toml rename to server/internal/cert/config/simply.toml diff --git a/server/pkg/cert/config/sonic.toml b/server/internal/cert/config/sonic.toml similarity index 100% rename from server/pkg/cert/config/sonic.toml rename to server/internal/cert/config/sonic.toml diff --git a/server/pkg/cert/config/stackpath.toml b/server/internal/cert/config/stackpath.toml similarity index 100% rename from server/pkg/cert/config/stackpath.toml rename to server/internal/cert/config/stackpath.toml diff --git a/server/pkg/cert/config/tencentcloud.toml b/server/internal/cert/config/tencentcloud.toml similarity index 100% rename from server/pkg/cert/config/tencentcloud.toml rename to server/internal/cert/config/tencentcloud.toml diff --git a/server/pkg/cert/config/transip.toml b/server/internal/cert/config/transip.toml similarity index 100% rename from server/pkg/cert/config/transip.toml rename to server/internal/cert/config/transip.toml diff --git a/server/pkg/cert/config/ultradns.toml b/server/internal/cert/config/ultradns.toml similarity index 100% rename from server/pkg/cert/config/ultradns.toml rename to server/internal/cert/config/ultradns.toml diff --git a/server/pkg/cert/config/variomedia.toml b/server/internal/cert/config/variomedia.toml similarity index 100% rename from server/pkg/cert/config/variomedia.toml rename to server/internal/cert/config/variomedia.toml diff --git a/server/pkg/cert/config/vegadns.toml b/server/internal/cert/config/vegadns.toml similarity index 100% rename from server/pkg/cert/config/vegadns.toml rename to server/internal/cert/config/vegadns.toml diff --git a/server/pkg/cert/config/vercel.toml b/server/internal/cert/config/vercel.toml similarity index 100% rename from server/pkg/cert/config/vercel.toml rename to server/internal/cert/config/vercel.toml diff --git a/server/pkg/cert/config/versio.toml b/server/internal/cert/config/versio.toml similarity index 100% rename from server/pkg/cert/config/versio.toml rename to server/internal/cert/config/versio.toml diff --git a/server/pkg/cert/config/vinyldns.toml b/server/internal/cert/config/vinyldns.toml similarity index 100% rename from server/pkg/cert/config/vinyldns.toml rename to server/internal/cert/config/vinyldns.toml diff --git a/server/pkg/cert/config/vkcloud.toml b/server/internal/cert/config/vkcloud.toml similarity index 100% rename from server/pkg/cert/config/vkcloud.toml rename to server/internal/cert/config/vkcloud.toml diff --git a/server/pkg/cert/config/vscale.toml b/server/internal/cert/config/vscale.toml similarity index 100% rename from server/pkg/cert/config/vscale.toml rename to server/internal/cert/config/vscale.toml diff --git a/server/pkg/cert/config/vultr.toml b/server/internal/cert/config/vultr.toml similarity index 100% rename from server/pkg/cert/config/vultr.toml rename to server/internal/cert/config/vultr.toml diff --git a/server/pkg/cert/config/websupport.toml b/server/internal/cert/config/websupport.toml similarity index 100% rename from server/pkg/cert/config/websupport.toml rename to server/internal/cert/config/websupport.toml diff --git a/server/pkg/cert/config/wedos.toml b/server/internal/cert/config/wedos.toml similarity index 100% rename from server/pkg/cert/config/wedos.toml rename to server/internal/cert/config/wedos.toml diff --git a/server/pkg/cert/config/yandex.toml b/server/internal/cert/config/yandex.toml similarity index 100% rename from server/pkg/cert/config/yandex.toml rename to server/internal/cert/config/yandex.toml diff --git a/server/pkg/cert/config/yandexcloud.toml b/server/internal/cert/config/yandexcloud.toml similarity index 100% rename from server/pkg/cert/config/yandexcloud.toml rename to server/internal/cert/config/yandexcloud.toml diff --git a/server/pkg/cert/config/zoneee.toml b/server/internal/cert/config/zoneee.toml similarity index 100% rename from server/pkg/cert/config/zoneee.toml rename to server/internal/cert/config/zoneee.toml diff --git a/server/pkg/cert/config/zonomi.toml b/server/internal/cert/config/zonomi.toml similarity index 100% rename from server/pkg/cert/config/zonomi.toml rename to server/internal/cert/config/zonomi.toml diff --git a/server/pkg/cert/dns/config_env.go b/server/internal/cert/dns/config_env.go similarity index 97% rename from server/pkg/cert/dns/config_env.go rename to server/internal/cert/dns/config_env.go index 1678f388..7b82c4bc 100644 --- a/server/pkg/cert/dns/config_env.go +++ b/server/internal/cert/dns/config_env.go @@ -1,7 +1,7 @@ package dns import ( - "github.com/0xJacky/Nginx-UI/server/pkg/cert/config" + "github.com/0xJacky/Nginx-UI/server/internal/cert/config" "github.com/BurntSushi/toml" "log" "os" diff --git a/server/pkg/cert/dns/config_env_test.go b/server/internal/cert/dns/config_env_test.go similarity index 91% rename from server/pkg/cert/dns/config_env_test.go rename to server/internal/cert/dns/config_env_test.go index 17b05837..2d77049d 100644 --- a/server/pkg/cert/dns/config_env_test.go +++ b/server/internal/cert/dns/config_env_test.go @@ -1,7 +1,7 @@ package dns import ( - "github.com/0xJacky/Nginx-UI/server/pkg/cert/config" + "github.com/0xJacky/Nginx-UI/server/internal/cert/config" "github.com/BurntSushi/toml" "log" "path/filepath" diff --git a/server/internal/cert/dns/tencent_cloud_dns_test.go b/server/internal/cert/dns/tencent_cloud_dns_test.go new file mode 100644 index 00000000..3e3b7b3f --- /dev/null +++ b/server/internal/cert/dns/tencent_cloud_dns_test.go @@ -0,0 +1,121 @@ +package dns + +import ( + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/tls" + "github.com/0xJacky/Nginx-UI/server/internal/cert" + "github.com/0xJacky/Nginx-UI/server/settings" + "github.com/go-acme/lego/v4/certcrypto" + "github.com/go-acme/lego/v4/certificate" + "github.com/go-acme/lego/v4/lego" + "github.com/go-acme/lego/v4/providers/dns/tencentcloud" + "github.com/go-acme/lego/v4/registration" + "log" + "net/http" + "os" + "path/filepath" + "strings" + "testing" +) + +func TestTencentCloudDNS(t *testing.T) { + domain := []string{"test.jackyu.cn"} + + privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + log.Println(err) + return + } + + myUser := cert.MyUser{ + Email: settings.ServerSettings.Email, + Key: privateKey, + } + + config := lego.NewConfig(&myUser) + + if settings.ServerSettings.Demo { + config.CADirURL = "https://acme-staging-v02.api.letsencrypt.org/directory" + } + + if settings.ServerSettings.CADir != "" { + config.CADirURL = settings.ServerSettings.CADir + if config.HTTPClient != nil { + config.HTTPClient.Transport = &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + } + } + + config.Certificate.KeyType = certcrypto.RSA2048 + + // A client facilitates communication with the CA server. + client, err := lego.NewClient(config) + if err != nil { + log.Println(err) + return + } + + provider, err := tencentcloud.NewDNSProvider() + + if err != nil { + log.Println(err) + return + } + + err = client.Challenge.SetDNS01Provider( + provider, + ) + + if err != nil { + log.Println(err) + return + } + + // New users will need to register + reg, err := client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true}) + if err != nil { + log.Println(err) + return + } + myUser.Registration = reg + + request := certificate.ObtainRequest{ + Domains: domain, + Bundle: true, + } + + certificates, err := client.Certificate.Obtain(request) + if err != nil { + log.Println(err) + return + } + name := strings.Join(domain, "_") + saveDir := "tmp/" + name + if _, err = os.Stat(saveDir); os.IsNotExist(err) { + err = os.MkdirAll(saveDir, 0755) + if err != nil { + return + } + } + + // Each certificate comes back with the cert bytes, the bytes of the client's + // private key, and a certificate URL. SAVE THESE TO DISK. + err = os.WriteFile(filepath.Join(saveDir, "fullchain.cer"), + certificates.Certificate, 0644) + + if err != nil { + log.Println(err) + return + } + + err = os.WriteFile(filepath.Join(saveDir, "private.key"), + certificates.PrivateKey, 0644) + + if err != nil { + log.Println(err) + return + } +} diff --git a/server/pkg/config_list/config_list.go b/server/internal/config_list/config_list.go similarity index 100% rename from server/pkg/config_list/config_list.go rename to server/internal/config_list/config_list.go diff --git a/server/pkg/helper/copy.go b/server/internal/helper/copy.go similarity index 100% rename from server/pkg/helper/copy.go rename to server/internal/helper/copy.go diff --git a/server/pkg/helper/file.go b/server/internal/helper/file.go similarity index 100% rename from server/pkg/helper/file.go rename to server/internal/helper/file.go diff --git a/server/pkg/helper/tar.go b/server/internal/helper/tar.go similarity index 100% rename from server/pkg/helper/tar.go rename to server/internal/helper/tar.go diff --git a/server/pkg/nginx/build_config.go b/server/internal/nginx/build_config.go similarity index 100% rename from server/pkg/nginx/build_config.go rename to server/internal/nginx/build_config.go diff --git a/server/pkg/nginx/conf/nextcloud_ngx.conf b/server/internal/nginx/conf/nextcloud_ngx.conf similarity index 100% rename from server/pkg/nginx/conf/nextcloud_ngx.conf rename to server/internal/nginx/conf/nextcloud_ngx.conf diff --git a/server/pkg/nginx/conf/test.conf b/server/internal/nginx/conf/test.conf similarity index 100% rename from server/pkg/nginx/conf/test.conf rename to server/internal/nginx/conf/test.conf diff --git a/server/pkg/nginx/format_code.go b/server/internal/nginx/format_code.go similarity index 100% rename from server/pkg/nginx/format_code.go rename to server/internal/nginx/format_code.go diff --git a/server/pkg/nginx/log.go b/server/internal/nginx/log.go similarity index 100% rename from server/pkg/nginx/log.go rename to server/internal/nginx/log.go diff --git a/server/pkg/nginx/nginx.go b/server/internal/nginx/nginx.go similarity index 100% rename from server/pkg/nginx/nginx.go rename to server/internal/nginx/nginx.go diff --git a/server/pkg/nginx/ngx_conf_parse_test.go b/server/internal/nginx/ngx_conf_parse_test.go similarity index 100% rename from server/pkg/nginx/ngx_conf_parse_test.go rename to server/internal/nginx/ngx_conf_parse_test.go diff --git a/server/pkg/nginx/parse.go b/server/internal/nginx/parse.go similarity index 100% rename from server/pkg/nginx/parse.go rename to server/internal/nginx/parse.go diff --git a/server/pkg/nginx/type.go b/server/internal/nginx/type.go similarity index 100% rename from server/pkg/nginx/type.go rename to server/internal/nginx/type.go diff --git a/server/pkg/pty/pipeline.go b/server/internal/pty/pipeline.go similarity index 100% rename from server/pkg/pty/pipeline.go rename to server/internal/pty/pipeline.go diff --git a/server/pkg/pty/type.go b/server/internal/pty/type.go similarity index 100% rename from server/pkg/pty/type.go rename to server/internal/pty/type.go diff --git a/server/model/cert.go b/server/model/cert.go index 49e4c6df..eed9660e 100644 --- a/server/model/cert.go +++ b/server/model/cert.go @@ -1,7 +1,7 @@ package model import ( - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/lib/pq" "os" ) diff --git a/server/model/dns_credential.go b/server/model/dns_credential.go index cb7e5bb1..b3918871 100644 --- a/server/model/dns_credential.go +++ b/server/model/dns_credential.go @@ -1,7 +1,7 @@ package model import ( - "github.com/0xJacky/Nginx-UI/server/pkg/cert/dns" + "github.com/0xJacky/Nginx-UI/server/internal/cert/dns" ) type DnsCredential struct { diff --git a/server/pkg/cert/dns/tencent_cloud_dns_test.go b/server/pkg/cert/dns/tencent_cloud_dns_test.go deleted file mode 100644 index 79171ac0..00000000 --- a/server/pkg/cert/dns/tencent_cloud_dns_test.go +++ /dev/null @@ -1,121 +0,0 @@ -package dns - -import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/tls" - "github.com/0xJacky/Nginx-UI/server/pkg/cert" - "github.com/0xJacky/Nginx-UI/server/settings" - "github.com/go-acme/lego/v4/certcrypto" - "github.com/go-acme/lego/v4/certificate" - "github.com/go-acme/lego/v4/lego" - "github.com/go-acme/lego/v4/providers/dns/tencentcloud" - "github.com/go-acme/lego/v4/registration" - "log" - "net/http" - "os" - "path/filepath" - "strings" - "testing" -) - -func TestTencentCloudDNS(t *testing.T) { - domain := []string{"test.jackyu.cn"} - - privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - log.Println(err) - return - } - - myUser := cert.MyUser{ - Email: settings.ServerSettings.Email, - Key: privateKey, - } - - config := lego.NewConfig(&myUser) - - if settings.ServerSettings.Demo { - config.CADirURL = "https://acme-staging-v02.api.letsencrypt.org/directory" - } - - if settings.ServerSettings.CADir != "" { - config.CADirURL = settings.ServerSettings.CADir - if config.HTTPClient != nil { - config.HTTPClient.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - } - } - - config.Certificate.KeyType = certcrypto.RSA2048 - - // A client facilitates communication with the CA server. - client, err := lego.NewClient(config) - if err != nil { - log.Println(err) - return - } - - provider, err := tencentcloud.NewDNSProvider() - - if err != nil { - log.Println(err) - return - } - - err = client.Challenge.SetDNS01Provider( - provider, - ) - - if err != nil { - log.Println(err) - return - } - - // New users will need to register - reg, err := client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true}) - if err != nil { - log.Println(err) - return - } - myUser.Registration = reg - - request := certificate.ObtainRequest{ - Domains: domain, - Bundle: true, - } - - certificates, err := client.Certificate.Obtain(request) - if err != nil { - log.Println(err) - return - } - name := strings.Join(domain, "_") - saveDir := "tmp/" + name - if _, err = os.Stat(saveDir); os.IsNotExist(err) { - err = os.MkdirAll(saveDir, 0755) - if err != nil { - return - } - } - - // Each certificate comes back with the cert bytes, the bytes of the client's - // private key, and a certificate URL. SAVE THESE TO DISK. - err = os.WriteFile(filepath.Join(saveDir, "fullchain.cer"), - certificates.Certificate, 0644) - - if err != nil { - log.Println(err) - return - } - - err = os.WriteFile(filepath.Join(saveDir, "private.key"), - certificates.PrivateKey, 0644) - - if err != nil { - log.Println(err) - return - } -} diff --git a/server/server.go b/server/server.go new file mode 100644 index 00000000..eed41ead --- /dev/null +++ b/server/server.go @@ -0,0 +1,46 @@ +package server + +import ( + "github.com/0xJacky/Nginx-UI/server/analytic" + "github.com/0xJacky/Nginx-UI/server/internal/cert" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" + "github.com/0xJacky/Nginx-UI/server/model" + "github.com/0xJacky/Nginx-UI/server/query" + "github.com/0xJacky/Nginx-UI/server/router" + "github.com/0xJacky/Nginx-UI/server/settings" + "github.com/go-co-op/gocron" + "github.com/jpillora/overseer" + "log" + "mime" + "net/http" + "time" +) + +func Program(state overseer.State) { + // Hack: fix wrong Content Type of .js file on some OS platforms + // See https://github.com/golang/go/issues/32350 + _ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8") + + log.Printf("Nginx config dir path: %s", nginx.GetConfPath()) + if "" != settings.ServerSettings.JwtSecret { + db := model.Init() + query.Init(db) + } + + s := gocron.NewScheduler(time.UTC) + job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoObtain) + + if err != nil { + log.Fatalf("AutoCert Job: %v, Err: %v\n", job, err) + } + + s.StartAsync() + + go analytic.RecordServerAnalytic() + + err = http.Serve(state.Listener, router.InitRouter()) + if err != nil { + log.Fatalln(err) + } + log.Println("[Nginx UI] server exiting") +} diff --git a/server/service/template.go b/server/service/template.go index 56da4caa..8742fb11 100644 --- a/server/service/template.go +++ b/server/service/template.go @@ -3,7 +3,7 @@ package service import ( "bufio" "bytes" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "github.com/0xJacky/Nginx-UI/server/settings" templ "github.com/0xJacky/Nginx-UI/template" "github.com/BurntSushi/toml" diff --git a/server/service/upgrade.go b/server/service/upgrade.go index e85fa4ef..54ac541a 100644 --- a/server/service/upgrade.go +++ b/server/service/upgrade.go @@ -5,7 +5,7 @@ import ( "fmt" _github "github.com/0xJacky/Nginx-UI/.github" "github.com/0xJacky/Nginx-UI/frontend" - "github.com/0xJacky/Nginx-UI/server/pkg/helper" + "github.com/0xJacky/Nginx-UI/server/internal/helper" "github.com/0xJacky/Nginx-UI/server/settings" "github.com/pkg/errors" "io" diff --git a/server/test/acme_test.go b/server/test/acme_test.go index 3832ed31..0f9ae026 100644 --- a/server/test/acme_test.go +++ b/server/test/acme_test.go @@ -2,7 +2,7 @@ package test import ( "fmt" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "io/ioutil" "log" "os" diff --git a/server/test/cert_test.go b/server/test/cert_test.go index 6b9c8fac..00cf3e29 100644 --- a/server/test/cert_test.go +++ b/server/test/cert_test.go @@ -2,7 +2,7 @@ package test import ( "fmt" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/internal/nginx" "log" "os" "os/exec"