@inner-dj/server 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -0
- package/assets/css/styles.css +1 -1
- package/assets/js/controls.js +1 -0
- package/assets/js/totp.js +1 -1
- package/lib/src/browser/controls.d.ts +1 -0
- package/lib/src/browser/controls.js +86 -0
- package/lib/src/browser/controls.js.map +1 -0
- package/lib/src/browser/totp.js +16 -3
- package/lib/src/browser/totp.js.map +1 -1
- package/lib/src/config.d.ts +3 -2
- package/lib/src/config.js +4 -3
- package/lib/src/config.js.map +1 -1
- package/lib/src/web.d.ts +11 -2
- package/lib/src/web.js +97 -11
- package/lib/src/web.js.map +1 -1
- package/package.json +5 -4
- package/views/admin.ejs +1 -1
- package/views/controls.ejs +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
document.addEventListener("DOMContentLoaded",function(){let i=document.getElementById("controlContainer"),l={},d="-";function a(e){var t=e?.split(".")[0],n=11===t?.length,e=document.createTextNode(e||d);return n?((n=document.createElement("a")).href="https://www.youtube.com/watch?v="+t,n.appendChild(e),n):e}let t=()=>{var e=new WebSocket("/admin/controls");e.onerror=e=>{console.log(e)},e.onclose=()=>{setTimeout(t,3e3)},e.onmessage=e=>{var e=JSON.parse(e.data),t=e.map(e=>e.clientId);for(let e in l)t.indexOf(e)<0&&(l[e].forEach(e=>i?.removeChild(e)),delete l[e]);e.forEach(e=>{if(e.clientId in l){for(var t=l[e.clientId],n=t[1];n?.firstChild;)n.removeChild(n.lastChild);t[1].appendChild(a(e.nowPlaying))}else d=e,i&&d.clientId&&((t=document.createElement("div")).appendChild(document.createTextNode(d.clientId)),i.appendChild(t),(e=document.createElement("div")).classList.add("break-all"),e.appendChild(a(d.nowPlaying)),i.appendChild(e),(o=document.createElement("button")).classList.add("button","is-info"),o.appendChild(document.createTextNode("⏩️ Skip")),i.appendChild(o),l[d.clientId]=[t,e,o],o.addEventListener("click",e=>{fetch("/admin/controls/skip?clientId="+encodeURIComponent(d.clientId),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).catch(e=>{console.log(e)})}));var d,o})}};t()});
|
package/assets/js/totp.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
document.addEventListener("DOMContentLoaded",function(){let
|
|
1
|
+
document.addEventListener("DOMContentLoaded",function(){let r=document.getElementById("qr-container"),a=document.getElementById("token");function l(e){for(;e?.firstChild;)e.removeChild(e.lastChild)}fetch("/admin/token",{method:"GET"}).then(async e=>{let i=(await e.json())?.token;if("string"!=typeof i)setTimeout(()=>location.reload(),3e3);else{let t=window.otplib,n=window.QrCreator,o="";async function d(){var e=await t.generate({secret:i});o!==e&&(o=e,l(a),a?.appendChild(document.createTextNode(e)),e=window.location.origin+"/#"+encodeURIComponent(`{"code":"${e}"}`),l(r),n.render({text:e,radius:0,ecLevel:"L",fill:"#000000",background:"#ffffff",size:256},r))}i?(d(),setInterval(d,5e3)):(n.render({text:window.location.origin+"/",radius:0,ecLevel:"L",fill:"#000000",background:"#ffffff",size:256},r),document.querySelector(".if-totp").style.display="none")}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
document.addEventListener("DOMContentLoaded", function () {
|
|
2
|
+
const container = document.getElementById('controlContainer');
|
|
3
|
+
const rows = {};
|
|
4
|
+
const NOW_PLAYING = 1;
|
|
5
|
+
const NOT_PLAYING = '-';
|
|
6
|
+
function emptyElement(el) {
|
|
7
|
+
while (el?.firstChild) {
|
|
8
|
+
el.removeChild(el.lastChild);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function createNowPlayingContent(filename) {
|
|
12
|
+
const possibleVid = filename?.split('.')[0];
|
|
13
|
+
const isMatch = possibleVid?.length === 11;
|
|
14
|
+
const textNode = document.createTextNode(filename || NOT_PLAYING);
|
|
15
|
+
if (!isMatch) {
|
|
16
|
+
return textNode;
|
|
17
|
+
}
|
|
18
|
+
const anchor = document.createElement('a');
|
|
19
|
+
anchor.href = `https://www.youtube.com/watch?v=${possibleVid}`;
|
|
20
|
+
anchor.appendChild(textNode);
|
|
21
|
+
return anchor;
|
|
22
|
+
}
|
|
23
|
+
const removeRow = (row) => {
|
|
24
|
+
row.forEach(el => container?.removeChild(el));
|
|
25
|
+
};
|
|
26
|
+
const addRow = (client) => {
|
|
27
|
+
if (!container || !client.clientId) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const clientId = document.createElement('div');
|
|
31
|
+
clientId.appendChild(document.createTextNode(client.clientId));
|
|
32
|
+
container.appendChild(clientId);
|
|
33
|
+
const nowPlaying = document.createElement('div');
|
|
34
|
+
nowPlaying.classList.add('break-all');
|
|
35
|
+
nowPlaying.appendChild(createNowPlayingContent(client.nowPlaying));
|
|
36
|
+
container.appendChild(nowPlaying);
|
|
37
|
+
const skipBtn = document.createElement('button');
|
|
38
|
+
skipBtn.classList.add('button', 'is-info');
|
|
39
|
+
skipBtn.appendChild(document.createTextNode('⏩️ Skip'));
|
|
40
|
+
container.appendChild(skipBtn);
|
|
41
|
+
rows[client.clientId] = [clientId, nowPlaying, skipBtn];
|
|
42
|
+
skipBtn.addEventListener('click', _ => {
|
|
43
|
+
fetch(`/admin/controls/skip?clientId=${encodeURIComponent(client.clientId)}`, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
headers: {
|
|
46
|
+
'Content-Type': 'application/json',
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify({})
|
|
49
|
+
}).catch(e => {
|
|
50
|
+
console.log(e);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const connect = () => {
|
|
55
|
+
const ws = new WebSocket('/admin/controls');
|
|
56
|
+
ws.onerror = (err) => {
|
|
57
|
+
console.log(err);
|
|
58
|
+
};
|
|
59
|
+
ws.onclose = () => {
|
|
60
|
+
setTimeout(connect, 3000);
|
|
61
|
+
};
|
|
62
|
+
ws.onmessage = (msg) => {
|
|
63
|
+
const payload = JSON.parse(msg.data);
|
|
64
|
+
const ids = payload.map(p => p.clientId);
|
|
65
|
+
for (let id in rows) {
|
|
66
|
+
if (ids.indexOf(id) < 0) {
|
|
67
|
+
removeRow(rows[id]);
|
|
68
|
+
delete rows[id];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
payload.forEach(p => {
|
|
72
|
+
if (p.clientId in rows) {
|
|
73
|
+
const row = rows[p.clientId];
|
|
74
|
+
emptyElement(row[NOW_PLAYING]);
|
|
75
|
+
row[NOW_PLAYING].appendChild(createNowPlayingContent(p.nowPlaying));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
addRow(p);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
connect();
|
|
84
|
+
});
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/browser/controls.ts"],"names":[],"mappings":"AAEA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAuB,CAAC;IACpF,MAAM,IAAI,GAAwE,EAAE,CAAC;IACrF,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,GAAG,CAAC;IAExB,SAAS,YAAY,CAAC,EAAsB;QACxC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,SAAS,uBAAuB,CAAC,QAAuB;QACpD,MAAM,WAAW,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,WAAW,EAAE,MAAM,KAAK,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,mCAAmC,WAAW,EAAE,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAAkB,EAAE,EAAE;QACrC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAE,EAAE;QACxC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACnE,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YAClC,KAAK,CAAC,iCAAiC,kBAAkB,CAAC,MAAM,CAAC,QAAS,CAAC,EAAE,EAAE;gBAC3E,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;iBACrC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAI,CAAC;aAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC5C,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAA;QACD,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YACd,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAA;QACD,EAAE,CAAC,SAAS,GAAG,CAAC,GAAyB,EAAE,EAAE;YACzC,MAAM,OAAO,GAAuB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAS,CAAC,CAAC;YAE1C,KAAK,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBAClB,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,CAAC;oBACrB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;YACL,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,CAAC,QAAS,IAAI,IAAI,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,QAAS,CAAE,CAAC;oBAC/B,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC/B,GAAG,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxE,CAAC;qBACI,CAAC;oBACF,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAA;IACL,CAAC,CAAA;IAED,OAAO,EAAE,CAAC;AACd,CAAC,CAAC,CAAC"}
|
package/lib/src/browser/totp.js
CHANGED
|
@@ -10,7 +10,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|
|
10
10
|
method: 'GET'
|
|
11
11
|
}).then(async (res) => {
|
|
12
12
|
const token = (await res.json())?.token;
|
|
13
|
-
if (
|
|
13
|
+
if (typeof token !== 'string') {
|
|
14
14
|
setTimeout(() => location.reload(), 3000);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
@@ -38,8 +38,21 @@ document.addEventListener("DOMContentLoaded", function () {
|
|
|
38
38
|
size: 256
|
|
39
39
|
}, qrContainer);
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
if (token) {
|
|
42
|
+
genOtp();
|
|
43
|
+
setInterval(genOtp, 5000);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
QR.render({
|
|
47
|
+
text: `${window.location.origin}/`,
|
|
48
|
+
radius: 0,
|
|
49
|
+
ecLevel: 'L',
|
|
50
|
+
fill: '#000000',
|
|
51
|
+
background: '#ffffff',
|
|
52
|
+
size: 256
|
|
53
|
+
}, qrContainer);
|
|
54
|
+
document.querySelector('.if-totp').style.display = 'none';
|
|
55
|
+
}
|
|
43
56
|
});
|
|
44
57
|
});
|
|
45
58
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../../src/browser/totp.ts"],"names":[],"mappings":"AAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;IAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnD,SAAS,YAAY,CAAC,EAAsB;QACxC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,EAAE;QAClB,MAAM,EAAE,KAAK;KAChB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAwB,CAAA,EAAE,KAAK,CAAC;QAC7D,IAAI,
|
|
1
|
+
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../../src/browser/totp.ts"],"names":[],"mappings":"AAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;IAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnD,SAAS,YAAY,CAAC,EAAsB;QACxC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,EAAE;QAClB,MAAM,EAAE,KAAK;KAChB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAwB,CAAA,EAAE,KAAK,CAAC;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAA6B,MAAc,CAAC,MAAM,CAAC;QAC/D,MAAM,EAAE,GAA2C,MAAc,CAAC,SAAS,CAAC;QAC5E,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,UAAU,MAAM;YACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBAC9B,MAAM,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,OAAO,GAAG,GAAG,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,kBAAkB,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;YACxF,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,EAAE,CAAC,MAAM,CAAC;gBACN,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,GAAG;aACZ,EAAE,WAAY,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;aACI,CAAC;YACF,EAAE,CAAC,MAAM,CAAC;gBACN,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;gBAClC,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,GAAG;aACZ,EAAE,WAAY,CAAC,CAAC;YAChB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/E,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/lib/src/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DBConfig } from './session-store.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { type DiscordReceiverConfig } from '@inner-dj/discord-receiver';
|
|
3
3
|
import { type TwilioReceiverConfig } from '@inner-dj/twilio-receiver';
|
|
4
4
|
export interface ServerConfig {
|
|
5
5
|
port: number;
|
|
@@ -12,7 +12,8 @@ export interface ServerConfig {
|
|
|
12
12
|
cookieTTL: number;
|
|
13
13
|
jwtSecret: string;
|
|
14
14
|
db: DBConfig;
|
|
15
|
-
discord:
|
|
15
|
+
discord: DiscordReceiverConfig;
|
|
16
16
|
twilio: TwilioReceiverConfig;
|
|
17
|
+
cookies: string | undefined;
|
|
17
18
|
}
|
|
18
19
|
export declare function getConfig(cfgPath?: string): Promise<ServerConfig>;
|
package/lib/src/config.js
CHANGED
|
@@ -38,14 +38,15 @@ export async function getConfig(cfgPath) {
|
|
|
38
38
|
trustProxy: joinIfArray(process.env['TRUSTPROXY'] ?? cfg.trustProxy),
|
|
39
39
|
secure: getBoolean('SECURE', cfg, 'secure', true),
|
|
40
40
|
public: pub,
|
|
41
|
-
sessionSecret:
|
|
42
|
-
userOtp: pub ? '' : process.env['USEROTP'] ?? cfg.userOtp
|
|
43
|
-
adminOtp:
|
|
41
|
+
sessionSecret: process.env['SESSIONSECRET'] ?? cfg.sessionSecret ?? throwNewError('sessionSecret is required'),
|
|
42
|
+
userOtp: pub ? '' : (process.env['USEROTP'] ?? cfg.userOtp) || generateTotpSecret('userOtp'),
|
|
43
|
+
adminOtp: process.env['ADMINOTP'] ?? cfg.adminOtp ?? generateTotpSecret('adminOtp'),
|
|
44
44
|
cookieTTL: notStupidParseInt(process.env['COOKIETTL'] ?? cfg.cookieTTL ?? 1000 * 60 * 60 * 24 * 30),
|
|
45
45
|
jwtSecret: process.env['JWTSECRET'] ?? cfg.jwtSecret ?? throwNewError('jwtSecret is required'),
|
|
46
46
|
db: SessionStore.getConfig(path.dirname(p), cfg.db),
|
|
47
47
|
discord: InnerDJDiscordBot.getConfig(cfg.discord),
|
|
48
48
|
twilio: TwilioReceiver.getConfig(cfg.twilio),
|
|
49
|
+
cookies: process.env['COOKIES'] ?? cfg.cookies,
|
|
49
50
|
};
|
|
50
51
|
}
|
|
51
52
|
//# sourceMappingURL=config.js.map
|
package/lib/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/src/web.d.ts
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
1
2
|
import express from 'express';
|
|
2
3
|
import { ServerConfig } from './config.js';
|
|
3
|
-
import {
|
|
4
|
+
import { Method } from '@inner-dj/common';
|
|
5
|
+
import type { ClientInterface, Payload } from '@inner-dj/common';
|
|
4
6
|
declare module 'express-session' {
|
|
5
7
|
interface SessionData {
|
|
6
8
|
admin?: boolean;
|
|
7
9
|
}
|
|
8
10
|
}
|
|
9
|
-
export
|
|
11
|
+
export interface SimpleClientInfo {
|
|
12
|
+
clientId: string | null;
|
|
13
|
+
nowPlaying: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare class Web extends EventEmitter implements ClientInterface {
|
|
10
16
|
private config;
|
|
11
17
|
private _webserver;
|
|
12
18
|
private _clients;
|
|
13
19
|
private _app;
|
|
14
20
|
private _guides;
|
|
21
|
+
private _downloader;
|
|
15
22
|
constructor(config: ServerConfig);
|
|
16
23
|
initialize: () => Promise<void>;
|
|
24
|
+
emitClientStateChange: () => void;
|
|
25
|
+
createClientStateData: () => SimpleClientInfo[];
|
|
17
26
|
registerRoute: (method: Method, route: string, handler: (req: express.Request, res: express.Response, next?: express.NextFunction) => any) => void;
|
|
18
27
|
registerGuide: (html: string) => number;
|
|
19
28
|
sendPayload: (payload: Payload) => Promise<boolean>;
|
package/lib/src/web.js
CHANGED
|
@@ -1,28 +1,38 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
2
|
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import EventEmitter from 'events';
|
|
5
|
+
import fsp from 'fs/promises';
|
|
3
6
|
import jwt from 'jsonwebtoken';
|
|
4
7
|
import express from 'express';
|
|
5
8
|
import expressWs from 'express-ws';
|
|
6
9
|
import session from 'express-session';
|
|
7
10
|
import getYouTubeID from 'get-youtube-id-ng';
|
|
11
|
+
import contentDisposition from 'content-disposition';
|
|
8
12
|
import { verify } from "otplib";
|
|
9
13
|
import { getExpectedCWD } from './cwd-checker.js';
|
|
10
|
-
import { encodePayload } from '@inner-dj/common';
|
|
14
|
+
import { getFilesNoError, encodePayload, ytdlp, ytdlpDefaults } from '@inner-dj/common';
|
|
11
15
|
import { SessionStore } from './session-store.js';
|
|
12
16
|
const expectedCWD = getExpectedCWD();
|
|
13
|
-
export class Web {
|
|
17
|
+
export class Web extends EventEmitter {
|
|
14
18
|
config;
|
|
15
19
|
_webserver = null;
|
|
16
20
|
_clients = {};
|
|
17
21
|
_app = null;
|
|
18
22
|
_guides = [];
|
|
23
|
+
_downloader;
|
|
19
24
|
constructor(config) {
|
|
25
|
+
super();
|
|
20
26
|
this.config = config;
|
|
27
|
+
this._downloader = new ytdlp({
|
|
28
|
+
...ytdlpDefaults,
|
|
29
|
+
optput: path.join(os.tmpdir(), ytdlpDefaults.optput),
|
|
30
|
+
cookies: config.cookies,
|
|
31
|
+
});
|
|
21
32
|
}
|
|
22
33
|
initialize = async () => {
|
|
23
34
|
const config = this.config;
|
|
24
|
-
const app = this._app = express();
|
|
25
|
-
const wsApp = expressWs(app).app;
|
|
35
|
+
const app = this._app = expressWs(express()).app;
|
|
26
36
|
app.set('trust proxy', config.trustProxy);
|
|
27
37
|
app.set('view engine', 'ejs');
|
|
28
38
|
app.set('view options', { outputFunctionName: 'echo' });
|
|
@@ -47,7 +57,31 @@ export class Web {
|
|
|
47
57
|
app.get('/healthcheck', (_req, res) => {
|
|
48
58
|
res.send('healthy');
|
|
49
59
|
});
|
|
50
|
-
|
|
60
|
+
app.post('/download', express.raw({ type: 'text/plain' }), async (req, res) => {
|
|
61
|
+
const body = req.body?.toString();
|
|
62
|
+
const payload = body && jwt.verify(body, config.jwtSecret);
|
|
63
|
+
if (!payload || typeof (payload) === 'string' || payload.type !== 'download') {
|
|
64
|
+
res.status(401).send();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const vidurl = `https://www.youtube.com/watch?v=${payload.body}`;
|
|
68
|
+
console.info(`downloading ${vidurl} for ${req.ip}`);
|
|
69
|
+
await this._downloader.exec(vidurl);
|
|
70
|
+
const files = await getFilesNoError(os.tmpdir());
|
|
71
|
+
const file = files.find(f => f.split('.')[0] === payload.body);
|
|
72
|
+
if (!file) {
|
|
73
|
+
res.status(500).send();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
res.set('Content-Disposition', contentDisposition.create(file))
|
|
77
|
+
.sendFile(path.join(os.tmpdir(), file), (err) => {
|
|
78
|
+
if (err) {
|
|
79
|
+
console.error(err);
|
|
80
|
+
}
|
|
81
|
+
return fsp.unlink(path.join(os.tmpdir(), file));
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
app.ws('/sock', (ws, req) => {
|
|
51
85
|
const clientInfo = {
|
|
52
86
|
ws,
|
|
53
87
|
clientId: null,
|
|
@@ -67,20 +101,23 @@ export class Web {
|
|
|
67
101
|
if (this._clients[key] === clientInfo) {
|
|
68
102
|
delete this._clients[key];
|
|
69
103
|
}
|
|
104
|
+
this.emitClientStateChange();
|
|
70
105
|
});
|
|
71
106
|
const ack = {
|
|
72
107
|
type: 'ack'
|
|
73
108
|
};
|
|
74
109
|
ws.send(encodePayload(ack, config.jwtSecret));
|
|
110
|
+
this.emitClientStateChange();
|
|
75
111
|
return;
|
|
76
112
|
}
|
|
77
|
-
else if (clientInfo.clientId && decoded && payload?.type === 'nowPlaying'
|
|
113
|
+
else if (clientInfo.clientId && decoded && payload?.type === 'nowPlaying') {
|
|
78
114
|
console.log(`client ${clientInfo.clientId} playing ${clientInfo.nowPlaying = payload.body}`);
|
|
115
|
+
this.emitClientStateChange();
|
|
79
116
|
return;
|
|
80
117
|
}
|
|
81
118
|
ws.close();
|
|
82
119
|
});
|
|
83
|
-
console.debug(`Got websocket connection from ${req.ip}`);
|
|
120
|
+
console.debug(`Got client websocket connection from ${req.ip}`);
|
|
84
121
|
const timeout = setTimeout(() => {
|
|
85
122
|
console.debug(`Client@${req.ip} took too long to identify itself. Closing.`);
|
|
86
123
|
ws.close();
|
|
@@ -187,7 +224,7 @@ export class Web {
|
|
|
187
224
|
});
|
|
188
225
|
const requireAdmin = (req, res, next) => {
|
|
189
226
|
if (req.session.admin !== true) {
|
|
190
|
-
res.redirect('
|
|
227
|
+
res.redirect('/?override=1');
|
|
191
228
|
return;
|
|
192
229
|
}
|
|
193
230
|
next();
|
|
@@ -242,16 +279,65 @@ export class Web {
|
|
|
242
279
|
}
|
|
243
280
|
});
|
|
244
281
|
});
|
|
245
|
-
app.get('/admin/controls', sessionMiddleware, requireAdmin, (_req, res) => {
|
|
246
|
-
res.send('controls');
|
|
247
|
-
});
|
|
248
282
|
app.get('/admin/token', sessionMiddleware, requireAdmin, (_req, res) => {
|
|
249
283
|
res.send({
|
|
250
284
|
token: config.userOtp
|
|
251
285
|
});
|
|
252
286
|
});
|
|
287
|
+
app.get('/admin/controls', sessionMiddleware, requireAdmin, (_req, res) => {
|
|
288
|
+
res.render('controls', {
|
|
289
|
+
guides: this._guides.join('\n'),
|
|
290
|
+
page: {
|
|
291
|
+
title: 'Admin Controls',
|
|
292
|
+
titlesuffix: 'Inner DJ',
|
|
293
|
+
description: 'Skip songs'
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
// not going to enforce authentication for simplicity
|
|
298
|
+
// socket for realtime data, not for actually controlling clients
|
|
299
|
+
app.ws('/admin/controls', (ws, req) => {
|
|
300
|
+
console.debug(`Got control websocket connection from ${req.ip}`);
|
|
301
|
+
const eventListener = (payload) => {
|
|
302
|
+
if (payload) {
|
|
303
|
+
ws.send(payload);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
this.on('change', eventListener);
|
|
307
|
+
ws.on('close', () => {
|
|
308
|
+
this.removeListener('change', eventListener);
|
|
309
|
+
});
|
|
310
|
+
eventListener(JSON.stringify(this.createClientStateData()));
|
|
311
|
+
});
|
|
312
|
+
app.post('/admin/controls/skip', sessionMiddleware, requireAdmin, (req, res) => {
|
|
313
|
+
const clientId = req.query['clientId'];
|
|
314
|
+
if (typeof clientId !== 'string' || !(clientId in this._clients)) {
|
|
315
|
+
res.status(400).send();
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
this._clients[clientId]?.ws.send(encodePayload({
|
|
319
|
+
type: 'skip'
|
|
320
|
+
}, this.config.jwtSecret));
|
|
321
|
+
res.send();
|
|
322
|
+
});
|
|
253
323
|
this._webserver = app.listen(config.port, () => console.log(`running on port ${config.port}`));
|
|
254
324
|
};
|
|
325
|
+
emitClientStateChange = () => {
|
|
326
|
+
this.emit('change', JSON.stringify(this.createClientStateData()));
|
|
327
|
+
};
|
|
328
|
+
createClientStateData = () => {
|
|
329
|
+
const payload = [];
|
|
330
|
+
for (let id in this._clients) {
|
|
331
|
+
const info = this._clients[id];
|
|
332
|
+
if (info && info.clientId) {
|
|
333
|
+
payload.push({
|
|
334
|
+
clientId: info.clientId,
|
|
335
|
+
nowPlaying: info.nowPlaying
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return payload;
|
|
340
|
+
};
|
|
255
341
|
registerRoute = (method, route, handler) => {
|
|
256
342
|
console.debug(`Registered route to ${route} via ${method.toUpperCase()} requests`);
|
|
257
343
|
this._app?.[method](route, handler);
|
package/lib/src/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inner-dj/server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "server component of inner-dj",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,10 +28,11 @@
|
|
|
28
28
|
"!lib/**/*.js.map"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@inner-dj/discord-receiver": "0.0.
|
|
32
|
-
"@inner-dj/twilio-receiver": "0.0.
|
|
31
|
+
"@inner-dj/discord-receiver": "0.0.6",
|
|
32
|
+
"@inner-dj/twilio-receiver": "0.0.6",
|
|
33
33
|
"better-sqlite3": "^12.10.0",
|
|
34
34
|
"bulma": "^1.0.4",
|
|
35
|
+
"content-disposition": "2.0.0",
|
|
35
36
|
"ejs": "^5.0.2",
|
|
36
37
|
"express": "^5.2.1",
|
|
37
38
|
"express-session": "^1.19.0",
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"otplib": "^13.4.0",
|
|
42
43
|
"qr-creator": "^1.0.0",
|
|
43
44
|
"yaml": "^2.9.0",
|
|
44
|
-
"@inner-dj/common": "0.0.
|
|
45
|
+
"@inner-dj/common": "0.0.6"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@sindresorhus/tsconfig": "8.1.0",
|
package/views/admin.ejs
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<h2 class="title is-2">Request a Song</h2>
|
|
14
14
|
<div class="has-text-centered">
|
|
15
15
|
<div id="qr-container" class="mb-4"></div>
|
|
16
|
-
<p>Or go to <span class="has-text-weight-bold populate-url with-trailing-slash">this site</span> and enter <span id="token" class="has-text-weight-bold is-family-monospace">...</span></p>
|
|
16
|
+
<p>Or go to <span class="has-text-weight-bold populate-url with-trailing-slash">this site</span> <span class="if-totp">and enter <span id="token" class="has-text-weight-bold is-family-monospace">...</span></span></p>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
19
|
<%- include("instructions", locals) %>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<%- include("head", locals) %>
|
|
6
|
+
</head>
|
|
7
|
+
|
|
8
|
+
<body class="preload">
|
|
9
|
+
<div class="mt-5">
|
|
10
|
+
<div class="container">
|
|
11
|
+
<h1 class="title is-1">Inner DJ</h1>
|
|
12
|
+
<div class="box is-size-5">
|
|
13
|
+
<a href="/admin" class="button is-link">Instructions Screen</a>
|
|
14
|
+
<h2 class="title is-2">Controls</h2>
|
|
15
|
+
<div id="controlContainer" class="grid grid-3">
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
<%- include("footer", locals) %>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<script src="/assets/js/controls.js?v1" nonce="<%= cspNonce %>"></script>
|
|
22
|
+
</body>
|
|
23
|
+
|
|
24
|
+
</html>
|