From 61bf54de95ea36ae977dea5a180b02b2de54a10e Mon Sep 17 00:00:00 2001 From: knotteye Date: Tue, 22 Oct 2019 18:24:10 -0500 Subject: [PATCH] Add cleanup script to fix any problems arising from restarting the server mid-stream. This may cause further problems if the user manages to reconnect before the cleanup script has finished, but the server *shouldn't* start listening until after the script is done. Increment version I guess, I don't really know how versioning works. --- package-lock.json | 10 +++++++++- package.json | 3 ++- src/cleanup.ts | 23 +++++++++++++++++++++++ src/controller.ts | 6 ++++-- 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/cleanup.ts diff --git a/package-lock.json b/package-lock.json index a6ac8a9..cd52619 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "satyr", - "version": "0.2.0", + "version": "0.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2370,6 +2370,14 @@ "readable-stream": "^2.0.2" } }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", diff --git a/package.json b/package.json index b4a9377..c1fb672 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "satyr", - "version": "0.3.0", + "version": "0.3.1", "description": "A livestreaming server.", "license": "AGPL-3.0", "author": "knotteye", @@ -24,6 +24,7 @@ "mysql": "^2.17.1", "node-media-server": ">=2.1.3 <3.0.0", "nunjucks": "^3.2.0", + "recursive-readdir": "^2.2.2", "socket.io": "^2.3.0", "toml": "^3.0.0" }, diff --git a/src/cleanup.ts b/src/cleanup.ts new file mode 100644 index 0000000..7fe1fa4 --- /dev/null +++ b/src/cleanup.ts @@ -0,0 +1,23 @@ +import * as db from "./database"; +import * as read from "recursive-readdir"; +import * as fs from "fs"; + +async function init(siteDir: string) { + //If satyr is restarted in the middle of a stream + //it causes problems + //Live flags in the database stay live + await db.query('update user_meta set live=false'); + //and stray m3u8 files will play the last + //few seconds of a stream back + try { + var files = await read(siteDir+'/live', ['!*.m3u8']); + } + catch (error) {} + if(files === undefined || files.length == 0) return; + for(let i=0;i