aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-11-11 15:54:19 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-11-11 15:54:19 -0800
commitbecd086865f35d64a80d01ffb1ca96d0493dfa03 (patch)
tree6dea31c665873162742f29b4b198adb88b65cbcc
parent487852f07eb191ef56967b7b7d7f01537a55eabd (diff)
Add config options to disable HTTP and scheduler services
-rw-r--r--cli/daemon.go16
-rw-r--r--config/config.go10
-rw-r--r--config/config_test.go50
-rw-r--r--miniflux.16
-rw-r--r--service/scheduler/scheduler.go1
5 files changed, 80 insertions, 3 deletions
diff --git a/cli/daemon.go b/cli/daemon.go
index 436729c..aa673d4 100644
--- a/cli/daemon.go
+++ b/cli/daemon.go
@@ -6,6 +6,7 @@ package cli // import "miniflux.app/cli"
import (
"context"
+ "net/http"
"os"
"os/signal"
"runtime"
@@ -31,17 +32,26 @@ func startDaemon(cfg *config.Config, store *storage.Storage) {
feedHandler := feed.NewFeedHandler(store)
pool := worker.NewPool(feedHandler, cfg.WorkerPoolSize())
- go scheduler.Serve(cfg, store, pool)
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
logger.Info("Shutting down the process...")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
- httpServer.Shutdown(ctx)
+ if httpServer != nil {
+ httpServer.Shutdown(ctx)
+ }
+
logger.Info("Process gracefully stopped")
}
diff --git a/config/config.go b/config/config.go
index 281a8a3..7ba3a93 100644
--- a/config/config.go
+++ b/config/config.go
@@ -214,6 +214,16 @@ func (c *Config) ProxyImages() string {
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.
func NewConfig() *Config {
cfg := &Config{
diff --git a/config/config_test.go b/config/config_test.go
index 76b3ac5..1c188db 100644
--- a/config/config_test.go
+++ b/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) {
os.Clearenv()
diff --git a/miniflux.1 b/miniflux.1
index f9a0816..4a687d4 100644
--- a/miniflux.1
+++ b/miniflux.1
@@ -110,6 +110,12 @@ Forces cookies to use secure flag and send HSTS header\&.
.B DISABLE_HSTS
Disable HTTP Strict Transport Security header if \fBHTTPS\fR is set\&.
.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
Path to SSL certificate\&.
.TP
diff --git a/service/scheduler/scheduler.go b/service/scheduler/scheduler.go
index 31c63e7..e938aa1 100644
--- a/service/scheduler/scheduler.go
+++ b/service/scheduler/scheduler.go
@@ -15,6 +15,7 @@ import (
// Serve starts the internal scheduler.
func Serve(cfg *config.Config, store *storage.Storage, pool *worker.Pool) {
+ logger.Info(`Starting scheduler...`)
go feedScheduler(store, pool, cfg.PollingFrequency(), cfg.BatchSize())
go cleanupScheduler(store, cfg.CleanupFrequency())
}