forked from OpenPDU/openpdu
130 lines
2.5 KiB
Go
130 lines
2.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"gopkg.in/macaron.v1"
|
|
)
|
|
|
|
func jsonStatus(ctx *macaron.Context) {
|
|
|
|
out := [][]string{}
|
|
|
|
for num, o := range TheConfig.Outlets {
|
|
pwr, _ := o.PowerStatus()
|
|
pwrstr := "0"
|
|
if pwr {
|
|
pwrstr = "1"
|
|
}
|
|
out = append(out, []string{fmt.Sprintf("%d", num), o.Name, pwrstr})
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": out,
|
|
})
|
|
}
|
|
|
|
func jsonOutletPowerToggle(ctx *macaron.Context) {
|
|
var outletnum64 uint64
|
|
var err error
|
|
|
|
outletnum64, err = strconv.ParseUint(ctx.Params(":outlet"), 10, 32)
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "No outlet specified",
|
|
})
|
|
}
|
|
|
|
outletnum := uint(outletnum64)
|
|
outlet, exists := TheConfig.Outlets[outletnum]
|
|
if !exists {
|
|
// error: outlet doesn't exists
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "Outlet doesn't exists",
|
|
})
|
|
}
|
|
|
|
err = outlet.PowerToggle()
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "Can't toggle power",
|
|
})
|
|
}
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "ok",
|
|
})
|
|
}
|
|
|
|
func jsonOutletPowerON(ctx *macaron.Context) {
|
|
var outletnum64 uint64
|
|
var err error
|
|
|
|
outletnum64, err = strconv.ParseUint(ctx.Params(":outlet"), 10, 32)
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "No outlet specified",
|
|
})
|
|
}
|
|
outletnum := uint(outletnum64)
|
|
|
|
outlet, exists := TheConfig.Outlets[outletnum]
|
|
if !exists {
|
|
// error: outlet doesn't exists
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "Outlet doesn't exists",
|
|
})
|
|
}
|
|
|
|
err = outlet.PowerON()
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "Can't toggle power",
|
|
})
|
|
}
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "ok",
|
|
})
|
|
}
|
|
|
|
func jsonOutletPowerOFF(ctx *macaron.Context) {
|
|
var outletnum64 uint64
|
|
var err error
|
|
|
|
outletnum64, err = strconv.ParseUint(ctx.Params(":outlet"), 10, 32)
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "No outlet specified",
|
|
})
|
|
}
|
|
outletnum := uint(outletnum64)
|
|
|
|
outlet, exists := TheConfig.Outlets[outletnum]
|
|
if !exists {
|
|
// error: outlet doesn't exists
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "Outlet doesn't exists",
|
|
})
|
|
}
|
|
|
|
err = outlet.PowerOFF()
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "error",
|
|
"error": "Can't toggle power",
|
|
})
|
|
}
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"data": "ok",
|
|
})
|
|
}
|