-
Notifications
You must be signed in to change notification settings - Fork 11
/
readme_ru.txt
150 lines (123 loc) · 6.17 KB
/
readme_ru.txt
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
Yii web shell
=============
Веб-консоль для Yii. Позволяет запускать консольные команды из браузера. Полезна на
серверах без SSH и в админках консольного стиля.
Для работы используется та же конфигурация, что и у основного приложения,
то есть если работает приложение, будет работать и консоль.
Так как при работе с веб-приложением у нас недоступен STDIN, то команды вроде
`yiic migrate` в интерактивном режиме работать не будут. Именно для `migrate`
это решается установкой флага `interactive` в false.
Установка
---------
Для использования веб-консоли необходимо подключить модуль в настройках
приложения:
~~~
[php]
return array(
…
'modules'=>array(
'webshell'=>array(
'class'=>'ext.yiiext.modules.webshell.WebShellModule',
// URL, на который будет редирект после ввода 'exit'
'exitUrl' => '/',
// опции для wterm
'wtermOptions' => array(
// строка запроса в стиле linux
'PS1' => '%',
),
// дополнительные команды (см. далее)
'commands' => array(
'test' => array('js:function(){return "Hello, world!";}', 'Just a test.'),
),
// раскомментировать для отключения yiic
// 'useYiic' => false,
// добавляем команды yiic из нестандартных директорий
'yiicCommandMap' => array(
'email'=>array(
'class'=>'ext.mailer.MailerCommand',
'from'=>'[email protected]',
),
'migrate' => array(
'class' => 'system.cli.commands.MigrateCommand',
'interactive'=>false,
),
),
),
),
)
~~~
Консоль будет доступна по адресу:
http://localhost/path/to/index.php?r=webshell
Если используются красивые URL, и написаны свои правила роутинга, может понадобится
добавить несколько правил для веб-консоли:
~~~
[php]
'components'=>array(
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'webshell'=>'webshell',
'webshell/<controller:\w+>'=>'webshell/<controller>',
'webshell/<controller:\w+>/<action:\w+>'=>'webshell/<controller>/<action>',
…остальне правила…
),
)
)
~~~
После этого можно будет обращаться к веб-консоли так:
http://localhost/path_to_webroot/webshell
Добавляем свои команды
----------------------
К веб-консоли можно добавить как общие команды, так и команды yiic.
Общие команды добавляются чере свойство commands модуля `WebShellModule`:
~~~
[php]
'commands' => array(
// js callback в качестве команды
'test' => array('js:function(tokens){return "Hello, world!";}', 'Just a test.'),
// ajax-команда с URL http://yourwebsite/post/index?action=cli (при наличии правил маршрутизации URL будет изменён соответственно)
'postlist' => array(array('/post/index', array('action' => 'cli')), 'Описание.'),
// «залипающая» команда. Для выхода из неё надо набрать 'exit'.
'stickyhandler' => array(
array(
// необязательно: вызывается при наборе 'stickyhandler'. Может быть как URL, так и callback JavaScript.
'START_HOOK' => array('/post/index', array('action' => 'start')),
// необязательно: вызывается при наборе 'exit'. Может быть как URL, так и callback JavaScript.
'EXIT_HOOK' => "js:function(){ return 'bye!'; }",
// требуется: cвызывается при наборе параметра. Может быть как URL, так и callback JavaScript.
'DISPATCH' => "js:function(tokens){ return "Hi, Jack!"; }",
// необязательно: своя строка запроса
'PS1' => 'advanced >',
),
'Advanced command.',
),
),
~~~
Обработчик общей команды должен выглядеть примерно так:
~~~
[php]
function actionMyCommandHandler(){
$tokens = explode(" ", $_GET['tokens']);
print_r($tokens);
}
~~~
Создание команд yiic описано в руководстве в разделе «[Консольные приложения](http://yiiframework.ru/doc/guide/ru/topics.console)».
Безопасность
------------
Для обеспечения безопасности консоли в модуле есть два свойства:
~~~
[php]
// IP, с которых доступна консоль. По умолчанию доступен только запуск с локальной машины. Для доступа со всех IP выставить в false.
'ipFilters' => array('127.0.0.1','::1'),
// PHP callback, возвращающий true/false и определяющий, есть ли доступ к веб-консоли.
// Привер приведён для PHP 5.3.
'checkAccessCallback' => function($controller, $action){
return !Yii::app()->user->isGuest;
}
~~~
Большое спасибо
---------------
- [Dimitrios Meggidis](http://www.yiiframework.com/forum/index.php?/user/4786-tydeas-dr/) за
отличную идею и за то, что показал wterm.
Кстати, у него есть [неплохой виджет для Yii, позволяющий использовать wterm](http://github.com/dmtrs/EWebTerm).
- [Qiang Xue](http://www.yiiframework.com/about/) за Yii и код ipFilters.