diff --git a/src/router/html.ts b/src/router/html.ts
index 5d97a63..97cc911 100644
--- a/src/router/html.ts
+++ b/src/router/html.ts
@@ -55,7 +55,12 @@ app.get('/save', async ({ query: { url }, set, headers, error, request, redirect
}))
})
-app.get('/savechannel', async ({ query: { url }, set, headers, error }) => {
+app.get('/savechannel', async ({ query: { url }, set, headers, error, request, redirect }) => {
+ if (headers.host?.split(':')[0] !== 'preservetube.com') {
+ const parsedUrl = new URL(request.url)
+ return redirect(`https://preservetube.com${parsedUrl.pathname}${parsedUrl.search}`)
+ }
+
if (!url) return error(400, 'No url provided.')
const ranges = await checkIpRanges(headers['cf-connecting-ip'] || headers['x-forwarded-for'] || '')
diff --git a/src/router/websocket.ts b/src/router/websocket.ts
index d3c35d4..2390ccd 100644
--- a/src/router/websocket.ts
+++ b/src/router/websocket.ts
@@ -48,7 +48,7 @@ const cleanup = async (ws: any, videoId: string) => {
};
const handleUpload = async (ws: any, videoId: string, isChannel: boolean = false) => {
- // the pattern of files that have finished downloading is [videoid].mp4, but some extensions are also possible due to
+ // the pattern of files that have finished downloading is [videoid].mp4, but some extensions are also possible due to
// current youtube changes, so we need to make sure the other extensions are also covered
let filePath = fs.readdirSync('./videos/').find(f => f.includes(`${videoId}.`))
if (!filePath) {
@@ -101,9 +101,9 @@ app.ws('/save', {
open: async (ws) => {
const range = await checkIpRanges(ws.data.headers['x-forwarded-for'] || '')
if (range.list != 'cloudflare') return sendError(ws, 'There\'s something wrong with your connection.')
-
+
const blacklistCheck = await checkIpRanges(ws.data.headers['cf-connecting-ip']!)
- if (blacklistCheck.blocked) return sendError(ws, `Your network is flagged as malicious.`)
+ if (blacklistCheck.blocked || ws.data.headers['cf-ipcountry'] == 'T1') return sendError(ws, `Your network is flagged as malicious.`)
console.log(`${ws.id} - ${ws.data.path} - ${JSON.stringify(ws.data.query)}`)
@@ -137,7 +137,7 @@ app.ws('/save', {
}
},
message: async (ws, message) => {
- if (message == 'alive') return
+ if (message == 'alive') return
const videoId = videoIds[ws.id];
if (!videoId) return sendError(ws, 'No video ID associated with this session.');
@@ -159,10 +159,10 @@ app.ws('/save', {
return sendError(ws, 'Unable to retrieve video info from YouTube. Please try again later.')
}
- const isSlop = await parseSlop(videoId, data.videoDetails.title,
- (data.microformat.playerMicroformatRenderer.description?.simpleText || '').replaceAll('\n', '
'),
+ const isSlop = await parseSlop(videoId, data.videoDetails.title,
+ (data.microformat.playerMicroformatRenderer.description?.simpleText || '').replaceAll('\n', '
'),
data.videoDetails.channelId)
-
+
if (isSlop) {
sendError(ws, 'Filters can always be wrong. Is the rating wrong? Email me at admin@preservetube.com
', false);
sendError(ws, '
Read more about which videos aren\'t suitable on our FAQ page.', false)
@@ -214,7 +214,7 @@ app.ws('/savechannel', {
if (range.list != 'cloudflare') return sendError(ws, 'There\'s something wrong with your connection.')
const blacklistCheck = await checkIpRanges(ws.data.headers['cf-connecting-ip']!)
- if (blacklistCheck.blocked) return sendError(ws, `Your network is flagged as malicious.`)
+ if (blacklistCheck.blocked || ws.data.headers['cf-ipcountry'] == 'T1') return sendError(ws, `Your network is flagged as malicious.`)
console.log(`${ws.id} - ${ws.data.path} - ${JSON.stringify(ws.data.query)}`)
@@ -227,7 +227,7 @@ app.ws('/savechannel', {
videoIds[ws.id] = `captcha-${channelId}`;
},
message: async (ws, message) => {
- if (message == 'alive') return
+ if (message == 'alive') return
const status = videoIds[ws.id];
if (!status || !status.startsWith('captcha-')) return sendError(ws, 'No channel associated with this session.');
@@ -252,7 +252,7 @@ app.ws('/savechannel', {
for (const video of videos.slice(0, 5)) {
if (!video || (await redis.get(saveKey(video.video_id))) || (await redis.get(`blacklist:${video.video_id}`))) continue;
-
+
const already = await db.selectFrom('videos')
.select('id')
.where('id', '=', video.video_id)
@@ -271,9 +271,9 @@ app.ws('/savechannel', {
console.log(`saving (${subjects.map(subject => Bun.hash(subject).toString()).join(',')}) - ${ws.data.path} - ${video.video_id}`)
- const isSlop = await parseSlop(video.video_id, video.title.text,
+ const isSlop = await parseSlop(video.video_id, video.title.text,
video.description_snippet?.text || '', channelId)
-
+
if (isSlop) {
sendError(ws, 'Filters can always be wrong. Is the rating wrong? Email me at admin@preservetube.com
', false);
sendError(ws, '
Read more about which videos aren\'t suitable on our FAQ page.', false)