Clean up rules.

This commit is contained in:
Will Hunt 2018-07-06 15:31:21 +01:00
parent 526459a9e0
commit 8b9fd7ddcb

View file

@ -131,26 +131,19 @@ function textForRoomNameEvent(ev) {
function textForServerACLEvent(ev) { function textForServerACLEvent(ev) {
var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();
let prev = ev.getPrevContent(); let prev_content = ev.getPrevContent();
let current = ev.getContent(); let current = ev.getContent();
let text = ""; let text = "";
let changes = []; let changes = [];
if (prev == undefined) { let prev = {
text = `${senderDisplayName} set server ACLs for this room:`; deny: Array.isArray(prev_content.deny) ? prev_content.deny : [],
prev = { allow: Array.isArray(prev_content.allow) ? prev_content.allow : [],
deny: [], allow_ip_literals: !(prev_content.allow_ip_literals === false)
allow: [], }
allow_ip_literals: true if (prev.deny.length === 0 && prev.allow.length === 0) {
} text = `${senderDisplayName} set server ACLs for this room: `;
} else { } else {
text = `${senderDisplayName} changed the server ACLs for this room:` text = `${senderDisplayName} changed the server ACLs for this room: `;
if (!Array.isArray(prev.allow)){
prev.allow = []
}
if (!Array.isArray(prev.deny)){
prev.deny = []
}
} }
if (!Array.isArray(current.allow)){ if (!Array.isArray(current.allow)){
@ -161,30 +154,36 @@ function textForServerACLEvent(ev) {
current.deny = [] current.deny = []
} }
const bannedServers = current.deny.filter((bannedSrv) => !prev.deny.includes(bannedSrv)); const bannedServers = current.deny.filter((srv) => typeof(srv) === 'string' && !prev.deny.includes(srv));
const unbannedServers = prev.deny.filter((bannedSrv) => !current.deny.includes(bannedSrv)); const unbannedServers = prev.deny.filter((srv) => typeof(srv) === 'string' && !current.deny.includes(srv));
const allowedServers = current.allow.filter((bannedSrv) => !prev.allow.includes(bannedSrv)); const allowedServers = current.allow.filter((srv) => typeof(srv) === 'string' && !prev.allow.includes(srv));
const unallowedServers = prev.allow.filter((bannedSrv) => !current.allow.includes(bannedSrv)); const unallowedServers = prev.allow.filter((srv) => typeof(srv) === 'string' && !current.allow.includes(srv));
console.log(bannedServers,unbannedServers,allowedServers,unallowedServers);
if (bannedServers.length > 0) { if (bannedServers.length > 0) {
changes.push(`Servers matching ${bannedServers.join(",")} are now banned`); changes.push(`Servers matching ${bannedServers.join(",")} are now banned.`);
} }
if (unbannedServers.length > 0) { if (unbannedServers.length > 0) {
changes.push(`Servers matching ${unbannedServers.join(",")} are no longer banned`); changes.push(`Servers matching ${unbannedServers.join(",")} were removed from the ban list.`);
} }
if (allowedServers.length > 0) { if (allowedServers.length > 0) {
changes.push(`Servers matching ${allowedServers.join(",")} are now allowed`); changes.push(`Servers matching ${allowedServers.join(",")} are now allowed.`);
} }
if (unallowedServers.length > 0) { if (unallowedServers.length > 0) {
changes.push(`Servers matching ${unallowedServers.join(",")} are no longer allowed`); changes.push(`Servers matching ${unallowedServers.join(",")} were removed from the allowed list.`);
} }
if (prev.allow_ip_literals !== current.allow_ip_literals) { if (prev.allow_ip_literals !== current.allow_ip_literals) {
const allowban = current.allow_ip_literals ? "allowed" : "banned"; const allowban = current.allow_ip_literals ? "allowed" : "banned";
changes.push(`Participating from a server using ip literals is now ${allowban}`); changes.push(`Participating from a server using an IP literal hostname is now ${allowban}.`);
}
if (current.allow.length === 0) {
changes = ["Everyone is banned! 🎉"];
} }
return text + changes.join("\n"); return text + changes.join("\n");