-
Notifications
You must be signed in to change notification settings - Fork 1
/
play.php
134 lines (113 loc) · 3.66 KB
/
play.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
//speakerbot backend. this plays audio via a python script on the server (usually something like a raspberry pi)
//i've tried to keep all the code vanilla and old school
//gus mueller, july 12 2019
//////////////////////////////////////////////////////////////
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
$file = "";
$blob = "";
$mode = "";
if($_REQUEST && $_REQUEST["file"]) {
$file = $_REQUEST["file"];
}
if($_POST) {
$blob = base64_decode(str_replace('^', '+', str_replace("~", "/", $_POST['blob']))); //OMG THESE FUCKING REPLACEMENTS!!!
}
if($_REQUEST && $_REQUEST["mode"]) {
$mode = $_REQUEST["mode"];
if($mode=="kill") {
//first turn off the megaphone
//$command = escapeshellcmd('sudo python powerdown_megaphone.py');
//passthru($command);
//sleep(3);
$command = escapeshellcmd('sudo service apache2 restart');
passthru($command);
echo '{"message":"sound killed"}';
exit;
} else if($mode=="deleteFile") {
if(is_file($fullPath)) {
unlink($file);
echo '{"message":"file deleted"}';
} else {
$out = rmdir($file);
if($out) {
echo '{"message":"directory deleted"}';
} else {
echo '{"error":"directory not deleted. Is it empty?"}';
}
}
die();
} else if($mode=="saveDirectory") {
$newDir = $_REQUEST["directoryName"];
$path = $_REQUEST["path"];
mkdir($path . "/" . $newDir);
echo '{"message":"file created:' . $path . "/" . $newDir . '"}';
exit;
} else if ($mode=="renameFile") {
//play.php?mode=renameFile&file=" + encodeURI(filename) + "&newFileName=" + encodeURI(newFileName);
$extensionArray = explode(".", $file);
$newFileName = $_REQUEST["newFileName"];
$newFileNameArray = explode("/", $file);
if(count($extensionArray) > 1) {
$extension = "." . $extensionArray[count($extensionArray)-1];
} else {
$extension = '';
}
$newFileNameArray[count($newFileNameArray)-1] = $newFileName . $extension;
//this would be for boneheads who don't include the path or extension when they rename:
$newFileName = join("/", $newFileNameArray);
//okay, i am a bonehead
$out = rename($file, $newFileName);
//echo("DDD") + $out;
echo '{"message":"file renamed: ' . $newFileName . '}';
exit;
} else if ($mode=='browse') { //in case i want to do directory browsing via AJAX
$path = "";
if($_REQUEST && $_REQUEST["path"]) {
$path = $_REQUEST["path"];
}
$basePath = 'audio';
if($path) {
$dir = $path;
$includeNavUp = true;
} else {
$dir = $basePath;
}
//catch all the attempts to browse the rest of the file system
if(substr(0, 1, $dir) == '1') {
$dir = substr(1, $dir);
}
if(strpos($dir, "..") !== false) {
die("No haxxo7s allowed!");
}
//done catching all those haxxo7s!
$files = scandir($dir);
$fileArray = array();
for($i=0; $i<count($files); $i++) {
$file = $files[$i];
$fullPath = $dir . "/" . $file;
$fileArray[count($fileArray)] = array("name"=>$file, "modified"=>date ("Y-m-d H:i:s", filemtime($fullPath)), "size"=>filesize($fullPath), "directory"=>!is_file($fullPath), "path"=>$fullPath);
}
$parentPath = join("/", array_pop(explode("/", $dir)));
$objOut = array("parentPath"=>$parentPath, "files"=>$fileArray);
echo json_encode($objOut);
exit;
}
}
//echo "=" . $file . "=<P>";
$command = escapeshellcmd('sudo python play.py "' . $file . '"' );
//echo $command . "<BR>";
if($file!="" && !$blob && !$mode) {
passthru($command);
//exec($command, $out, $status);
}
if($blob && $file && !$mode) {
//$dir="audio/Custom/";//default
$dir = $_REQUEST["dir"];
file_put_contents($dir . '/' . $file, $blob);
echo '{"message":"uploaded"}';
} else {
echo '{"message":"done"}';
}