Changeset 6c4ff7e in Klonkt for src/routes/audio.js
- Timestamp:
- 08/13/2026 11:39:57 PM (4 weeks ago)
- Branches:
- main
- Children:
- 9529d7b
- Parents:
- fbfd7a1
- File:
-
- 1 edited
-
src/routes/audio.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/audio.js
rfbfd7a1 r6c4ff7e 30 30 import db from '../config/database.js'; 31 31 import { recordPlay } from '../services/StatsService.js'; 32 import AP from '../services/ActivityPubService.js'; 32 33 33 34 const __dirname = path.dirname(fileURLToPath(import.meta.url)); … … 71 72 } 72 73 73 router.get('/stream/:filename', (req, res) => { 74 /** 75 * FEP-1580: de instantie waar dit account naartoe verhuisd is mag ALLE audio 76 * ophalen, ook wat niet fedi_open is. 77 * 78 * Zonder deze tak ziet de nieuwe Klonkt de tracklijst wel en krijgt hij de 79 * bestanden niet, en dan verhuis je een bibliotheek met alleen titels. Dat is 80 * precies de halve waarheid die deze hele ronde moest opruimen. 81 * 82 * Smal gehouden: een geldige handtekening, van precies de actor in moved_to, en 83 * alleen voor een bestand dat van DIE site is. moved_to komt er alleen te staan 84 * als de doel-actor ons in alsoKnownAs had, dus er heeft iemand met beheer aan 85 * beide kanten ja gezegd. 86 */ 87 async function isMoveTargetAudio(req, filename) { 88 if (!req.headers['signature'] || !filename) return false; 89 let rij; 90 try { 91 rij = db.prepare(`SELECT s.slug FROM audio_tracks t 92 JOIN media m ON t.media_id = m.id 93 JOIN sites s ON s.id = t.site_id 94 WHERE m.storage_path = ? OR m.storage_path LIKE ? LIMIT 1`) 95 .get(filename, `%${filename}`); 96 } catch { return false; } 97 if (!rij || !rij.slug) return false; 98 const v = await AP.verifyRequest(req).catch(() => null); 99 return !!(v && v.id && AP.isMoveTarget(rij.slug, v.id)); 100 } 101 102 router.get('/stream/:filename', async (req, res) => { 74 103 const { filename } = req.params; 75 104 76 if (!isAllowedAudioRequest(req, filename) ) {105 if (!isAllowedAudioRequest(req, filename) && !(await isMoveTargetAudio(req, filename))) { 77 106 return res.status(403).send('Direct access not allowed'); 78 107 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)