Help
RSS
API
Feed
Maltego
Contact
Domain > khorshidfard.ir
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2013-12-09
176.9.28.201
(
ClassC
)
2024-09-10
185.55.225.85
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: nginxDate: Tue, 10 Sep 2024 09:00:38 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-alive !DOCTYPE html>html langen>head> meta http-equivContent-Type contenttext/html; charsetUTF-8> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1.0, user-scalableno> meta http-equivX-UA-Compatible contentIEedge,chrome1> link relstylesheet hrefhttps://www.webrtc-experiment.com/style.css> style> audio { vertical-align: bottom; width: 10em; } video { max-width: 100%; vertical-align: top; } input { border: 1px solid #d9d9d9; border-radius: 1px; font-size: 2em; margin: .2em; width: 30%; } p, .inner { padding: 1em; } li { border-bottom: 1px solid rgb(189, 189, 189); border-left: 1px solid rgb(189, 189, 189); padding: .5em; } label { display: inline-block; width: 8em; } /style> style> .recordrtc button { font-size: inherit; } .recordrtc button, .recordrtc select { vertical-align: middle; line-height: 1; padding: 2px 5px; height: auto; font-size: inherit; margin: 0; } .recordrtc, .recordrtc .header { display: block; text-align: center; padding-top: 0; } .recordrtc video { width: 70%; } .recordrtc optiondisabled { display: none; } /style> script srchttps://www.webrtc-experiment.com/RecordRTC.js>/script> script srchttps://www.webrtc-experiment.com/gif-recorder.js>/script> script srchttps://www.webrtc-experiment.com/getScreenId.js>/script> script srchttps://www.webrtc-experiment.com/DetectRTC.js> /script> !-- for Edige/FF/Chrome/Opera/etc. getUserMedia support --> script srchttps://webrtc.github.io/adapter/adapter-latest.js>/script>/head>body> article> section classexperiment recordrtc> h2 classheader> select classrecording-media> option valuerecord-video>Video/option> option valuerecord-audio>Audio/option> option valuerecord-screen>Screen/option> /select> into select classmedia-container-format> option>WebM/option> option disabled>Mp4/option> option disabled>WAV/option> option disabled>Ogg/option> option>Gif/option> /select> button>Start Recording/button> /h2> div styletext-align: center; display: none;> button idsave-to-disk>Save To Disk/button> button idopen-new-tab>Open New Tab/button> button idupload-to-server>ذخیره شود/button> a href../new_ticket.php >بازگشت/a> /div> br> video controls playsinline autoplay mutedfalse volume1>/video> /section> script> (function() { var params {}, r /(^&+)?(^&*)/g; function d(s) { return decodeURIComponent(s.replace(/\+/g, )); } var match, search window.location.search; while (match r.exec(search.substring(1))) { paramsd(match1) d(match2); if(d(match2) true || d(match2) false) { paramsd(match1) d(match2) true ? true : false; } } window.params params; })(); /script> script> var recordingDIV document.querySelector(.recordrtc); var recordingMedia recordingDIV.querySelector(.recording-media); var recordingPlayer recordingDIV.querySelector(video); var mediaContainerFormat recordingDIV.querySelector(.media-container-format); recordingDIV.querySelector(button).onclick function() { var button this; if(button.innerHTML Stop Recording) { button.disabled true; button.disableStateWaiting true; setTimeout(function() { button.disabled false; button.disableStateWaiting false; }, 2 * 1000); button.innerHTML Start Recording; function stopStream() { if(button.stream && button.stream.stop) { button.stream.stop(); button.stream null; } } if(button.recordRTC) { if(button.recordRTC.length) { button.recordRTC0.stopRecording(function(url) { if(!button.recordRTC1) { button.recordingEndedCallback(url); stopStream(); saveToDiskOrOpenNewTab(button.recordRTC0); return; } button.recordRTC1.stopRecording(function(url) { button.recordingEndedCallback(url); stopStream(); }); }); } else { button.recordRTC.stopRecording(function(url) { button.recordingEndedCallback(url); stopStream(); saveToDiskOrOpenNewTab(button.recordRTC); }); } } return; } button.disabled true; var commonConfig { onMediaCaptured: function(stream) { button.stream stream; if(button.mediaCapturedCallback) { button.mediaCapturedCallback(); } button.innerHTML Stop Recording; button.disabled false; }, onMediaStopped: function() { button.innerHTML Start Recording; if(!button.disableStateWaiting) { button.disabled false; } }, onMediaCapturingFailed: function(error) { if(error.name PermissionDeniedError && !!navigator.mozGetUserMedia) { InstallTrigger.install({ Foo: { // https://addons.mozilla.org/firefox/downloads/latest/655146/addon-655146-latest.xpi?srcdp-btn-primary URL: https://addons.mozilla.org/en-US/firefox/addon/enable-screen-capturing/, toString: function () { return this.URL; } } }); } commonConfig.onMediaStopped(); } }; if(recordingMedia.value record-video) { captureVideo(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: mediaContainerFormat.value Gif ? gif : video, disableLogs: params.disableLogs || false, canvas: { width: params.canvas_width || 320, height: params.canvas_height || 240 }, frameInterval: typeof params.frameInterval ! undefined ? parseInt(params.frameInterval) : 20 // minimum time between pushing frames to Whammy (in milliseconds) }); button.recordingEndedCallback function(url) { recordingPlayer.src null; recordingPlayer.srcObject null; if(mediaContainerFormat.value Gif) { recordingPlayer.pause(); recordingPlayer.poster url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.poster URL.createObjectURL(button.recordRTC.blob); }; return; } recordingPlayer.src url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-audio) { captureAudio(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: audio, bufferSize: typeof params.bufferSize undefined ? 0 : parseInt(params.bufferSize), sampleRate: typeof params.sampleRate undefined ? 44100 : parseInt(params.sampleRate), leftChannel: params.leftChannel || false, disableLogs: params.disableLogs || false, recorderType: DetectRTC.browser.name Edge ? StereoAudioRecorder : null }); button.recordingEndedCallback function(url) { var audio new Audio(); audio.src url; audio.controls true; recordingPlayer.parentNode.appendChild(document.createElement(hr)); recordingPlayer.parentNode.appendChild(audio); if(audio.paused) audio.play(); audio.onended function() { audio.pause(); audio.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-audio-plus-video) { captureAudioPlusVideo(commonConfig); button.mediaCapturedCallback function() { if(DetectRTC.browser.name ! Firefox) { // opera or chrome etc. button.recordRTC ; if(!params.bufferSize) { // it fixes audio issues whilst recording 720p params.bufferSize 16384; } var audioRecorder RecordRTC(button.stream, { type: audio, bufferSize: typeof params.bufferSize undefined ? 0 : parseInt(params.bufferSize), sampleRate: typeof params.sampleRate undefined ? 44100 : parseInt(params.sampleRate), leftChannel: params.leftChannel || false, disableLogs: params.disableLogs || false, recorderType: DetectRTC.browser.name Edge ? StereoAudioRecorder : null }); var videoRecorder RecordRTC(button.stream, { type: video, disableLogs: params.disableLogs || false, canvas: { width: params.canvas_width || 320, height: params.canvas_height || 240 }, frameInterval: typeof params.frameInterval ! undefined ? parseInt(params.frameInterval) : 20 // minimum time between pushing frames to Whammy (in milliseconds) }); // to sync audio/video playbacks in browser! videoRecorder.initRecorder(function() { audioRecorder.initRecorder(function() { audioRecorder.startRecording(); videoRecorder.startRecording(); }); }); button.recordRTC.push(audioRecorder, videoRecorder); button.recordingEndedCallback function() { var audio new Audio(); audio.src audioRecorder.toURL(); audio.controls true; audio.autoplay true; audio.onloadedmetadata function() { recordingPlayer.src videoRecorder.toURL(); }; recordingPlayer.parentNode.appendChild(document.createElement(hr)); recordingPlayer.parentNode.appendChild(audio); if(audio.paused) audio.play(); }; return; } button.recordRTC RecordRTC(button.stream, { type: video, disableLogs: params.disableLogs || false, // we cant pass bitrates or framerates here // Firefox MediaRecorder API lakes these features }); button.recordingEndedCallback function(url) { recordingPlayer.srcObject null; recordingPlayer.muted false; recordingPlayer.src url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-screen) { captureScreen(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: mediaContainerFormat.value Gif ? gif : video, disableLogs: params.disableLogs || false, canvas: { width: params.canvas_width || 320, height: params.canvas_height || 240 } }); button.recordingEndedCallback function(url) { recordingPlayer.src null; recordingPlayer.srcObject null; if(mediaContainerFormat.value Gif) { recordingPlayer.pause(); recordingPlayer.poster url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.poster URL.createObjectURL(button.recordRTC.blob); }; return; } recordingPlayer.src url; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-audio-plus-screen) { captureAudioPlusScreen(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: video, disableLogs: params.disableLogs || false, // we cant pass bitrates or framerates here // Firefox MediaRecorder API lakes these features }); button.recordingEndedCallback function(url) { recordingPlayer.srcObject null; recordingPlayer.muted false; recordingPlayer.src url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } }; function captureVideo(config) { captureUserMedia({video: true}, function(videoStream) { recordingPlayer.srcObject videoStream; config.onMediaCaptured(videoStream); videoStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); } function captureAudio(config) { captureUserMedia({audio: true}, function(audioStream) { recordingPlayer.srcObject audioStream; config.onMediaCaptured(audioStream); audioStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); } function captureAudioPlusVideo(config) { captureUserMedia({video: true, audio: true}, function(audioVideoStream) { recordingPlayer.srcObject audioVideoStream; config.onMediaCaptured(audioVideoStream); audioVideoStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); } function captureScreen(config) { getScreenId(function(error, sourceId, screenConstraints) { if (error not-installed) { document.write(h1>a target_blank hrefhttps://chrome.google.com/webstore/detail/screen-capturing/ajhifddimkapgcifgcodmmfdlknahffk>Please install this chrome extension then reload the page./a>/h1>); } if (error permission-denied) { alert(Screen capturing permission is denied.); } if (error installed-disabled) { alert(Please enable chrome screen capturing extension.); } if(error) { config.onMediaCapturingFailed(error); return; } captureUserMedia(screenConstraints, function(screenStream) { recordingPlayer.srcObject screenStream; config.onMediaCaptured(screenStream); screenStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); }); } function captureAudioPlusScreen(config) { getScreenId(function(error, sourceId, screenConstraints) { if (error not-installed) { document.write(h1>a target_blank hrefhttps://chrome.google.com/webstore/detail/screen-capturing/ajhifddimkapgcifgcodmmfdlknahffk>Please install this chrome extension then reload the page./a>/h1>); } if (error permission-denied) { alert(Screen capturing permission is denied.); } if (error installed-disabled) { alert(Please enable chrome screen capturing extension.); } if(error) { config.onMediaCapturingFailed(error); return; } screenConstraints.audio true; captureUserMedia(screenConstraints, function(screenStream) { recordingPlayer.srcObject screenStream; config.onMediaCaptured(screenStream); screenStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); }); } function captureUserMedia(mediaConstraints, successCallback, errorCallback) { navigator.mediaDevices.getUserMedia(mediaConstraints).then(successCallback).catch(errorCallback); } function setMediaContainerFormat(arrayOfOptionsSupported) { var options Array.prototype.slice.call( mediaContainerFormat.querySelectorAll(option) ); var selectedItem; options.forEach(function(option) { option.disabled true; if(arrayOfOptionsSupported.indexOf(option.value) ! -1) { option.disabled false; if(!selectedItem) { option.selected true; selectedItem option; } } }); } recordingMedia.onchange function() { if(this.value record-audio) { setMediaContainerFormat(WAV, Ogg); return; } setMediaContainerFormat(WebM, /*Mp4,*/ Gif); }; if(DetectRTC.browser.name Edge) { // webp isnt supported in Microsoft Edge // neither MediaRecorder API // so lets disable both video/screen recording options console.warn(Neither MediaRecorder API nor webp is supported in Microsoft Edge. You cam merely record audio.); recordingMedia.innerHTML option valuerecord-audio>Audio/option>; setMediaContainerFormat(WAV); } if(DetectRTC.browser.name Firefox) { // Firefox implemented both MediaRecorder API as well as WebAudio API // Their MediaRecorder implementation supports both audio/video recording in single container format // Remember, we cant currently pass bit-rates or frame-rates values over MediaRecorder API (their implementation lakes these features) recordingMedia.innerHTML option valuerecord-audio-plus-video>Audio+Video/option> + option valuerecord-audio-plus-screen>Audio+Screen/option> + recordingMedia.innerHTML; } // disabling this option because currently this demo // doesnt supports publishing two blobs. // todo: add support of uploading both WAV/WebM to server. if(false && DetectRTC.browser.name Chrome) { recordingMedia.innerHTML option valuerecord-audio-plus-video>Audio+Video/option> + recordingMedia.innerHTML; console.info(This RecordRTC demo merely tries to playback recorded audio/video sync inside the browser. It still generates two separate files (WAV/WebM).); } var MY_DOMAIN webrtc-experiment.com; function isMyOwnDomain() { // replace webrtc-experiment.com with your own domain name return document.domain.indexOf(MY_DOMAIN) ! -1; } function saveToDiskOrOpenNewTab(recordRTC) { recordingDIV.querySelector(#save-to-disk).parentNode.style.display block; recordingDIV.querySelector(#save-to-disk).onclick function() { if(!recordRTC) return alert(No recording found.); recordRTC.save(); }; recordingDIV.querySelector(#open-new-tab).onclick function() { if(!recordRTC) return alert(No recording found.); window.open(recordRTC.toURL()); }; if(isMyOwnDomain()) { recordingDIV.querySelector(#upload-to-server).disabled true; recordingDIV.querySelector(#upload-to-server).style.display none; } else { recordingDIV.querySelector(#upload-to-server).disabled false; } recordingDIV.querySelector(#upload-to-server).onclick function() { if(isMyOwnDomain()) { alert(PHP Upload is not available on this domain.); return; } if(!recordRTC) return alert(No recording found.); this.disabled true; var button this; uploadToServer(recordRTC, function(progress, fileURL) { if(progress ended) { button.disabled false; button.innerHTML ذخیره شد ; button.onclick function() { window.open(fileURL); }; return; } button.innerHTML progress; }); }; } var listOfFilesUploaded ; function uploadToServer(recordRTC, callback) { var blob recordRTC instanceof Blob ? recordRTC : recordRTC.blob; var fileType blob.type.split(/)0 || audio; var fileName (Math.random() * 1000).toString().replace(., ); if (fileType audio) { fileName + . + (!!navigator.mozGetUserMedia ? ogg : wav); } else { fileName + .webm; } var x document.createElement(INPUT); x.setAttribute(type, hidden); x.setAttribute(name, fileuser); x.setAttribute(value, fileName); document.body.appendChild(x); // create FormData var formData new FormData(); formData.append(fileType + -filename, fileName); formData.append(fileType + -blob, blob); callback(Uploading + fileType + recording to server.); // var upload_url https://your-domain.com/files-uploader/; var upload_url save.php; // var upload_directory upload_url; var upload_directory uploads/; makeXMLHttpRequest(upload_url, formData, function(progress) { if (progress ! upload-ended) { callback(progress); return; } callback(ended, upload_directory + fileName); // to make sure we can delete as soon as visitor leaves listOfFilesUploaded.push(upload_directory + fileName); }); } function makeXMLHttpRequest(url, data, callback) { var request new XMLHttpRequest(); request.onreadystatechange function() { if (request.readyState 4 && request.status 200) { callback(upload-ended); } }; request.upload.onloadstart function() { callback(Upload started...); }; request.upload.onprogress function(event) { callback(Upload Progress + Math.round(event.loaded / event.total * 100) + %); }; request.upload.onload function() { callback(progress-about-to-end); }; request.upload.onload function() { callback(progress-ended); }; request.upload.onerror function(error) { callback(Failed to upload to server); console.error(XMLHttpRequest failed, error); }; request.upload.onabort function(error) { callback(Upload aborted.); console.error(XMLHttpRequest aborted, error); }; request.open(POST, url); request.send(data); } window.onbeforeunload function() { recordingDIV.querySelector(button).disabled false; recordingMedia.disabled false; mediaContainerFormat.disabled false; if(!listOfFilesUploaded.length) return; var delete_url https://webrtcweb.com/f/delete.php; // var delete_url RecordRTC-to-PHP/delete.php; listOfFilesUploaded.forEach(function(fileURL) { var request new XMLHttpRequest(); request.onreadystatechange function() { if (request.readyState 4 && request.status 200) { if(this.responseText problem deleting files.) { alert(Failed to delete + fileURL + from the server.); return; } listOfFilesUploaded ; alert(You can leave now. Your files are removed from the server.); } }; request.open(POST, delete_url); var formData new FormData(); formData.append(delete-file, fileURL.split(/).pop()); request.send(formData); }); return Please wait few seconds before your recordings are deleted from the server.; }; /script> /article> !--a hrefhttps://github.com/muaz-khan/RecordRTC classfork-left>/a>--> !--footer>--> !--p>--> !--a hrefhttps://www.webrtc-experiment.com/>WebRTC Experiments/a> © a hrefhttps://MuazKhan.com relauthor target_blank>Muaz Khan/a>--> !--a hrefmailto:muazkh@gmail.com target_blank>muazkh@gmail.com/a>--> !--/p>--> !--/footer>--> !-- commits.js is useless for you! --> !--script>--> !--window.useThisGithubPath muaz-khan/RecordRTC;--> !--/script>--> script srchttps://www.webrtc-experiment.com/commits.js async>/script>/body>/html>
Port 443
HTTP/1.1 200 OKServer: nginxDate: Tue, 10 Sep 2024 09:00:39 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-alive !DOCTYPE html>html langen>head> meta http-equivContent-Type contenttext/html; charsetUTF-8> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1.0, user-scalableno> meta http-equivX-UA-Compatible contentIEedge,chrome1> link relstylesheet hrefhttps://www.webrtc-experiment.com/style.css> style> audio { vertical-align: bottom; width: 10em; } video { max-width: 100%; vertical-align: top; } input { border: 1px solid #d9d9d9; border-radius: 1px; font-size: 2em; margin: .2em; width: 30%; } p, .inner { padding: 1em; } li { border-bottom: 1px solid rgb(189, 189, 189); border-left: 1px solid rgb(189, 189, 189); padding: .5em; } label { display: inline-block; width: 8em; } /style> style> .recordrtc button { font-size: inherit; } .recordrtc button, .recordrtc select { vertical-align: middle; line-height: 1; padding: 2px 5px; height: auto; font-size: inherit; margin: 0; } .recordrtc, .recordrtc .header { display: block; text-align: center; padding-top: 0; } .recordrtc video { width: 70%; } .recordrtc optiondisabled { display: none; } /style> script srchttps://www.webrtc-experiment.com/RecordRTC.js>/script> script srchttps://www.webrtc-experiment.com/gif-recorder.js>/script> script srchttps://www.webrtc-experiment.com/getScreenId.js>/script> script srchttps://www.webrtc-experiment.com/DetectRTC.js> /script> !-- for Edige/FF/Chrome/Opera/etc. getUserMedia support --> script srchttps://webrtc.github.io/adapter/adapter-latest.js>/script>/head>body> article> section classexperiment recordrtc> h2 classheader> select classrecording-media> option valuerecord-video>Video/option> option valuerecord-audio>Audio/option> option valuerecord-screen>Screen/option> /select> into select classmedia-container-format> option>WebM/option> option disabled>Mp4/option> option disabled>WAV/option> option disabled>Ogg/option> option>Gif/option> /select> button>Start Recording/button> /h2> div styletext-align: center; display: none;> button idsave-to-disk>Save To Disk/button> button idopen-new-tab>Open New Tab/button> button idupload-to-server>ذخیره شود/button> a href../new_ticket.php >بازگشت/a> /div> br> video controls playsinline autoplay mutedfalse volume1>/video> /section> script> (function() { var params {}, r /(^&+)?(^&*)/g; function d(s) { return decodeURIComponent(s.replace(/\+/g, )); } var match, search window.location.search; while (match r.exec(search.substring(1))) { paramsd(match1) d(match2); if(d(match2) true || d(match2) false) { paramsd(match1) d(match2) true ? true : false; } } window.params params; })(); /script> script> var recordingDIV document.querySelector(.recordrtc); var recordingMedia recordingDIV.querySelector(.recording-media); var recordingPlayer recordingDIV.querySelector(video); var mediaContainerFormat recordingDIV.querySelector(.media-container-format); recordingDIV.querySelector(button).onclick function() { var button this; if(button.innerHTML Stop Recording) { button.disabled true; button.disableStateWaiting true; setTimeout(function() { button.disabled false; button.disableStateWaiting false; }, 2 * 1000); button.innerHTML Start Recording; function stopStream() { if(button.stream && button.stream.stop) { button.stream.stop(); button.stream null; } } if(button.recordRTC) { if(button.recordRTC.length) { button.recordRTC0.stopRecording(function(url) { if(!button.recordRTC1) { button.recordingEndedCallback(url); stopStream(); saveToDiskOrOpenNewTab(button.recordRTC0); return; } button.recordRTC1.stopRecording(function(url) { button.recordingEndedCallback(url); stopStream(); }); }); } else { button.recordRTC.stopRecording(function(url) { button.recordingEndedCallback(url); stopStream(); saveToDiskOrOpenNewTab(button.recordRTC); }); } } return; } button.disabled true; var commonConfig { onMediaCaptured: function(stream) { button.stream stream; if(button.mediaCapturedCallback) { button.mediaCapturedCallback(); } button.innerHTML Stop Recording; button.disabled false; }, onMediaStopped: function() { button.innerHTML Start Recording; if(!button.disableStateWaiting) { button.disabled false; } }, onMediaCapturingFailed: function(error) { if(error.name PermissionDeniedError && !!navigator.mozGetUserMedia) { InstallTrigger.install({ Foo: { // https://addons.mozilla.org/firefox/downloads/latest/655146/addon-655146-latest.xpi?srcdp-btn-primary URL: https://addons.mozilla.org/en-US/firefox/addon/enable-screen-capturing/, toString: function () { return this.URL; } } }); } commonConfig.onMediaStopped(); } }; if(recordingMedia.value record-video) { captureVideo(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: mediaContainerFormat.value Gif ? gif : video, disableLogs: params.disableLogs || false, canvas: { width: params.canvas_width || 320, height: params.canvas_height || 240 }, frameInterval: typeof params.frameInterval ! undefined ? parseInt(params.frameInterval) : 20 // minimum time between pushing frames to Whammy (in milliseconds) }); button.recordingEndedCallback function(url) { recordingPlayer.src null; recordingPlayer.srcObject null; if(mediaContainerFormat.value Gif) { recordingPlayer.pause(); recordingPlayer.poster url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.poster URL.createObjectURL(button.recordRTC.blob); }; return; } recordingPlayer.src url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-audio) { captureAudio(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: audio, bufferSize: typeof params.bufferSize undefined ? 0 : parseInt(params.bufferSize), sampleRate: typeof params.sampleRate undefined ? 44100 : parseInt(params.sampleRate), leftChannel: params.leftChannel || false, disableLogs: params.disableLogs || false, recorderType: DetectRTC.browser.name Edge ? StereoAudioRecorder : null }); button.recordingEndedCallback function(url) { var audio new Audio(); audio.src url; audio.controls true; recordingPlayer.parentNode.appendChild(document.createElement(hr)); recordingPlayer.parentNode.appendChild(audio); if(audio.paused) audio.play(); audio.onended function() { audio.pause(); audio.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-audio-plus-video) { captureAudioPlusVideo(commonConfig); button.mediaCapturedCallback function() { if(DetectRTC.browser.name ! Firefox) { // opera or chrome etc. button.recordRTC ; if(!params.bufferSize) { // it fixes audio issues whilst recording 720p params.bufferSize 16384; } var audioRecorder RecordRTC(button.stream, { type: audio, bufferSize: typeof params.bufferSize undefined ? 0 : parseInt(params.bufferSize), sampleRate: typeof params.sampleRate undefined ? 44100 : parseInt(params.sampleRate), leftChannel: params.leftChannel || false, disableLogs: params.disableLogs || false, recorderType: DetectRTC.browser.name Edge ? StereoAudioRecorder : null }); var videoRecorder RecordRTC(button.stream, { type: video, disableLogs: params.disableLogs || false, canvas: { width: params.canvas_width || 320, height: params.canvas_height || 240 }, frameInterval: typeof params.frameInterval ! undefined ? parseInt(params.frameInterval) : 20 // minimum time between pushing frames to Whammy (in milliseconds) }); // to sync audio/video playbacks in browser! videoRecorder.initRecorder(function() { audioRecorder.initRecorder(function() { audioRecorder.startRecording(); videoRecorder.startRecording(); }); }); button.recordRTC.push(audioRecorder, videoRecorder); button.recordingEndedCallback function() { var audio new Audio(); audio.src audioRecorder.toURL(); audio.controls true; audio.autoplay true; audio.onloadedmetadata function() { recordingPlayer.src videoRecorder.toURL(); }; recordingPlayer.parentNode.appendChild(document.createElement(hr)); recordingPlayer.parentNode.appendChild(audio); if(audio.paused) audio.play(); }; return; } button.recordRTC RecordRTC(button.stream, { type: video, disableLogs: params.disableLogs || false, // we cant pass bitrates or framerates here // Firefox MediaRecorder API lakes these features }); button.recordingEndedCallback function(url) { recordingPlayer.srcObject null; recordingPlayer.muted false; recordingPlayer.src url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-screen) { captureScreen(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: mediaContainerFormat.value Gif ? gif : video, disableLogs: params.disableLogs || false, canvas: { width: params.canvas_width || 320, height: params.canvas_height || 240 } }); button.recordingEndedCallback function(url) { recordingPlayer.src null; recordingPlayer.srcObject null; if(mediaContainerFormat.value Gif) { recordingPlayer.pause(); recordingPlayer.poster url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.poster URL.createObjectURL(button.recordRTC.blob); }; return; } recordingPlayer.src url; }; button.recordRTC.startRecording(); }; } if(recordingMedia.value record-audio-plus-screen) { captureAudioPlusScreen(commonConfig); button.mediaCapturedCallback function() { button.recordRTC RecordRTC(button.stream, { type: video, disableLogs: params.disableLogs || false, // we cant pass bitrates or framerates here // Firefox MediaRecorder API lakes these features }); button.recordingEndedCallback function(url) { recordingPlayer.srcObject null; recordingPlayer.muted false; recordingPlayer.src url; recordingPlayer.onended function() { recordingPlayer.pause(); recordingPlayer.src URL.createObjectURL(button.recordRTC.blob); }; }; button.recordRTC.startRecording(); }; } }; function captureVideo(config) { captureUserMedia({video: true}, function(videoStream) { recordingPlayer.srcObject videoStream; config.onMediaCaptured(videoStream); videoStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); } function captureAudio(config) { captureUserMedia({audio: true}, function(audioStream) { recordingPlayer.srcObject audioStream; config.onMediaCaptured(audioStream); audioStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); } function captureAudioPlusVideo(config) { captureUserMedia({video: true, audio: true}, function(audioVideoStream) { recordingPlayer.srcObject audioVideoStream; config.onMediaCaptured(audioVideoStream); audioVideoStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); } function captureScreen(config) { getScreenId(function(error, sourceId, screenConstraints) { if (error not-installed) { document.write(h1>a target_blank hrefhttps://chrome.google.com/webstore/detail/screen-capturing/ajhifddimkapgcifgcodmmfdlknahffk>Please install this chrome extension then reload the page./a>/h1>); } if (error permission-denied) { alert(Screen capturing permission is denied.); } if (error installed-disabled) { alert(Please enable chrome screen capturing extension.); } if(error) { config.onMediaCapturingFailed(error); return; } captureUserMedia(screenConstraints, function(screenStream) { recordingPlayer.srcObject screenStream; config.onMediaCaptured(screenStream); screenStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); }); } function captureAudioPlusScreen(config) { getScreenId(function(error, sourceId, screenConstraints) { if (error not-installed) { document.write(h1>a target_blank hrefhttps://chrome.google.com/webstore/detail/screen-capturing/ajhifddimkapgcifgcodmmfdlknahffk>Please install this chrome extension then reload the page./a>/h1>); } if (error permission-denied) { alert(Screen capturing permission is denied.); } if (error installed-disabled) { alert(Please enable chrome screen capturing extension.); } if(error) { config.onMediaCapturingFailed(error); return; } screenConstraints.audio true; captureUserMedia(screenConstraints, function(screenStream) { recordingPlayer.srcObject screenStream; config.onMediaCaptured(screenStream); screenStream.onended function() { config.onMediaStopped(); }; }, function(error) { config.onMediaCapturingFailed(error); }); }); } function captureUserMedia(mediaConstraints, successCallback, errorCallback) { navigator.mediaDevices.getUserMedia(mediaConstraints).then(successCallback).catch(errorCallback); } function setMediaContainerFormat(arrayOfOptionsSupported) { var options Array.prototype.slice.call( mediaContainerFormat.querySelectorAll(option) ); var selectedItem; options.forEach(function(option) { option.disabled true; if(arrayOfOptionsSupported.indexOf(option.value) ! -1) { option.disabled false; if(!selectedItem) { option.selected true; selectedItem option; } } }); } recordingMedia.onchange function() { if(this.value record-audio) { setMediaContainerFormat(WAV, Ogg); return; } setMediaContainerFormat(WebM, /*Mp4,*/ Gif); }; if(DetectRTC.browser.name Edge) { // webp isnt supported in Microsoft Edge // neither MediaRecorder API // so lets disable both video/screen recording options console.warn(Neither MediaRecorder API nor webp is supported in Microsoft Edge. You cam merely record audio.); recordingMedia.innerHTML option valuerecord-audio>Audio/option>; setMediaContainerFormat(WAV); } if(DetectRTC.browser.name Firefox) { // Firefox implemented both MediaRecorder API as well as WebAudio API // Their MediaRecorder implementation supports both audio/video recording in single container format // Remember, we cant currently pass bit-rates or frame-rates values over MediaRecorder API (their implementation lakes these features) recordingMedia.innerHTML option valuerecord-audio-plus-video>Audio+Video/option> + option valuerecord-audio-plus-screen>Audio+Screen/option> + recordingMedia.innerHTML; } // disabling this option because currently this demo // doesnt supports publishing two blobs. // todo: add support of uploading both WAV/WebM to server. if(false && DetectRTC.browser.name Chrome) { recordingMedia.innerHTML option valuerecord-audio-plus-video>Audio+Video/option> + recordingMedia.innerHTML; console.info(This RecordRTC demo merely tries to playback recorded audio/video sync inside the browser. It still generates two separate files (WAV/WebM).); } var MY_DOMAIN webrtc-experiment.com; function isMyOwnDomain() { // replace webrtc-experiment.com with your own domain name return document.domain.indexOf(MY_DOMAIN) ! -1; } function saveToDiskOrOpenNewTab(recordRTC) { recordingDIV.querySelector(#save-to-disk).parentNode.style.display block; recordingDIV.querySelector(#save-to-disk).onclick function() { if(!recordRTC) return alert(No recording found.); recordRTC.save(); }; recordingDIV.querySelector(#open-new-tab).onclick function() { if(!recordRTC) return alert(No recording found.); window.open(recordRTC.toURL()); }; if(isMyOwnDomain()) { recordingDIV.querySelector(#upload-to-server).disabled true; recordingDIV.querySelector(#upload-to-server).style.display none; } else { recordingDIV.querySelector(#upload-to-server).disabled false; } recordingDIV.querySelector(#upload-to-server).onclick function() { if(isMyOwnDomain()) { alert(PHP Upload is not available on this domain.); return; } if(!recordRTC) return alert(No recording found.); this.disabled true; var button this; uploadToServer(recordRTC, function(progress, fileURL) { if(progress ended) { button.disabled false; button.innerHTML ذخیره شد ; button.onclick function() { window.open(fileURL); }; return; } button.innerHTML progress; }); }; } var listOfFilesUploaded ; function uploadToServer(recordRTC, callback) { var blob recordRTC instanceof Blob ? recordRTC : recordRTC.blob; var fileType blob.type.split(/)0 || audio; var fileName (Math.random() * 1000).toString().replace(., ); if (fileType audio) { fileName + . + (!!navigator.mozGetUserMedia ? ogg : wav); } else { fileName + .webm; } var x document.createElement(INPUT); x.setAttribute(type, hidden); x.setAttribute(name, fileuser); x.setAttribute(value, fileName); document.body.appendChild(x); // create FormData var formData new FormData(); formData.append(fileType + -filename, fileName); formData.append(fileType + -blob, blob); callback(Uploading + fileType + recording to server.); // var upload_url https://your-domain.com/files-uploader/; var upload_url save.php; // var upload_directory upload_url; var upload_directory uploads/; makeXMLHttpRequest(upload_url, formData, function(progress) { if (progress ! upload-ended) { callback(progress); return; } callback(ended, upload_directory + fileName); // to make sure we can delete as soon as visitor leaves listOfFilesUploaded.push(upload_directory + fileName); }); } function makeXMLHttpRequest(url, data, callback) { var request new XMLHttpRequest(); request.onreadystatechange function() { if (request.readyState 4 && request.status 200) { callback(upload-ended); } }; request.upload.onloadstart function() { callback(Upload started...); }; request.upload.onprogress function(event) { callback(Upload Progress + Math.round(event.loaded / event.total * 100) + %); }; request.upload.onload function() { callback(progress-about-to-end); }; request.upload.onload function() { callback(progress-ended); }; request.upload.onerror function(error) { callback(Failed to upload to server); console.error(XMLHttpRequest failed, error); }; request.upload.onabort function(error) { callback(Upload aborted.); console.error(XMLHttpRequest aborted, error); }; request.open(POST, url); request.send(data); } window.onbeforeunload function() { recordingDIV.querySelector(button).disabled false; recordingMedia.disabled false; mediaContainerFormat.disabled false; if(!listOfFilesUploaded.length) return; var delete_url https://webrtcweb.com/f/delete.php; // var delete_url RecordRTC-to-PHP/delete.php; listOfFilesUploaded.forEach(function(fileURL) { var request new XMLHttpRequest(); request.onreadystatechange function() { if (request.readyState 4 && request.status 200) { if(this.responseText problem deleting files.) { alert(Failed to delete + fileURL + from the server.); return; } listOfFilesUploaded ; alert(You can leave now. Your files are removed from the server.); } }; request.open(POST, delete_url); var formData new FormData(); formData.append(delete-file, fileURL.split(/).pop()); request.send(formData); }); return Please wait few seconds before your recordings are deleted from the server.; }; /script> /article> !--a hrefhttps://github.com/muaz-khan/RecordRTC classfork-left>/a>--> !--footer>--> !--p>--> !--a hrefhttps://www.webrtc-experiment.com/>WebRTC Experiments/a> © a hrefhttps://MuazKhan.com relauthor target_blank>Muaz Khan/a>--> !--a hrefmailto:muazkh@gmail.com target_blank>muazkh@gmail.com/a>--> !--/p>--> !--/footer>--> !-- commits.js is useless for you! --> !--script>--> !--window.useThisGithubPath muaz-khan/RecordRTC;--> !--/script>--> script srchttps://www.webrtc-experiment.com/commits.js async>/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]