| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package main
- import (
- "fmt"
- "net/http"
- "imuslab.com/dezukvm/dezukvmd/mod/utils"
- )
- func register_auth_apis(mux *http.ServeMux) {
- // Check API for session validation
- mux.HandleFunc("/api/v1/check", func(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
- return
- }
- ok := authManager.UserIsLoggedIn(r)
- if !ok {
- http.Error(w, "Unauthorized", http.StatusUnauthorized)
- return
- }
- w.WriteHeader(http.StatusOK)
- w.Write([]byte("{\"status\":\"ok\"}"))
- })
- // Login API
- mux.HandleFunc("/api/v1/login", func(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
- return
- }
- err := authManager.LoginUser(w, r)
- if err != nil {
- http.Error(w, "Unauthorized", http.StatusUnauthorized)
- return
- }
- w.WriteHeader(http.StatusOK)
- w.Write([]byte("{\"status\":\"success\"}"))
- })
- // Logout API
- mux.HandleFunc("/api/v1/logout", func(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
- return
- }
- err := authManager.LogoutUser(w, r)
- if err != nil {
- http.Error(w, "Logout failed", http.StatusInternalServerError)
- return
- }
- w.WriteHeader(http.StatusOK)
- w.Write([]byte("{\"status\":\"logged out\"}"))
- })
- }
- func register_ipkvm_apis(mux *http.ServeMux) {
- authManager.HandleFunc("/api/v1/stream/{uuid}/video", func(w http.ResponseWriter, r *http.Request) {
- instanceUUID := r.PathValue("uuid")
- fmt.Println("Requested video stream for instance UUID:", instanceUUID)
- dezukvmManager.HandleVideoStreams(w, r, instanceUUID)
- }, mux)
- authManager.HandleFunc("/api/v1/stream/{uuid}/audio", func(w http.ResponseWriter, r *http.Request) {
- instanceUUID := r.PathValue("uuid")
- dezukvmManager.HandleAudioStreams(w, r, instanceUUID)
- }, mux)
- authManager.HandleFunc("/api/v1/hid/{uuid}/events", func(w http.ResponseWriter, r *http.Request) {
- instanceUUID := r.PathValue("uuid")
- dezukvmManager.HandleHIDEvents(w, r, instanceUUID)
- }, mux)
- authManager.HandleFunc("/api/v1/mass_storage/switch", func(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
- return
- }
- instanceUUID, err := utils.PostPara(r, "uuid")
- if err != nil {
- http.Error(w, "Missing or invalid uuid parameter", http.StatusBadRequest)
- return
- }
- side, err := utils.PostPara(r, "side")
- if err != nil {
- http.Error(w, "Missing or invalid side parameter", http.StatusBadRequest)
- return
- }
- switch side {
- case "kvm":
- dezukvmManager.HandleMassStorageSideSwitch(w, r, instanceUUID, true)
- case "remote":
- dezukvmManager.HandleMassStorageSideSwitch(w, r, instanceUUID, false)
- default:
- http.Error(w, "Invalid side parameter", http.StatusBadRequest)
- }
- }, mux)
- authManager.HandleFunc("/api/v1/instances", func(w http.ResponseWriter, r *http.Request) {
- if r.Method == http.MethodGet {
- dezukvmManager.HandleListInstances(w, r)
- } else {
- http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
- }
- }, mux)
- }
|