API for setting a list of blocked usernames. For #782

This commit is contained in:
Gabe Kangas 2021-05-22 21:50:34 -07:00
parent 83ad6db394
commit 61e07bf945
3 changed files with 49 additions and 17 deletions

View file

@ -539,7 +539,19 @@ func SetCustomStyles(w http.ResponseWriter, r *http.Request) {
data.SetCustomStyles(customStyles.Value.(string))
controllers.WriteSimpleResponse(w, true, "custom styles updated")
}
// SetUsernameBlocklist will set the list of usernames we do not allow to use.
func SetUsernameBlocklist(w http.ResponseWriter, r *http.Request) {
usernames, success := getValueFromRequest(w, r)
if !success {
controllers.WriteSimpleResponse(w, false, "unable to update custom styles")
return
}
data.SetUsernameBlocklist(usernames.Value.(string))
controllers.WriteSimpleResponse(w, true, "blocklist updated")
}
func requirePOST(w http.ResponseWriter, r *http.Request) bool {

View file

@ -56,10 +56,11 @@ func GetServerConfig(w http.ResponseWriter, r *http.Request) {
Enabled: data.GetDirectoryEnabled(),
InstanceURL: data.GetServerURL(),
},
S3: data.GetS3Config(),
ExternalActions: data.GetExternalActions(),
SupportedCodecs: transcoder.GetCodecs(ffmpeg),
VideoCodec: data.GetVideoCodec(),
S3: data.GetS3Config(),
ExternalActions: data.GetExternalActions(),
SupportedCodecs: transcoder.GetCodecs(ffmpeg),
VideoCodec: data.GetVideoCodec(),
UsernameBlocklist: data.GetUsernameBlocklist(),
}
w.Header().Set("Content-Type", "application/json")
@ -70,19 +71,20 @@ func GetServerConfig(w http.ResponseWriter, r *http.Request) {
}
type serverConfigAdminResponse struct {
InstanceDetails webConfigResponse `json:"instanceDetails"`
FFmpegPath string `json:"ffmpegPath"`
StreamKey string `json:"streamKey"`
WebServerPort int `json:"webServerPort"`
RTMPServerPort int `json:"rtmpServerPort"`
S3 models.S3 `json:"s3"`
VideoSettings videoSettings `json:"videoSettings"`
LatencyLevel int `json:"latencyLevel"`
YP yp `json:"yp"`
ChatDisabled bool `json:"chatDisabled"`
ExternalActions []models.ExternalAction `json:"externalActions"`
SupportedCodecs []string `json:"supportedCodecs"`
VideoCodec string `json:"videoCodec"`
InstanceDetails webConfigResponse `json:"instanceDetails"`
FFmpegPath string `json:"ffmpegPath"`
StreamKey string `json:"streamKey"`
WebServerPort int `json:"webServerPort"`
RTMPServerPort int `json:"rtmpServerPort"`
S3 models.S3 `json:"s3"`
VideoSettings videoSettings `json:"videoSettings"`
LatencyLevel int `json:"latencyLevel"`
YP yp `json:"yp"`
ChatDisabled bool `json:"chatDisabled"`
ExternalActions []models.ExternalAction `json:"externalActions"`
SupportedCodecs []string `json:"supportedCodecs"`
VideoCodec string `json:"videoCodec"`
UsernameBlocklist string `json:"usernameBlocklist"`
}
type videoSettings struct {

View file

@ -40,6 +40,7 @@ const chatDisabledKey = "chat_disabled"
const externalActionsKey = "external_actions"
const customStylesKey = "custom_styles"
const videoCodecKey = "video_codec"
const blockedUsernamesKey = "blocked_usernames"
// GetExtraPageBodyContent will return the user-supplied body content.
func GetExtraPageBodyContent() string {
@ -552,3 +553,20 @@ func FindHighestVideoQualityIndex(qualities []models.StreamOutputVariant) int {
return indexedQualities[0].index
}
// GetUsernameBlocklist will return the blocked usernames as a comma seperated string.
func GetUsernameBlocklist() string {
usernameString, err := _datastore.GetString(blockedUsernamesKey)
if err != nil {
log.Traceln(blockedUsernamesKey, err)
return ""
}
return usernameString
}
// SetUsernameBlocklist set the username blocklist as a comma seperated string.
func SetUsernameBlocklist(usernames string) error {
return _datastore.SetString(serverMetadataTagsKey, usernames)
}