Path: blob/1.0-develop/app/Console/Commands/Environment/EmailSettingsCommand.php
7461 views
<?php12namespace Pterodactyl\Console\Commands\Environment;34use Illuminate\Console\Command;5use Pterodactyl\Traits\Commands\EnvironmentWriterTrait;6use Illuminate\Contracts\Config\Repository as ConfigRepository;78class EmailSettingsCommand extends Command9{10use EnvironmentWriterTrait;1112protected $description = 'Set or update the email sending configuration for the Panel.';1314protected $signature = 'p:environment:mail15{--driver= : The mail driver to use.}16{--email= : Email address that messages from the Panel will originate from.}17{--from= : The name emails from the Panel will appear to be from.}18{--encryption=}19{--host=}20{--port=}21{--endpoint=}22{--username=}23{--password=}';2425protected array $variables = [];2627/**28* EmailSettingsCommand constructor.29*/30public function __construct(private ConfigRepository $config)31{32parent::__construct();33}3435/**36* Handle command execution.37*38* @throws \Pterodactyl\Exceptions\PterodactylException39*/40public function handle()41{42$this->variables['MAIL_DRIVER'] = $this->option('driver') ?? $this->choice(43trans('command/messages.environment.mail.ask_driver'),44[45'smtp' => 'SMTP Server',46'sendmail' => 'sendmail Binary',47'mailgun' => 'Mailgun Transactional Email',48'mandrill' => 'Mandrill Transactional Email',49'postmark' => 'Postmark Transactional Email',50],51$this->config->get('mail.default', 'smtp')52);5354$method = 'setup' . studly_case($this->variables['MAIL_DRIVER']) . 'DriverVariables';55if (method_exists($this, $method)) {56$this->{$method}();57}5859$this->variables['MAIL_FROM_ADDRESS'] = $this->option('email') ?? $this->ask(60trans('command/messages.environment.mail.ask_mail_from'),61$this->config->get('mail.from.address')62);6364$this->variables['MAIL_FROM_NAME'] = $this->option('from') ?? $this->ask(65trans('command/messages.environment.mail.ask_mail_name'),66$this->config->get('mail.from.name')67);6869$this->writeToEnvironment($this->variables);7071$this->line('Updating stored environment configuration file.');72$this->line('');73}7475/**76* Handle variables for SMTP driver.77*/78private function setupSmtpDriverVariables()79{80$this->variables['MAIL_HOST'] = $this->option('host') ?? $this->ask(81trans('command/messages.environment.mail.ask_smtp_host'),82$this->config->get('mail.mailers.smtp.host')83);8485$this->variables['MAIL_PORT'] = $this->option('port') ?? $this->ask(86trans('command/messages.environment.mail.ask_smtp_port'),87$this->config->get('mail.mailers.smtp.port')88);8990$this->variables['MAIL_USERNAME'] = $this->option('username') ?? $this->ask(91trans('command/messages.environment.mail.ask_smtp_username'),92$this->config->get('mail.mailers.smtp.username')93);9495$this->variables['MAIL_PASSWORD'] = $this->option('password') ?? $this->secret(96trans('command/messages.environment.mail.ask_smtp_password')97);9899$this->variables['MAIL_ENCRYPTION'] = $this->option('encryption') ?? $this->choice(100trans('command/messages.environment.mail.ask_encryption'),101['tls' => 'TLS', 'ssl' => 'SSL', '' => 'None'],102$this->config->get('mail.mailers.smtp.encryption', 'tls')103);104}105106/**107* Handle variables for mailgun driver.108*/109private function setupMailgunDriverVariables()110{111$this->variables['MAILGUN_DOMAIN'] = $this->option('host') ?? $this->ask(112trans('command/messages.environment.mail.ask_mailgun_domain'),113$this->config->get('services.mailgun.domain')114);115116$this->variables['MAILGUN_SECRET'] = $this->option('password') ?? $this->ask(117trans('command/messages.environment.mail.ask_mailgun_secret'),118$this->config->get('services.mailgun.secret')119);120121$this->variables['MAILGUN_ENDPOINT'] = $this->option('endpoint') ?? $this->ask(122trans('command/messages.environment.mail.ask_mailgun_endpoint'),123$this->config->get('services.mailgun.endpoint')124);125}126127/**128* Handle variables for mandrill driver.129*/130private function setupMandrillDriverVariables()131{132$this->variables['MANDRILL_SECRET'] = $this->option('password') ?? $this->ask(133trans('command/messages.environment.mail.ask_mandrill_secret'),134$this->config->get('services.mandrill.secret')135);136}137138/**139* Handle variables for postmark driver.140*/141private function setupPostmarkDriverVariables()142{143$this->variables['MAIL_DRIVER'] = 'smtp';144$this->variables['MAIL_HOST'] = 'smtp.postmarkapp.com';145$this->variables['MAIL_PORT'] = 587;146$this->variables['MAIL_USERNAME'] = $this->variables['MAIL_PASSWORD'] = $this->option('username') ?? $this->ask(147trans('command/messages.environment.mail.ask_postmark_username'),148$this->config->get('mail.username')149);150}151}152153154