Add config options to disable HTTP and scheduler services

This commit is contained in:
Frédéric Guillot 2018-11-11 15:54:19 -08:00
parent 487852f07e
commit becd086865
5 changed files with 80 additions and 3 deletions

View File

@ -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")
}

View File

@ -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{

View File

@ -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()

View File

@ -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

View File

@ -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())
}