mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-31 03:48:37 +03:00
4
.gitignore
vendored
4
.gitignore
vendored
@@ -89,9 +89,13 @@ typings/
|
|||||||
|
|
||||||
# Databases
|
# Databases
|
||||||
databases/sponsorTimes.db
|
databases/sponsorTimes.db
|
||||||
|
databases/sponsorTimes.db-shm
|
||||||
|
databases/sponsorTimes.db-wal
|
||||||
databases/private.db
|
databases/private.db
|
||||||
databases/sponsorTimesReal.db
|
databases/sponsorTimesReal.db
|
||||||
test/databases/sponsorTimes.db
|
test/databases/sponsorTimes.db
|
||||||
|
test/databases/sponsorTimes.db-shm
|
||||||
|
test/databases/sponsorTimes.db-wal
|
||||||
test/databases/private.db
|
test/databases/private.db
|
||||||
|
|
||||||
# Config files
|
# Config files
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
// Remove all comments from the config when using it!
|
||||||
|
|
||||||
"port": 80,
|
"port": 80,
|
||||||
"globalSalt": "[global salt (pepper) that is added to every ip before hashing to make it even harder for someone to decode the ip]",
|
"globalSalt": "[global salt (pepper) that is added to every ip before hashing to make it even harder for someone to decode the ip]",
|
||||||
"adminUserID": "[the hashed id of the user who can perform admin actions]",
|
"adminUserID": "[the hashed id of the user who can perform admin actions]",
|
||||||
@@ -8,6 +10,9 @@
|
|||||||
"behindProxy": true,
|
"behindProxy": true,
|
||||||
"db": "./databases/sponsorTimes.db",
|
"db": "./databases/sponsorTimes.db",
|
||||||
"privateDB": "./databases/private.db",
|
"privateDB": "./databases/private.db",
|
||||||
|
"createDatabaseIfNotExist": true, //This will run on startup every time (unless readOnly is true) - so ensure "create table if not exists" is used in the schema
|
||||||
|
"dbSchema": "./databases/_sponsorTimes.db.sql",
|
||||||
|
"privateDBSchema": "./databases/_private.db.sql",
|
||||||
"mode": "development",
|
"mode": "development",
|
||||||
"readOnly": false
|
"readOnly": false
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,8 @@ var Sqlite3 = require('better-sqlite3');
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
let options = {
|
let options = {
|
||||||
readonly: config.readOnly
|
readonly: config.readOnly,
|
||||||
|
fileMustExist: !config.createDatabaseIfNotExist
|
||||||
};
|
};
|
||||||
|
|
||||||
var db = new Sqlite3(config.db, options);
|
var db = new Sqlite3(config.db, options);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
var db = require('../databases/databases.js').db;
|
var db = require('../databases/databases.js').db;
|
||||||
|
var getHash = require('../utils/getHash.js');
|
||||||
|
|
||||||
module.exports = function getSavedTimeForUser (req, res) {
|
module.exports = function getSavedTimeForUser (req, res) {
|
||||||
let userID = req.query.userID;
|
let userID = req.query.userID;
|
||||||
|
|||||||
@@ -168,6 +168,16 @@ module.exports = async function submitSponsorTimes(req, res) {
|
|||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
}, (err, res) => {
|
||||||
|
if (err) {
|
||||||
|
console.log("Failed to send first time submission Discord hook.");
|
||||||
|
console.log(JSON.stringify(err));
|
||||||
|
console.log("\n");
|
||||||
|
} else if (res && res.statusCode >= 400) {
|
||||||
|
console.log("Error sending first time submission Discord hook");
|
||||||
|
console.log(JSON.stringify(res));
|
||||||
|
console.log("\n");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,6 +119,16 @@ module.exports = async function voteOnSponsorTime(req, res) {
|
|||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
}, (err, res) => {
|
||||||
|
if (err) {
|
||||||
|
console.log("Failed to send reported submission Discord hook.");
|
||||||
|
console.log(JSON.stringify(err));
|
||||||
|
console.log("\n");
|
||||||
|
} else if (res && res.statusCode >= 400) {
|
||||||
|
console.log("Error sending reported submission Discord hook");
|
||||||
|
console.log(JSON.stringify(res));
|
||||||
|
console.log("\n");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
20
test/cases/getSavedTimeForUser.js
Normal file
20
test/cases/getSavedTimeForUser.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
var request = require('request');
|
||||||
|
var utils = require('../utils.js');
|
||||||
|
var db = require('../../src/databases/databases.js').db;
|
||||||
|
var getHash = require('../../src/utils/getHash.js');
|
||||||
|
|
||||||
|
describe('getSavedTimeForUser', () => {
|
||||||
|
before(() => {
|
||||||
|
db.exec("INSERT INTO sponsorTimes VALUES ('getSavedTimeForUser', 1, 11, 2, 'abc1239999', '"+getHash("testman")+"', 0, 50, 0)");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should be able to get a 200', (done) => {
|
||||||
|
request.get(utils.getbaseURL()
|
||||||
|
+ "/api/getSavedTimeForUser?userID=testman", null,
|
||||||
|
(err, res, body) => {
|
||||||
|
if (err) done(false);
|
||||||
|
else if (res.statusCode !== 200) done("non 200");
|
||||||
|
else done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -19,7 +19,8 @@ var utils = require('../utils.js');
|
|||||||
|
|
||||||
describe('getVideoSponsorTime', () => {
|
describe('getVideoSponsorTime', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest', 1, 11, 2, 'abc123', 'testman', 0, 50, 0)");
|
db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest', 1, 11, 2, 'uuid-0', 'testman', 0, 50, 0)");
|
||||||
|
db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest,test', 1, 11, 2, 'uuid-1', 'testman', 0, 50, 0)");
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to get a time', (done) => {
|
it('Should be able to get a time', (done) => {
|
||||||
@@ -32,6 +33,37 @@ describe('getVideoSponsorTime', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Should return 404 if no segment found', (done) => {
|
||||||
|
request.get(utils.getbaseURL()
|
||||||
|
+ "/api/getVideoSponsorTimes?videoID=notarealvideo", null,
|
||||||
|
(err, res, body) => {
|
||||||
|
if (err) done(false);
|
||||||
|
else if (res.statusCode !== 404) done("non 404 respone code: " + res.statusCode);
|
||||||
|
else done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('Should be possible to send unexpected query parameters', (done) => {
|
||||||
|
request.get(utils.getbaseURL()
|
||||||
|
+ "/api/getVideoSponsorTimes?videoID=testtesttest&fakeparam=hello", null,
|
||||||
|
(err, res, body) => {
|
||||||
|
if (err) done(false);
|
||||||
|
else if (res.statusCode !== 200) done("non 200");
|
||||||
|
else done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should be able send a comma in a query param', (done) => {
|
||||||
|
request.get(utils.getbaseURL()
|
||||||
|
+ "/api/getVideoSponsorTimes?videoID=testtesttest,test", null,
|
||||||
|
(err, res, body) => {
|
||||||
|
if (err) done(false);
|
||||||
|
else if (res.statusCode !== 200) done("non 200 response: " + res.statusCode);
|
||||||
|
else (JSON.parse(body).UUIDs[0] === 'uuid-1') && done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('Should be able to get the correct time', (done) => {
|
it('Should be able to get the correct time', (done) => {
|
||||||
request.get(utils.getbaseURL()
|
request.get(utils.getbaseURL()
|
||||||
+ "/api/getVideoSponsorTimes?videoID=testtesttest", null,
|
+ "/api/getVideoSponsorTimes?videoID=testtesttest", null,
|
||||||
@@ -42,7 +74,7 @@ describe('getVideoSponsorTime', () => {
|
|||||||
let parsedBody = JSON.parse(body);
|
let parsedBody = JSON.parse(body);
|
||||||
if (parsedBody.sponsorTimes[0][0] === 1
|
if (parsedBody.sponsorTimes[0][0] === 1
|
||||||
&& parsedBody.sponsorTimes[0][1] === 11
|
&& parsedBody.sponsorTimes[0][1] === 11
|
||||||
&& parsedBody.UUIDs[0] === 'abc123') {
|
&& parsedBody.UUIDs[0] === 'uuid-0') {
|
||||||
done();
|
done();
|
||||||
} else {
|
} else {
|
||||||
done("Wrong data was returned + " + parsedBody);
|
done("Wrong data was returned + " + parsedBody);
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ var app = express();
|
|||||||
var config = require('../src/config.js');
|
var config = require('../src/config.js');
|
||||||
|
|
||||||
app.post('/ReportChannelWebhook', (req, res) => {
|
app.post('/ReportChannelWebhook', (req, res) => {
|
||||||
|
console.log("report mock hit");
|
||||||
res.status(200);
|
res.status(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/FirstTimeSubmissionsWebhook', (req, res) => {
|
app.post('/FirstTimeSubmissionsWebhook', (req, res) => {
|
||||||
|
console.log("first time submisson mock hit");
|
||||||
res.status(200);
|
res.status(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user