167 lines
		
	
	
		
			No EOL
		
	
	
		
			7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			No EOL
		
	
	
		
			7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <html>
 | |
|     <head>
 | |
|         <meta charset="utf-8" />
 | |
|         <link type="text/css" rel="stylesheet" href="https://source.zoom.us/2.0.1/css/bootstrap.css" />
 | |
|         <link type="text/css" rel="stylesheet" href="https://source.zoom.us/2.0.1/css/react-select.css" />
 | |
|     </head>
 | |
|     <body>
 | |
|         <script src="https://source.zoom.us/2.0.1/lib/vendor/react.min.js"></script>
 | |
|         <script src="https://source.zoom.us/2.0.1/lib/vendor/react-dom.min.js"></script>
 | |
|         <script src="https://source.zoom.us/2.0.1/lib/vendor/redux.min.js"></script>
 | |
|         <script src="https://source.zoom.us/2.0.1/lib/vendor/redux-thunk.min.js"></script>
 | |
|         <script src="https://source.zoom.us/2.0.1/lib/vendor/lodash.min.js"></script>
 | |
|         <script src="https://source.zoom.us/zoom-meeting-2.0.1.min.js"></script>
 | |
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9/crypto-js.min.js"></script>
 | |
|         <script type="text/javascript">
 | |
|             var audioJoin = 0;
 | |
|             var videoJoin = 0;
 | |
|             var join = 0;
 | |
| 
 | |
|             function controlUserInterface(_) {
 | |
|                 var appSignal = document.getElementById('app-signal');
 | |
|                 var audioButton = document.getElementsByClassName('join-audio-by-voip__join-btn')[0];
 | |
|                 var audioContainer = document.getElementsByClassName('join-audio-container')[0];
 | |
|                 var joinButton = document.getElementsByClassName('joinWindowBtn')[0];
 | |
|                 var leave = document.getElementsByClassName('footer__leave-btn-container')[0];
 | |
|                 var more = document.getElementsByClassName('more-button')[0];
 | |
|                 var participantControls = document.getElementsByClassName('participants-item__buttons')[0];
 | |
|                 var raiseHandContainer = document.getElementsByClassName('participants-section-container__participants-footer')[0];
 | |
|                 var videoButton = document.getElementsByClassName('send-video-container__btn')[0];
 | |
|                 var videoContainer = document.getElementsByClassName('send-video-container')[0];
 | |
| 
 | |
|                 if (appSignal) {
 | |
|                     appSignal.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 if (audioButton && !'%_AUDIO_MUTED_%' && audioJoin < 500) {
 | |
|                     audioButton.click();
 | |
|                     audioJoin++;
 | |
|                 }
 | |
| 
 | |
|                 if (audioContainer && !'%_AUDIO_MUTED_%') {
 | |
|                     audioContainer.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 if (joinButton && join < 500) {
 | |
|                     joinButton.click();
 | |
|                     join++;
 | |
|                 }
 | |
| 
 | |
|                 if (leave) {
 | |
|                     leave.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 if (more) {
 | |
|                     more.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 if (participantControls) {
 | |
|                     participantControls.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 if (raiseHandContainer && !'%_ALLOW_RAISE_HAND_%') {
 | |
|                     raiseHandContainer.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 if (videoButton && !'%_VIDEO_MUTED_%' && videoJoin < 500) {
 | |
|                     videoButton.click();
 | |
|                     videoJoin++;
 | |
|                 }
 | |
| 
 | |
|                 if (videoContainer && !'%_VIDEO_MUTED_%') {
 | |
|                     videoContainer.style.visibility = 'hidden';
 | |
|                 }
 | |
| 
 | |
|                 requestAnimationFrame(controlUserInterface);
 | |
|             }
 | |
| 
 | |
|             function startMeeting(credentials) {
 | |
|                 const ATTENDEE = 0;
 | |
|                 var signature = credentials.signature;
 | |
| 
 | |
|                 if (!ZoomMtg.checkSystemRequirements()) {
 | |
|                     alert('This system does not meet the necessary requirements for Zoom!');
 | |
|                 }
 | |
| 
 | |
|                 ZoomMtg.setZoomJSLib('https://source.zoom.us/2.0.1/lib', '/av');
 | |
|                 ZoomMtg.preLoadWasm();
 | |
|                 ZoomMtg.prepareJssdk();
 | |
| 
 | |
|                 if (!signature) {
 | |
|                     signature = ZoomMtg.generateSignature({
 | |
|                         meetingNumber: credentials.meetingNumber,
 | |
|                         apiKey: credentials.apiKey,
 | |
|                         apiSecret: credentials.apiSecret,
 | |
|                         role: ATTENDEE,
 | |
|                         error: function (res) {
 | |
|                             alert(`Failed to generate signature: ${JSON.stringify(res)}`);
 | |
|                         }
 | |
|                     });
 | |
|                 }
 | |
| 
 | |
|                 ZoomMtg.init({
 | |
|                     audioPanelAlwaysOpen: false,
 | |
|                     disableCallOut: true,
 | |
|                     disableInvite: true,
 | |
|                     disableJoinAudio: false,
 | |
|                     disableRecord: true,
 | |
|                     disableReport: true,
 | |
|                     disableVoIP: false,
 | |
|                     leaveUrl: 'doesnotexist',
 | |
|                     isLockBottom: true,
 | |
|                     isShowJoiningErrorDialog: true,
 | |
|                     isSupportAV: true,
 | |
|                     isSupportBreakout: false,
 | |
|                     isSupportChat: '%_ALLOW_CHAT_%',
 | |
|                     isSupportCC: '%_ALLOW_CLOSED_CAPTIONS_%',
 | |
|                     isSupportPolling: false,
 | |
|                     isSupportQA: false,
 | |
|                     isSupportNonverbal: false,
 | |
|                     screenShare: false,
 | |
|                     sharingMode: 'both',
 | |
|                     showMeetingHeader: true,
 | |
|                     showPureSharingContent: false,
 | |
|                     videoDrag: true,
 | |
|                     videoHeader: true,
 | |
|                     meetingInfo: [
 | |
|                         'topic',
 | |
|                         'host',
 | |
|                         'participant',
 | |
|                         //'mn',
 | |
|                         //'pwd',
 | |
|                         //'telPwd',
 | |
|                         //'invite',
 | |
|                         //'dc'
 | |
|                     ],
 | |
|                     error: function (res) {
 | |
|                         alert(`Failed to initialize meeting: ${JSON.stringify(res)}`);
 | |
|                     },
 | |
|                     success: function () {
 | |
|                         requestAnimationFrame(controlUserInterface);
 | |
| 
 | |
|                         ZoomMtg.join({
 | |
|                             apiKey: credentials.apiKey,
 | |
|                             meetingNumber: credentials.meetingNumber,
 | |
|                             passWord: credentials.password,
 | |
|                             signature: signature,
 | |
|                             userName: credentials.userName,
 | |
|                             error: function (res) {
 | |
|                                 alert(`Failed to join meeting: ${JSON.stringify(res)}`);
 | |
|                             }
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
| 
 | |
|             function webMessageReceived(args) {
 | |
|                 if ('credentials' in args.data) {
 | |
|                     startMeeting(args.data.credentials);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             window.addEventListener('unload', () => ZoomMtg.leaveMeeting({}));
 | |
|             window.chrome.webview.addEventListener('message', webMessageReceived);
 | |
|             window.chrome.webview.postMessage('credentials');
 | |
|         </script>
 | |
|     </body>
 | |
| </html> | 
