diff --git a/nitter.conf b/nitter.conf index ef52f3f..d66a155 100644 --- a/nitter.conf +++ b/nitter.conf @@ -1,17 +1,31 @@ [Server] address = "0.0.0.0" port = 8080 -https = true # disable to enable cookies when not using https +https = false # disable to enable cookies when not using https staticDir = "./public" title = "nitter" hostname = "nitter.net" [Cache] directory = "./tmp" -profileMinutes = 10 # how long to cache profiles +listMinutes = 240 # how long to cache list info (not the tweets, so keep it high) +rssMinutes = 10 # how long to cache rss queries +redisHost = "localhost" +redisPort = 6379 +redisConnections = 20 # connection pool size +redisMaxConnections = 30 +# max, new connections are opened when none are available, but if the pool size +# goes above this, they're closed when released. don't worry about this unless +# you receive tons of requests per second [Config] -hmacKey = "secretkey" # for signing video urls +hmacKey = "secretkey" # random key for cryptographic signing of video urls +tokenCount = 10 +# minimum amount of usable tokens. tokens are used to authorize API requests, +# but they expire after ~1 hour, and have a limit of 187 requests. +# 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 # Change default preferences here, see src/prefs_impl.nim for a complete list [Preferences] diff --git a/src/config.nim b/src/config.nim index 54d09e4..5566598 100644 --- a/src/config.nim +++ b/src/config.nim @@ -16,14 +16,21 @@ proc getConfig*(path: string): (Config, parseCfg.Config) = address: cfg.get("Server", "address", "0.0.0.0"), port: cfg.get("Server", "port", 8080), useHttps: cfg.get("Server", "https", true), - staticDir: cfg.get("Server", "staticDir", "./public"), title: cfg.get("Server", "title", "Nitter"), hostname: cfg.get("Server", "hostname", "nitter.net"), + staticDir: cfg.get("Server", "staticDir", "./public"), cacheDir: cfg.get("Cache", "directory", "/tmp/nitter"), - profileCacheTime: cfg.get("Cache", "profileMinutes", 10), + listCacheTime: cfg.get("Cache", "listMinutes", 120), + rssCacheTime: cfg.get("Cache", "rssMinutes", 10), - hmacKey: cfg.get("Config", "hmacKey", "secretkey") + redisHost: cfg.get("Cache", "redisHost", "localhost"), + redisPort: cfg.get("Cache", "redisPort", 6379), + redisConns: cfg.get("Cache", "redisConnections", 20), + redisMaxConns: cfg.get("Cache", "redisMaxConnections", 30), + + hmacKey: cfg.get("Config", "hmacKey", "secretkey"), + minTokens: cfg.get("Config", "tokenCount", 10), ) return (conf, cfg) diff --git a/src/types.nim b/src/types.nim index 4739ce1..5d6cb05 100644 --- a/src/types.nim +++ b/src/types.nim @@ -187,12 +187,21 @@ type address*: string port*: int useHttps*: bool - staticDir*: string title*: string hostname*: string - cacheDir*: string - profileCacheTime*: int + staticDir*: string + hmacKey*: string + minTokens*: int + + cacheDir*: string + rssCacheTime*: int + listCacheTime*: int + + redisHost*: string + redisPort*: int + redisConns*: int + redisMaxConns*: int proc contains*(thread: Chain; tweet: Tweet): bool = thread.content.anyIt(it.id == tweet.id)