Przeglądaj źródła

Add preliminary support for nitter-proxy

Zed 9 miesięcy temu
rodzic
commit
51b54852dc
5 zmienionych plików z 16 dodań i 1 usunięć
  1. 1 0
      nitter.example.conf
  2. 12 1
      src/apiutils.nim
  3. 1 0
      src/config.nim
  4. 1 0
      src/nitter.nim
  5. 1 0
      src/types.nim

+ 1 - 0
nitter.example.conf

@@ -26,6 +26,7 @@ enableRSS = true  # set this to false to disable RSS feeds
 enableDebug = false  # enable request logs and debug endpoints (/.sessions)
 proxy = ""  # http/https url, SOCKS proxies are not supported
 proxyAuth = ""
+apiProxy = "" # nitter-proxy host, e.g. localhost:7000
 disableTid = false # enable this if cookie-based auth is failing
 
 # Change default preferences here, see src/prefs_impl.nim for a complete list

+ 12 - 1
src/apiutils.nim

@@ -13,10 +13,17 @@ const
 var 
   pool: HttpPool
   disableTid: bool
+  apiProxy: string
 
 proc setDisableTid*(disable: bool) =
   disableTid = disable
 
+proc setApiProxy*(url: string) =
+  if url.len > 0:
+    apiProxy = url.strip(chars={'/'}) & "/"
+    if "http" notin apiProxy:
+      apiProxy = "http://" & apiProxy
+
 proc toUrl(req: ApiReq; sessionKind: SessionKind): Uri =
   case sessionKind
   of oauth:  
@@ -99,7 +106,11 @@ template fetchImpl(result, fetchBody) {.dirty.} =
     var resp: AsyncResponse
     pool.use(await genHeaders(session, url)):
       template getContent =
-        resp = await c.get($url)
+        # TODO: this is a temporary simple implementation
+        if apiProxy.len > 0:
+          resp = await c.get(($url).replace("https://", apiProxy))
+        else:
+          resp = await c.get($url)
         result = await resp.body
 
       getContent()

+ 1 - 0
src/config.nim

@@ -41,6 +41,7 @@ proc getConfig*(path: string): (Config, parseCfg.Config) =
     enableDebug: cfg.get("Config", "enableDebug", false),
     proxy: cfg.get("Config", "proxy", ""),
     proxyAuth: cfg.get("Config", "proxyAuth", ""),
+    apiProxy: cfg.get("Config", "apiProxy", ""),
     disableTid: cfg.get("Config", "disableTid", false)
   )
 

+ 1 - 0
src/nitter.nim

@@ -37,6 +37,7 @@ setHmacKey(cfg.hmacKey)
 setProxyEncoding(cfg.base64Media)
 setMaxHttpConns(cfg.httpMaxConns)
 setHttpProxy(cfg.proxy, cfg.proxyAuth)
+setApiProxy(cfg.apiProxy)
 setDisableTid(cfg.disableTid)
 initAboutPage(cfg.staticDir)
 

+ 1 - 0
src/types.nim

@@ -275,6 +275,7 @@ type
     enableDebug*: bool
     proxy*: string
     proxyAuth*: string
+    apiProxy*: string
     disableTid*: bool
 
     rssCacheTime*: int