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.
85 lines
2.6 KiB
85 lines
2.6 KiB
package router |
|
|
|
import ( |
|
"fmt" |
|
"net/http" |
|
|
|
log "github.com/sirupsen/logrus" |
|
|
|
"github.com/owncast/owncast/config" |
|
"github.com/owncast/owncast/controllers" |
|
"github.com/owncast/owncast/controllers/admin" |
|
"github.com/owncast/owncast/core/chat" |
|
"github.com/owncast/owncast/router/middleware" |
|
"github.com/owncast/owncast/yp" |
|
) |
|
|
|
//Start starts the router for the http, ws, and rtmp |
|
func Start() error { |
|
// static files |
|
http.HandleFunc("/", controllers.IndexHandler) |
|
|
|
// status of the system |
|
http.HandleFunc("/api/status", controllers.GetStatus) |
|
|
|
// custom emoji supported in the chat |
|
http.HandleFunc("/api/emoji", controllers.GetCustomEmoji) |
|
|
|
// websocket chat server |
|
go chat.Start() |
|
|
|
// chat rest api |
|
http.HandleFunc("/api/chat", controllers.GetChatMessages) |
|
|
|
// web config api |
|
http.HandleFunc("/api/config", controllers.GetWebConfig) |
|
|
|
// chat embed |
|
http.HandleFunc("/embed/chat", controllers.GetChatEmbed) |
|
|
|
// video embed |
|
http.HandleFunc("/embed/video", controllers.GetVideoEmbed) |
|
|
|
http.HandleFunc("/api/yp", yp.GetYPResponse) |
|
|
|
// Authenticated admin requests |
|
|
|
// status of the system |
|
http.HandleFunc("/api/admin/status", middleware.RequireAdminAuth(controllers.GetAdminStatus)) |
|
|
|
// Current inbound broadcaster |
|
http.HandleFunc("/api/admin/broadcaster", middleware.RequireAdminAuth(admin.GetInboundBroadasterDetails)) |
|
|
|
// Disconnect inbound stream |
|
http.HandleFunc("/api/admin/disconnect", middleware.RequireAdminAuth(admin.DisconnectInboundConnection)) |
|
|
|
// Change the current streaming key in memory |
|
http.HandleFunc("/api/admin/changekey", middleware.RequireAdminAuth(admin.ChangeStreamKey)) |
|
|
|
// Change the extra page content in memory |
|
http.HandleFunc("/api/admin/changeextrapagecontent", middleware.RequireAdminAuth(admin.ChangeExtraPageContent)) |
|
|
|
// Server config |
|
http.HandleFunc("/api/admin/serverconfig", middleware.RequireAdminAuth(admin.GetServerConfig)) |
|
|
|
// Get viewer count over time |
|
http.HandleFunc("/api/admin/viewersOverTime", middleware.RequireAdminAuth(admin.GetViewersOverTime)) |
|
|
|
// Get hardware stats |
|
http.HandleFunc("/api/admin/hardwarestats", middleware.RequireAdminAuth(admin.GetHardwareStats)) |
|
|
|
// Get a a detailed list of currently connected clients |
|
http.HandleFunc("/api/admin/clients", middleware.RequireAdminAuth(controllers.GetConnectedClients)) |
|
|
|
// Get all logs |
|
http.HandleFunc("/api/admin/logs", middleware.RequireAdminAuth(admin.GetLogs)) |
|
|
|
// Get warning/error logs |
|
http.HandleFunc("/api/admin/logs/warnings", middleware.RequireAdminAuth(admin.GetWarnings)) |
|
|
|
port := config.Config.GetPublicWebServerPort() |
|
|
|
log.Infof("Web server running on port: %d", port) |
|
|
|
return http.ListenAndServe(fmt.Sprintf(":%d", port), nil) |
|
}
|
|
|