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 (
|
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()
|
||||||
|
|
||||||
|
if httpServer != nil {
|
||||||
httpServer.Shutdown(ctx)
|
httpServer.Shutdown(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
logger.Info("Process gracefully stopped")
|
logger.Info("Process gracefully stopped")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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{
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue