Skip to content

Commit d6789af

Browse files
authored
Add files via upload
1 parent 2fa7f62 commit d6789af

File tree

5 files changed

+593
-379
lines changed

5 files changed

+593
-379
lines changed

comms.html

Lines changed: 117 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,11 +1187,58 @@
11871187
}
11881188
}
11891189

1190-
function sanitize(string) {
1191-
var temp = document.createElement('div');
1192-
temp.textContent = string;
1193-
return temp.innerHTML;
1194-
}
1190+
function sanitize(string) {
1191+
var temp = document.createElement('div');
1192+
temp.textContent = string;
1193+
return temp.innerHTML;
1194+
}
1195+
1196+
function decodeHTML(value) {
1197+
if (value === null || value === undefined) {
1198+
return "";
1199+
}
1200+
var temp = document.createElement("textarea");
1201+
temp.innerHTML = value;
1202+
return temp.value;
1203+
}
1204+
1205+
function replaceURLs(message) {
1206+
if (message === undefined || message === null) {
1207+
return "";
1208+
}
1209+
var original = decodeHTML(String(message));
1210+
var urlRegex = /(((https?:\/\/)|(www\.))[^\s]+)/g;
1211+
var result = "";
1212+
var lastIndex = 0;
1213+
var match;
1214+
while ((match = urlRegex.exec(original)) !== null) {
1215+
result += sanitize(original.slice(lastIndex, match.index));
1216+
var url = match[0];
1217+
var trailing = "";
1218+
while (/[.,;!:\*\?)]$/.test(url)) {
1219+
trailing = url.slice(-1) + trailing;
1220+
url = url.slice(0, -1);
1221+
}
1222+
if (url) {
1223+
var hyperlink = url;
1224+
if (!/^https?:\/\//i.test(hyperlink)) {
1225+
hyperlink = "http://" + hyperlink;
1226+
}
1227+
var display = url.length > 35 ? url.substring(0, 35) + "..." : url;
1228+
result += '<a href="' + sanitize(hyperlink) + '" title="Click to open the link in a new tab" target="_blank" rel="noopener noreferrer">' + sanitize(display) + "</a>";
1229+
} else {
1230+
result += sanitize(match[0]);
1231+
}
1232+
if (trailing) {
1233+
result += sanitize(trailing);
1234+
}
1235+
lastIndex = match.index + match[0].length;
1236+
}
1237+
if (lastIndex < original.length) {
1238+
result += sanitize(original.slice(lastIndex));
1239+
}
1240+
return result;
1241+
}
11951242

11961243
function EnterButtonChat(event){
11971244
// Number 13 is the "Enter" key on the keyboard
@@ -1247,67 +1294,74 @@
12471294
return "Seconds ago";
12481295
}
12491296

