Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Console/Commands/Environment/EmailSettingsCommand.php
7461 views
1
<?php
2
3
namespace Pterodactyl\Console\Commands\Environment;
4
5
use Illuminate\Console\Command;
6
use Pterodactyl\Traits\Commands\EnvironmentWriterTrait;
7
use Illuminate\Contracts\Config\Repository as ConfigRepository;
8
9
class EmailSettingsCommand extends Command
10
{
11
use EnvironmentWriterTrait;
12
13
protected $description = 'Set or update the email sending configuration for the Panel.';
14
15
protected $signature = 'p:environment:mail
16
{--driver= : The mail driver to use.}
17
{--email= : Email address that messages from the Panel will originate from.}
18
{--from= : The name emails from the Panel will appear to be from.}
19
{--encryption=}
20
{--host=}
21
{--port=}
22
{--endpoint=}
23
{--username=}
24
{--password=}';
25
26
protected array $variables = [];
27
28
/**
29
* EmailSettingsCommand constructor.
30
*/
31
public function __construct(private ConfigRepository $config)
32
{
33
parent::__construct();
34
}
35
36
/**
37
* Handle command execution.
38
*
39
* @throws \Pterodactyl\Exceptions\PterodactylException
40
*/
41
public function handle()
42
{
43
$this->variables['MAIL_DRIVER'] = $this->option('driver') ?? $this->choice(
44
trans('command/messages.environment.mail.ask_driver'),
45
[
46
'smtp' => 'SMTP Server',
47
'sendmail' => 'sendmail Binary',
48
'mailgun' => 'Mailgun Transactional Email',
49
'mandrill' => 'Mandrill Transactional Email',
50
'postmark' => 'Postmark Transactional Email',
51
],
52
$this->config->get('mail.default', 'smtp')
53
);
54
55
$method = 'setup' . studly_case($this->variables['MAIL_DRIVER']) . 'DriverVariables';
56
if (method_exists($this, $method)) {
57
$this->{$method}();
58
}
59
60
$this->variables['MAIL_FROM_ADDRESS'] = $this->option('email') ?? $this->ask(
61
trans('command/messages.environment.mail.ask_mail_from'),
62
$this->config->get('mail.from.address')
63
);
64
65
$this->variables['MAIL_FROM_NAME'] = $this->option('from') ?? $this->ask(
66
trans('command/messages.environment.mail.ask_mail_name'),
67
$this->config->get('mail.from.name')
68
);
69
70
$this->writeToEnvironment($this->variables);
71
72
$this->line('Updating stored environment configuration file.');
73
$this->line('');
74
}
75
76
/**
77
* Handle variables for SMTP driver.
78
*/
79
private function setupSmtpDriverVariables()
80
{
81
$this->variables['MAIL_HOST'] = $this->option('host') ?? $this->ask(
82
trans('command/messages.environment.mail.ask_smtp_host'),
83
$this->config->get('mail.mailers.smtp.host')
84
);
85
86
$this->variables['MAIL_PORT'] = $this->option('port') ?? $this->ask(
87
trans('command/messages.environment.mail.ask_smtp_port'),
88
$this->config->get('mail.mailers.smtp.port')
89
);
90
91
$this->variables['MAIL_USERNAME'] = $this->option('username') ?? $this->ask(
92
trans('command/messages.environment.mail.ask_smtp_username'),
93
$this->config->get('mail.mailers.smtp.username')
94
);
95
96
$this->variables['MAIL_PASSWORD'] = $this->option('password') ?? $this->secret(
97
trans('command/messages.environment.mail.ask_smtp_password')
98
);
99
100
$this->variables['MAIL_ENCRYPTION'] = $this->option('encryption') ?? $this->choice(
101
trans('command/messages.environment.mail.ask_encryption'),
102
['tls' => 'TLS', 'ssl' => 'SSL', '' => 'None'],
103
$this->config->get('mail.mailers.smtp.encryption', 'tls')
104
);
105
}
106
107
/**
108
* Handle variables for mailgun driver.
109
*/
110
private function setupMailgunDriverVariables()
111
{
112
$this->variables['MAILGUN_DOMAIN'] = $this->option('host') ?? $this->ask(
113
trans('command/messages.environment.mail.ask_mailgun_domain'),
114
$this->config->get('services.mailgun.domain')
115
);
116
117
$this->variables['MAILGUN_SECRET'] = $this->option('password') ?? $this->ask(
118
trans('command/messages.environment.mail.ask_mailgun_secret'),
119
$this->config->get('services.mailgun.secret')
120
);
121
122
$this->variables['MAILGUN_ENDPOINT'] = $this->option('endpoint') ?? $this->ask(
123
trans('command/messages.environment.mail.ask_mailgun_endpoint'),
124
$this->config->get('services.mailgun.endpoint')
125
);
126
}
127
128
/**
129
* Handle variables for mandrill driver.
130
*/
131
private function setupMandrillDriverVariables()
132
{
133
$this->variables['MANDRILL_SECRET'] = $this->option('password') ?? $this->ask(
134
trans('command/messages.environment.mail.ask_mandrill_secret'),
135
$this->config->get('services.mandrill.secret')
136
);
137
}
138
139
/**
140
* Handle variables for postmark driver.
141
*/
142
private function setupPostmarkDriverVariables()
143
{
144
$this->variables['MAIL_DRIVER'] = 'smtp';
145
$this->variables['MAIL_HOST'] = 'smtp.postmarkapp.com';
146
$this->variables['MAIL_PORT'] = 587;
147
$this->variables['MAIL_USERNAME'] = $this->variables['MAIL_PASSWORD'] = $this->option('username') ?? $this->ask(
148
trans('command/messages.environment.mail.ask_postmark_username'),
149
$this->config->get('mail.username')
150
);
151
}
152
}
153
154