├── .gitignore ├── README.md ├── class ├── ActionControl.class.php ├── ActionRoute.class.php ├── Control.class.php ├── Message.class.php └── Route.class.php ├── index.php ├── js └── script.js ├── nircmd.zip ├── remote.php └── style └── style.css /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # О проекте 2 | Управление компьютером через веб интерфейс на [PHP](http://php.net/), например: сделать звук тише, громче или выключить. Безопастность пока хромает, выпускать в интернет не надо. Может работать на локальном веб сервере из состава OpenServer, но удобнее пользоваться встроенным в php. Запустить можно в папке с проектом, командой: 3 | 4 | ```sh 5 | php -S адрес_компьютера:8000 6 | ``` 7 | 8 | После запуска, интерфейс будет доступен на 8000 порту. 9 | Управляет компьютером утилита [nirCmd](http://nircmd.nirsoft.net/). 10 | Подобнее о проекте на [habrahabr](https://habrahabr.ru/users/sad_bro/topics/) 11 | 12 | # Реализованы следующие функции 13 | * `standby` - спящий режим 14 | * `hibernate`- гибернация 15 | * `reboot` - перезагрузится 16 | * `turnOff` - выключить 17 | * `logout` - выйти 18 | * `clickYes` - ответ "Да", на системный вопрос 19 | * `clickNo` - ответ "Нет", на системный вопрос 20 | * `monitorOff` - выключить монитор 21 | * `monitorOn` - включить монитор 22 | 23 | * `mute` - выключить звук 24 | * `unmute` - включить звук 25 | * `triggerMute` - включить/отключить звук по триггеру 26 | * `volUp` - громкость больше 27 | * `volDown` - громкость меньше 28 | * `mediaNext` - нажатие медиа кнопки Next 29 | * `mediaPrev` - нажатие медиа кнопки Prev 30 | * `mediaStop` - нажатие медиа кнопки Stop 31 | * `mediaPlayPause` - нажатие медиа кнопки Play/pause 32 | 33 | # Установка на OpenServer 34 | * Скачать и установить [Open-server](http://open-server.ru/download/) 35 | * Клонировать репозиторий в папку domains 36 | * Можно одной командой: зайти в папку `OpenServer/domains` и набрать `git clone https://github.com/DmtryJS/WebRemotePC.git 37 | * Открыть доступ клиентам в локальной сети Open-Server 38 | * Переименовать папку localhost, в папке domains в любое другое имя. 39 | * Настройки-> Сервер->IP Адрес сервера->Установить адрес который присвоен сетевому интерфейсу компьютера 40 | * Настройки->Алиасы->Исходный домен->Вписать ip адрес присвоенный в предыдущем пункте 41 | * Настройки->Алиасы->Конечный домен->Выбрать папку с распакованным проектом, по умолчанию (WebRemotePC). 42 | * Из папки OpenServer/domains/WebRemotePC распаковать содержимое архива nirCmd в корень диска С, должна получится следующая структура,- C:\nircmd\nircmd.exe (тестировалось на win10 32bit, на сайте автора можно скачать версию под 64x). 43 | * Зайти по адресу http://your_ip/WebRemotePC опробовать в действии. 44 | 45 | # Возможные проблемы 46 | 47 | * Команды не срабатывают 48 | * Проверить работает ли nirCmd напрямую, запустить консоль в папке C:\nircmd\ попробовать выполнить команду "nirCmd.exe mutesysvolume 2", - если на прямую работает, переходим к следующему пункту, если нет идем на сайт автора и скачиваем другую версию [nirCmd](http://nircmd.nirsoft.net/) 49 | * Если на предыдущем шаге все прошло успешно, значит в php запрещено исполнение команд. В настройках php.ini проверяем что бы значение safe_mode было true (Если у Вас php > 5.4.0) то там эта константа удалена. Поэтому гарантированный эффект дает выставление в настройках Open Server последней версии php 50 | 51 | 52 | # about the project 53 | Computer Management via a web interface [PHP](http://php.net/), for example: to make the sound softer, louder or off. Safety is lame, let the Internet do not have to. It works on the local Web server as part of OpenServer. Manages computer tool [nirCmd](http://nircmd.nirsoft.net/). 54 | 55 | # Has the following features 56 | * `Standby` - sleep mode 57 | * `Hibernate`- hibernation 58 | * `Reboot` - reboot 59 | * `TurnOff` - turn off 60 | * `Logout` - exit 61 | * `ClickYes` - the answer is" Yes ", on systemic issues 62 | * `ClickNo` - the answer is" No ", on systemic issues 63 | * `MonitorOff` - turn off monitor 64 | * `MonitorOn` - turn on the monitor 65 | 66 | * `Mute` - mute sound 67 | * `Unmute` - unmute sound 68 | * `TriggerMute` - enable / disable the sound of the trigger 69 | * `VolUp` - Volume up 70 | * `VolDown` - the volume is less 71 | * `MediaNext` - press the Next Media button 72 | * `MediaPrev` - Prev button press media 73 | * `MediaStop` - Stop pressing the Media button 74 | * `MediaPlayPause` - press Play / pause button Media -------------------------------------------------------------------------------- /class/ActionControl.class.php: -------------------------------------------------------------------------------- 1 | applicationPath = $path; 13 | } 14 | 15 | /** 16 | * Метод выключает спящий режим 17 | * @method standby 18 | * @return [type] [description] 19 | */ 20 | public function standby() 21 | { 22 | `{$this->applicationPath} standby`; 23 | } 24 | 25 | /** 26 | * Метод включает гибернацию 27 | * @method hibernate 28 | * @return [type] [description] 29 | */ 30 | public function hibernate() 31 | { 32 | `rundll32 powrprof.dll,SetSuspendState 0,1,0`; 33 | } 34 | 35 | /** 36 | * Метод перезагружает компьютер 37 | * @method reboot 38 | * @return [type] [description] 39 | */ 40 | public function reboot() 41 | { 42 | `{$this->applicationPath} exitwin reboot`; 43 | } 44 | 45 | /** 46 | * Метод выключает компьютер 47 | * @method turnOff 48 | * @return [type] [description] 49 | */ 50 | public function turnOff() 51 | { 52 | `{$this->applicationPath} exitwin poweroff`; 53 | } 54 | 55 | /** 56 | * Метод завершает сеанс пользователя 57 | * @method logout 58 | * @return [type] [description] 59 | */ 60 | public function logout() 61 | { 62 | `{$this->applicationPath} exitwin logoff`; 63 | } 64 | 65 | /** 66 | * Метод выбриает в диалоге ДА 67 | * @method clickYes 68 | * @return [type] [description] 69 | */ 70 | public function clickYes() 71 | { 72 | `{$this->applicationPath} dlg "" "" click yes`; 73 | } 74 | 75 | /** 76 | * Метод выбриает в диалоге НЕТ 77 | * @method clickNo 78 | * @return [type] [description] 79 | */ 80 | public function clickNo() 81 | { 82 | `{$this->applicationPath} dlg "" "" click no`; 83 | } 84 | 85 | /** 86 | * Метод выключчает монитор 87 | * @method monitorOff 88 | * @return [type] [description] 89 | */ 90 | public function monitorOff() 91 | { 92 | `{$this->applicationPath} monitor off`; 93 | } 94 | 95 | /** 96 | * Метод включает монитор 97 | * @method monitorOn 98 | * @return [type] [description] 99 | */ 100 | public function monitorOn() 101 | { 102 | `{$this->applicationPath} monitor on`; 103 | } 104 | 105 | /** 106 | * Метод выключает звук на компьютере 107 | * @method mute 108 | * @return [type] [description] 109 | */ 110 | public function mute() 111 | { 112 | `{$this->applicationPath} mutesysvolume 1`; 113 | } 114 | 115 | /** 116 | * Метод включает звук на компьютере 117 | * @method unmute 118 | * @return [type] [description] 119 | */ 120 | public function unmute() 121 | { 122 | `{$this->applicationPath} mutesysvolume 0`; 123 | } 124 | 125 | /** 126 | * Метод переключает режим звука на включить/выключить 127 | * @method triggerMute 128 | * @return [type] [description] 129 | */ 130 | public function triggerMute() 131 | { 132 | `{$this->applicationPath} mutesysvolume 2`; 133 | } 134 | 135 | /** 136 | * Метод увеличивает громкость системы на 3000 ед. 137 | * @method volUp 138 | * @return [type] [description] 139 | */ 140 | public function volUp() 141 | { 142 | `{$this->applicationPath} changesysvolume 3000`; 143 | } 144 | 145 | /** 146 | * Метод уменьшает громкость системы на 3000 ед. 147 | * @method volDown 148 | * @return [type] [description] 149 | */ 150 | public function volDown() 151 | { 152 | `{$this->applicationPath} changesysvolume -3000`; 153 | } 154 | 155 | /** 156 | * Метод воспроизводит нажатие медиа кнопки Next. 157 | * @method mediaNext 158 | * @return [type] [description] 159 | */ 160 | public function mediaNext() 161 | { 162 | `{$this->applicationPath} sendkey 0xB0 press`; 163 | } 164 | 165 | /** 166 | * Метод воспроизводит нажатие медиа кнопки Prev. 167 | * @method mediaPrev 168 | * @return [type] [description] 169 | */ 170 | public function mediaPrev() 171 | { 172 | `{$this->applicationPath} sendkey 0xB1 press`; 173 | } 174 | 175 | /** 176 | * Метод воспроизводит нажатие медиа кнопки Stop. 177 | * @method mediaStop 178 | * @return [type] [description] 179 | */ 180 | public function mediaStop() 181 | { 182 | `{$this->applicationPath} sendkey 0xB2 press`; 183 | } 184 | 185 | /** 186 | * Метод воспроизводит нажатие медиа кнопки Play/Pause. 187 | * @method mediaPlayPause 188 | * @return [type] [description] 189 | */ 190 | public function mediaPlayPause() 191 | { 192 | `{$this->applicationPath} sendkey 0xB3 press`; 193 | } 194 | } 195 | 196 | 197 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /class/Message.class.php: -------------------------------------------------------------------------------- 1 | possible = get_class_methods($obj); 26 | $this->controlObj = $obj; 27 | } 28 | 29 | /** 30 | * Метод проверят есть ли в пришедшем массиве и в 31 | * доступных методах объекта метод 32 | * @method route 33 | * @param [type] $routes $_GET массив маршрутов 34 | * @return 35 | */ 36 | public function route($routes) 37 | { 38 | foreach ($routes as $key => $route) { 39 | if (in_array($key, $this->possible) && $route == 'true') { 40 | $this->execute($key); 41 | } else { 42 | Message::sent('Wrong method!'); 43 | } 44 | } 45 | } 46 | 47 | /** 48 | * Метод выполняет запуск команды 49 | * @method execute 50 | * @param [type] $ccommand [description] 51 | * @return [type] [description] 52 | */ 53 | public function execute($ccommand) 54 | { 55 | $this->controlObj->$ccommand(); 56 | Message::sent('executed'); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |