Adds Jibri endpoint
parent
879ee5004f
commit
051cb65495
|
@ -8,8 +8,14 @@ agent_port: 8081
|
|||
# the port we check for nginx
|
||||
nginx_port: 80
|
||||
|
||||
# the port we check for prosody
|
||||
prosody_port: 5222
|
||||
|
||||
# URL to the Jicofo stats API
|
||||
jicofo_stats_url: "http://localhost:8888/stats"
|
||||
|
||||
# URL to the JVB stats API
|
||||
jvb_stats_url: "http://localhost:8080/colibri/stats"
|
||||
|
||||
# URL to the Jibri health API
|
||||
jibri_health_URL: "http://localhost:2222/jibri/api/v1.0/health"
|
||||
|
|
25
go/main.go
25
go/main.go
|
@ -31,6 +31,7 @@ type Config struct {
|
|||
ProsodyPort int `yaml:"prosody_port"`
|
||||
JicofoStatsURL string `yaml:"jicofo_stats_url"`
|
||||
JVBStatsURL string `yaml:"jvb_stats_url"`
|
||||
JibriHealthURL string `yaml:"jibri_health_url"`
|
||||
}
|
||||
|
||||
// NginxData holds the nginx data structure for the API response to /nginx
|
||||
|
@ -57,6 +58,12 @@ type JVBData struct {
|
|||
JVBAPIData map[string]interface{} `json:"jvb_api_data"`
|
||||
}
|
||||
|
||||
// JibriData holds the Jibri data structure for the API response to /jibri
|
||||
type JibriData struct {
|
||||
JibriState string `json:"jibri_state"`
|
||||
JibriHealthData map[string]interface{} `json:"jibri_health_data"`
|
||||
}
|
||||
|
||||
// getServiceState checks the status of the speciied service
|
||||
func getServiceState(service string) string {
|
||||
output, err := exec.Command("systemctl", "is-active", service).Output()
|
||||
|
@ -114,6 +121,7 @@ func loadConfig(filename string) (Config) {
|
|||
ProsodyPort: 5222, // default prosody port
|
||||
JicofoStatsURL: "http://localhost:8888/stats", // default Jicofo stats URL
|
||||
JVBStatsURL: "http://localhost:8080/colibri/stats", // default JVB stats URL
|
||||
JibriHealthURL: "http://localhost:2222/jibri/api/v1.0/health", // default Jibri health URL
|
||||
}
|
||||
|
||||
// we try to load the config file; use default values otherwise
|
||||
|
@ -177,6 +185,16 @@ func jvbHandler(config Config, w http.ResponseWriter, r *http.Request) {
|
|||
json.NewEncoder(w).Encode(data)
|
||||
}
|
||||
|
||||
// jibriHandler handles the /jibri endpoint
|
||||
func jibriHandler(config Config, w http.ResponseWriter, r *http.Request) {
|
||||
data := JibriData {
|
||||
JibriState: getServiceState("jibri"),
|
||||
JibriHealthData: getJitsiAPIData("jibri", config.JibriHealthURL),
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(data)
|
||||
}
|
||||
|
||||
|
||||
// main sets up the http server and the routes
|
||||
func main() {
|
||||
|
@ -197,11 +215,14 @@ func main() {
|
|||
http.HandleFunc("/jvb", func(w http.ResponseWriter, r *http.Request) {
|
||||
jvbHandler(config, w, r)
|
||||
})
|
||||
http.HandleFunc("/jibri", func(w http.ResponseWriter, r *http.Request) {
|
||||
jibriHandler(config, w, r)
|
||||
})
|
||||
|
||||
// start the http server
|
||||
agentPortStr := fmt.Sprintf(":%d", config.AgentPort)
|
||||
fmt.Printf("Starting Jilo agent server on port %d.\n", config.AgentPort)
|
||||
fmt.Printf("Starting Jilo agent on port %d.\n", config.AgentPort)
|
||||
if err := http.ListenAndServe(agentPortStr, nil); err != nil {
|
||||
log.Fatalf("Could not start the server: %v\n", err)
|
||||
log.Fatalf("Could not start the agent: %v\n", err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue