[host] add some things
This commit is contained in:
parent
b2ccc6c987
commit
d3b8a5c5ae
2
build.sh
2
build.sh
|
@ -3,7 +3,7 @@
|
||||||
P=$PWD;
|
P=$PWD;
|
||||||
|
|
||||||
cd $GOPATH/src/dev.sum7.eu/sum7/warehost/cmd/warehost;
|
cd $GOPATH/src/dev.sum7.eu/sum7/warehost/cmd/warehost;
|
||||||
go install;
|
go install -tags all;
|
||||||
cd $GOPATH/src/dev.sum7.eu/sum7/warehost/cmd/warehost-web;
|
cd $GOPATH/src/dev.sum7.eu/sum7/warehost/cmd/warehost-web;
|
||||||
go install;
|
go install;
|
||||||
|
|
||||||
|
|
|
@ -26,39 +26,54 @@ func BindAPI(db *gorm.DB, router *goji.Mux, prefix string) {
|
||||||
log = liblog.NewModulLog(MODULNAME)
|
log = liblog.NewModulLog(MODULNAME)
|
||||||
|
|
||||||
router.HandleFuncC(pat.Post(prefix+"/signup"), libapi.SessionHandler(system.LoginHandler(signup)))
|
router.HandleFuncC(pat.Post(prefix+"/signup"), libapi.SessionHandler(system.LoginHandler(signup)))
|
||||||
|
router.HandleFuncC(pat.Get(prefix+"/signup"), libapi.SessionHandler(system.LoginHandler(checkSignup)))
|
||||||
router.HandleFuncC(pat.Delete(prefix+"/delete"), libapi.SessionHandler(system.LoginHandler(ProfilHandler(delete))))
|
router.HandleFuncC(pat.Delete(prefix+"/delete"), libapi.SessionHandler(system.LoginHandler(ProfilHandler(delete))))
|
||||||
|
router.HandleFuncC(pat.Get(prefix+"/profil"), libapi.SessionHandler(system.LoginHandler(ProfilHandler(profil))))
|
||||||
|
router.HandleFuncC(pat.Get(prefix+"/domain"), libapi.SessionHandler(system.LoginHandler(ProfilHandler(domainList))))
|
||||||
|
router.HandleFuncC(pat.Get(prefix+"/database"), libapi.SessionHandler(system.LoginHandler(ProfilHandler(databaseList))))
|
||||||
}
|
}
|
||||||
|
|
||||||
func signup(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
func checkSignup(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
||||||
login := ctx.Value("login").(*system.Login)
|
login := ctx.Value("login").(*system.Login)
|
||||||
returndata = false
|
returndata = false
|
||||||
logger := log.GetLog(r, "signup")
|
logger := log.GetLog(r, "checksignup")
|
||||||
run := login.Superadmin
|
run := login.Superadmin
|
||||||
if !run {
|
if !run {
|
||||||
var profil Profil
|
var profil Profil
|
||||||
dbconnection.Joins("LEFT JOIN invite invite ON invite.login=host_profil.login").Where("invite.invited=?", login.ID).Find(&profil)
|
dbconnection.Joins("LEFT JOIN invite invite ON invite.login=host_profil.login").Where("invite.invited=?", login.ID).Find(&profil)
|
||||||
run = profil.Reseller
|
run = profil.Reseller
|
||||||
}
|
}
|
||||||
|
returndata = run
|
||||||
if run {
|
if run {
|
||||||
|
logger.Info("done")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.WriteHeader(http.StatusUnauthorized)
|
||||||
|
logger.Info("not allowed")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func signup(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
||||||
|
login := ctx.Value("login").(*system.Login)
|
||||||
|
logger := log.GetLog(r, "signup")
|
||||||
|
returndata, returnerr = checkSignup(ctx, w, r)
|
||||||
|
if returndata.(bool) {
|
||||||
profil := &Profil{LoginID: login.ID}
|
profil := &Profil{LoginID: login.ID}
|
||||||
if err := dbconnection.Create(profil).Error; err != nil {
|
if err := dbconnection.Create(profil).Error; err != nil {
|
||||||
if strings.Contains(err.Error(), "duplicate key") {
|
if strings.Contains(err.Error(), "duplicate key") {
|
||||||
returndata = false
|
returndata = false
|
||||||
logger.Warning("exists already")
|
logger.Warning("exists already")
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
logger.Error("database: during create host profil: ", err)
|
|
||||||
returnerr = &libapi.ErrorResult{Message: "Internal Database Error"}
|
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
logger.Error("database: during create host profil: ", err)
|
||||||
|
returnerr = &libapi.ErrorResult{Message: "Internal Database Error"}
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
returndata = true
|
returndata = true
|
||||||
logger.Info("done")
|
logger.Info("done")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusUnauthorized)
|
|
||||||
logger.Info("not allowed")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func delete(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
func delete(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
||||||
|
@ -67,3 +82,8 @@ func delete(ctx context.Context, w http.ResponseWriter, r *http.Request) (return
|
||||||
dbconnection.Unscoped().Delete(profil)
|
dbconnection.Unscoped().Delete(profil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
func profil(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
||||||
|
profil := ctx.Value("profil").(*Profil)
|
||||||
|
returndata = profil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -48,6 +48,20 @@ func TestAPI(t *testing.T) {
|
||||||
assertion.Equal(w.StatusCode, http.StatusOK)
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
assertion.Equal(result.Data, false)
|
assertion.Equal(result.Data, false)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TEST checksignup
|
||||||
|
*/
|
||||||
|
session.Clean()
|
||||||
|
result, w = session.JSONRequest("GET", "/host/signup", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusUnauthorized)
|
||||||
|
assertion.Equal(result.Data, false)
|
||||||
|
|
||||||
|
loginTest(session, assertion)
|
||||||
|
|
||||||
|
result, w = session.JSONRequest("GET", "/host/signup", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
|
assertion.Equal(result.Data, true)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TEST delete
|
* TEST delete
|
||||||
*/
|
*/
|
||||||
|
@ -62,4 +76,54 @@ func TestAPI(t *testing.T) {
|
||||||
assertion.Equal(w.StatusCode, http.StatusOK)
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
assertion.Equal(result.Data, true)
|
assertion.Equal(result.Data, true)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TEST profil
|
||||||
|
*/
|
||||||
|
session.Clean()
|
||||||
|
result, w = session.JSONRequest("GET", "/host/profil", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusUnauthorized)
|
||||||
|
assertion.Equal(result.Data, false)
|
||||||
|
|
||||||
|
loginTest(session, assertion)
|
||||||
|
|
||||||
|
result, w = session.JSONRequest("GET", "/host/profil", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
|
assertion.Equal(result.Data, false)
|
||||||
|
|
||||||
|
// Need a Profile for Next tests
|
||||||
|
result, w = session.JSONRequest("POST", "/host/signup", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
|
assertion.Equal(result.Data, true)
|
||||||
|
|
||||||
|
result, w = session.JSONRequest("GET", "/host/profil", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
|
assertion.NotEqual(result.Data, false)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TEST domainList
|
||||||
|
*/
|
||||||
|
session.Clean()
|
||||||
|
result, w = session.JSONRequest("GET", "/host/domain", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusUnauthorized)
|
||||||
|
assertion.Equal(result.Data, false)
|
||||||
|
|
||||||
|
loginTest(session, assertion)
|
||||||
|
|
||||||
|
result, w = session.JSONRequest("GET", "/host/domain", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
|
assertion.NotEqual(result.Data, false)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TEST databaseList
|
||||||
|
*/
|
||||||
|
session.Clean()
|
||||||
|
result, w = session.JSONRequest("GET", "/host/database", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusUnauthorized)
|
||||||
|
assertion.Equal(result.Data, false)
|
||||||
|
|
||||||
|
loginTest(session, assertion)
|
||||||
|
|
||||||
|
result, w = session.JSONRequest("GET", "/host/database", nil)
|
||||||
|
assertion.Equal(w.StatusCode, http.StatusOK)
|
||||||
|
assertion.NotEqual(result.Data, false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package host
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
libapi "dev.sum7.eu/sum7/warehost/lib/api"
|
||||||
|
)
|
||||||
|
|
||||||
|
func domainList(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
||||||
|
profil := ctx.Value("profil").(*Profil)
|
||||||
|
returndata = false
|
||||||
|
logger := log.GetLog(r, "domainlist")
|
||||||
|
var domain []*Domain
|
||||||
|
dbconnection.Where("profil = ?", profil.ID).Find(&domain)
|
||||||
|
logger.Info("done")
|
||||||
|
returndata = domain
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func databaseList(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) {
|
||||||
|
profil := ctx.Value("profil").(*Profil)
|
||||||
|
returndata = false
|
||||||
|
logger := log.GetLog(r, "databaselist")
|
||||||
|
var database []*Database
|
||||||
|
dbconnection.Where("profil = ?", profil.ID).Find(&database)
|
||||||
|
logger.Info("done")
|
||||||
|
returndata = database
|
||||||
|
return
|
||||||
|
}
|
|
@ -18,8 +18,8 @@ func ProfilHandler(h libapi.Handle) libapi.Handle {
|
||||||
returndata = false
|
returndata = false
|
||||||
|
|
||||||
profil := &Profil{LoginID: login.ID}
|
profil := &Profil{LoginID: login.ID}
|
||||||
res := dbconnection.Find(profil)
|
dbconnection.Where("login = ?", login.ID).Find(profil)
|
||||||
if !res.RecordNotFound() {
|
if profil.ID > 0 {
|
||||||
ctx = context.WithValue(ctx, "profil", profil)
|
ctx = context.WithValue(ctx, "profil", profil)
|
||||||
returndata, returnerr = h(ctx, w, r)
|
returndata, returnerr = h(ctx, w, r)
|
||||||
return
|
return
|
||||||
|
|
|
@ -19,7 +19,7 @@ type Domain struct {
|
||||||
ID int64
|
ID int64
|
||||||
ProfilID int64 `sql:"type:bigint NOT NULL REFERENCES host_profil(id) ON UPDATE CASCADE ON DELETE CASCADE;column:profil" json:"profil"`
|
ProfilID int64 `sql:"type:bigint NOT NULL REFERENCES host_profil(id) ON UPDATE CASCADE ON DELETE CASCADE;column:profil" json:"profil"`
|
||||||
FQDN string `sql:"type:varchar(255);column:fqdn" json:"fqdn"`
|
FQDN string `sql:"type:varchar(255);column:fqdn" json:"fqdn"`
|
||||||
Code string `sql:"type:varchar(255);column:code" json:"code"`
|
Code string `sql:"type:varchar(255);column:code" json:"-"`
|
||||||
Active bool `sql:"default:false;column:active" json:"active"`
|
Active bool `sql:"default:false;column:active" json:"active"`
|
||||||
Mail bool `sql:"default:false;column:mail" json:"mail"`
|
Mail bool `sql:"default:false;column:mail" json:"mail"`
|
||||||
Web bool `sql:"default:false;column:web" json:"web"`
|
Web bool `sql:"default:false;column:web" json:"web"`
|
||||||
|
|
Reference in New Issue