package main import ( "encoding/json" "net/http" "strconv" log "github.com/sirupsen/logrus" ) var storage ChunkStorage var configuration = getConfig() var server *Server var online = false func main() { checkConfig(configuration) // resetDirectories() var hlsDirectoryPath = configuration.PublicHLSPath log.Println("Starting up. Please wait...") if configuration.IPFS.Enabled { storage = &IPFSStorage{} (storage).Setup(configuration) hlsDirectoryPath = configuration.PrivateHLSPath go monitorVideoContent(hlsDirectoryPath, configuration, storage) } go startChatServer() startRTMPService() } func startChatServer() { // log.SetFlags(log.Lshortfile) // websocket server server = NewServer("/entry") go server.Listen() // static files http.Handle("/", http.FileServer(http.Dir("webroot"))) http.HandleFunc("/status", getStatus) log.Printf("Starting public web server on port %d", configuration.WebServerPort) log.Fatal(http.ListenAndServe(":"+strconv.Itoa(configuration.WebServerPort), nil)) } func getStatus(w http.ResponseWriter, r *http.Request) { status := Status{ Online: online, ViewerCount: server.ClientCount(), } json.NewEncoder(w).Encode(status) } func streamConnected() { online = true } func streamDisconnected() { online = false } func viewerAdded() { } func viewerRemoved() { }