Add config options to disable HTTP and scheduler services
This commit is contained in:
parent
487852f07e
commit
becd086865
5 changed files with 80 additions and 3 deletions
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue