Skip to content

Commit fa47c7f

Browse files
committed
added flag
Signed-off-by: gunishmatta <[email protected]>
1 parent c00f8c7 commit fa47c7f

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

controllers/event_handling_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestEventHandler(t *testing.T) {
5252
t.Fatalf("failed to create memory storage")
5353
}
5454

55-
eventServer := server.NewEventServer("127.0.0.1:56789", logf.Log, k8sClient, true)
55+
eventServer := server.NewEventServer("127.0.0.1:56789", logf.Log, k8sClient, true, false)
5656
stopCh := make(chan struct{})
5757
go eventServer.ListenAndServe(stopCh, eventMdlw, store)
5858

@@ -77,6 +77,7 @@ func TestEventHandler(t *testing.T) {
7777
Address: rcvServer.URL,
7878
},
7979
}
80+
8081
g.Expect(k8sClient.Create(context.Background(), provider)).To(Succeed())
8182

8283
repo, err := readManifest("./testdata/repo.yaml", namespace)

internal/server/event_handlers.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,13 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request)
243243
continue
244244
}
245245

246+
if s.httpSchemeDisabled && strings.Contains(webhook, "http://") {
247+
s.logger.Error(nil, "http scheme is blocked",
248+
"reconciler kind", v1beta1.ProviderKind,
249+
"name", providerName.Name,
250+
"namespace", providerName.Namespace)
251+
continue
252+
}
246253
factory := notifier.NewFactory(webhook, proxy, username, provider.Spec.Channel, token, headers, certPool, password)
247254
sender, err := factory.Notifier(provider.Spec.Type)
248255
if err != nil {

internal/server/event_server.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,17 @@ type EventServer struct {
4444
logger logr.Logger
4545
kubeClient client.Client
4646
noCrossNamespaceRefs bool
47+
httpSchemeDisabled bool
4748
}
4849

4950
// NewEventServer returns an HTTP server that handles events
50-
func NewEventServer(port string, logger logr.Logger, kubeClient client.Client, noCrossNamespaceRefs bool) *EventServer {
51+
func NewEventServer(port string, logger logr.Logger, kubeClient client.Client, noCrossNamespaceRefs bool, httpSchemeDisabled bool) *EventServer {
5152
return &EventServer{
5253
port: port,
5354
logger: logger.WithName("event-server"),
5455
kubeClient: kubeClient,
5556
noCrossNamespaceRefs: noCrossNamespaceRefs,
57+
httpSchemeDisabled: httpSchemeDisabled,
5658
}
5759
}
5860

main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ func main() {
7272
leaderElectionOptions leaderelection.Options
7373
aclOptions acl.Options
7474
rateLimiterOptions helper.RateLimiterOptions
75+
httpSchemeDisabled bool
7576
)
7677

7778
flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.")
@@ -82,6 +83,7 @@ func main() {
8283
flag.BoolVar(&watchAllNamespaces, "watch-all-namespaces", true,
8384
"Watch for custom resources in all namespaces, if set to false it will only watch the runtime namespace.")
8485
flag.DurationVar(&rateLimitInterval, "rate-limit-interval", 5*time.Minute, "Interval in which rate limit has effect.")
86+
flag.BoolVar(&httpSchemeDisabled, "http-scheme-enabled", false, "Enable Http Scheme When true, the flag would not allow the use of the http scheme across all controller-level objects.")
8587
clientOptions.BindFlags(flag.CommandLine)
8688
logOptions.BindFlags(flag.CommandLine)
8789
leaderElectionOptions.BindFlags(flag.CommandLine)
@@ -169,7 +171,7 @@ func main() {
169171
Registry: crtlmetrics.Registry,
170172
}),
171173
})
172-
eventServer := server.NewEventServer(eventsAddr, log, mgr.GetClient(), aclOptions.NoCrossNamespaceRefs)
174+
eventServer := server.NewEventServer(eventsAddr, log, mgr.GetClient(), aclOptions.NoCrossNamespaceRefs, httpSchemeDisabled)
173175
go eventServer.ListenAndServe(ctx.Done(), eventMdlw, store)
174176

175177
setupLog.Info("starting webhook receiver server", "addr", receiverAddr)

0 commit comments

Comments
 (0)