ソースを参照

Add config options to disable HTTP and scheduler services

Frédéric Guillot 7 年 前
コミット
becd086865
5 ファイル変更80 行追加3 行削除
  1. 13 3
      cli/daemon.go
  2. 10 0
      config/config.go
  3. 50 0
      config/config_test.go
  4. 6 0
      miniflux.1
  5. 1 0
      service/scheduler/scheduler.go

+ 13 - 3
cli/daemon.go

@@ -6,6 +6,7 @@ package cli // import "miniflux.app/cli"
 
 
 import (
 import (
 	"context"
 	"context"
+	"net/http"
 	"os"
 	"os"
 	"os/signal"
 	"os/signal"
 	"runtime"
 	"runtime"
@@ -31,17 +32,26 @@ func startDaemon(cfg *config.Config, store *storage.Storage) {
 	feedHandler := feed.NewFeedHandler(store)
 	feedHandler := feed.NewFeedHandler(store)
 	pool := worker.NewPool(feedHandler, cfg.WorkerPoolSize())
 	pool := worker.NewPool(feedHandler, cfg.WorkerPoolSize())
 
 
-	go scheduler.Serve(cfg, store, pool)
 	go showProcessStatistics()
 	go showProcessStatistics()
 
 
-	httpServer := httpd.Serve(cfg, store, pool, feedHandler)
+	if cfg.HasSchedulerService() {
+		scheduler.Serve(cfg, store, pool)
+	}
+
+	var httpServer *http.Server
+	if cfg.HasHTTPService() {
+		httpServer = httpd.Serve(cfg, store, pool, feedHandler)
+	}
 
 
 	<-stop
 	<-stop
 	logger.Info("Shutting down the process...")
 	logger.Info("Shutting down the process...")
 	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
 	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
 	defer cancel()
 	defer cancel()
 
 
-	httpServer.Shutdown(ctx)
+	if httpServer != nil {
+		httpServer.Shutdown(ctx)
+	}
+
 	logger.Info("Process gracefully stopped")
 	logger.Info("Process gracefully stopped")
 }
 }
 
 

+ 10 - 0
config/config.go

@@ -214,6 +214,16 @@ func (c *Config) ProxyImages() string {
 	return getStringValue("PROXY_IMAGES", defaultProxyImages)
 	return getStringValue("PROXY_IMAGES", defaultProxyImages)
 }
 }
 
 
+// HasHTTPService returns true if the HTTP service is enabled.
+func (c *Config) HasHTTPService() bool {
+	return !getBooleanValue("DISABLE_HTTP_SERVICE")
+}
+
+// HasSchedulerService returns true if the scheduler service is enabled.
+func (c *Config) HasSchedulerService() bool {
+	return !getBooleanValue("DISABLE_SCHEDULER_SERVICE")
+}
+
 // NewConfig returns a new Config.
 // NewConfig returns a new Config.
 func NewConfig() *Config {
 func NewConfig() *Config {
 	cfg := &Config{
 	cfg := &Config{

+ 50 - 0
config/config_test.go

@@ -658,6 +658,56 @@ func TestHSTS(t *testing.T) {
 	}
 	}
 }
 }
 
 
+func TestDisableHTTPServiceWhenUnset(t *testing.T) {
+	os.Clearenv()
+
+	cfg := NewConfig()
+	expected := true
+	result := cfg.HasHTTPService()
+
+	if result != expected {
+		t.Fatalf(`Unexpected DISABLE_HTTP_SERVICE value, got %v instead of %v`, result, expected)
+	}
+}
+
+func TestDisableHTTPService(t *testing.T) {
+	os.Clearenv()
+	os.Setenv("DISABLE_HTTP_SERVICE", "1")
+
+	cfg := NewConfig()
+	expected := false
+	result := cfg.HasHTTPService()
+
+	if result != expected {
+		t.Fatalf(`Unexpected DISABLE_HTTP_SERVICE value, got %v instead of %v`, result, expected)
+	}
+}
+
+func TestDisableSchedulerServiceWhenUnset(t *testing.T) {
+	os.Clearenv()
+
+	cfg := NewConfig()
+	expected := true
+	result := cfg.HasSchedulerService()
+
+	if result != expected {
+		t.Fatalf(`Unexpected DISABLE_SCHEDULER_SERVICE value, got %v instead of %v`, result, expected)
+	}
+}
+
+func TestDisableSchedulerService(t *testing.T) {
+	os.Clearenv()
+	os.Setenv("DISABLE_SCHEDULER_SERVICE", "1")
+
+	cfg := NewConfig()
+	expected := false
+	result := cfg.HasSchedulerService()
+
+	if result != expected {
+		t.Fatalf(`Unexpected DISABLE_SCHEDULER_SERVICE value, got %v instead of %v`, result, expected)
+	}
+}
+
 func TestRunMigrationsWhenUnset(t *testing.T) {
 func TestRunMigrationsWhenUnset(t *testing.T) {
 	os.Clearenv()
 	os.Clearenv()
 
 

+ 6 - 0
miniflux.1

@@ -110,6 +110,12 @@ Forces cookies to use secure flag and send HSTS header\&.
 .B DISABLE_HSTS
 .B DISABLE_HSTS
 Disable HTTP Strict Transport Security header if \fBHTTPS\fR is set\&.
 Disable HTTP Strict Transport Security header if \fBHTTPS\fR is set\&.
 .TP
 .TP
+.B DISABLE_HTTP_SERVICE
+Set the value to 1 to disable the HTTP service\&.
+.TP
+.B DISABLE_SCHEDULER_SERVICE
+Set the value to 1 to disable the internal scheduler service\&.
+.TP
 .B CERT_FILE
 .B CERT_FILE
 Path to SSL certificate\&.
 Path to SSL certificate\&.
 .TP
 .TP

+ 1 - 0
service/scheduler/scheduler.go

@@ -15,6 +15,7 @@ import (
 
 
 // Serve starts the internal scheduler.
 // Serve starts the internal scheduler.
 func Serve(cfg *config.Config, store *storage.Storage, pool *worker.Pool) {
 func Serve(cfg *config.Config, store *storage.Storage, pool *worker.Pool) {
+	logger.Info(`Starting scheduler...`)
 	go feedScheduler(store, pool, cfg.PollingFrequency(), cfg.BatchSize())
 	go feedScheduler(store, pool, cfg.PollingFrequency(), cfg.BatchSize())
 	go cleanupScheduler(store, cfg.CleanupFrequency())
 	go cleanupScheduler(store, cfg.CleanupFrequency())
 }
 }