소스 검색

Add enableRSS setting in config file

Useful for instance owners who want to disable the RSS endpoint for
reasons such as abuse and not enough server resources to handle heavy
network traffic through that endpoint.

Resolves #437
Timothy Bautista 5 년 전
부모
커밋
2edf54d5b3
5개의 변경된 파일11개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 0
      nitter.conf
  2. 1 0
      src/config.nim
  3. 2 1
      src/nitter.nim
  4. 2 1
      src/types.nim
  5. 5 5
      src/views/general.nim

+ 1 - 0
nitter.conf

@@ -28,6 +28,7 @@ tokenCount = 10
 # the limit gets reset every 15 minutes, and the pool is filled up so there's
 # always at least $tokenCount usable tokens. again, only increase this if
 # you receive major bursts all the time
+enableRSS = true  # set this to false to disable RSS feeds
 
 # Change default preferences here, see src/prefs_impl.nim for a complete list
 [Preferences]

+ 1 - 0
src/config.nim

@@ -25,6 +25,7 @@ proc getConfig*(path: string): (Config, parseCfg.Config) =
     hmacKey: cfg.get("Config", "hmacKey", "secretkey"),
     base64Media: cfg.get("Config", "base64Media", false),
     minTokens: cfg.get("Config", "tokenCount", 10),
+    enableRSS: cfg.get("Config", "enableRSS", true),
 
     listCacheTime: cfg.get("Cache", "listMinutes", 120),
     rssCacheTime: cfg.get("Cache", "rssMinutes", 10),

+ 2 - 1
src/nitter.nim

@@ -46,7 +46,8 @@ createStatusRouter(cfg)
 createSearchRouter(cfg)
 createMediaRouter(cfg)
 createEmbedRouter(cfg)
-createRssRouter(cfg)
+if cfg.enableRSS:
+  createRssRouter(cfg)
 
 settings:
   port = Port(cfg.port)

+ 2 - 1
src/types.nim

@@ -126,7 +126,7 @@ type
     videoDirectMessage = "video_direct_message"
     imageDirectMessage = "image_direct_message"
     audiospace = "audiospace"
-    
+
   Card* = object
     kind*: CardKind
     id*: string
@@ -212,6 +212,7 @@ type
     hmacKey*: string
     base64Media*: bool
     minTokens*: int
+    enableRSS*: bool
 
     rssCacheTime*: int
     listCacheTime*: int

+ 5 - 5
src/views/general.nim

@@ -10,7 +10,7 @@ const
   doctype = "<!DOCTYPE html>\n"
   lp = readFile("public/lp.svg")
 
-proc renderNavbar*(title, rss: string; req: Request): VNode =
+proc renderNavbar*(cfg: Config, rss: string; req: Request): VNode =
   let twitterPath = getTwitterLink(req.path, req.params)
   var path = $(parseUri(req.path) ? filterParams(req.params))
   if "/status" in path: path.add "#m"
@@ -18,13 +18,13 @@ proc renderNavbar*(title, rss: string; req: Request): VNode =
   buildHtml(nav):
     tdiv(class="inner-nav"):
       tdiv(class="nav-item"):
-        a(class="site-name", href="/"): text title
+        a(class="site-name", href="/"): text cfg.title
 
       a(href="/"): img(class="site-logo", src="/logo.png")
 
       tdiv(class="nav-item right"):
         icon "search", title="Search", href="/search"
-        if rss.len > 0:
+        if cfg.enableRSS and rss.len > 0:
           icon "rss-feed", title="RSS Feed", href=rss
         icon "bird", title="Open in Twitter", href=twitterPath
         a(href="https://liberapay.com/zedeus"): verbatim lp
@@ -57,7 +57,7 @@ proc renderHead*(prefs: Prefs; cfg: Config; titleText=""; desc=""; video="";
     link(rel="search", type="application/opensearchdescription+xml", title=cfg.title,
                             href=opensearchUrl)
 
-    if rss.len > 0:
+    if cfg.enableRSS and rss.len > 0:
       link(rel="alternate", type="application/rss+xml", href=rss, title="RSS feed")
 
     if prefs.hlsPlayback:
@@ -119,7 +119,7 @@ proc renderMain*(body: VNode; req: Request; cfg: Config; prefs=defaultPrefs;
     renderHead(prefs, cfg, titleText, desc, video, images, banner, ogTitle, theme, rss)
 
     body:
-      renderNavbar(cfg.title, rss, req)
+      renderNavbar(cfg, rss, req)
 
       tdiv(class="container"):
         body