mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
* Inject DenyList from config to `StartCommands()` * Implementation draft * Move address checker to separate package * Migrate usages of actions.AddressChecker to denylist.AddressChecker * Rename denylist package files * Pass []denylist.AddressChecker to StartCommand * Add DenyList to defaults.yaml and add custom config parser * net: add HostnameToIPList function * denylist: Add IsHostBlocked() * actions: use denylist.IsHostBlocked() * command: Inject ip lookup function + extend add target validationt test * command: Unexport ChangeTarget.IsValid() * command: Add denyList check on ChangeTarget validation * command: Export ActionsV2DenyList and IPLookupFunction params * Lint fix * Check denylist during action execution * Fix integration tests * Apply suggestions * Add `mapstructure.StringToSliceHookFunc()` to decode `HTTPConfigDecodeHook`
76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package setup
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/zitadel/zitadel/internal/api/ui/login"
|
|
"github.com/zitadel/zitadel/internal/cache/connector"
|
|
"github.com/zitadel/zitadel/internal/command"
|
|
"github.com/zitadel/zitadel/internal/config/systemdefaults"
|
|
"github.com/zitadel/zitadel/internal/denylist"
|
|
"github.com/zitadel/zitadel/internal/eventstore"
|
|
)
|
|
|
|
type externalConfigChange struct {
|
|
es *eventstore.Eventstore
|
|
ExternalDomain string `json:"externalDomain"`
|
|
ExternalSecure bool `json:"externalSecure"`
|
|
ExternalPort uint16 `json:"externalPort"`
|
|
|
|
currentExternalDomain string
|
|
currentExternalSecure bool
|
|
currentExternalPort uint16
|
|
defaults systemdefaults.SystemDefaults
|
|
}
|
|
|
|
func (mig *externalConfigChange) Check(lastRun map[string]interface{}) bool {
|
|
mig.currentExternalDomain, _ = lastRun["externalDomain"].(string)
|
|
externalPort, _ := lastRun["externalPort"].(float64)
|
|
mig.currentExternalPort = uint16(externalPort)
|
|
mig.currentExternalSecure, _ = lastRun["externalSecure"].(bool)
|
|
return mig.currentExternalSecure != mig.ExternalSecure ||
|
|
mig.currentExternalPort != mig.ExternalPort ||
|
|
mig.currentExternalDomain != mig.ExternalDomain
|
|
}
|
|
|
|
func (mig *externalConfigChange) Execute(ctx context.Context, _ eventstore.Event) error {
|
|
cmd, err := command.StartCommands(ctx,
|
|
mig.es,
|
|
connector.Connectors{},
|
|
mig.defaults,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
mig.ExternalDomain,
|
|
mig.ExternalSecure,
|
|
mig.ExternalPort,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
0,
|
|
0,
|
|
0,
|
|
nil,
|
|
&login.DefaultPaths{},
|
|
[]denylist.AddressChecker{},
|
|
)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return cmd.ChangeSystemConfig(ctx, mig.currentExternalDomain, mig.currentExternalPort, mig.currentExternalSecure)
|
|
}
|
|
|
|
func (mig *externalConfigChange) String() string {
|
|
return "config_change"
|
|
}
|