This repository was archived by the owner on May 1, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathportal.go
More file actions
129 lines (118 loc) · 3.48 KB
/
portal.go
File metadata and controls
129 lines (118 loc) · 3.48 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package cmd
import (
identityvalidate "github.com/Method-Security/identityvalidate/generated/go"
portal "github.com/Method-Security/identityvalidate/internal/portal"
"github.com/spf13/cobra"
)
func (a *IdentityValidate) InitPortalCommand() {
portalCmd := &cobra.Command{
Use: "portal",
Short: "Trigger portal security controls",
Long: `Trigger portal security controls`,
}
azureCmd := &cobra.Command{
Use: "azure",
Short: "Azure triggers",
Long: `Azure triggers`,
}
owaCmd := &cobra.Command{
Use: "owa",
Short: "Azure OWA portal trigger",
Long: `Azure OWA portal trigger`,
Run: func(cmd *cobra.Command, args []string) {
// Run Configs
attempts, err := cmd.Flags().GetInt("attempts")
if err != nil {
a.OutputSignal.AddError(err)
return
}
username, err := cmd.Flags().GetString("username")
if err != nil {
a.OutputSignal.AddError(err)
return
}
password, err := cmd.Flags().GetString("password")
if err != nil {
a.OutputSignal.AddError(err)
return
}
agentHeader, err := cmd.Flags().GetString("agentheader")
if err != nil {
a.OutputSignal.AddError(err)
return
}
clientID, err := cmd.Flags().GetString("clientid")
if err != nil {
a.OutputSignal.AddError(err)
return
}
tenantID, err := cmd.Flags().GetString("tenantid")
if err != nil {
a.OutputSignal.AddError(err)
return
}
interval, err := cmd.Flags().GetInt("interval")
if err != nil {
a.OutputSignal.AddError(err)
return
}
timeout, err := cmd.Flags().GetInt("timeout")
if err != nil {
a.OutputSignal.AddError(err)
return
}
config, err := newPortalConfig(
identityvalidate.PortalTypeAzure,
identityvalidate.ModuleNameOwaLogin,
attempts,
username,
password,
agentHeader,
clientID,
tenantID,
interval,
timeout,
)
if err != nil {
a.OutputSignal.AddError(err)
return
}
engine := portal.NewEngine(config)
report, err := engine.Launch(cmd.Context())
if err != nil {
a.OutputSignal.AddError(err)
}
a.OutputSignal.Content = report
},
}
owaCmd.Flags().Int("attempts", 1, "Number of retry attempts")
owaCmd.Flags().String("username", "", "Login portal username")
owaCmd.Flags().String("password", "", "Login portal password")
owaCmd.Flags().String("agentheader", "", "The agent header set in the request")
owaCmd.Flags().String("clientid", "", "Client Id set in request")
owaCmd.Flags().String("tenantid", "", "Tenant Id set in request")
owaCmd.Flags().Int("interval", 0, "Trigger sleep intervals for making multiple attempts (Seconds)")
owaCmd.Flags().Int("timeout", 10, "Timeout limit (Seconds)")
_ = owaCmd.MarkFlagRequired("username")
_ = owaCmd.MarkFlagRequired("password")
_ = owaCmd.MarkFlagRequired("clientid")
_ = owaCmd.MarkFlagRequired("tenantid")
portalCmd.AddCommand(azureCmd)
azureCmd.AddCommand(owaCmd)
a.RootCmd.AddCommand(portalCmd)
}
func newPortalConfig(portalType identityvalidate.PortalType, moduleName identityvalidate.ModuleName, attempts int, username string, password string, agentHeader string, clientID string, tenantID string, interval int, timeout int) (*identityvalidate.PortalConfig, error) {
config := &identityvalidate.PortalConfig{
PortalType: portalType,
ModuleName: moduleName,
Attempts: attempts,
Username: username,
Password: password,
AgentHeader: agentHeader,
ClientId: clientID,
TenantId: tenantID,
Interval: interval,
Timeout: timeout,
}
return config, nil
}