feat: Log user ips (#8872)
* wip * store ip and headers * Update admin-file.vue * require admin for view ip/headers * IP (recent) 消した * admin必須 * opt in * clean ips periodically * respect logging setting in drive/files/create
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import { URL } from 'node:url';
|
||||
import { addFile } from './add-file.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
import { driveLogger } from './logger.js';
|
||||
import { createTemp } from '@/misc/create-temp.js';
|
||||
import { downloadUrl } from '@/misc/download-url.js';
|
||||
import { DriveFolder } from '@/models/entities/drive-folder.js';
|
||||
import { DriveFile } from '@/models/entities/drive-file.js';
|
||||
import { DriveFiles } from '@/models/index.js';
|
||||
import { driveLogger } from './logger.js';
|
||||
import { addFile } from './add-file.js';
|
||||
|
||||
const logger = driveLogger.createSubLogger('downloader');
|
||||
|
||||
@@ -19,6 +19,8 @@ type Args = {
|
||||
force?: boolean;
|
||||
isLink?: boolean;
|
||||
comment?: string | null;
|
||||
requestIp?: string | null;
|
||||
requestHeaders?: Record<string, string> | null;
|
||||
};
|
||||
|
||||
export async function uploadFromUrl({
|
||||
@@ -30,6 +32,8 @@ export async function uploadFromUrl({
|
||||
force = false,
|
||||
isLink = false,
|
||||
comment = null,
|
||||
requestIp = null,
|
||||
requestHeaders = null,
|
||||
}: Args): Promise<DriveFile> {
|
||||
let name = new URL(url).pathname.split('/').pop() || null;
|
||||
if (name == null || !DriveFiles.validateFileName(name)) {
|
||||
@@ -49,7 +53,7 @@ export async function uploadFromUrl({
|
||||
// write content at URL to temp file
|
||||
await downloadUrl(url, path);
|
||||
|
||||
const driveFile = await addFile({ user, path, name, comment, folderId, force, isLink, url, uri, sensitive });
|
||||
const driveFile = await addFile({ user, path, name, comment, folderId, force, isLink, url, uri, sensitive, requestIp, requestHeaders });
|
||||
logger.succ(`Got: ${driveFile.id}`);
|
||||
return driveFile!;
|
||||
} catch (e) {
|
||||
|
Reference in New Issue
Block a user