[mirotalksfu] - refactoring, update dep
هذا الالتزام موجود في:
@@ -42,7 +42,7 @@ dependencies: {
|
||||
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.4.28
|
||||
* @version 1.4.29
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mirotalksfu",
|
||||
"version": "1.4.28",
|
||||
"version": "1.4.29",
|
||||
"description": "WebRTC SFU browser-based video calls",
|
||||
"main": "Server.js",
|
||||
"scripts": {
|
||||
@@ -53,11 +53,11 @@
|
||||
"express-openid-connect": "^2.17.1",
|
||||
"httpolyglot": "0.1.2",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"mediasoup": "3.14.4",
|
||||
"mediasoup": "3.14.5",
|
||||
"mediasoup-client": "3.7.7",
|
||||
"ngrok": "^5.0.0-beta.2",
|
||||
"nodemailer": "^6.9.13",
|
||||
"openai": "^4.40.0",
|
||||
"openai": "^4.40.1",
|
||||
"qs": "6.12.1",
|
||||
"socket.io": "4.7.5",
|
||||
"swagger-ui-express": "5.0.0",
|
||||
|
||||
@@ -11,7 +11,7 @@ if (location.href.substr(0, 5) !== 'https') location.href = 'https' + location.h
|
||||
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.4.28
|
||||
* @version 1.4.29
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.4.28
|
||||
* @version 1.4.29
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const adjectives = [
|
||||
'small',
|
||||
'big',
|
||||
'large',
|
||||
'smelly',
|
||||
'new',
|
||||
'happy',
|
||||
'shiny',
|
||||
'old',
|
||||
'clean',
|
||||
'nice',
|
||||
'bad',
|
||||
'cool',
|
||||
'hot',
|
||||
'cold',
|
||||
'warm',
|
||||
'hungry',
|
||||
'slow',
|
||||
'fast',
|
||||
'red',
|
||||
'white',
|
||||
'black',
|
||||
'blue',
|
||||
'green',
|
||||
'basic',
|
||||
'strong',
|
||||
'cute',
|
||||
'poor',
|
||||
'nice',
|
||||
'huge',
|
||||
'rare',
|
||||
'lucky',
|
||||
'weak',
|
||||
'tall',
|
||||
'short',
|
||||
'tiny',
|
||||
'great',
|
||||
'long',
|
||||
'single',
|
||||
'rich',
|
||||
'young',
|
||||
'dirty',
|
||||
'fresh',
|
||||
'brown',
|
||||
'dark',
|
||||
'crazy',
|
||||
'sad',
|
||||
'loud',
|
||||
'brave',
|
||||
'calm',
|
||||
'silly',
|
||||
'smart',
|
||||
];
|
||||
|
||||
const nouns = [
|
||||
'dog',
|
||||
'bat',
|
||||
'wrench',
|
||||
'apple',
|
||||
'pear',
|
||||
'ghost',
|
||||
'cat',
|
||||
'wolf',
|
||||
'squid',
|
||||
'goat',
|
||||
'snail',
|
||||
'hat',
|
||||
'sock',
|
||||
'plum',
|
||||
'bear',
|
||||
'snake',
|
||||
'turtle',
|
||||
'horse',
|
||||
'spoon',
|
||||
'fork',
|
||||
'spider',
|
||||
'tree',
|
||||
'chair',
|
||||
'table',
|
||||
'couch',
|
||||
'towel',
|
||||
'panda',
|
||||
'bread',
|
||||
'grape',
|
||||
'cake',
|
||||
'brick',
|
||||
'rat',
|
||||
'mouse',
|
||||
'bird',
|
||||
'oven',
|
||||
'phone',
|
||||
'photo',
|
||||
'frog',
|
||||
'bear',
|
||||
'camel',
|
||||
'sheep',
|
||||
'shark',
|
||||
'tiger',
|
||||
'zebra',
|
||||
'duck',
|
||||
'eagle',
|
||||
'fish',
|
||||
'kitten',
|
||||
'lobster',
|
||||
'monkey',
|
||||
'owl',
|
||||
'puppy',
|
||||
'pig',
|
||||
'rabbit',
|
||||
'fox',
|
||||
'whale',
|
||||
'beaver',
|
||||
'gorilla',
|
||||
'lizard',
|
||||
'parrot',
|
||||
'sloth',
|
||||
'swan',
|
||||
];
|
||||
|
||||
function getRandomNumber(length) {
|
||||
let result = '';
|
||||
let characters = '0123456789';
|
||||
let charactersLength = characters.length;
|
||||
for (let i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
let adjective = adjectives[Math.floor(Math.random() * adjectives.length)];
|
||||
let noun = nouns[Math.floor(Math.random() * nouns.length)];
|
||||
let num = getRandomNumber(5);
|
||||
noun = noun.charAt(0).toUpperCase() + noun.substring(1);
|
||||
adjective = adjective.charAt(0).toUpperCase() + adjective.substring(1);
|
||||
document.getElementById('roomName').value = '';
|
||||
|
||||
// ####################################################
|
||||
// TYPING EFFECT
|
||||
// ####################################################
|
||||
|
||||
let i = 0;
|
||||
let txt = num + adjective + noun;
|
||||
let speed = 100;
|
||||
|
||||
function typeWriter() {
|
||||
if (i < txt.length) {
|
||||
document.getElementById('roomName').value += txt.charAt(i);
|
||||
i++;
|
||||
setTimeout(typeWriter, speed);
|
||||
}
|
||||
}
|
||||
|
||||
typeWriter();
|
||||
239
public/js/scripts/Common.js
Normal file
239
public/js/scripts/Common.js
Normal file
@@ -0,0 +1,239 @@
|
||||
'use strict';
|
||||
|
||||
// ####################################################################
|
||||
// NEW ROOM
|
||||
// ####################################################################
|
||||
|
||||
const adjectives = [
|
||||
'small',
|
||||
'big',
|
||||
'large',
|
||||
'smelly',
|
||||
'new',
|
||||
'happy',
|
||||
'shiny',
|
||||
'old',
|
||||
'clean',
|
||||
'nice',
|
||||
'bad',
|
||||
'cool',
|
||||
'hot',
|
||||
'cold',
|
||||
'warm',
|
||||
'hungry',
|
||||
'slow',
|
||||
'fast',
|
||||
'red',
|
||||
'white',
|
||||
'black',
|
||||
'blue',
|
||||
'green',
|
||||
'basic',
|
||||
'strong',
|
||||
'cute',
|
||||
'poor',
|
||||
'nice',
|
||||
'huge',
|
||||
'rare',
|
||||
'lucky',
|
||||
'weak',
|
||||
'tall',
|
||||
'short',
|
||||
'tiny',
|
||||
'great',
|
||||
'long',
|
||||
'single',
|
||||
'rich',
|
||||
'young',
|
||||
'dirty',
|
||||
'fresh',
|
||||
'brown',
|
||||
'dark',
|
||||
'crazy',
|
||||
'sad',
|
||||
'loud',
|
||||
'brave',
|
||||
'calm',
|
||||
'silly',
|
||||
'smart',
|
||||
];
|
||||
|
||||
const nouns = [
|
||||
'dog',
|
||||
'bat',
|
||||
'wrench',
|
||||
'apple',
|
||||
'pear',
|
||||
'ghost',
|
||||
'cat',
|
||||
'wolf',
|
||||
'squid',
|
||||
'goat',
|
||||
'snail',
|
||||
'hat',
|
||||
'sock',
|
||||
'plum',
|
||||
'bear',
|
||||
'snake',
|
||||
'turtle',
|
||||
'horse',
|
||||
'spoon',
|
||||
'fork',
|
||||
'spider',
|
||||
'tree',
|
||||
'chair',
|
||||
'table',
|
||||
'couch',
|
||||
'towel',
|
||||
'panda',
|
||||
'bread',
|
||||
'grape',
|
||||
'cake',
|
||||
'brick',
|
||||
'rat',
|
||||
'mouse',
|
||||
'bird',
|
||||
'oven',
|
||||
'phone',
|
||||
'photo',
|
||||
'frog',
|
||||
'bear',
|
||||
'camel',
|
||||
'sheep',
|
||||
'shark',
|
||||
'tiger',
|
||||
'zebra',
|
||||
'duck',
|
||||
'eagle',
|
||||
'fish',
|
||||
'kitten',
|
||||
'lobster',
|
||||
'monkey',
|
||||
'owl',
|
||||
'puppy',
|
||||
'pig',
|
||||
'rabbit',
|
||||
'fox',
|
||||
'whale',
|
||||
'beaver',
|
||||
'gorilla',
|
||||
'lizard',
|
||||
'parrot',
|
||||
'sloth',
|
||||
'swan',
|
||||
];
|
||||
|
||||
function getRandomNumber(length) {
|
||||
let result = '';
|
||||
let characters = '0123456789';
|
||||
let charactersLength = characters.length;
|
||||
for (let i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
let adjective = adjectives[Math.floor(Math.random() * adjectives.length)];
|
||||
let noun = nouns[Math.floor(Math.random() * nouns.length)];
|
||||
let num = getRandomNumber(5);
|
||||
noun = noun.charAt(0).toUpperCase() + noun.substring(1);
|
||||
adjective = adjective.charAt(0).toUpperCase() + adjective.substring(1);
|
||||
document.getElementById('roomName').value = '';
|
||||
|
||||
// ####################################################################
|
||||
// TYPING EFFECT
|
||||
// ####################################################################
|
||||
|
||||
let i = 0;
|
||||
let txt = num + adjective + noun;
|
||||
let speed = 100;
|
||||
|
||||
function typeWriter() {
|
||||
if (i < txt.length) {
|
||||
document.getElementById('roomName').value += txt.charAt(i);
|
||||
i++;
|
||||
setTimeout(typeWriter, speed);
|
||||
}
|
||||
}
|
||||
|
||||
typeWriter();
|
||||
|
||||
// ####################################################################
|
||||
// LANDING | NEW ROOM
|
||||
// ####################################################################
|
||||
|
||||
const lastRoomContainer = document.getElementById('lastRoomContainer');
|
||||
const lastRoom = document.getElementById('lastRoom');
|
||||
const lastRoomName = window.localStorage.lastRoom ? window.localStorage.lastRoom : '';
|
||||
if (lastRoomContainer && lastRoom && lastRoomName) {
|
||||
lastRoomContainer.style.display = 'inline-flex';
|
||||
lastRoom.setAttribute('href', '/join/' + lastRoomName);
|
||||
lastRoom.innerText = lastRoomName;
|
||||
}
|
||||
|
||||
const genRoomButton = document.getElementById('genRoomButton');
|
||||
const joinRoomButton = document.getElementById('joinRoomButton');
|
||||
const adultCnt = document.getElementById('adultCnt');
|
||||
|
||||
genRoomButton.onclick = (e) => {
|
||||
genRoom();
|
||||
};
|
||||
|
||||
joinRoomButton.onclick = (e) => {
|
||||
joinRoom();
|
||||
};
|
||||
|
||||
adultCnt.onclick = (e) => {
|
||||
adultContent();
|
||||
};
|
||||
|
||||
document.getElementById('roomName').onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
joinRoom();
|
||||
}
|
||||
};
|
||||
|
||||
function genRoom() {
|
||||
document.getElementById('roomName').value = getUUID4();
|
||||
}
|
||||
|
||||
function getUUID4() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>
|
||||
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16),
|
||||
);
|
||||
}
|
||||
|
||||
function joinRoom() {
|
||||
const roomName = filterXSS(document.getElementById('roomName').value);
|
||||
if (roomName) {
|
||||
window.location.href = '/join/' + roomName;
|
||||
window.localStorage.lastRoom = roomName;
|
||||
} else {
|
||||
alert('Room name empty!\nPlease pick a room name.');
|
||||
}
|
||||
}
|
||||
|
||||
function adultContent() {
|
||||
if (
|
||||
confirm(
|
||||
'18+ WARNING! ADULTS ONLY!\n\nExplicit material for viewing by adults 18 years of age or older. You must be at least 18 years old to access to this site!\n\nProceeding you are agree and confirm to have 18+ year.',
|
||||
)
|
||||
) {
|
||||
window.open('https://luvlounge.ca', '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
// #########################################################
|
||||
// PERMISSIONS
|
||||
// #########################################################
|
||||
|
||||
const qs = new URLSearchParams(window.location.search);
|
||||
const room_id = filterXSS(qs.get('room_id'));
|
||||
const message = filterXSS(qs.get('message'));
|
||||
const showMessage = document.getElementById('message');
|
||||
console.log('Allow Camera or Audio', {
|
||||
room_id: room_id,
|
||||
message: message,
|
||||
});
|
||||
if (showMessage) showMessage.innerHTML = message;
|
||||
83
public/js/scripts/Login.js
Normal file
83
public/js/scripts/Login.js
Normal file
@@ -0,0 +1,83 @@
|
||||
'use strict';
|
||||
|
||||
console.log(window.location);
|
||||
|
||||
const usernameInput = document.getElementById('username');
|
||||
const passwordInput = document.getElementById('password');
|
||||
const loginBtn = document.getElementById('loginButton');
|
||||
|
||||
usernameInput.onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
login();
|
||||
}
|
||||
};
|
||||
passwordInput.onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
login();
|
||||
}
|
||||
};
|
||||
|
||||
loginBtn.onclick = (e) => {
|
||||
login();
|
||||
};
|
||||
|
||||
function login() {
|
||||
const username = filterXSS(document.getElementById('username').value);
|
||||
const password = filterXSS(document.getElementById('password').value);
|
||||
|
||||
// http://localhost:3010/join/?room=test
|
||||
// http://localhost:3010/join/?room=test&roomPassword=0&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0
|
||||
// http://localhost:3010/join/?room=test&roomPassword=0&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0&username=username&password=password
|
||||
|
||||
const qs = new URLSearchParams(window.location.search);
|
||||
const room = filterXSS(qs.get('room'));
|
||||
|
||||
// http://localhost:3010/join/test
|
||||
const pathParts = window.location.pathname.split('/');
|
||||
const roomPath = pathParts[pathParts.length - 1];
|
||||
|
||||
if (username && password) {
|
||||
axios
|
||||
.post('/login', {
|
||||
username: username,
|
||||
password: password,
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
// Store in session
|
||||
const token = response.data.message;
|
||||
window.sessionStorage.peer_token = token;
|
||||
|
||||
if (room) {
|
||||
return (window.location.href = '/join/' + window.location.search);
|
||||
// return (window.location.href = '/join/?room=' + room + '&token=' + token);
|
||||
}
|
||||
if (roomPath) {
|
||||
return (window.location.href = '/join/' + roomPath);
|
||||
// return (window.location.href ='/join/?room=' + roomPath + '&token=' + token);
|
||||
}
|
||||
|
||||
return (window.location.href = '/logged');
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error(error);
|
||||
alert('Unauthorized');
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!username && !password) {
|
||||
alert('Username and Password required');
|
||||
return;
|
||||
}
|
||||
if (!username) {
|
||||
alert('Username required');
|
||||
return;
|
||||
}
|
||||
if (!password) {
|
||||
alert('Password required');
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -209,7 +209,7 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -201,7 +201,7 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@simonwep/pickr/dist/themes/monolith.min.css" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@simonwep/pickr/dist/themes/nano.min.css" />
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
|
||||
<!-- Modern or es5 bundle -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/@simonwep/pickr/dist/pickr.min.js"></script>
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
<script async src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<!-- Js scripts https://cdn.jsdelivr.net -->
|
||||
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -178,7 +178,7 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -42,14 +42,16 @@
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,600" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" />
|
||||
<link rel="stylesheet" href="../css/landing.css" />
|
||||
<!-- <link rel="stylesheet" href="../css/Snow.css" /> -->
|
||||
|
||||
<!-- Snow effects -->
|
||||
|
||||
<!-- <link rel="stylesheet" href="../css/Snow.css" />
|
||||
<script async src="../js/scripts/Snow.js"></script> -->
|
||||
|
||||
<!-- Js scripts -->
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
|
||||
<!-- <script async src="../js/Snow.js"></script> -->
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/xss/dist/xss.min.js"></script>
|
||||
@@ -137,61 +139,16 @@
|
||||
<button
|
||||
id="genRoomButton"
|
||||
class="button button-primary br-6 mr-8 mb-8 fas fa-arrows-rotate"
|
||||
onclick="genRoom()"
|
||||
></button>
|
||||
<button
|
||||
id="joinRoomButton"
|
||||
class="button button-primary pulse"
|
||||
onclick="joinRoom()"
|
||||
>
|
||||
<button id="joinRoomButton" class="button button-primary pulse">
|
||||
Join Room
|
||||
</button>
|
||||
<script>
|
||||
document.getElementById('roomName').onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
joinRoom();
|
||||
}
|
||||
};
|
||||
function genRoom() {
|
||||
document.getElementById('roomName').value = getUUID4();
|
||||
}
|
||||
function getUUID4() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>
|
||||
(
|
||||
c ^
|
||||
(crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
|
||||
).toString(16),
|
||||
);
|
||||
}
|
||||
function joinRoom() {
|
||||
const roomName = filterXSS(document.getElementById('roomName').value);
|
||||
if (roomName) {
|
||||
window.location.href = '/join/' + roomName;
|
||||
window.localStorage.lastRoom = roomName;
|
||||
} else {
|
||||
alert('Room name empty!\nPlease pick a room name.');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div id="lastRoomContainer" class="last-room">
|
||||
<span>Your recent room:</span>
|
||||
<a id="lastRoom"></a>
|
||||
</div>
|
||||
<script>
|
||||
const lastRoomContainer = document.getElementById('lastRoomContainer');
|
||||
const lastRoom = document.getElementById('lastRoom');
|
||||
const lastRoomName = window.localStorage.lastRoom
|
||||
? window.localStorage.lastRoom
|
||||
: '';
|
||||
if (lastRoomName) {
|
||||
lastRoomContainer.style.display = 'inline-flex';
|
||||
lastRoom.setAttribute('href', '/join/' + lastRoomName);
|
||||
lastRoom.innerText = lastRoomName;
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -442,7 +399,7 @@
|
||||
</li>
|
||||
<li class="reveal-from-left" data-reveal-delay="450">
|
||||
<div class="clients-logo">
|
||||
<a style="cursor: pointer" onclick="adultContent()"
|
||||
<a id="adultCnt" style="cursor: pointer"
|
||||
><img
|
||||
class="clients-size-logo"
|
||||
src="../sponsors/LuvLounge.png"
|
||||
@@ -450,17 +407,6 @@
|
||||
/></a>
|
||||
</div>
|
||||
</li>
|
||||
<script>
|
||||
function adultContent() {
|
||||
if (
|
||||
confirm(
|
||||
'18+ WARNING! ADULTS ONLY!\n\nExplicit material for viewing by adults 18 years of age or older. You must be at least 18 years old to access to this site!\n\nProceeding you are agree and confirm to have 18+ year.',
|
||||
)
|
||||
) {
|
||||
window.open('https://luvlounge.ca', '_blank');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<li class="reveal-from-left" data-reveal-delay="600">
|
||||
<div class="clients-logo">
|
||||
<a href="https://www.questionpro.com" target="_blank"
|
||||
@@ -630,8 +576,8 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/newRoom.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script defer src="../js/scripts/Common.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -121,94 +121,6 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
console.log(window.location);
|
||||
|
||||
const usernameInput = document.getElementById('username');
|
||||
const passwordInput = document.getElementById('password');
|
||||
const loginBtn = document.getElementById('loginButton');
|
||||
|
||||
usernameInput.onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
login();
|
||||
}
|
||||
};
|
||||
passwordInput.onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
login();
|
||||
}
|
||||
};
|
||||
|
||||
loginBtn.onclick = (e) => {
|
||||
login();
|
||||
};
|
||||
|
||||
function login() {
|
||||
const username = filterXSS(document.getElementById('username').value);
|
||||
const password = filterXSS(document.getElementById('password').value);
|
||||
|
||||
// http://localhost:3010/join/?room=test
|
||||
// http://localhost:3010/join/?room=test&roomPassword=0&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0
|
||||
// http://localhost:3010/join/?room=test&roomPassword=0&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0&username=username&password=password
|
||||
|
||||
const qs = new URLSearchParams(window.location.search);
|
||||
const room = filterXSS(qs.get('room'));
|
||||
|
||||
// http://localhost:3010/join/test
|
||||
const pathParts = window.location.pathname.split('/');
|
||||
const roomPath = pathParts[pathParts.length - 1];
|
||||
|
||||
if (username && password) {
|
||||
axios
|
||||
.post('/login', {
|
||||
username: username,
|
||||
password: password,
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
|
||||
// Store in session
|
||||
const token = response.data.message;
|
||||
window.sessionStorage.peer_token = token;
|
||||
|
||||
if (room) {
|
||||
return (window.location.href =
|
||||
'/join/' + window.location.search);
|
||||
/*
|
||||
return (window.location.href =
|
||||
'/join/?room=' + room + '&token=' + token); */
|
||||
}
|
||||
if (roomPath) {
|
||||
return (window.location.href = '/join/' + roomPath);
|
||||
/*
|
||||
return (window.location.href =
|
||||
'/join/?room=' + roomPath + '&token=' + token); */
|
||||
}
|
||||
|
||||
return (window.location.href = '/logged');
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error(error);
|
||||
alert('Unauthorized');
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!username && !password) {
|
||||
alert('Username and Password required');
|
||||
return;
|
||||
}
|
||||
if (!username) {
|
||||
alert('Username required');
|
||||
return;
|
||||
}
|
||||
if (!password) {
|
||||
alert('Password required');
|
||||
return;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="hero-figure anime-element">
|
||||
<svg class="placeholder" width="528" height="396" viewBox="0 0 528 396">
|
||||
@@ -325,7 +237,8 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/scripts/Login.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -45,8 +45,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -137,61 +137,16 @@
|
||||
<button
|
||||
id="genRoomButton"
|
||||
class="button button-primary br-6 mr-8 mb-8 fas fa-arrows-rotate"
|
||||
onclick="genRoom()"
|
||||
></button>
|
||||
<button
|
||||
id="joinRoomButton"
|
||||
class="button button-primary pulse"
|
||||
onclick="joinRoom()"
|
||||
>
|
||||
<button id="joinRoomButton" class="button button-primary pulse">
|
||||
Join Room
|
||||
</button>
|
||||
<script>
|
||||
document.getElementById('roomName').onkeyup = (e) => {
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault();
|
||||
joinRoom();
|
||||
}
|
||||
};
|
||||
function genRoom() {
|
||||
document.getElementById('roomName').value = getUUID4();
|
||||
}
|
||||
function getUUID4() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>
|
||||
(
|
||||
c ^
|
||||
(crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
|
||||
).toString(16),
|
||||
);
|
||||
}
|
||||
function joinRoom() {
|
||||
const roomName = filterXSS(document.getElementById('roomName').value);
|
||||
if (roomName) {
|
||||
window.location.href = '/join/' + roomName;
|
||||
window.localStorage.lastRoom = roomName;
|
||||
} else {
|
||||
alert('Room name empty!\nPlease pick a room name.');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div id="lastRoomContainer" class="last-room">
|
||||
<span>Your recent room:</span>
|
||||
<a id="lastRoom"></a>
|
||||
</div>
|
||||
<script>
|
||||
const lastRoomContainer = document.getElementById('lastRoomContainer');
|
||||
const lastRoom = document.getElementById('lastRoom');
|
||||
const lastRoomName = window.localStorage.lastRoom
|
||||
? window.localStorage.lastRoom
|
||||
: '';
|
||||
if (lastRoomName) {
|
||||
lastRoomContainer.style.display = 'inline-flex';
|
||||
lastRoom.setAttribute('href', '/join/' + lastRoomName);
|
||||
lastRoom.innerText = lastRoomName;
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -293,8 +248,8 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/newRoom.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script defer src="../js/scripts/Common.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -91,16 +91,6 @@
|
||||
This app will not work without camera or microphone access. Please try again and
|
||||
allow it.
|
||||
</p>
|
||||
<script>
|
||||
let qs = new URLSearchParams(window.location.search);
|
||||
let room_id = filterXSS(qs.get('room_id'));
|
||||
let message = filterXSS(qs.get('message'));
|
||||
console.log('Allow Camera or Audio', {
|
||||
room_id: room_id,
|
||||
message: message,
|
||||
});
|
||||
document.getElementById('message').innerHTML = message;
|
||||
</script>
|
||||
<div class="hero-cta">
|
||||
<a
|
||||
class="button button-primary pulse"
|
||||
@@ -224,7 +214,7 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
<!-- Js scripts -->
|
||||
|
||||
<script defer src="../js/Brand.js"></script>
|
||||
<script async src="../js/Umami.js"></script>
|
||||
<script defer src="../js/scripts/Brand.js"></script>
|
||||
<script async src="../js/scripts/Umami.js"></script>
|
||||
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js"></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></script>
|
||||
@@ -217,7 +217,7 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script defer src="../js/landing.js"></script>
|
||||
<script defer src="../js/scripts/Landing.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم