1 | <?php |
||
16 | class Builder |
||
17 | { |
||
18 | /** |
||
19 | * @var Configuration |
||
20 | */ |
||
21 | private $config; |
||
22 | |||
23 | /** |
||
24 | * @var Environment |
||
25 | */ |
||
26 | protected $env; |
||
27 | |||
28 | /** |
||
29 | * Construct |
||
30 | * |
||
31 | * @param Configuration $config |
||
32 | * @param Environment $env |
||
33 | */ |
||
34 | 30 | public function __construct(Configuration $config, Environment $env) |
|
35 | { |
||
36 | 30 | $this->config = $config; |
|
37 | 30 | $this->env = $env; |
|
38 | |||
39 | 30 | $env->setAsProtected('server', [ |
|
40 | 30 | 'name' => $config->getName(), |
|
41 | 30 | 'host' => $config->getHost(), |
|
42 | 30 | 'port' => $config->getPort(), |
|
43 | 30 | ]); |
|
44 | 30 | } |
|
45 | |||
46 | /** |
||
47 | * Define user name for authentication. |
||
48 | * |
||
49 | * @param string $name |
||
50 | * |
||
51 | * @return Builder |
||
52 | */ |
||
53 | 2 | public function user($name) |
|
59 | |||
60 | /** |
||
61 | * Set password for connection |
||
62 | * |
||
63 | * @param string|PasswordGetterInterface $password If you did not define password it will be asked on connection. |
||
64 | * |
||
65 | * @return Builder |
||
66 | */ |
||
67 | 6 | public function password($password = null) |
|
68 | { |
||
69 | 6 | $password = $this->checkPassword($password); |
|
70 | |||
71 | 4 | $this->config->setAuthenticationMethod(Configuration::AUTH_BY_PASSWORD); |
|
72 | 4 | $this->config->setPassword($password); |
|
73 | |||
74 | 4 | return $this; |
|
75 | } |
||
76 | |||
77 | /** |
||
78 | * Define server host |
||
79 | * |
||
80 | * @param string $host |
||
81 | * |
||
82 | * @return Builder |
||
83 | */ |
||
84 | 1 | public function host($host) |
|
85 | { |
||
86 | 1 | $this->config->setHost($host); |
|
87 | |||
88 | 1 | return $this; |
|
89 | } |
||
90 | |||
91 | /** |
||
92 | * Define server port |
||
93 | * |
||
94 | * @param int $port |
||
95 | * |
||
96 | * @return Builder |
||
97 | */ |
||
98 | 1 | public function port($port) |
|
104 | |||
105 | /** |
||
106 | * If you use an ssh config file you can user it. |
||
107 | * |
||
108 | * @param string $file Config file path |
||
109 | * |
||
110 | * @return Builder |
||
111 | */ |
||
112 | 1 | public function configFile($file = '~/.ssh/config') |
|
119 | |||
120 | /** |
||
121 | * Authenticate with public key |
||
122 | * |
||
123 | * @param string $publicKeyFile |
||
124 | * @param string $privateKeyFile |
||
125 | * @param string $passPhrase |
||
126 | * |
||
127 | * @return Builder |
||
128 | */ |
||
129 | 3 | public function identityFile($publicKeyFile = '~/.ssh/id_rsa.pub', $privateKeyFile = '~/.ssh/id_rsa', $passPhrase = '') |
|
155 | |||
156 | /** |
||
157 | * Authenticate with public key + password (2-factor) |
||
158 | * |
||
159 | * @param string $publicKeyFile |
||
160 | * @param string $privateKeyFile |
||
161 | * @param string $passPhrase |
||
162 | * @param string $password |
||
163 | * |
||
164 | * @return Builder |
||
165 | */ |
||
166 | public function identityFileAndPassword($publicKeyFile = '~/.ssh/id_rsa.pub', $privateKeyFile = '~/.ssh/id_rsa', $passPhrase = '', $password = null) |
||
174 | |||
175 | /** |
||
176 | * Authenticate with pem file |
||
177 | * |
||
178 | * @param string $pemFile |
||
179 | * |
||
180 | * @return Builder |
||
181 | */ |
||
182 | 1 | public function pemFile($pemFile) |
|
189 | |||
190 | /** |
||
191 | * Using forward agent to authentication |
||
192 | * |
||
193 | * @return Builder |
||
194 | */ |
||
195 | 2 | public function forwardAgent() |
|
201 | |||
202 | /** |
||
203 | * Set env variable |
||
204 | * |
||
205 | * @param string $name |
||
206 | * @param array|int|string $value |
||
207 | * |
||
208 | * @return Builder |
||
209 | */ |
||
210 | 17 | public function env($name, $value) |
|
216 | |||
217 | /** |
||
218 | * Indicate stage |
||
219 | * |
||
220 | * @param string|array $stages Name or array on server stages. |
||
221 | * |
||
222 | * @return Builder |
||
223 | */ |
||
224 | 3 | public function stage($stages) |
|
230 | |||
231 | /** |
||
232 | * Check password valid |
||
233 | * |
||
234 | * @param mixed $password |
||
235 | * |
||
236 | * @return mixed |
||
237 | */ |
||
238 | 8 | private function checkPassword($password) |
|
258 | } |
||
259 |