mirror of
https://github.com/donl/gPanel.git
synced 2026-06-30 06:12:06 -06:00
changed fmt's to logs and i think i finished the router
This commit is contained in:
parent
518200e611
commit
209f919220
5 changed files with 47 additions and 21 deletions
|
|
@ -1,11 +1,12 @@
|
|||
package domain
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"log"
|
||||
"strconv"
|
||||
"github.com/Ennovar/gPanel/pkg/database"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/Ennovar/gPanel/pkg/database"
|
||||
)
|
||||
|
||||
func Link(res http.ResponseWriter, req *http.Request, logger *log.Logger, PublicPort int) bool {
|
||||
|
|
@ -27,7 +28,7 @@ func Link(res http.ResponseWriter, req *http.Request, logger *log.Logger, Public
|
|||
return false
|
||||
}
|
||||
|
||||
ds, err := database.Open("server/"+database.DB_DOMAINS)
|
||||
ds, err := database.Open("server/" + database.DB_DOMAINS)
|
||||
if err != nil || ds == nil {
|
||||
logger.Println(req.URL.Path + "::" + err.Error())
|
||||
http.Error(res, err.Error(), http.StatusInternalServerError)
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
package domain
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"log"
|
||||
"strconv"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/Ennovar/gPanel/pkg/database"
|
||||
)
|
||||
|
||||
|
|
@ -26,7 +27,7 @@ func Unlink(res http.ResponseWriter, req *http.Request, logger *log.Logger) bool
|
|||
return false
|
||||
}
|
||||
|
||||
ds, err := database.Open("server/"+database.DB_DOMAINS)
|
||||
ds, err := database.Open("server/" + database.DB_DOMAINS)
|
||||
if err != nil || ds == nil {
|
||||
logger.Println(req.URL.Path + "::" + err.Error())
|
||||
http.Error(res, err.Error(), http.StatusInternalServerError)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ package gpaccount
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
func (con *Controller) Start() error {
|
||||
|
|
@ -14,7 +14,7 @@ func (con *Controller) Start() error {
|
|||
|
||||
con.Status = 1
|
||||
go httpserver.ListenAndServe()
|
||||
fmt.Printf("gPanel account server now serving out of %s%s on port %d\n", con.Directory, con.DocumentRoot, con.Port)
|
||||
log.Printf("gPanel account server now serving out of %s%s on port %d\n", con.Directory, con.DocumentRoot, con.Port)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ func (con *Controller) Stop(graceful bool) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
fmt.Printf("Graceful shutdown failed attempting forced: %v\n", err)
|
||||
log.Printf("Graceful shutdown failed attempting forced: %v\n", err)
|
||||
}
|
||||
|
||||
if err := httpserver.Close(); err != nil {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ package public
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
// Start function starts listening on the public server
|
||||
|
|
@ -15,7 +15,7 @@ func (con *Controller) Start() error {
|
|||
|
||||
con.Status = 1
|
||||
go server.ListenAndServe()
|
||||
fmt.Printf("Public server now serving out of %s on port %d\n", con.Directory+"public/", con.Port)
|
||||
log.Printf("Public server now serving out of %s on port %d\n", con.Directory+"public/", con.Port)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ func (con *Controller) Stop(graceful bool) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
fmt.Printf("Graceful shutdown failed attempting forced: %v\n", err)
|
||||
log.Printf("Graceful shutdown failed attempting forced: %v\n", err)
|
||||
}
|
||||
|
||||
if err := server.Close(); err != nil {
|
||||
|
|
|
|||
|
|
@ -2,10 +2,13 @@ package router
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httputil"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/Ennovar/gPanel/pkg/database"
|
||||
"net/http/httputil"
|
||||
"log"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type Router struct {
|
||||
|
|
@ -13,7 +16,9 @@ type Router struct {
|
|||
}
|
||||
|
||||
var server http.Server
|
||||
var domainToPort = make(map[string]int)
|
||||
var domainToPort map[string]int
|
||||
|
||||
var mutex = &sync.Mutex{}
|
||||
|
||||
func RefreshMap() bool {
|
||||
ds, err := database.Open("server/" + database.DB_DOMAINS)
|
||||
|
|
@ -29,9 +34,12 @@ func RefreshMap() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
mutex.Lock()
|
||||
domainToPort = make(map[string]int)
|
||||
for k, v := range client {
|
||||
domainToPort[k] = v.PublicPort
|
||||
}
|
||||
mutex.Unlock()
|
||||
|
||||
return true
|
||||
}
|
||||
|
|
@ -46,13 +54,13 @@ func New() *Router {
|
|||
}
|
||||
|
||||
server = http.Server{
|
||||
Addr: "localhost:" + strconv.Itoa(r.Port),
|
||||
Handler: &httputil.ReverseProxy{
|
||||
Addr: "localhost:" + strconv.Itoa(r.Port),
|
||||
Handler: &httputil.ReverseProxy{
|
||||
Director: func(req *http.Request) {
|
||||
if d, ok := domainToPort[req.Host]; ok {
|
||||
req.Header.Set("Host", req.Host)
|
||||
req.URL.Scheme = "http"
|
||||
req.URL.Host = "127.0.0.1:"+strconv.Itoa(d)
|
||||
req.URL.Host = "127.0.0.1:" + strconv.Itoa(d)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
@ -61,9 +69,25 @@ func New() *Router {
|
|||
MaxHeaderBytes: 0,
|
||||
}
|
||||
|
||||
// Start scheduled map refresher
|
||||
ticker := time.NewTicker(15 * time.Second)
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <- ticker.C:
|
||||
if !RefreshMap() {
|
||||
ticker.Stop()
|
||||
log.Fatal("Error refreshing domain/bundle pairing for router")
|
||||
return
|
||||
}
|
||||
log.Print("Successfully refreshed domain/bundle pairing map")
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
return &r
|
||||
}
|
||||
|
||||
func (r *Router) Start() {
|
||||
go server.ListenAndServe()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue