ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

11.02.2009, 04:09
|
|
Участник форума
Регистрация: 08.07.2008
Сообщений: 267
Провел на форуме: 76171
Репутация:
0
|
|
В
Для просмотра скрытого содержимого необходимо иметь 1 сообщение, у вас 0 сообщений.
мы научились управлять QuickTime Player и iTunes. Это хорошо, но при просмотре любимых сериалов все равно приходится вставать с дивана, чтобы включить следующую серию. Будем это исправлять.
Для этой задачи сделаем удаленное управление Finder'ом. Создадим подпапку finder в папке с нашим проектом, в моем случае доступ к списку файлов будет по адресу localhost/remote/finder/. Созданим файл index.php со следующим содержанием.
iRemote
' . $root . '';
?>
./';
$folders = array_reverse(explode('/', trim($root, '/')));
foreach ($folders as $folder) {
$cmd = $cmd . ' of folder "' . $folder . '"';
}
$cmd = $cmd . ' of startup disk of application "Finder"';
$files = explode(',', exec('osascript -e \'tell application "Finder" to get folders ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}
$files = explode(',', exec('osascript -e \'tell application "Finder" to get files ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}
?>
И так поясню код.
Для начала определяем каталог, для которого будем выводить список файлов и покажем его в заголовке. По умолчанию я определил свою пользовательскую директорию "/Users/Ex/".
if (isset($_GET['folder']))
{
$root = $_GET['folder'];
}
else
{
$root = '/Users/Ex/';
}
echo '' . $root . '';
Первой ссылкой выведем путь к папке верхнего уровня.
Дальше идут несколько магических строчек.
$folders = array_reverse(explode('/', trim($root, '/')));
foreach ($folders as $folder) {
$cmd = $cmd . ' of folder "' . $folder . '"';
}
$cmd = $cmd . ' of startup disk of application "Finder"';
Дело в том, что в AppleScript Finder не понимаем в качестве параметров путь вида "/Users/Ex/". Для передачи в скрипт путь нужно привести к такому хитрому виду «folder Ex of folder Users». В принципе этот код это и делает, переводит путь из одного вида в другой.
Далее выводим список папок.
$files = explode(',', exec('osascript -e \'tell application "Finder" to get folders ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}
Выводим список файлов.
$files = explode(',', exec('osascript -e \'tell application "Finder" to get files ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}
Стоит заметить что при выборе папки мы будем вызывать этот же скрипт, но с другим параметром корневой папки, а при выборе файла передадим управление нашему скрипту из первой части commands.php. В качестве параметров передадим имя файла, который нужно открыть и путь к нему. И так, добавим обработку открытия файла в commands.php.
if ($_GET['app'] == 'Finder')
{
if ($_GET['cmd'] == 'Open')
{
$folders = array_reverse(explode('/', trim($_GET['folder'], '/')));
foreach ($folders as $folder) {
$cmd = $cmd . ' of folder "' . $folder . '"';
}
$cmd = $cmd . ' of startup disk of application "Finder"';
$cmd = 'tell application "Finder" to open file "' . $_GET['file'] . '" ' . $cmd;
}
}
>
Тут все просто. Приводим путь в нужному виду и говорим Finder'у открыть файл. Для удобства на главной странице сделаем ссылку на обзор файлов.
Вот в принципе и все. У вас должно получиться примерно следующее.
Еще можно для удобства запоминать последний посещенный каталог в куках, но думаю с этим вы справитесь сами.
Теперь все. Потравит полчаса времени сэкономим кучу калорий
|
|
|

13.02.2009, 14:12
|
|
Участник форума
Регистрация: 09.02.2009
Сообщений: 200
Провел на форуме: 54888
Репутация:
0
|
|
|
|
|

26.02.2009, 16:17
|
|
Познающий
Регистрация: 25.02.2009
Сообщений: 34
Провел на форуме: 13448
Репутация:
0
|
|
Шикарно =)
|
|
|

30.03.2009, 10:22
|
|
Участник форума
Регистрация: 26.01.2008
Сообщений: 162
Провел на форуме: 43079
Репутация:
0
|
|
ни в первой ни во второй части нет ни слова о том, откуда взялся "osascript".
Хотелось бы поподробнее.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|