Skip to content

Commit 8da4acd

Browse files
authored
Merge pull request #41 from liquidweb/gosec
integrate gosec
2 parents 48767cf + 3a2fff0 commit 8da4acd

File tree

86 files changed

+453
-160
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+453
-160
lines changed

Makefile

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
SHELL=/bin/bash
22

3-
default:
4-
$(MAKE) install
3+
install: security
4+
scripts/build/install
5+
6+
security:
7+
go get github.com/securego/gosec/cmd/gosec
8+
@gosec ./...
59

610
clean:
711
rm -rf _exe/
812

9-
static:
13+
static: security
1014
scripts/build/static
1115

12-
build:
16+
build: security
1317
scripts/build/dynamic
1418

15-
install:
16-
scripts/build/install
17-
18-
release-build:
19+
release-build: security
1920
scripts/build/release-build
2021

2122
.PHONY: clean static all build

cmd/auth.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ var authCmd = &cobra.Command{
2929
Setup your LiquidWeb API credentials
3030
Test your LiquidWeb API credentials.`,
3131
Run: func(cmd *cobra.Command, args []string) {
32-
cmd.Help()
32+
if err := cmd.Help(); err != nil {
33+
lwCliInst.Die(err)
34+
}
3335
os.Exit(1)
3436
},
3537
}

cmd/authAddContext.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ Use this if you've already setup contexts with "auth init".`,
4747
if err != nil {
4848
lwCliInst.Die(err)
4949
}
50-
f.Close()
50+
if err := f.Close(); err != nil {
51+
lwCliInst.Die(err)
52+
}
5153
if err := os.Chmod(file, 0600); err != nil {
5254
lwCliInst.Die(err)
5355
}
@@ -85,6 +87,10 @@ func init() {
8587
authAddContextCmd.Flags().String("api-url", "https://api.liquidweb.com", "API URL to use")
8688
authAddContextCmd.Flags().Int("timeout", 30, "timeout value when communicating with api-url")
8789

88-
authAddContextCmd.MarkFlagRequired("username")
89-
authAddContextCmd.MarkFlagRequired("password")
90+
if err := authAddContextCmd.MarkFlagRequired("username"); err != nil {
91+
lwCliInst.Die(err)
92+
}
93+
if err := authAddContextCmd.MarkFlagRequired("password"); err != nil {
94+
lwCliInst.Die(err)
95+
}
9096
}

cmd/authInit.go

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,19 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
8787
// warn before deleting config
8888
var haveProceedAnswer bool
8989
for !haveProceedAnswer {
90-
term.Write([]byte("Warning: This will delete all auth contexts. Continue (yes/[no])?: "))
90+
if _, err = term.Write([]byte("Warning: This will delete all auth contexts. Continue (yes/[no])?: ")); err != nil {
91+
return
92+
}
9193
proceedBytes, readErr := term.ReadLine()
9294
if readErr != nil {
9395
err = readErr
9496
return
9597
}
9698
proceedString := cast.ToString(proceedBytes)
9799
if proceedString != "yes" && proceedString != "no" && proceedString != "" {
98-
term.Write([]byte("invalid input.\n"))
100+
if _, err = term.Write([]byte("invalid input.\n")); err != nil {
101+
return
102+
}
99103
continue
100104
}
101105

@@ -119,7 +123,9 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
119123
userInputExitEarly := make(chan bool)
120124
userInputContext := make(chan cmdTypes.AuthContext)
121125

122-
term.Write([]byte("\nTo exit early, type 'exit' or send EOF (ctrl+d)\n\n"))
126+
if _, err = term.Write([]byte("\nTo exit early, type 'exit' or send EOF (ctrl+d)\n\n")); err != nil {
127+
return
128+
}
123129

124130
// start context add loop
125131
go func() {
@@ -139,7 +145,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
139145

140146
// context name
141147
for !haveContextNameAnswer {
142-
term.Write([]byte("Name this context: "))
148+
if _, err := term.Write([]byte("Name this context: ")); err != nil {
149+
userInputError <- err
150+
break WHILEMOREADDS
151+
}
143152
contextNameBytes, err := term.ReadLine()
144153
if err != nil {
145154
userInputError <- err
@@ -150,7 +159,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
150159
userInputExitEarly <- true
151160
break WHILEMOREADDS
152161
} else if contextNameAnswer == "" {
153-
term.Write([]byte("context name cannot be blank.\n"))
162+
if _, err := term.Write([]byte("context name cannot be blank.\n")); err != nil {
163+
userInputError <- err
164+
break WHILEMOREADDS
165+
}
154166
} else {
155167
haveContextNameAnswer = true
156168
context.ContextName = contextNameAnswer
@@ -159,7 +171,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
159171

160172
// username
161173
for !haveUsernameAnswer {
162-
term.Write([]byte("LiquidWeb username: "))
174+
if _, err := term.Write([]byte("LiquidWeb username: ")); err != nil {
175+
userInputError <- err
176+
break WHILEMOREADDS
177+
}
163178
usernameBytes, err := term.ReadLine()
164179
if err != nil {
165180
userInputError <- err
@@ -170,7 +185,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
170185
userInputExitEarly <- true
171186
break WHILEMOREADDS
172187
} else if usernameAnswer == "" {
173-
term.Write([]byte("username cannot be blank.\n"))
188+
if _, err := term.Write([]byte("username cannot be blank.\n")); err != nil {
189+
userInputError <- err
190+
break WHILEMOREADDS
191+
}
174192
} else {
175193
haveUsernameAnswer = true
176194
context.Username = usernameAnswer
@@ -189,7 +207,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
189207
userInputExitEarly <- true
190208
break WHILEMOREADDS
191209
} else if passwordAnswer == "" {
192-
term.Write([]byte("password cannot be blank.\n"))
210+
if _, err := term.Write([]byte("password cannot be blank.\n")); err != nil {
211+
userInputError <- err
212+
break WHILEMOREADDS
213+
}
193214
} else {
194215
havePasswordAnswer = true
195216
context.Password = passwordAnswer
@@ -198,7 +219,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
198219

199220
// make current context?
200221
for !haveMakeCurrentContextAnswer {
201-
term.Write([]byte("Make current context? ([yes]/no)"))
222+
if _, err := term.Write([]byte("Make current context? ([yes]/no)")); err != nil {
223+
userInputError <- err
224+
break WHILEMOREADDS
225+
}
202226
makeCurrentContextBytes, err := term.ReadLine()
203227
if err != nil {
204228
userInputError <- err
@@ -210,7 +234,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
210234
break WHILEMOREADDS
211235
}
212236
if makeCurrentContextString != "" && makeCurrentContextString != "yes" && makeCurrentContextString != "no" {
213-
term.Write([]byte("invalid input.\n"))
237+
if _, err := term.Write([]byte("invalid input.\n")); err != nil {
238+
userInputError <- err
239+
break WHILEMOREADDS
240+
}
214241
continue
215242
}
216243

@@ -222,7 +249,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
222249

223250
// more contexts to add ?
224251
for !haveMoreContextsToAddAnswer {
225-
term.Write([]byte("Add another context? (yes/[no]): "))
252+
if _, err := term.Write([]byte("Add another context? (yes/[no]): ")); err != nil {
253+
userInputError <- err
254+
break WHILEMOREADDS
255+
}
226256
moreContextsBytes, err := term.ReadLine()
227257
if err != nil {
228258
userInputError <- err
@@ -235,7 +265,10 @@ func fetchAuthDataInteractively() (writeConfig bool, err error) {
235265
break WHILEMOREADDS
236266
}
237267
if answer != "" && answer != "yes" && answer != "no" {
238-
term.Write([]byte("invalid input.\n"))
268+
if _, err := term.Write([]byte("invalid input.\n")); err != nil {
269+
userInputError <- err
270+
break WHILEMOREADDS
271+
}
239272
continue
240273
}
241274

@@ -287,7 +320,9 @@ WAIT:
287320
case complete := <-userInputComplete:
288321
if complete {
289322
// wipe the config for a clean slate.
290-
writeEmptyConfig()
323+
if err := writeEmptyConfig(); err != nil {
324+
lwCliInst.Die(err)
325+
}
291326
cfgFile, cfgPathErr := getExpectedConfigPath()
292327
if cfgPathErr != nil {
293328
err = cfgPathErr
@@ -301,12 +336,16 @@ WAIT:
301336
if err != nil {
302337
lwCliInst.Die(err)
303338
}
304-
f.Close()
339+
if err := f.Close(); err != nil {
340+
lwCliInst.Die(err)
341+
}
305342
if err := os.Chmod(cfgFile, 0600); err != nil {
306343
lwCliInst.Die(err)
307344
}
308345

309-
lwCliInst.Viper.ReadConfig(bytes.NewBuffer([]byte{}))
346+
if err := lwCliInst.Viper.ReadConfig(bytes.NewBuffer([]byte{})); err != nil {
347+
lwCliInst.Die(err)
348+
}
310349
}
311350

312351
// set Viper config from contexts slice
@@ -366,7 +405,9 @@ func writeEmptyConfig() error {
366405
if err != nil {
367406
return err
368407
}
369-
f.Close()
408+
if err := f.Close(); err != nil {
409+
return err
410+
}
370411

371412
if err := os.Chmod(cfgFile, 0600); err != nil {
372413
return err

cmd/authRemoveContext.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,7 @@ func init() {
4242
authCmd.AddCommand(authRemoveContextCmd)
4343

4444
authRemoveContextCmd.Flags().String("context", "", "name of context to remove")
45-
authRemoveContextCmd.MarkFlagRequired("context")
45+
if err := authRemoveContextCmd.MarkFlagRequired("context"); err != nil {
46+
lwCliInst.Die(err)
47+
}
4648
}

cmd/authUpdateContext.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,7 @@ func init() {
116116
authUpdateContextCmd.Flags().Bool("set-insecure", false, "enable insecure SSL validation of api url")
117117
authUpdateContextCmd.Flags().Bool("set-secure", false, "enable secure SSL validation of api url")
118118

119-
authUpdateContextCmd.MarkFlagRequired("context")
119+
if err := authUpdateContextCmd.MarkFlagRequired("context"); err != nil {
120+
lwCliInst.Die(err)
121+
}
120122
}

cmd/authUseContext.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ See also: get-context, get-contexts.
3838
If you've never setup any contexts, check "auth init".`,
3939
Run: func(cmd *cobra.Command, args []string) {
4040
if len(args) != 1 {
41-
cmd.Help()
41+
if err := cmd.Help(); err != nil {
42+
lwCliInst.Die(err)
43+
}
4244
os.Exit(1)
4345
}
4446

cmd/cloud.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ var cloudCmd = &cobra.Command{
2828
2929
For a full list of capabilities, please refer to the "Available Commands" section.`,
3030
Run: func(cmd *cobra.Command, args []string) {
31-
cmd.Help()
31+
if err := cmd.Help(); err != nil {
32+
lwCliInst.Die(err)
33+
}
3234
os.Exit(1)
3335
},
3436
}

cmd/cloudBackup.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ var cloudBackupCmd = &cobra.Command{
2828
2929
For a full list of capabilities, please refer to the "Available Commands" section.`,
3030
Run: func(cmd *cobra.Command, args []string) {
31-
cmd.Help()
31+
if err := cmd.Help(); err != nil {
32+
lwCliInst.Die(err)
33+
}
3234
os.Exit(1)
3335
},
3436
}

cmd/cloudBackupDetails.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,7 @@ func init() {
4747

4848
cloudBackupDetailsCmd.Flags().Int64("backup-id", -1,
4949
"id number of the backup (see 'cloud backup list')")
50-
cloudBackupDetailsCmd.MarkFlagRequired("backup-id")
50+
if err := cloudBackupDetailsCmd.MarkFlagRequired("backup-id"); err != nil {
51+
lwCliInst.Die(err)
52+
}
5153
}

0 commit comments

Comments
 (0)