mirror of https://github.com/miguelmota/cointop
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
Go
60 lines
2.1 KiB
Go
//+build !windows
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
cssh "github.com/cointop-sh/cointop/pkg/ssh"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// ServerCmd ...
|
|
func ServerCmd() *cobra.Command {
|
|
port := uint(22)
|
|
address := "0.0.0.0"
|
|
idleTimeout := uint(0)
|
|
maxTimeout := uint(0)
|
|
maxSessions := uint(0)
|
|
executableBinary := "cointop"
|
|
hostKeyFile := cssh.DefaultHostKeyFile
|
|
userConfigType := cssh.UserConfigTypePublicKey
|
|
colorsDir := os.Getenv("COINTOP_COLORS_DIR")
|
|
|
|
serverCmd := &cobra.Command{
|
|
Use: "server",
|
|
Short: "Run cointop SSH Server",
|
|
Long: `Run cointop SSH server`,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
server := cssh.NewServer(&cssh.Config{
|
|
Address: address,
|
|
Port: port,
|
|
IdleTimeout: time.Duration(int(idleTimeout)) * time.Second,
|
|
MaxTimeout: time.Duration(int(maxTimeout)) * time.Second,
|
|
MaxSessions: maxSessions,
|
|
ExecutableBinary: executableBinary,
|
|
HostKeyFile: hostKeyFile,
|
|
UserConfigType: userConfigType,
|
|
ColorsDir: colorsDir,
|
|
})
|
|
|
|
fmt.Printf("Running SSH server on port %v\n", port)
|
|
return server.ListenAndServe()
|
|
},
|
|
}
|
|
|
|
serverCmd.Flags().UintVarP(&port, "port", "p", port, "Port")
|
|
serverCmd.Flags().StringVarP(&address, "address", "a", address, "Address")
|
|
serverCmd.Flags().UintVarP(&idleTimeout, "idle-timeout", "t", idleTimeout, "Idle timeout in seconds. Default is 0 for no idle timeout")
|
|
serverCmd.Flags().UintVarP(&maxTimeout, "max-timeout", "m", maxTimeout, "Max timeout in seconds. Default is 0 for no max timeout")
|
|
serverCmd.Flags().UintVarP(&maxSessions, "max-sessions", "", maxSessions, "Max number of sessions allowed. Default is 0 for unlimited.")
|
|
serverCmd.Flags().StringVarP(&executableBinary, "binary", "b", executableBinary, "Executable binary path")
|
|
serverCmd.Flags().StringVarP(&hostKeyFile, "host-key-file", "k", hostKeyFile, "Host key file")
|
|
serverCmd.Flags().StringVarP(&userConfigType, "user-config-type", "", userConfigType, fmt.Sprintf("User config type. Options are: %s", strings.Join(cssh.UserConfigTypes, ",")))
|
|
|
|
return serverCmd
|
|
}
|