@@ -10,23 +10,24 @@ import (
10
10
"time"
11
11
12
12
"github.com/NHAS/reverse_ssh/internal/server/webserver"
13
+ "github.com/NHAS/reverse_ssh/internal/terminal"
14
+ "github.com/NHAS/reverse_ssh/internal/terminal/autocomplete"
13
15
"github.com/NHAS/reverse_ssh/pkg/table"
14
16
)
15
17
16
18
type link struct {
17
19
}
18
20
19
- func (l * link ) Run (tty io.ReadWriter , args ... string ) error {
20
- flags , _ := parseFlags (args ... )
21
+ func (l * link ) Run (tty io.ReadWriter , line terminal.ParsedLine ) error {
21
22
22
- if isSet ("h" , flags ) {
23
+ if terminal . IsSet ("h" , line . Flags ) {
23
24
return errors .New (l .Help (false ))
24
25
}
25
26
26
- if toList , ok := flags ["l" ]; ok {
27
+ if toList , ok := line . Flags ["l" ]; ok {
27
28
t , _ := table .NewTable ("Active Files" , "ID" , "GOOS" , "GOARCH" , "Expires" )
28
29
29
- files , err := webserver .List (strings .Join (toList , " " ))
30
+ files , err := webserver .List (strings .Join (toList . ArgValues () , " " ))
30
31
if err != nil {
31
32
return err
32
33
}
@@ -54,8 +55,8 @@ func (l *link) Run(tty io.ReadWriter, args ...string) error {
54
55
55
56
}
56
57
57
- if toRemove , ok := flags ["r" ]; ok {
58
- for _ , id := range toRemove {
58
+ if toRemove , ok := line . Flags ["r" ]; ok {
59
+ for _ , id := range toRemove . ArgValues () {
59
60
err := webserver .Delete (id )
60
61
if err != nil {
61
62
fmt .Fprintf (tty , "Unable to remove %s: %s\n " , id , err )
@@ -69,46 +70,46 @@ func (l *link) Run(tty io.ReadWriter, args ...string) error {
69
70
}
70
71
71
72
var e time.Duration
72
- if lifetime , ok := flags ["t" ]; ok {
73
- if len (lifetime ) != 1 {
74
- return fmt .Errorf ("Time supplied %d arguments, expected 1" , len (lifetime ))
73
+ if lifetime , ok := line . Flags ["t" ]; ok {
74
+ if len (lifetime . Args ) != 1 {
75
+ return fmt .Errorf ("Time supplied %d arguments, expected 1" , len (lifetime . Args ))
75
76
}
76
77
77
- mins , err := strconv .Atoi (lifetime [0 ])
78
+ mins , err := strconv .Atoi (lifetime . Args [0 ]. Value () )
78
79
if err != nil {
79
- return fmt .Errorf ("Unable to parse number of minutes (-t): %s" , lifetime [0 ])
80
+ return fmt .Errorf ("Unable to parse number of minutes (-t): %s" , lifetime . Args [0 ]. Value () )
80
81
}
81
82
82
83
e = time .Duration (mins ) * time .Minute
83
84
}
84
85
85
86
var homeserver_address string
86
- if cb , ok := flags ["s" ]; ok {
87
- if len (cb ) != 1 {
88
- return fmt .Errorf ("Homeserver connect back address supplied %d arguments, expected 1" , len (cb ))
87
+ if cb , ok := line . Flags ["s" ]; ok {
88
+ if len (cb . Args ) != 1 {
89
+ return fmt .Errorf ("Homeserver connect back address supplied %d arguments, expected 1" , len (cb . Args ))
89
90
}
90
91
91
- homeserver_address = cb [0 ]
92
+ homeserver_address = cb . Args [0 ]. Value ()
92
93
93
94
}
94
95
95
96
var goos string
96
- if cb , ok := flags ["goos" ]; ok {
97
- if len (cb ) != 1 {
98
- return fmt .Errorf ("GOOS supplied %d arguments, expected 1" , len (cb ))
97
+ if cb , ok := line . Flags ["goos" ]; ok {
98
+ if len (cb . Args ) != 1 {
99
+ return fmt .Errorf ("GOOS supplied %d arguments, expected 1" , len (cb . Args ))
99
100
}
100
101
101
- goos = cb [0 ]
102
+ goos = cb . Args [0 ]. Value ()
102
103
103
104
}
104
105
105
106
var goarch string
106
- if cb , ok := flags ["goarch" ]; ok {
107
- if len (cb ) != 1 {
108
- return fmt .Errorf ("GOARCH supplied %d arguments, expected 1" , len (cb ))
107
+ if cb , ok := line . Flags ["goarch" ]; ok {
108
+ if len (cb . Args ) != 1 {
109
+ return fmt .Errorf ("GOARCH supplied %d arguments, expected 1" , len (cb . Args ))
109
110
}
110
111
111
- goarch = cb [0 ]
112
+ goarch = cb . Args [0 ]. Value ()
112
113
113
114
}
114
115
@@ -122,7 +123,15 @@ func (l *link) Run(tty io.ReadWriter, args ...string) error {
122
123
return nil
123
124
}
124
125
125
- func (l * link ) Expect (sections []string ) []string {
126
+ func (l * link ) Expect (line terminal.ParsedLine ) []string {
127
+ if line .Section != nil {
128
+ fmt .Println (line .Section )
129
+ switch line .Section .Value () {
130
+ case "l" , "r" :
131
+ return []string {autocomplete .WebServerFileIds }
132
+ }
133
+ }
134
+
126
135
return nil
127
136
}
128
137
0 commit comments