You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
4.1 KiB
114 lines
4.1 KiB
package main
|
|
|
|
import (
|
|
"github.com/jinzhu/gorm"
|
|
"strings"
|
|
"net/http"
|
|
"io/ioutil"
|
|
"encoding/json"
|
|
)
|
|
|
|
// GlobalSettings contains basic common settings across the app
|
|
type GlobalSettings struct {
|
|
gorm.Model
|
|
SecretRegistrationCode string
|
|
ThreadsPerCampaign int
|
|
BcryptCost int
|
|
MaxRequestRetries int
|
|
WaitBeforeRetry int
|
|
WebTemplatePrefix string
|
|
WebTemplateRoute string
|
|
}
|
|
|
|
type GlobalSettingsJson struct {
|
|
SecretRegistrationCode string `json:"secretRegistrationCode"`
|
|
ThreadsPerCampaign int `json:"threadsPerCampaign"`
|
|
BcryptCost int `json:"bcryptCost"`
|
|
MaxRequestRetries int `json:"maxRequestRetries"`
|
|
WaitBeforeRetry int `json:"waitBeforeRetry"`
|
|
WebTemplatePrefix string `json:"webTemplatePrefix"`
|
|
WebTemplateRoute string `json:"webTemplateRoute"`
|
|
}
|
|
|
|
|
|
func (tapit *Tapit) handleGlobalSettings(w http.ResponseWriter, r *http.Request) {
|
|
if strings.ToUpper(r.Method) == "PUT" {
|
|
tapit.updateGlobalSettings(w, r)
|
|
} else if strings.ToUpper(r.Method) == "GET" {
|
|
tapit.getGlobalSettings(w,r)
|
|
} else {
|
|
http.Error(w, "HTTP method not implemented", 400)
|
|
return
|
|
}
|
|
}
|
|
|
|
func (tapit *Tapit) updateGlobalSettings(w http.ResponseWriter, r *http.Request) {
|
|
requestBody, err:= ioutil.ReadAll(r.Body)
|
|
if err != nil {
|
|
http.Error(w, "Bad request", 400)
|
|
return
|
|
}
|
|
var globalSettingsJson GlobalSettingsJson
|
|
var globalSettings GlobalSettings
|
|
err = tapit.db.Last(&globalSettings).Error
|
|
if err != nil {
|
|
http.Error(w, "Bad request", 400)
|
|
return
|
|
}
|
|
err = json.Unmarshal(requestBody, &globalSettingsJson)
|
|
if err != nil {
|
|
http.Error(w, "Bad request", 400)
|
|
return
|
|
}
|
|
if globalSettingsJson.SecretRegistrationCode != "" && globalSettingsJson.ThreadsPerCampaign != 0 && globalSettingsJson.BcryptCost != 0 && globalSettingsJson.WebTemplatePrefix != "" && globalSettingsJson.WebTemplateRoute != "" {
|
|
globalSettings.SecretRegistrationCode = globalSettingsJson.SecretRegistrationCode
|
|
globalSettings.ThreadsPerCampaign = globalSettingsJson.ThreadsPerCampaign
|
|
globalSettings.BcryptCost = globalSettingsJson.BcryptCost
|
|
globalSettings.MaxRequestRetries = globalSettingsJson.MaxRequestRetries
|
|
globalSettings.WaitBeforeRetry = globalSettingsJson.WaitBeforeRetry
|
|
globalSettings.WebTemplatePrefix = globalSettingsJson.WebTemplatePrefix
|
|
globalSettings.WebTemplateRoute = globalSettingsJson.WebTemplateRoute
|
|
err = tapit.db.Save(&globalSettings).Error
|
|
|
|
if err != nil {
|
|
notifyPopup(w, r, "failure", "Failed to update global settings", nil)
|
|
return
|
|
} else {
|
|
tapit.globalSettings = globalSettings
|
|
notifyPopup(w, r, "success", "Successfully updated global settings", globalSettingsJson)
|
|
return
|
|
}
|
|
} else {
|
|
notifyPopup(w, r, "failure", "Failed to update global settings", nil)
|
|
return
|
|
}
|
|
}
|
|
|
|
func (tapit *Tapit) getGlobalSettings(w http.ResponseWriter, r *http.Request) {
|
|
var globalSettingsJson GlobalSettingsJson
|
|
var globalSettings GlobalSettings
|
|
err := tapit.db.Last(&globalSettings).Error
|
|
|
|
if err == nil {
|
|
globalSettingsJson.SecretRegistrationCode = globalSettings.SecretRegistrationCode
|
|
globalSettingsJson.ThreadsPerCampaign = globalSettings.ThreadsPerCampaign
|
|
globalSettingsJson.BcryptCost = globalSettings.BcryptCost
|
|
globalSettingsJson.MaxRequestRetries = globalSettings.MaxRequestRetries
|
|
globalSettingsJson.WaitBeforeRetry = globalSettings.WaitBeforeRetry
|
|
globalSettingsJson.WebTemplatePrefix = globalSettings.WebTemplatePrefix
|
|
globalSettingsJson.WebTemplateRoute = globalSettings.WebTemplateRoute
|
|
|
|
jsonResults, err := json.Marshal(globalSettingsJson)
|
|
if err != nil {
|
|
http.Error(w, err.Error(), 500)
|
|
return
|
|
} else {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Write(jsonResults)
|
|
return
|
|
}
|
|
} else {
|
|
http.Error(w, "Bad request", 400)
|
|
return
|
|
}
|
|
}
|