changed fmt's to logs and i think i finished the router

This commit is contained in:
George Shaw 2017-12-11 13:34:44 -06:00
parent 518200e611
commit 209f919220
5 changed files with 47 additions and 21 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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 {

View file

@ -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 {

View file

@ -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()
}
}