1
0
Эх сурвалжийг харах

Merge pull request #1595 from Anankke/dev-20220922

Dev 20220922
M1Screw 3 жил өмнө
parent
commit
62c319aebf

+ 2 - 4
README.md

@@ -25,9 +25,7 @@ SSPanel UIM 是一款专为 Shadowsocks / ShadowsocksR / V2Ray / Trojan 设计
 - 配置数据库化,管理面板一键配置
 - 新用户注册现金奖励、用户常规端口切换与指定
 - 公共库文件加载使用 jsDelivr 和 Staticfile CDN
-- 支持 V2Ray & Trojan
 - 性能优化,程序逻辑改善,代码质量修正
-- 更多新功能写不下了
 
 ## 安装
 
@@ -35,8 +33,8 @@ SSPanel UIM 的需要以下程序才能正常的安装和运行:
 
 - Git
 - Nginx / Apache
-- PHP 8.0+
-- MySQL 8.0+ / MariaDB 10.6+
+- PHP 8.0
+- MySQL 8.0 / MariaDB 10.6+
 
 SSPanel UIM 支持安装在 LNMP、CloudPanel 等集成环境中。安装教程请参阅 [文档](https://wiki.sspanel.org)。
 

+ 20 - 0
config/settings.json

@@ -549,6 +549,26 @@
         "default": "",
         "mark": "aws密钥key"
     },
