@@ -740,21 +740,48 @@ func run(
740740 mux := http .NewServeMux ()
741741 httpReg := aghhttp .NewDefaultRegistrar (mux , mw .wrap )
742742
743- confModifier , tlsMgr := initFiltering (
744- ctx ,
745- baseLogger ,
746- opts ,
747- isFirstRun ,
748- sigHdlr ,
743+ err := setupContext (ctx , baseLogger , opts , workDir , confPath , isFirstRun )
744+ fatalOnError (err )
745+
746+ err = configureOS (config )
747+ fatalOnError (err )
748+
749+ // Clients package uses filtering package's static data
750+ // (filtering.BlockedSvcKnown()), so we have to initialize filtering static
751+ // data first, but also to avoid relying on automatic Go init() function.
752+ filtering .InitModule (ctx , baseLogger )
753+
754+ confModifier := newDefaultConfigModifier (
755+ config ,
756+ baseLogger .With (slogutil .KeyPrefix , "config_modifier" ),
749757 workDir ,
750758 confPath ,
759+ )
760+
761+ err = initContextClients (ctx , baseLogger , sigHdlr , confModifier , httpReg , workDir )
762+ fatalOnError (err )
763+
764+ tlsMgr , err := initTLS (ctx , baseLogger , sigHdlr , confModifier , httpReg )
765+ fatalOnError (err )
766+
767+ err = setupDNSFilteringConf (
768+ ctx ,
769+ baseLogger ,
770+ config .Filtering ,
771+ tlsMgr ,
772+ confModifier ,
751773 httpReg ,
774+ workDir ,
752775 )
776+ fatalOnError (err )
777+
778+ err = setupOpts (opts )
779+ fatalOnError (err )
753780
754781 upd , isCustomURL := initUpdate (ctx , baseLogger , opts , tlsMgr , isFirstRun , workDir , confPath )
755782
756783 dataDirPath := filepath .Join (workDir , dataDir )
757- err : = os .MkdirAll (dataDirPath , aghos .DefaultPermDir )
784+ err = os .MkdirAll (dataDirPath , aghos .DefaultPermDir )
758785 fatalOnError (errors .Annotate (err , "creating DNS data dir at %s: %w" , dataDirPath ))
759786
760787 auth , err := initUsers (ctx , baseLogger , workDir , opts .glinetMode )
@@ -836,41 +863,16 @@ func runDNSServer(
836863 }
837864}
838865
839- // initFiltering configures the core filtering and TLS subsystems. Returns a
840- // configuration modifier and the initialized TLS manager. slogLogger, sigHdlr
841- // and httpReg must not be nil.
842- func initFiltering (
866+ // initTLS initializes TLS manager. baseLogger, sigHdlr, confModifier, and
867+ // httpReg must not be nil.
868+ func initTLS (
843869 ctx context.Context ,
844- slogLogger * slog.Logger ,
845- opts options ,
846- isFirstRun bool ,
870+ baseLogger * slog.Logger ,
847871 sigHdlr * signalHandler ,
848- workDir string ,
849- confPath string ,
872+ confModifier * defaultConfigModifier ,
850873 httpReg * aghhttp.DefaultRegistrar ,
851- ) (confModifier * defaultConfigModifier , tlsMgr * tlsManager ) {
852- err := setupContext (ctx , slogLogger , opts , workDir , confPath , isFirstRun )
853- fatalOnError (err )
854-
855- err = configureOS (config )
856- fatalOnError (err )
857-
858- // Clients package uses filtering package's static data
859- // (filtering.BlockedSvcKnown()), so we have to initialize filtering static
860- // data first, but also to avoid relying on automatic Go init() function.
861- filtering .InitModule (ctx , slogLogger )
862-
863- confModifier = newDefaultConfigModifier (
864- config ,
865- slogLogger .With (slogutil .KeyPrefix , "config_modifier" ),
866- workDir ,
867- confPath ,
868- )
869-
870- err = initContextClients (ctx , slogLogger , sigHdlr , confModifier , httpReg , workDir )
871- fatalOnError (err )
872-
873- tlsMgrLogger := slogLogger .With (slogutil .KeyPrefix , "tls_manager" )
874+ ) (tlsMgr * tlsManager , err error ) {
875+ tlsMgrLogger := baseLogger .With (slogutil .KeyPrefix , "tls_manager" )
874876
875877 var watcher aghos.FSWatcher
876878 watcher , err = aghos .NewOSWatcher (& aghos.OSWatcherConfig {
@@ -882,11 +884,13 @@ func initFiltering(
882884 }
883885
884886 aghtlsMgr := aghtls .NewDefaultManager (& aghtls.DefaultManagerConfig {
885- Logger : slogLogger .With (slogutil .KeyPrefix , "aghtls_manager" ),
887+ Logger : baseLogger .With (slogutil .KeyPrefix , "aghtls_manager" ),
886888 Watcher : watcher ,
887889 })
888890 err = aghtlsMgr .Start (ctx )
889- fatalOnError (err )
891+ if err != nil {
892+ return nil , fmt .Errorf ("starting tls manager: %w" , err )
893+ }
890894
891895 sigHdlr .addTLSManager (aghtlsMgr )
892896
@@ -905,21 +909,7 @@ func initFiltering(
905909
906910 confModifier .setTLSManager (tlsMgr )
907911
908- err = setupDNSFilteringConf (
909- ctx ,
910- slogLogger ,
911- config .Filtering ,
912- tlsMgr ,
913- confModifier ,
914- httpReg ,
915- workDir ,
916- )
917- fatalOnError (err )
918-
919- err = setupOpts (opts )
920- fatalOnError (err )
921-
922- return confModifier , tlsMgr
912+ return tlsMgr , nil
923913}
924914
925915// initUpdate configures and runs update of this application. logger and tlsMgr
0 commit comments