This commit is contained in:
2026-09-12 21:55:40 +02:00
parent 53055ea5c6
commit 90860b9279
24 changed files with 1958 additions and 45 deletions
+25 -4
View File
@@ -11,6 +11,7 @@ import { parseMultipart, collectBody } from "./inc/multipart.mjs";
import f0cklib from "./inc/routeinc/f0cklib.mjs";
import { calculateExpiresAt } from "./inc/routes/apiv2/upload.mjs";
import { addPrivateItem } from "./inc/private_items.mjs";
import { resolveAuditIP, logAnonActivity } from "./inc/anon_auth.mjs";
// Derive archive MIME types from cfg.mimes — any application/* that isn't swf or pdf.
@@ -344,6 +345,7 @@ export const handleUpload = async (req, res, self) => {
const ytUrl = `https://www.youtube.com/watch?v=${videoId}`;
const filename = `yt:${videoId}`;
const auditIp = resolveAuditIP(req);
const [{ id: itemid }] = await db`
insert into items ${db({
src: ytUrl,
@@ -361,11 +363,20 @@ export const handleUpload = async (req, res, self) => {
title: title,
visibility: targetVisibility,
slug: itemSlug,
expires_at: targetExpiresAt
}, 'src', 'dest', 'mime', 'size', 'checksum', 'phash', 'username', 'userchannel', 'usernetwork', 'stamp', 'active', 'is_oc', 'title', 'visibility', 'slug', 'expires_at')}
expires_at: targetExpiresAt,
uploader_ip: auditIp
}, 'src', 'dest', 'mime', 'size', 'checksum', 'phash', 'username', 'userchannel', 'usernetwork', 'stamp', 'active', 'is_oc', 'title', 'visibility', 'slug', 'expires_at', 'uploader_ip')}
RETURNING id
`;
if (req.session?.is_anon) {
await logAnonActivity(req, {
action: 'upload',
targetId: itemid,
details: { type: 'youtube', videoId, slug: itemSlug }
});
}
if (targetVisibility === 2) {
addPrivateItem(itemid, filename, req.session.user);
}
@@ -741,6 +752,7 @@ export const handleUpload = async (req, res, self) => {
} catch (e) {}
}
const auditIp = resolveAuditIP(req);
await db`
insert into items ${db({
src: inputUrl || '',
@@ -761,12 +773,21 @@ export const handleUpload = async (req, res, self) => {
height: itemHeight,
visibility: targetVisibility,
slug: itemSlug,
expires_at: targetExpiresAt
}, 'src', 'dest', 'mime', 'size', 'checksum', 'phash', 'username', 'userchannel', 'usernetwork', 'stamp', 'active', 'is_oc', 'original_filename', 'title', 'width', 'height', 'visibility', 'slug', 'expires_at')}
expires_at: targetExpiresAt,
uploader_ip: auditIp
}, 'src', 'dest', 'mime', 'size', 'checksum', 'phash', 'username', 'userchannel', 'usernetwork', 'stamp', 'active', 'is_oc', 'original_filename', 'title', 'width', 'height', 'visibility', 'slug', 'expires_at', 'uploader_ip')}
`;
const itemid = await queue.getItemID(filename);
if (req.session?.is_anon) {
await logAnonActivity(req, {
action: 'upload',
targetId: itemid,
details: { filename, mime: actualMime, slug: itemSlug }
});
}
if (targetVisibility === 2) {
addPrivateItem(itemid, filename, req.session.user);
}