+    {
+        "id": null,
+        "item": "aws_region",
+        "value": "",
+        "class": "aws_ses",
+        "is_public": 0,
+        "type": "string",
+        "default": "",
+        "mark": "aws区域"
+    },
+    {
+        "id": null,
+        "item": "aws_ses_sender",
+        "value": "",
+        "class": "aws_ses",
+        "is_public": 0,
+        "type": "string",
+        "default": "",
+        "mark": "aws ses发送者"
+    },
     {
         "id": null,
         "item": "auto_backup_email",

+ 15 - 3
resources/views/material/admin/setting.tpl

@@ -219,14 +219,24 @@
                                     <div class="tab-pane fade" id="ses">
                                         <!-- aws_access_key_id -->
                                         <div class="form-group form-group-label">
-                                            <label class="floating-label">密钥 ID</label>
+                                            <label class="floating-label">AWS 密钥 ID</label>
                                             <input class="form-control maxwidth-edit" id="aws_access_key_id" value="{$settings['aws_access_key_id']}">
                                         </div>
                                         <!-- aws_secret_access_key -->
                                         <div class="form-group form-group-label">
-                                            <label class="floating-label">密钥 KEY</label>
+                                            <label class="floating-label">AWS 密钥 KEY</label>
                                             <input class="form-control maxwidth-edit" id="aws_secret_access_key" value="{$settings['aws_secret_access_key']}">
                                         </div>
+                                        <!-- aws_region -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">AWS 区域</label>
+                                            <input class="form-control maxwidth-edit" id="aws_region" value="{$settings['aws_region']}">
+                                        </div>
+                                        <!-- aws_ses_sender -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">AWS SES 发送者</label>
+                                            <input class="form-control maxwidth-edit" id="aws_ses_sender" value="{$settings['aws_ses_sender']}">
+                                        </div>
 
                                         <button id="submit_ses" type="submit" class="btn btn-brand btn-dense">提交</button>
                                     </div>
@@ -1536,7 +1546,9 @@
                 data: {
                     class: 'ses',
                     aws_access_key_id: $$getValue('aws_access_key_id'),
-                    aws_secret_access_key: $$getValue('aws_secret_access_key')
+                    aws_secret_access_key: $$getValue('aws_secret_access_key'),
+                    aws_region: $$getValue('aws_region'),
+                    aws_ses_sender: $$getValue('aws_ses_sender')
                 },
                 success: data => {
                     $("#result").modal();

+ 1 - 1
src/Controllers/Admin/SettingController.php

@@ -75,7 +75,7 @@ final class SettingController extends BaseController
                 $list = ['sendgrid_key', 'sendgrid_sender', 'sendgrid_name'];
                 break;
             case 'ses':
-                $list = ['aws_access_key_id', 'aws_secret_access_key'];
+                $list = ['aws_access_key_id', 'aws_secret_access_key', 'aws_region', 'aws_ses_sender'];
                 break;
                 // 验证码
             case 'verify_code':

+ 0 - 37
src/Services/Aws/Factory.php

@@ -1,37 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Services\Aws;
-
-use App\Models\Setting;
-use Aws\Sdk;
-
-final class Factory
-{
-    public static function createAwsClient()
-    {
-        $configs = Setting::getClass('aws_ses');
-
-        return new Sdk([
-            'credentials' => [
-                'key' => $configs['aws_access_key_id'],
-                'secret' => $configs['aws_secret_access_key'],
-            ],
-            'region' => $_ENV['aws_region'],
-            'version' => 'latest',
-            'DynamoDb' => [
-                'region' => $_ENV['aws_region'],
-            ],
-        ]);
-    }
-
-    public static function createDynamodb()
-    {
-        return self::createAwsClient()->createDynamoDb();
-    }
-
-    public static function createSes(): void
-    {
-    }
-}

+ 32 - 17
src/Services/Mail/Ses.php

@@ -4,42 +4,57 @@ declare(strict_types=1);
 
 namespace App\Services\Mail;
 
-use App\Services\Aws\Factory;
+use App\Models\Setting;
+use Aws\Ses\SesClient;
 
 final class Ses extends Base
 {
-    protected $client;
+    private $ses;
 
     public function __construct()
     {
-        $this->client = Factory::createSes();
-    }
+        $configs = Setting::getClass('aws_ses');
 
-    public function getSender()
-    {
-        return $_ENV['aws_ses_sender'];
+        $ses = new SesClient([
+            'credentials' => [
+                'key' => $configs['aws_access_key_id'],
+                'secret' => $configs['aws_secret_access_key'],
+            ],
+            'region' => $configs['aws_region'],
+            'version' => 'latest',
+        ]);
+
+        $this->ses = $ses;
     }
 
-    public function send($to, $subject, $text): void
+    public function send($to, $subject, $text, $files): void
     {
-        $this->client->sendEmail([
-            'Destination' => [ // REQUIRED
+        $ses = $this->ses;
+        $configs = Setting::getClass('aws_ses');
+        $char_set = 'UTF-8';
+
+        $ses->sendEmail([
+            'Destination' => [
                 'ToAddresses' => [$to],
             ],
-            'Message' => [ // REQUIRED
-                'Body' => [ // REQUIRED
+            'Source' => $configs['aws_ses_sender'],
+            'Message' => [
+                'Body' => [
                     'Html' => [
-                        'Data' => $text, // REQUIRED
+                        'Charset' => $char_set,
+                        'Data' => $text,
                     ],
                     'Text' => [
-                        'Data' => $text, // REQUIRED
+                        'Charset' => $char_set,
+                        'Data' => $text,
                     ],
                 ],
-                'Subject' => [ // REQUIRED
-                    'Data' => $subject, // REQUIRED
+                'Subject' => [
+                    'Charset' => $char_set,
+                    'Data' => $subject,
                 ],
             ],
-            'Source' => $this->getSender(), // REQUIRED
+
         ]);
     }
 }

+ 11 - 27
src/Services/Mail/Smtp.php

@@ -10,50 +10,34 @@ use PHPMailer\PHPMailer\PHPMailer;
 final class Smtp extends Base
 {
     private $mail;
-    private $config;
 
     public function __construct()
     {
-        $this->config = $this->getConfig();
+        $configs = Setting::getClass('smtp');
+
         $mail = new PHPMailer();
         //$mail->SMTPDebug = 3;                               // Enable verbose debug output
         $mail->isSMTP();                                      // Set mailer to use SMTP
-        $mail->Host = $this->config['host'];                  // Specify main and backup SMTP servers
-        $mail->Port = $this->config['port'];                  // TCP port to connect to
+        $mail->Host = $configs['smtp_host'];                  // Specify main and backup SMTP servers
+        $mail->Port = $configs['smtp_port'];                  // TCP port to connect to
         $mail->SMTPAuth = true;                               // Enable SMTP authentication
         $mail->CharSet = 'UTF-8';                             // Set utf-8 character set
-        $mail->Username = $this->config['username'];          // SMTP username
-        $mail->Password = $this->config['passsword'];         // SMTP password
-        $mail->setFrom($this->config['sender'], $this->config['name']);
+        $mail->Username = $configs['smtp_username'];          // SMTP username
+        $mail->Password = $configs['smtp_password'];          // SMTP password
+        $mail->setFrom($configs['smtp_sender'], $configs['smtp_name']);
 
-        if ($this->config['smtp_ssl'] === true) {
+        if ($configs['smtp_ssl'] === true) {
             // Enable TLS encryption, `ssl` also accepted
-            $mail->SMTPSecure = ($this->config['port'] === '587' ? 'tls' : 'ssl');
+            $mail->SMTPSecure = ($configs['smtp_port'] === '587' ? 'tls' : 'ssl');
         }
 
-        if ($this->config['smtp_bbc'] !== '') {
-            $mail->addBCC($this->config['smtp_bbc']);
+        if ($configs['smtp_bbc'] !== '') {
+            $mail->addBCC($configs['smtp_bbc']);
         }
 
         $this->mail = $mail;
     }
 
-    public function getConfig()
-    {
-        $configs = Setting::getClass('smtp');
-
-        return [
-            'host' => $configs['smtp_host'],
-            'port' => $configs['smtp_port'],
-            'username' => $configs['smtp_username'],
-            'passsword' => $configs['smtp_password'],
-            'smtp_ssl' => $configs['smtp_ssl'],
-            'name' => $configs['smtp_name'],
-            'sender' => $configs['smtp_sender'],
-            'smtp_bbc' => $configs['smtp_bbc'],
-        ];
-    }
-
     public function send($to, $subject, $text, $files): void
     {
         $mail = $this->mail;

+ 1 - 1
update.sh

@@ -3,9 +3,9 @@
 [ $(id -u) != "0" ] && { echo "Error: You must be root to run this script!"; exit 1; }
 
 do_upgrade_sspanel(){
-    git fetch --all
     git reset --hard origin/dev
     git pull
+    git fetch --prune --prune-tags
     rm -r storage/framework/smarty/compile/*
     php composer.phar update
     php composer.phar selfupdate