Skip to content

Commit 59d294d

Browse files
committed
home: completely terminate the dependency of tlsMgr from web;
1 parent e0b474f commit 59d294d

5 files changed

Lines changed: 6 additions & 33 deletions

File tree

internal/home/home.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -870,8 +870,6 @@ func run(
870870

871871
sigHdlr.addWeb(web)
872872

873-
tlsMgr.setWebAPI(web)
874-
875873
statsDir, querylogDir, err := checkStatsAndQuerylogDirs(config, workDir)
876874
fatalOnError(ctx, baseLogger, err)
877875

internal/home/tls.go

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,6 @@ type tlsManager struct {
5656
// nil.
5757
extTLSConf *aghtls.ExtendedTLSConfig
5858

59-
// web is the web UI and API server. It must not be nil.
60-
//
61-
// TODO(s.chzhen): Temporary cyclic dependency due to ongoing refactoring.
62-
// Resolve it.
63-
web *webAPI
64-
6559
// rootCerts is a pool of root CAs for TLSv1.2.
6660
rootCerts *x509.CertPool
6761

@@ -106,8 +100,7 @@ type tlsManagerConfig struct {
106100
// newTLSManager initializes the manager of TLS configuration. m is always
107101
// non-nil while any returned error indicates that the TLS configuration isn't
108102
// valid. Thus TLS may be initialized later, e.g. via the web UI. conf must
109-
// not be nil. Note that [tlsManager.web] must be initialized later on by using
110-
// [tlsManager.setWebAPI].
103+
// not be nil.
111104
func newTLSManager(ctx context.Context, conf *tlsManagerConfig) (m *tlsManager, err error) {
112105
m = &tlsManager{
113106
logger: conf.logger,
@@ -185,14 +178,6 @@ func newTLSManager(ctx context.Context, conf *tlsManagerConfig) (m *tlsManager,
185178
return m, nil
186179
}
187180

188-
// setWebAPI stores the provided web API. It must be called before
189-
// [tlsManager.Start], [tlsManager.reload] or [webAPI.validateTLSSettings].
190-
//
191-
// TODO(s.chzhen): Remove it once cyclic dependency is resolved.
192-
func (m *tlsManager) setWebAPI(webAPI *webAPI) {
193-
m.web = webAPI
194-
}
195-
196181
// setCertFileTime sets [tlsManager.certLastMod] from the certificate. If there
197182
// are errors, setCertFileTime logs them. m.mu is expected to be locked.
198183
func (m *tlsManager) setCertFileTime(ctx context.Context) {
@@ -1033,14 +1018,6 @@ var _ service.Interface = (*tlsManager)(nil)
10331018
// Start implements the [service.Interface] interface for *tlsManager. It
10341019
// starts the TLS manager.
10351020
func (m *tlsManager) Start(ctx context.Context) (err error) {
1036-
m.mu.Lock()
1037-
defer m.mu.Unlock()
1038-
1039-
// The background context is used because the TLSConfigChanged wraps context
1040-
// with timeout on its own and shuts down the server, which handles current
1041-
// request.
1042-
m.web.tlsConfigChanged(context.Background(), m.extTLSConf)
1043-
10441021
go m.handleCertFileChange(ctx)
10451022

10461023
return nil

internal/home/tls_internal_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,6 @@ func TestTLSManager_Reload(t *testing.T) {
328328
})
329329
require.NoError(t, err)
330330

331-
web := newTestWeb(t, &webConfig{tlsManager: m})
332-
m.setWebAPI(web)
333-
334331
extTLSConf := m.ExtendedTLSConfig()
335332
assertCertSerialNumber(t, extTLSConf, snBefore)
336333

internal/home/web.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,11 @@ func (web *webAPI) start(ctx context.Context) {
340340

341341
web.logger.InfoContext(ctx, "AdGuard Home is available at the following addresses:")
342342

343+
// Apply the initial TLS configuration. The background context is used
344+
// because tlsConfigChanged wraps context with timeout on its own and shuts
345+
// down the server, which handles current request.
346+
go web.tlsConfigChanged(context.Background(), web.tlsConfProvider.ExtendedTLSConfig())
347+
343348
// For https, we have a separate goroutine loop.
344349
go web.tlsServerLoop(ctx)
345350

internal/home/web_internal_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ func TestWebAPI_HandleTLSConfigure(t *testing.T) {
9191
require.NoError(t, err)
9292

9393
web := newTestWeb(t, &webConfig{tlsManager: m})
94-
m.setWebAPI(web)
9594

9695
extTLSConf := m.ExtendedTLSConfig()
9796
assertCertSerialNumber(t, extTLSConf, wantSerialNumber)
@@ -176,7 +175,6 @@ func TestWebAPI_HandleTLSStatus(t *testing.T) {
176175
require.NoError(t, err)
177176

178177
web := newTestWeb(t, &webConfig{tlsManager: m})
179-
m.setWebAPI(web)
180178

181179
w := httptest.NewRecorder()
182180
r := httptest.NewRequest(http.MethodGet, "/control/tls/status", nil)
@@ -209,7 +207,6 @@ func TestWebAPI_ValidateTLSSettings(t *testing.T) {
209207
require.NoError(t, err)
210208

211209
web := newTestWeb(t, &webConfig{tlsManager: m})
212-
m.setWebAPI(web)
213210

214211
tcpLn, err := net.Listen("tcp", ":0")
215212
require.NoError(t, err)
@@ -310,7 +307,6 @@ func TestWebAPI_HandleTLSValidate(t *testing.T) {
310307
require.NoError(t, err)
311308

312309
web := newTestWeb(t, &webConfig{tlsManager: m})
313-
m.setWebAPI(web)
314310

315311
setts := &tlsConfigSettingsExt{
316312
tlsConfigSettings: tlsConfigSettings{

0 commit comments

Comments
 (0)