Skip to content

Commit ac4632d

Browse files
committed
Only run metadata refresh when required and change logout path
1 parent cf5bede commit ac4632d

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

internal/cmd/root.go

+31-29
Original file line numberDiff line numberDiff line change
@@ -200,38 +200,40 @@ func runRootCmd() error {
200200
}
201201

202202
// set up refresh/reload of service provider metdata
203-
quit := make(chan struct{})
204-
g.Add(func() error {
205-
slog.Info("service provider refresh", "action", "started", "next", time.Now().Add(time.Hour*24))
206-
for {
207-
select {
208-
case <-quit:
209-
return nil
210-
default:
211-
time.Sleep(time.Hour * 24)
212-
213-
// set up provider
214-
provider, err := sp.NewServiceProvider(viper.GetString("sp-cert"), viper.GetString("sp-key"), metadata, root, viper.GetStringMapString("sp-claim-mapping"))
215-
if err != nil {
216-
// not a fatal error
217-
slog.Error("saml service provider reload", "error", err)
218-
continue
203+
if viper.GetString("idp-metadata") != "" {
204+
quit := make(chan struct{})
205+
g.Add(func() error {
206+
slog.Info("service provider refresh", "action", "started", "next", time.Now().Add(time.Hour*24))
207+
for {
208+
select {
209+
case <-quit:
210+
return nil
211+
default:
212+
time.Sleep(time.Hour * 24)
213+
214+
// set up provider
215+
provider, err := sp.NewServiceProvider(viper.GetString("sp-cert"), viper.GetString("sp-key"), metadata, root, viper.GetStringMapString("sp-claim-mapping"))
216+
if err != nil {
217+
// not a fatal error
218+
slog.Error("saml service provider reload", "error", err)
219+
continue
220+
}
221+
222+
// new server mux
223+
mux := sp.NewMux(provider)
224+
225+
// swap to new mux
226+
rs.Swap(mux)
219227
}
220228

221-
// new server mux
222-
mux := sp.NewMux(provider)
223-
224-
// swap to new mux
225-
rs.Swap(mux)
229+
// some logging
230+
slog.Info("service provider refresh", "action", "refreshed", "next", time.Now().Add(time.Hour*24))
226231
}
227-
228-
// some logging
229-
slog.Info("service provider refresh", "action", "refreshed", "next", time.Now().Add(time.Hour*24))
230-
}
231-
}, func(err error) {
232-
slog.Info("service provider refresh", "action", "shutting down")
233-
close(quit)
234-
})
232+
}, func(err error) {
233+
slog.Info("service provider refresh", "action", "shutting down")
234+
close(quit)
235+
})
236+
}
235237

236238
if err := g.Run(); err != nil {
237239
return fmt.Errorf("problem while running: %w", err)

pkg/sp/sp.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ func NewMux(s *ServiceProvider) *http.ServeMux {
300300
mux.HandleFunc(s.LogoutUrl().Path, s.LogoutHandler)
301301

302302
// login endpoint
303-
mux.Handle("/", s.RequireAccount(http.HandlerFunc(s.HomeHandler)))
303+
mux.Handle("/saml/login", s.RequireAccount(http.HandlerFunc(s.HomeHandler)))
304304

305305
return mux
306306
}

0 commit comments

Comments
 (0)