mirror of https://github.com/calzoneman/sync.git
Conditionally allow ASCII characters (for Xaekai)
This commit is contained in:
parent
7002874bbb
commit
91c24518c5
|
@ -116,8 +116,14 @@ ChatModule.prototype.handleChatMsg = function (user, data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Limit to 240 characters, disallow all ASCII control characters except tab (\t)
|
// Limit to 240 characters
|
||||||
data.msg = data.msg.substring(0, 240).replace(/[\x00-\x08\x0a-\x1f]+/g, " ");
|
data.msg = data.msg.substring(0, 240);
|
||||||
|
// If channel doesn't permit them, strip ASCII control characters
|
||||||
|
if (!this.channel.modules.options ||
|
||||||
|
!this.channel.modules.options.get("allow_ascii_control")) {
|
||||||
|
|
||||||
|
data.msg = data.msg.replace(/[\x00-\x1f]+/g, " ");
|
||||||
|
}
|
||||||
|
|
||||||
// Disallow blankposting
|
// Disallow blankposting
|
||||||
if (!data.msg.trim()) {
|
if (!data.msg.trim()) {
|
||||||
|
|
|
@ -6,24 +6,25 @@ var url = require("url");
|
||||||
function OptionsModule(channel) {
|
function OptionsModule(channel) {
|
||||||
ChannelModule.apply(this, arguments);
|
ChannelModule.apply(this, arguments);
|
||||||
this.opts = {
|
this.opts = {
|
||||||
allow_voteskip: true, // Allow users to voteskip
|
allow_voteskip: true, // Allow users to voteskip
|
||||||
voteskip_ratio: 0.5, // Ratio of skip votes:non-afk users needed to skip the video
|
voteskip_ratio: 0.5, // Ratio of skip votes:non-afk users needed to skip the video
|
||||||
afk_timeout: 600, // Number of seconds before a user is automatically marked afk
|
afk_timeout: 600, // Number of seconds before a user is automatically marked afk
|
||||||
pagetitle: this.channel.name, // Title of the browser tab
|
pagetitle: this.channel.name, // Title of the browser tab
|
||||||
maxlength: 0, // Maximum length (in seconds) of a video queued
|
maxlength: 0, // Maximum length (in seconds) of a video queued
|
||||||
externalcss: "", // Link to external stylesheet
|
externalcss: "", // Link to external stylesheet
|
||||||
externaljs: "", // Link to external script
|
externaljs: "", // Link to external script
|
||||||
chat_antiflood: false, // Throttle chat messages
|
chat_antiflood: false, // Throttle chat messages
|
||||||
chat_antiflood_params: {
|
chat_antiflood_params: {
|
||||||
burst: 4, // Number of messages to allow with no throttling
|
burst: 4, // Number of messages to allow with no throttling
|
||||||
sustained: 1, // Throttle rate (messages/second)
|
sustained: 1, // Throttle rate (messages/second)
|
||||||
cooldown: 4 // Number of seconds with no messages before burst is reset
|
cooldown: 4 // Number of seconds with no messages before burst is reset
|
||||||
},
|
},
|
||||||
show_public: false, // List the channel on the index page
|
show_public: false, // List the channel on the index page
|
||||||
enable_link_regex: true, // Use the built-in link filter
|
enable_link_regex: true, // Use the built-in link filter
|
||||||
password: false, // Channel password (false -> no password required for entry)
|
password: false, // Channel password (false -> no password required for entry)
|
||||||
allow_dupes: false, // Allow duplicate videos on the playlist
|
allow_dupes: false, // Allow duplicate videos on the playlist
|
||||||
torbanned: false // Block connections from Tor exit nodes
|
torbanned: false, // Block connections from Tor exit nodes
|
||||||
|
allow_ascii_control: false // Allow ASCII control characters (\x00-\x1f)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,6 +250,10 @@ OptionsModule.prototype.handleSetOptions = function (user, data) {
|
||||||
this.opts.torbanned = Boolean(data.torbanned);
|
this.opts.torbanned = Boolean(data.torbanned);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ("allow_ascii_control" in data && user.account.effectiveRank >= 3) {
|
||||||
|
this.opts.allow_ascii_control = Boolean(data.allow_ascii_control);
|
||||||
|
}
|
||||||
|
|
||||||
this.channel.logger.log("[mod] " + user.getName() + " updated channel options");
|
this.channel.logger.log("[mod] " + user.getName() + " updated channel options");
|
||||||
this.sendOpts(this.channel.users);
|
this.sendOpts(this.channel.users);
|
||||||
};
|
};
|
||||||
|
|
|
@ -76,6 +76,7 @@ mixin adminoptions
|
||||||
mixin textbox-auto("cs-externaljs", "External Javascript", "Script URL")
|
mixin textbox-auto("cs-externaljs", "External Javascript", "Script URL")
|
||||||
mixin rcheckbox-auto("cs-show_public", "List channel publicly")
|
mixin rcheckbox-auto("cs-show_public", "List channel publicly")
|
||||||
mixin rcheckbox-auto("cs-torbanned", "Block connections from Tor")
|
mixin rcheckbox-auto("cs-torbanned", "Block connections from Tor")
|
||||||
|
mixin rcheckbox-auto("cs-allow_ascii_control", "Allow ASCII control characters (e.g. newlines)")
|
||||||
.form-group
|
.form-group
|
||||||
.col-sm-8.col-sm-offset-4
|
.col-sm-8.col-sm-offset-4
|
||||||
span.text-info Changes are automatically saved.
|
span.text-info Changes are automatically saved.
|
||||||
|
|
|
@ -865,6 +865,7 @@ function handleModPermissions() {
|
||||||
$("#cs-voteskip_ratio").val(CHANNEL.opts.voteskip_ratio);
|
$("#cs-voteskip_ratio").val(CHANNEL.opts.voteskip_ratio);
|
||||||
$("#cs-allow_dupes").val(CHANNEL.opts.allow_dupes);
|
$("#cs-allow_dupes").val(CHANNEL.opts.allow_dupes);
|
||||||
$("#cs-torbanned").val(CHANNEL.opts.torbanned);
|
$("#cs-torbanned").val(CHANNEL.opts.torbanned);
|
||||||
|
$("#cs-allow_ascii_control").val(CHANNEL.opts.allow_ascii_control);
|
||||||
(function() {
|
(function() {
|
||||||
if(typeof CHANNEL.opts.maxlength != "number") {
|
if(typeof CHANNEL.opts.maxlength != "number") {
|
||||||
$("#cs-maxlength").val("");
|
$("#cs-maxlength").val("");
|
||||||
|
|
Loading…
Reference in New Issue