このリポジトリは2023-09-09にアーカイブされています。 ファイルの閲覧とクローンは可能ですが、プッシュ、イシューの作成、プルリクエストはできません。
Nitter-mod/src/nitter.nim

108 行
2.8 KiB
Nim
Raw パーマリンク 通常表示 履歴

2021-12-27 10:37:38 +09:00
# SPDX-License-Identifier: AGPL-3.0-only
2022-01-06 03:08:08 +09:00
import asyncdispatch, strformat, logging
2019-07-31 09:15:43 +09:00
from net import Port
2021-01-08 06:31:29 +09:00
from htmlgen import a
from os import getEnv
2019-06-20 23:16:20 +09:00
2019-09-06 09:42:35 +09:00
import jester
2019-06-25 06:25:21 +09:00
import types, config, prefs, formatters, redis_cache, http_pool, tokens
2019-09-09 11:41:20 +09:00
import views/[general, about]
2019-09-23 23:12:20 +09:00
import routes/[
preferences, timeline, status, media, search, rss, list, debug,
2020-06-09 23:45:21 +09:00
unsupported, embed, resolver, router_utils]
2019-06-20 23:16:20 +09:00
2021-01-08 06:31:29 +09:00
const instancesUrl = "https://github.com/zedeus/nitter/wiki/Instances"
2021-12-28 13:02:28 +09:00
const issuesUrl = "https://github.com/zedeus/nitter/issues"
2021-01-08 06:31:29 +09:00
2023-07-11 10:47:33 +09:00
let configPath = getEnv("NITTER_CONF_FILE", "/etc/nitter/nitter.conf")
let (cfg, fullCfg) = getConfig(configPath)
2022-01-06 03:08:08 +09:00
if not cfg.enableDebug:
# Silence Jester's query warning
addHandler(newConsoleLogger())
setLogFilter(lvlError)
2020-06-07 16:18:40 +09:00
2021-01-08 10:25:43 +09:00
stdout.write &"Starting Nitter at {getUrlPrefix(cfg)}\n"
2020-06-07 16:18:40 +09:00
stdout.flushFile
updateDefaultPrefs(fullCfg)
2020-06-01 09:25:39 +09:00
setCacheTimes(cfg)
setHmacKey(cfg.hmacKey)
2020-06-09 22:04:38 +09:00
setProxyEncoding(cfg.base64Media)
setMaxHttpConns(cfg.httpMaxConns)
2021-10-01 01:03:07 +09:00
setHttpProxy(cfg.proxy, cfg.proxyAuth)
initAboutPage(cfg.staticDir)
2020-06-01 20:36:10 +09:00
waitFor initRedisPool(cfg)
2020-06-07 16:18:40 +09:00
stdout.write &"Connected to Redis at {cfg.redisHost}:{cfg.redisPort}\n"
stdout.flushFile
2020-06-01 09:25:39 +09:00
asyncCheck initTokenPool(cfg)
2019-09-23 23:12:20 +09:00
createUnsupportedRouter(cfg)
createResolverRouter(cfg)
2019-09-06 09:42:35 +09:00
createPrefRouter(cfg)
createTimelineRouter(cfg)
2019-09-21 08:08:30 +09:00
createListRouter(cfg)
2019-09-20 21:10:10 +09:00
createStatusRouter(cfg)
2019-09-14 05:24:58 +09:00
createSearchRouter(cfg)
2019-09-06 09:42:35 +09:00
createMediaRouter(cfg)
2019-12-06 23:15:56 +09:00
createEmbedRouter(cfg)
2021-12-28 14:21:22 +09:00
createRssRouter(cfg)
createDebugRouter(cfg)
2019-07-31 09:15:43 +09:00
settings:
port = Port(cfg.port)
staticDir = cfg.staticDir
bindAddr = cfg.address
reusePort = true
2019-07-31 09:15:43 +09:00
2019-06-20 23:16:20 +09:00
routes:
get "/":
2020-06-09 23:45:21 +09:00
resp renderMain(renderSearch(), request, cfg, themePrefs())
2019-06-20 23:16:20 +09:00
2019-09-09 11:41:20 +09:00
get "/about":
2020-06-09 23:45:21 +09:00
resp renderMain(renderAbout(), request, cfg, themePrefs())
2019-09-09 11:41:20 +09:00
2019-09-23 23:12:20 +09:00
get "/explore":
redirect("/about")
2019-09-23 23:12:20 +09:00
get "/help":
redirect("/about")
2019-10-18 07:45:54 +09:00
get "/i/redirect":
let url = decodeUrl(@"url")
2019-10-21 14:59:22 +09:00
if url.len == 0: resp Http404
2021-12-27 10:27:49 +09:00
redirect(replaceUrls(url, cookiePrefs()))
2019-10-18 07:45:54 +09:00
error Http404:
2019-10-21 14:59:22 +09:00
resp Http404, showError("Page not found", cfg)
2021-12-28 13:02:28 +09:00
error InternalError:
2021-12-28 13:41:41 +09:00
echo error.exc.name, ": ", error.exc.msg
2021-12-28 13:02:28 +09:00
const link = a("open a GitHub issue", href = issuesUrl)
2021-12-28 13:41:41 +09:00
resp Http500, showError(
&"An error occurred, please {link} with the URL you tried to visit.", cfg)
2021-12-28 13:02:28 +09:00
error BadClientError:
echo error.exc.name, ": ", error.exc.msg
2023-07-15 01:11:56 +09:00
resp Http500, showError("Network error occurred, please try again.", cfg)
2021-01-08 06:31:29 +09:00
error RateLimitError:
2021-12-28 13:02:28 +09:00
const link = a("another instance", href = instancesUrl)
2021-12-28 13:41:41 +09:00
resp Http429, showError(
&"Instance has been rate limited.<br>Use {link} or try again later.", cfg)
2021-01-08 06:31:29 +09:00
extend rss, ""
extend status, ""
2019-09-14 05:24:58 +09:00
extend search, ""
2019-09-06 09:42:35 +09:00
extend timeline, ""
extend media, ""
extend list, ""
extend preferences, ""
extend resolver, ""
2019-12-06 23:15:56 +09:00
extend embed, ""
extend debug, ""
extend unsupported, ""