1250-
function updateMessages(message = false){
1251-
if (message){
1252-
var time = timeSince(message.time);
1253-
var msg = document.createElement("div");
1254-
////// KEEP THIS IN /////////
1255-
console.log(message.msg); // Display Recieved messages for View-Only clients.
1256-
/////////////////////////////
1257-
var label = "";
1258-
if (message.label){
1259-
label = message.label;
1260-
}
1261-
1262-
if (message.type == "sent"){
1263-
msg.innerHTML = "<span class='chat_message chat_sent'>"+message.msg + " </span><i><small> <small>- "+time+"</small></small></i><span style='display:none'>"+label+"</span>";
1264-
msg.classList.add("outMessage");
1265-
} else if (message.type == "recv"){
1266-
msg.innerHTML = label+"<span class='chat_message chat_recv'>"+message.msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1267-
msg.classList.add("inMessage");
1268-
} else if (message.type == "action"){
1269-
msg.innerHTML = label+"<span class='chat_message chat_action'>"+message.msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1270-
msg.classList.add("actionMessage");
1271-
} else if (message.type == "alert"){
1272-
msg.innerHTML = "<span class='chat_message chat_alert'>"+message.msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1273-
msg.classList.add("inMessage");
1274-
} else {
1275-
msg.innerHTML = "<span class='chat_message chat_other'>"+message.msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1276-
msg.classList.add("inMessage");
1277-
}
1278-
document.getElementById("chatBody").appendChild(msg);
1279-
} else {
1280-
document.getElementById("chatBody").innerHTML = "";
1297+
function updateMessages(message = false){
1298+
if (message){
1299+
var time = timeSince(message.time);
1300+
var msg = document.createElement("div");
1301+
////// KEEP THIS IN /////////
1302+
console.log(message.msg); // Display Recieved messages for View-Only clients.
1303+
/////////////////////////////
1304+
var label = "";
1305+
if (message.label){
1306+
label = sanitize(decodeHTML(message.label));
1307+
}
1308+
var labelPrefix = label ? label + " " : "";
1309+
var safeMessage = replaceURLs(message.msg);
1310+
var safeTime = sanitize(time);
1311+
1312+
if (message.type == "sent"){
1313+
msg.innerHTML = "<span class='chat_message chat_sent'>"+safeMessage + " </span><i><small> <small>- "+safeTime+"</small></small></i><span style='display:none'>"+label+"</span>";
1314+
msg.classList.add("outMessage");
1315+
} else if (message.type == "recv"){
1316+
msg.innerHTML = labelPrefix+"<span class='chat_message chat_recv'>"+safeMessage + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1317+
msg.classList.add("inMessage");
1318+
} else if (message.type == "action"){
1319+
msg.innerHTML = labelPrefix+"<span class='chat_message chat_action'>"+safeMessage + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1320+
msg.classList.add("actionMessage");
1321+
} else if (message.type == "alert"){
1322+
msg.innerHTML = "<span class='chat_message chat_alert'>"+safeMessage + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1323+
msg.classList.add("inMessage");
1324+
} else {
1325+
msg.innerHTML = "<span class='chat_message chat_other'>"+safeMessage + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1326+
msg.classList.add("inMessage");
1327+
}
1328+
document.getElementById("chatBody").appendChild(msg);
1329+
} else {
1330+
document.getElementById("chatBody").innerHTML = "";
12811331
for (i in messageList){
12821332
var time = timeSince(messageList[i].time);
12831333
var msg = document.createElement("div");
12841334
////// KEEP THIS IN /////////
1285-
console.log(messageList[i].msg); // Display Recieved messages for View-Only clients.
1286-
/////////////////////////////
1287-
var label = "";
1288-
if (messageList[i].label){
1289-
label = messageList[i].label;
1290-
}
1291-
1292-
if (messageList[i].type == "sent"){
1293-
msg.innerHTML = "<span class='chat_message chat_sent'>"+messageList[i].msg + " </span><i><small> <small>- "+time+"</small></small></i><span style='display:none'>"+label+"</span>";
1294-
msg.classList.add("outMessage");
1295-
} else if (messageList[i].type == "recv"){
1296-
msg.innerHTML = label+"<span class='chat_message chat_recv'>"+messageList[i].msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1297-
msg.classList.add("inMessage");
1298-
} else if (messageList[i].type == "action"){
1299-
msg.innerHTML = label+"<span class='chat_message chat_action'>"+messageList[i].msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1300-
msg.classList.add("actionMessage");
1301-
} else if (messageList[i].type == "alert"){
1302-
msg.innerHTML = "<span class='chat_message chat_alert'>"+messageList[i].msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1303-
msg.classList.add("inMessage");
1304-
} else {
1305-
msg.innerHTML = "<span class='chat_message chat_other'>"+messageList[i].msg + " </span><i><small> <small>- "+time+"</small></small></i>";
1306-
msg.classList.add("inMessage");
1307-
}
1308-
1309-
document.getElementById("chatBody").appendChild(msg);
1310-
}
1335+
console.log(messageList[i].msg); // Display Recieved messages for View-Only clients.
1336+
/////////////////////////////
1337+
var label = "";
1338+
if (messageList[i].label){
1339+
label = sanitize(decodeHTML(messageList[i].label));
1340+
}
1341+
1342+
var messageContent = replaceURLs(messageList[i].msg);
1343+
var labelPrefix = label ? label + " " : "";
1344+
var safeTime = sanitize(time);
1345+
1346+
if (messageList[i].type == "sent"){
1347+
msg.innerHTML = "<span class='chat_message chat_sent'>"+messageContent + " </span><i><small> <small>- "+safeTime+"</small></small></i><span style='display:none'>"+label+"</span>";
1348+
msg.classList.add("outMessage");
1349+
} else if (messageList[i].type == "recv"){
1350+
msg.innerHTML = labelPrefix+"<span class='chat_message chat_recv'>"+messageContent + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1351+
msg.classList.add("inMessage");
1352+
} else if (messageList[i].type == "action"){
1353+
msg.innerHTML = labelPrefix+"<span class='chat_message chat_action'>"+messageContent + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1354+
msg.classList.add("actionMessage");
1355+
} else if (messageList[i].type == "alert"){
1356+
msg.innerHTML = "<span class='chat_message chat_alert'>"+messageContent + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1357+
msg.classList.add("inMessage");
1358+
} else {
1359+
msg.innerHTML = "<span class='chat_message chat_other'>"+messageContent + " </span><i><small> <small>- "+safeTime+"</small></small></i>";
1360+
msg.classList.add("inMessage");
1361+
}
1362+
1363+
document.getElementById("chatBody").appendChild(msg);
1364+
}
13111365
}
13121366
//if (chatUpdateTimeout){
13131367
// clearInterval(chatUpdateTimeout);
@@ -2360,4 +2414,4 @@
23602414
}
23612415
</script>
23622416
</body>
2363-
</html>
2417+
</html>

0 commit comments

Comments
 (0)