-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
74 lines (62 loc) · 1.96 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"fmt"
"log"
"os"
"github.com/spf13/cobra"
"gopkg.in/ini.v1"
)
const VERSION = "0.2.1"
var (
cfg *ini.File
cfgFileAddr string
)
func init() {
homeDir, err := os.UserHomeDir()
if err != nil {
log.Fatalln(err)
}
cfgDir := fmt.Sprintf("%s/.gossh", homeDir)
cfgFileAddr = fmt.Sprintf("%s/.gossh/servers.ini", homeDir)
// Create directory "$HOME/.gossh" if not exists
_, err = os.Stat(cfgDir)
if os.IsNotExist(err) {
err := os.MkdirAll(cfgDir, os.ModePerm)
if err != nil {
log.Fatalln(err)
}
}
// Create file "$HOME/.gossh/servers.ini" if not exists
_, err = os.Stat(cfgFileAddr)
if os.IsNotExist(err) {
iniFile, err := os.Create(cfgFileAddr)
if err != nil {
log.Fatalf("Failed to create server.ini file: %s\n", err)
}
// iniFile.Chmod(0664)
iniFile.Close()
}
// Load config file. you can backup this file and put it on another machine.
// That's actually why I made this CLI App :)
iniOpts := ini.LoadOptions{
SpaceBeforeInlineComment: true,
}
iniFile, err := ini.LoadSources(iniOpts, cfgFileAddr)
if err != nil {
log.Fatalf("Failed to read servers.ini file: %v\n", err)
}
cfg = iniFile
}
func main() {
cmdConnect.PersistentFlags().StringP("forward-local", "l", "", "enable local port forwarding")
cmdConnect.PersistentFlags().StringP("key", "k", "", "key to dencrypt password with (only if encrypted while adding)")
cmdAdd.PersistentFlags().StringP("name", "n", "", "server's name")
cmdAdd.PersistentFlags().StringP("address", "a", "", "server's address url")
cmdAdd.PersistentFlags().StringP("port", "t", "22", "server's ssh port (optional)")
cmdAdd.PersistentFlags().StringP("user", "u", "", "username")
cmdAdd.PersistentFlags().StringP("password", "p", "", "password")
cmdAdd.PersistentFlags().StringP("key", "k", "", "key to encrypt password with (optional)")
var rootCmd = &cobra.Command{Use: "gossh", Version: VERSION}
rootCmd.AddCommand(cmdConnect, cmdList, cmdDelete, cmdAdd)
rootCmd.Execute()
}