123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package admin
- import (
- "net/http"
- "github.com/owncast/owncast/activitypub"
- "github.com/owncast/owncast/activitypub/outbox"
- "github.com/owncast/owncast/activitypub/persistence"
- "github.com/owncast/owncast/controllers"
- "github.com/owncast/owncast/core/data"
- )
- // SendFederatedMessage will send a manual message to the fediverse.
- func SendFederatedMessage(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValue, success := getValueFromRequest(w, r)
- if !success {
- return
- }
- message, ok := configValue.Value.(string)
- if !ok {
- controllers.WriteSimpleResponse(w, false, "unable to send message")
- return
- }
- if err := activitypub.SendPublicFederatedMessage(message); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "sent")
- }
- // SetFederationEnabled will set if Federation features are enabled.
- func SetFederationEnabled(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValue, success := getValueFromRequest(w, r)
- if !success {
- return
- }
- if err := data.SetFederationEnabled(configValue.Value.(bool)); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "federation features saved")
- }
- // SetFederationActivityPrivate will set if Federation features are private to followers.
- func SetFederationActivityPrivate(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValue, success := getValueFromRequest(w, r)
- if !success {
- return
- }
- if err := data.SetFederationIsPrivate(configValue.Value.(bool)); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- // Update Fediverse followers about this change.
- if err := outbox.UpdateFollowersWithAccountUpdates(); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "federation private saved")
- }
- // SetFederationShowEngagement will set if Fedivese engagement shows in chat.
- func SetFederationShowEngagement(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValue, success := getValueFromRequest(w, r)
- if !success {
- return
- }
- if err := data.SetFederationShowEngagement(configValue.Value.(bool)); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "federation show engagement saved")
- }
- // SetFederationUsername will set the local actor username used for federation activities.
- func SetFederationUsername(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValue, success := getValueFromRequest(w, r)
- if !success {
- return
- }
- if err := data.SetFederationUsername(configValue.Value.(string)); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "username saved")
- }
- // SetFederationGoLiveMessage will set the federated message sent when the streamer goes live.
- func SetFederationGoLiveMessage(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValue, success := getValueFromRequest(w, r)
- if !success {
- return
- }
- if err := data.SetFederationGoLiveMessage(configValue.Value.(string)); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "message saved")
- }
- // SetFederationBlockDomains saves a list of domains to block on the Fediverse.
- func SetFederationBlockDomains(w http.ResponseWriter, r *http.Request) {
- if !requirePOST(w, r) {
- return
- }
- configValues, success := getValuesFromRequest(w, r)
- if !success {
- controllers.WriteSimpleResponse(w, false, "unable to handle provided domains")
- return
- }
- domainStrings := make([]string, 0)
- for _, domain := range configValues {
- domainStrings = append(domainStrings, domain.Value.(string))
- }
- if err := data.SetBlockedFederatedDomains(domainStrings); err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- controllers.WriteSimpleResponse(w, true, "saved")
- }
- // GetFederatedActions will return the saved list of accepted inbound
- // federated activities.
- func GetFederatedActions(page int, pageSize int, w http.ResponseWriter, r *http.Request) {
- offset := pageSize * page
- activities, total, err := persistence.GetInboundActivities(pageSize, offset)
- if err != nil {
- controllers.WriteSimpleResponse(w, false, err.Error())
- return
- }
- response := controllers.PaginatedResponse{
- Total: total,
- Results: activities,
- }
- controllers.WriteResponse(w, response)
- }
|