Files
BatchuKVM/server/service/vm/ssh.go

68 lines
1.2 KiB
Go

package vm
import (
"NanoKVM-Server/proto"
"errors"
"fmt"
"os"
"os/exec"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
)
const (
SSHScript = "/etc/init.d/S50sshd"
SSHStopFlag = "/etc/kvm/ssh_stop"
)
func (s *Service) GetSSHState(c *gin.Context) {
var rsp proto.Response
enabled := isSSHEnabled()
rsp.OkRspWithData(c, &proto.GetSSHStateRsp{
Enabled: enabled,
})
}
func (s *Service) EnableSSH(c *gin.Context) {
var rsp proto.Response
command := fmt.Sprintf("%s permanent_on", SSHScript)
err := exec.Command("sh", "-c", command).Run()
if err != nil {
log.Errorf("failed to run SSH script: %s", err)
rsp.ErrRsp(c, -1, "operation failed")
return
}
rsp.OkRsp(c)
log.Debugf("SSH enabled")
}
func (s *Service) DisableSSH(c *gin.Context) {
var rsp proto.Response
command := fmt.Sprintf("%s permanent_off", SSHScript)
err := exec.Command("sh", "-c", command).Run()
if err != nil {
log.Errorf("failed to run SSH script: %s", err)
rsp.ErrRsp(c, -1, "operation failed")
return
}
rsp.OkRsp(c)
log.Debugf("SSH disabled")
}
func isSSHEnabled() bool {
_, err := os.Stat(SSHStopFlag)
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return true
}
}
return false
}