repo: merge new commits from main into develop

This commit is contained in:
wukko 2024-09-23 20:27:32 +06:00
commit 2a42ed38b6
No known key found for this signature in database
GPG key ID: 3E30B3F26C7B4AA2
6 changed files with 37 additions and 22 deletions

View file

@ -106,6 +106,16 @@ export const runAPI = (express, app, __dirname) => {
app.post('/', apiLimiter); app.post('/', apiLimiter);
app.use('/tunnel', apiLimiterStream); app.use('/tunnel', apiLimiterStream);
app.post('/', (req, res, next) => {
if (!acceptRegex.test(req.header('Accept'))) {
return fail(res, "error.api.header.accept");
}
if (!acceptRegex.test(req.header('Content-Type'))) {
return fail(res, "error.api.header.content_type");
}
next();
});
app.post('/', (req, res, next) => { app.post('/', (req, res, next) => {
if (!env.sessionEnabled) { if (!env.sessionEnabled) {
return next(); return next();
@ -129,14 +139,6 @@ export const runAPI = (express, app, __dirname) => {
return fail(res, "error.api.auth.jwt.invalid"); return fail(res, "error.api.auth.jwt.invalid");
} }
if (!acceptRegex.test(req.header('Accept'))) {
return fail(res, "error.api.header.accept");
}
if (!acceptRegex.test(req.header('Content-Type'))) {
return fail(res, "error.api.header.content_type");
}
req.authorized = true; req.authorized = true;
} catch { } catch {
return fail(res, "error.api.generic"); return fail(res, "error.api.generic");

View file

@ -65,3 +65,14 @@ export function merge(a, b) {
return a; return a;
} }
export function splitFilenameExtension(filename) {
const parts = filename.split('.');
const ext = parts.pop();
if (!parts.length) {
return [ ext, "" ]
} else {
return [ parts.join('.'), ext ]
}
}

View file

@ -3,6 +3,7 @@ import createFilename from "./create-filename.js";
import { createResponse } from "./request.js"; import { createResponse } from "./request.js";
import { audioIgnore } from "./service-config.js"; import { audioIgnore } from "./service-config.js";
import { createStream } from "../stream/manage.js"; import { createStream } from "../stream/manage.js";
import { splitFilenameExtension } from "../misc/utils.js";
export default function({ r, host, audioFormat, isAudioOnly, isAudioMuted, disableMetadata, filenameStyle, twitterGif, requestIP, audioBitrate, alwaysProxy }) { export default function({ r, host, audioFormat, isAudioOnly, isAudioMuted, disableMetadata, filenameStyle, twitterGif, requestIP, audioBitrate, alwaysProxy }) {
let action, let action,
@ -32,10 +33,11 @@ export default function({ r, host, audioFormat, isAudioOnly, isAudioMuted, disab
} }
if (action === "muteVideo" && isAudioMuted && !r.filenameAttributes) { if (action === "muteVideo" && isAudioMuted && !r.filenameAttributes) {
const parts = r.filename.split("."); const [ name, ext ] = splitFilenameExtension(r.filename);
const ext = parts.pop(); defaultParams.filename = `${name}_mute.${ext}`;
} else if (action === "gif") {
defaultParams.filename = `${parts.join(".")}_mute.${ext}`; const [ name ] = splitFilenameExtension(r.filename);
defaultParams.filename = `${name}.gif`;
} }
switch (action) { switch (action) {

View file

@ -176,7 +176,7 @@ export const services = {
Object.values(services).forEach(service => { Object.values(services).forEach(service => {
service.patterns = service.patterns.map( service.patterns = service.patterns.map(
pattern => new UrlPattern(pattern, { pattern => new UrlPattern(pattern, {
segmentValueCharset: UrlPattern.defaultOptions.segmentValueCharset + '@\\.' segmentValueCharset: UrlPattern.defaultOptions.segmentValueCharset + '@\\.:'
}) })
) )
}) })

View file

@ -291,7 +291,7 @@ const convertGif = (streamInfo, res) => {
const [,,, muxOutput] = process.stdio; const [,,, muxOutput] = process.stdio;
res.setHeader('Connection', 'keep-alive'); res.setHeader('Connection', 'keep-alive');
res.setHeader('Content-Disposition', contentDisposition(streamInfo.filename.split('.')[0] + ".gif")); res.setHeader('Content-Disposition', contentDisposition(streamInfo.filename));
pipe(muxOutput, res, shutdown); pipe(muxOutput, res, shutdown);

View file

@ -1401,7 +1401,7 @@
"bsky": [ "bsky": [
{ {
"name": "horizontal video", "name": "horizontal video",
"url": "https://bsky.app/profile/haileyok.com/post/3l3giwtwp222m", "url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3giwtwp222m",
"params": {}, "params": {},
"expected": { "expected": {
"code": 200, "code": 200,
@ -1410,7 +1410,7 @@
}, },
{ {
"name": "horizontal video, recordWithMedia", "name": "horizontal video, recordWithMedia",
"url": "https://bsky.app/profile/juicysteak117.gay/post/3l3wonhk23g2i", "url": "https://bsky.app/profile/did:plc:ywbm3iywnhzep3ckt6efhoh7/post/3l3wonhk23g2i",
"params": {}, "params": {},
"expected": { "expected": {
"code": 200, "code": 200,
@ -1419,7 +1419,7 @@
}, },
{ {
"name": "vertical video", "name": "vertical video",
"url": "https://bsky.app/profile/haileyok.com/post/3l3jhpomhjk2m", "url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3jhpomhjk2m",
"params": {}, "params": {},
"expected": { "expected": {
"code": 200, "code": 200,
@ -1428,7 +1428,7 @@
}, },
{ {
"name": "vertical video (muted)", "name": "vertical video (muted)",
"url": "https://bsky.app/profile/haileyok.com/post/3l3jhpomhjk2m", "url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3jhpomhjk2m",
"params": { "params": {
"downloadMode": "mute" "downloadMode": "mute"
}, },
@ -1439,7 +1439,7 @@
}, },
{ {
"name": "vertical video (audio)", "name": "vertical video (audio)",
"url": "https://bsky.app/profile/haileyok.com/post/3l3jhpomhjk2m", "url": "https://bsky.app/profile/did:plc:oisofpd7lj26yvgiivf3lxsi/post/3l3jhpomhjk2m",
"params": { "params": {
"downloadMode": "audio" "downloadMode": "audio"
}, },
@ -1450,7 +1450,7 @@
}, },
{ {
"name": "single image", "name": "single image",
"url": "https://bsky.app/profile/thehardyboycats.bsky.social/post/3l33flpoygt26", "url": "https://bsky.app/profile/did:plc:k4a7d65fcyevbrnntjxh57go/post/3l33flpoygt26",
"params": {}, "params": {},
"expected": { "expected": {
"code": 200, "code": 200,
@ -1459,7 +1459,7 @@
}, },
{ {
"name": "several images", "name": "several images",
"url": "https://bsky.app/profile/tracey-m.bsky.social/post/3kzxuxbiul626", "url": "https://bsky.app/profile/did:plc:rai7s6su2sy22ss7skouedl7/post/3kzxuxbiul626",
"params": {}, "params": {},
"expected": { "expected": {
"code": 200, "code": 200,
@ -1476,4 +1476,4 @@
} }
} }
] ]
} }