1
+ package commands
2
+
3
+ import (
4
+ "os"
5
+ "fmt"
6
+ "path"
7
+ "encoding/json"
8
+ "path/filepath"
9
+ "github.com/codegangsta/cli"
10
+ "github.com/h2object/h2forward/app"
11
+ "github.com/h2object/h2forward/api"
12
+ )
13
+
14
+ func vhostGetCommand (ctx * cli.Context ) {
15
+ workdir := ctx .GlobalString ("workdir" )
16
+ if workdir == "" {
17
+ fmt .Println ("unknown working directory, please use -w to provide." )
18
+ os .Exit (1 )
19
+ }
20
+
21
+ // directory
22
+ directory , err := filepath .Abs (workdir )
23
+ if err != nil {
24
+ fmt .Println ("workdir:" , err )
25
+ return
26
+ }
27
+
28
+ configs , err := app .LoadCONFIG (path .Join (directory , "h2forward.conf" ))
29
+ if err != nil {
30
+ fmt .Println ("load configure failed:" , err )
31
+ return
32
+ }
33
+
34
+ addr := ctx .GlobalString ("api" )
35
+
36
+ configs .SetSection ("forward" )
37
+ AppID := configs .StringDefault ("appid" , "" )
38
+ Secret := configs .StringDefault ("secret" , "" )
39
+
40
+ client := api .NewClient (addr )
41
+ auth := api .NewAdminAuth (AppID , Secret )
42
+
43
+ hosts := ctx .Args ()
44
+ ret := map [string ]interface {}{}
45
+ if err := client .GetHost (nil , auth , hosts , & ret ); err != nil {
46
+ fmt .Println ("get host failed:" , err )
47
+ return
48
+ }
49
+
50
+ b , _ := json .MarshalIndent (ret , "" , " " )
51
+ fmt .Println (string (b ))
52
+ return
53
+ }
54
+
55
+ func vhostSetCommand (ctx * cli.Context ) {
56
+ workdir := ctx .GlobalString ("workdir" )
57
+ if workdir == "" {
58
+ fmt .Println ("unknown working directory, please use -w to provide." )
59
+ os .Exit (1 )
60
+ }
61
+
62
+ // directory
63
+ directory , err := filepath .Abs (workdir )
64
+ if err != nil {
65
+ fmt .Println ("workdir:" , err )
66
+ return
67
+ }
68
+
69
+ configs , err := app .LoadCONFIG (path .Join (directory , "h2forward.conf" ))
70
+ if err != nil {
71
+ fmt .Println ("load configure failed:" , err )
72
+ return
73
+ }
74
+
75
+ addr := ctx .GlobalString ("api" )
76
+
77
+ configs .SetSection ("forward" )
78
+ AppID := configs .StringDefault ("appid" , "" )
79
+ Secret := configs .StringDefault ("secret" , "" )
80
+
81
+ client := api .NewClient (addr )
82
+ auth := api .NewAdminAuth (AppID , Secret )
83
+
84
+ args := ctx .Args ()
85
+ if len (args ) != 2 {
86
+ fmt .Println ("command args: <hostname> <url>" )
87
+ return
88
+ }
89
+
90
+ if err := client .SetHost (nil , auth , args [0 ], args [1 ]); err != nil {
91
+ fmt .Println ("set host failed:" , err )
92
+ return
93
+ }
94
+
95
+ fmt .Printf ("set host (%s) to url (%s) ok.\n " , args [0 ], args [1 ])
96
+ return
97
+ }
98
+
99
+ func vhostDelCommand (ctx * cli.Context ) {
100
+ workdir := ctx .GlobalString ("workdir" )
101
+ if workdir == "" {
102
+ fmt .Println ("unknown working directory, please use -w to provide." )
103
+ os .Exit (1 )
104
+ }
105
+
106
+ // directory
107
+ directory , err := filepath .Abs (workdir )
108
+ if err != nil {
109
+ fmt .Println ("workdir:" , err )
110
+ return
111
+ }
112
+
113
+ configs , err := app .LoadCONFIG (path .Join (directory , "h2forward.conf" ))
114
+ if err != nil {
115
+ fmt .Println ("load configure failed:" , err )
116
+ return
117
+ }
118
+
119
+ addr := ctx .GlobalString ("api" )
120
+
121
+ configs .SetSection ("forward" )
122
+ AppID := configs .StringDefault ("appid" , "" )
123
+ Secret := configs .StringDefault ("secret" , "" )
124
+
125
+ client := api .NewClient (addr )
126
+ auth := api .NewAdminAuth (AppID , Secret )
127
+
128
+ args := ctx .Args ()
129
+ if len (args ) == 0 {
130
+ fmt .Println ("command args: <hostname1> <hostname2> ..." )
131
+ return
132
+ }
133
+
134
+ for _ , host := range args {
135
+ if err := client .DelHost (nil , auth , host ); err != nil {
136
+ fmt .Println ("det host failed:" , err )
137
+ return
138
+ }
139
+ fmt .Printf ("det host (%s) ok.\n " , host )
140
+ }
141
+ return
142
+ }
0 commit comments