diff --git a/api/src/config.js b/api/src/config.js
index 5f3e52cc..1f00231e 100644
--- a/api/src/config.js
+++ b/api/src/config.js
@@ -26,7 +26,7 @@ const env = {
rateLimitMax: (process.env.RATELIMIT_MAX && parseInt(process.env.RATELIMIT_MAX)) || 20,
durationLimit: (process.env.DURATION_LIMIT && parseInt(process.env.DURATION_LIMIT)) || 10800,
- streamLifespan: 90,
+ streamLifespan: (process.env.TUNNEL_LIFESPAN && parseInt(process.env.TUNNEL_LIFESPAN)) || 90,
processingPriority: process.platform !== 'win32'
&& process.env.PROCESSING_PRIORITY
diff --git a/api/src/processing/service-config.js b/api/src/processing/service-config.js
index f091d448..8d8bf4ac 100644
--- a/api/src/processing/service-config.js
+++ b/api/src/processing/service-config.js
@@ -137,7 +137,8 @@ export const services = {
":user/status/:id/video/:index",
":user/status/:id/photo/:index",
":user/status/:id/mediaviewer",
- ":user/status/:id/mediaViewer"
+ ":user/status/:id/mediaViewer",
+ "i/bookmarks?post_id=:id"
],
subdomains: ["mobile"],
altDomains: ["x.com", "vxtwitter.com", "fixvx.com"],
diff --git a/api/src/processing/url.js b/api/src/processing/url.js
index a8e69937..034a5d73 100644
--- a/api/src/processing/url.js
+++ b/api/src/processing/url.js
@@ -120,6 +120,11 @@ function cleanURL(url) {
limitQuery('p')
}
break;
+ case "twitter":
+ if (url.searchParams.get('post_id')) {
+ limitQuery('post_id')
+ }
+ break;
}
if (stripQuery) {
diff --git a/api/src/util/tests.json b/api/src/util/tests.json
index 17952595..94005c0a 100644
--- a/api/src/util/tests.json
+++ b/api/src/util/tests.json
@@ -192,6 +192,24 @@
"code": 400,
"status": "error"
}
+ },
+ {
+ "name": "bookmarked video",
+ "url": "https://twitter.com/i/bookmarks?post_id=1828099210220294314",
+ "params": {},
+ "expected": {
+ "code": 200,
+ "status": "redirect"
+ }
+ },
+ {
+ "name": "bookmarked photo",
+ "url": "https://twitter.com/i/bookmarks?post_id=1837430141179289876",
+ "params": {},
+ "expected": {
+ "code": 200,
+ "status": "redirect"
+ }
}
],
"soundcloud": [
diff --git a/docs/run-an-instance.md b/docs/run-an-instance.md
index 8144c037..4e41c73b 100644
--- a/docs/run-an-instance.md
+++ b/docs/run-an-instance.md
@@ -71,6 +71,7 @@ sudo service nscd start
| `RATELIMIT_WINDOW` | `60` | `120` | rate limit time window in **seconds**. |
| `RATELIMIT_MAX` | `20` | `30` | max requests per time window. requests above this amount will be blocked for the rate limit window duration. |
| `DURATION_LIMIT` | `10800` | `18000` | max allowed video duration in **seconds**. |
+| `TUNNEL_LIFESPAN` | `90` | `120` | the duration for which tunnel info is stored in ram, **in seconds**. |
\* the higher the nice value, the lower the priority. [read more here](https://en.wikipedia.org/wiki/Nice_(Unix)).
diff --git a/web/i18n/en/about/credits.md b/web/i18n/en/about/credits.md
index ddfa1fc6..6c001f58 100644
--- a/web/i18n/en/about/credits.md
+++ b/web/i18n/en/about/credits.md
@@ -3,6 +3,7 @@
import { t } from "$lib/i18n/translations";
import SectionHeading from "$components/misc/SectionHeading.svelte";
+ import BetaTesters from "$components/misc/BetaTesters.svelte";