Added schedule airtimes, fixed layout issues, locked down fore,st(guest disable), contrast fixes (css)

This commit is contained in:
rainbow napkin 2021-12-26 05:26:59 +00:00
parent b0570f2c15
commit 55a9fcf465
20 changed files with 279 additions and 1238 deletions

View file

@ -15,14 +15,15 @@ AnonymousCheck.prototype.onUserPreJoin = function (user, data, cb) {
return cb("User disconnected", ChannelModule.DENY);
}
if(anonymousBanned && user.isAnonymous()) {
//if(anonymousBanned && user.isAnonymous()) {
if(anonymousBanned && user.account.globalRank <= 0) {
user.socket.on("disconnect", function () {
if (!user.is(Flags.U_IN_CHANNEL)) {
cb("User disconnected", ChannelModule.DENY);
}
});
user.socket.emit("errorMsg", { msg : "This channel has blocked anonymous users. Please provide a user name to join."});
user.socket.emit("errorMsg", { msg : "Welcome to ourfore.st! Register to start chatting/streaming!"});
user.waitFlag(Flags.U_LOGGED_IN, function () {
cb(null, ChannelModule.PASSTHROUGH);
});

View file

@ -37,7 +37,8 @@ const TYPE_SET_TEMP = {
const TYPE_MOVE_MEDIA = {
from: "number",
after: "string,number"
after: "string,number",
sTimes: [[],[]]
};
const TYPE_ASSIGN_LEADER = {
@ -90,6 +91,7 @@ function PlaylistModule(_channel) {
this.meta = {
count: 0,
rawTime: 0,
sTimes: [[],[]],
time: util.formatTime(0)
};
this.current = null;
@ -641,6 +643,10 @@ PlaylistModule.prototype.handleMoveMedia = function (user, data) {
const self = this;
self.channel.refCounter.ref("PlaylistModule::handleMoveMedia");
self.semaphore.queue(function (lock) {
var sTime = self.items.find(data.from).media.startTime;
var sDur = self.items.find(data.from).media.seconds;
var sIndx = self.items.getIndex(data.from);
var tempST = 0;
if (!self.items.remove(data.from)) {
self.channel.refCounter.unref("PlaylistModule::handleMoveMedia");
return lock.release();
@ -657,12 +663,33 @@ PlaylistModule.prototype.handleMoveMedia = function (user, data) {
return lock.release();
}
} else {
if (!self.items.insertAfter(from, data.after)) {
self.channel.refCounter.unref("PlaylistModule::handleMoveMedia");
return lock.release();
}
}
self.items.forEach(function (item){//iterate items
self.items.find(item.uid).media.startTime = tempST;//current item start time = tempST
tempST += item.media.seconds;
});
var sTemp = [[],[]];
self.items.forEach(function (item){
sTemp[0].push(item.uid);
sTemp[1].push(item.media.startTime);
});
self.channel.modules.playlist.meta.sTimes = sTemp;
data.sTimes = sTemp;
self.channel.broadcastAll("moveVideo", data);
self.channel.logger.log("[playlist] " + user.getName() + " moved " +
@ -886,12 +913,30 @@ PlaylistModule.prototype._delete = function (uid) {
return false;
}
var next = item.next || this.items.first;
var indx = this.items.getIndex(uid) - 1;
var success = self.items.remove(uid);
if (success) {
self.meta.count--;
self.meta.rawTime -= item.media.seconds;
//set startTime for items after deleted item
self.items.forEach(function (itm){//iterate items
if(itm.media.startTime > item.media.startTime){//if cur item start time is moar than deleted items start time
itm.media.startTime -= item.media.seconds;//subtract deleted item's duration from current item's start time
}
});
var sTemp = [[],[]];
self.items.forEach(function (item){
sTemp[0].push(item.uid);
sTemp[1].push(item.media.startTime);
});
self.meta.sTimes = sTemp;
self.meta.time = util.formatTime(self.meta.rawTime);
self.channel.users.forEach(function (u) {
if (perms.canSeePlaylist(u)) {
@ -1007,19 +1052,37 @@ PlaylistModule.prototype._addItem = function (media, data, user, cb) {
}
var success = function () {
var packet = {
item: item.pack(),
after: item.prev ? item.prev.uid : "prepend"
};
//var packet = {
// item: item.pack(),
// after: item.prev ? item.prev.uid : "prepend"
//};
self.meta.count++;
media.startTime = self.meta.rawTime;
self.meta.rawTime += media.seconds;
self.meta.time = util.formatTime(self.meta.rawTime);
var sTemp = [[],[]];
self.items.forEach(function (item){
sTemp[0].push(item.uid);
sTemp[1].push(item.media.startTime);
});
self.meta.sTimes = sTemp;
var m = item.media;
self.channel.logger.log("[playlist] " + (data.queueby || "(anonymous)") +
" added " + m.title + " (" + m.type + ":" + m.id + ")");
var perms = self.channel.modules.permissions;
var packet = {
item: item.pack(),
after: item.prev ? item.prev.uid : "prepend"
};
self.channel.users.forEach(function (u) {
if (perms.canSeePlaylist(u)) {
u.socket.emit("queue", packet);

View file

@ -10,6 +10,7 @@ function Media(id, title, seconds, type, meta) {
this.seconds = seconds === "--:--" ? 0 : parseInt(seconds);
this.duration = util.formatTime(seconds);
this.startTime = 0;
this.type = type;
this.meta = meta;
this.currentTime = 0;
@ -30,6 +31,7 @@ Media.prototype = {
title: this.title,
seconds: this.seconds,
duration: this.duration,
startTime: this.startTime,
type: this.type,
meta: {
restricted: this.meta.restricted,

View file

@ -178,4 +178,28 @@ ULList.prototype.findAll = function(fn) {
return result;
};
//RAINBOW WUZ ERE'
/* return index of item if it exists in the list by UID */
ULList.prototype.getIndex = function(uid) {
var i = 0;//index
// Can't possibly find it in an empty list
if(this.first === null)
return false;
var item = this.first;
var iter = this.first;
while(iter !== null && item.uid != uid) {
i++;//add index
item = iter;
iter = iter.next;
}
if(item && item.uid == uid)
return i;//return index
return false;
};
module.exports = ULList;

View file

@ -149,7 +149,8 @@ User.prototype.handleLogin = function handleLogin(data) {
}
if (!pw) {
this.guestLogin(name);
//this.guestLogin(name);disable guest logins
console.log("Guest login attempt! user: " + data.name + " ip: " + this.realip);
} else {
this.login(name, pw);
}

7
src/web/routes/about.js Normal file
View file

@ -0,0 +1,7 @@
import { sendPug } from '../pug';
export default function initialize(app) {
app.get('/about', (req, res) => {
return sendPug(res, 'about');
});
}

View file

@ -200,6 +200,7 @@ module.exports = {
require('./routes/contact')(app, webConfig);
require('./auth').init(app, captchaConfig, captchaController);
require('./account').init(app, globalMessageBus, emailConfig, emailController, captchaConfig);
require('./routes/about')(app);
require('./routes/account/delete-account')(
app,
csrf.verify,