Browse Source

refactor: migrate register settings into db

Cat 3 years ago
parent
commit
5f1db01b41

+ 0 - 21
config/.config.example.php

@@ -43,27 +43,6 @@ $_ENV['auto_backup_email']  = '';                               //接收备份
 $_ENV['auto_backup_password'] = '';                               //备份的压缩密码
 $_ENV['backup_notify']      = false;                            //备份通知到TG群中
 
-
-//用户注册设置-----------------------------------------------------------------------------------------
-$_ENV['free_user_reset_day']            = 0;                         //免费用戶的流量重置日,0为不重置
-$_ENV['free_user_reset_bandwidth']      = 0;                         //需要重置的免费流量,0为不重置
-$_ENV['random_group']              = '0';                       //注册时随机分组,注册时随机分配到的分组,多个分组请用英文半角逗号分隔
-
-$_ENV['enable_reg_im']             = false;                      //注册时是否要求用户输入IM联系方式
-
-$_ENV['reg_forbidden_ip']          = '127.0.0.0/8,::1/128';     //注册时默认禁止访问IP列表,半角英文逗号分割
-$_ENV['min_port']                  = 10000;                     //用户端口池最小值,如果该数值为0则用户在注册的时候不会被分配多用户端口,适合纯V2Ray/Trojan机场
-$_ENV['max_port']                  = 65535;                     //用户端口池最大值,如果该数值为0则用户在注册的时候不会被分配多用户端口,适合纯V2Ray/Trojan机场
-$_ENV['reg_forbidden_port']        = '';                        //注册时默认禁止访问端口列表,半角英文逗号分割,支持端口段
-
-$_ENV['mu_suffix']                 = 'microsoft.com';           //单端口多用户混淆参数后缀,可以随意修改,但请保持前后端一致
-$_ENV['mu_regex']                  = '%5m%id.%suffix';          //单端口多用户混淆参数表达式,%5m代表取用户特征 md5 的前五位,%id 代表用户id, %suffix 代表上面这个后缀。
-
-#邀请链接
-$_ENV['invite_price']              = -1;                        //用户购买邀请码所需要的价格,价格小于0时视为不开放购买
-$_ENV['custom_invite_price']       = -1;                        //用户定制邀请码所需要的价格,价格小于0时视为不开放购买
-
-
 //已注册用户设置---------------------------------------------------------------------------------------
 #基础
 $_ENV['enable_checkin']             = true;         //是否啓用簽到功能

+ 120 - 0
config/settings.json

@@ -629,6 +629,86 @@
         "default": "5",
         "mark": "验证码有效期内单个ip可请求的发信次数"
     },
+    {
+        "id": null,
+        "item": "enable_reg_im",
+        "value": "0",
+        "class": "register",
+        "is_public": 1,
+        "type": "bool",
+        "default": "0",
+        "mark": "注册时是否要求用户输入IM联系方式"
+    },
+    {
+        "id": null,
+        "item": "reg_forbidden_ip",
+        "value": "127.0.0.0/8,::1/128",
+        "class": "register",
+        "is_public": 0,
+        "type": "string",
+        "default": "127.0.0.0/8,::1/128",
+        "mark": "注册时默认禁止访问IP列表"
+    },
+    {
+        "id": null,
+        "item": "reg_forbidden_port",
+        "value": "",
+        "class": "register",
+        "is_public": 0,
+        "type": "string",
+        "default": "",
+        "mark": "注册时默认禁止访问端口列表"
+    },
+    {
+        "id": null,
+        "item": "random_group",
+        "value": "",
+        "class": "register",
+        "is_public": 0,
+        "type": "string",
+        "default": "",
+        "mark": "注册时随机分配到的分组"
+    },
+    {
+        "id": null,
+        "item": "min_port",
+        "value": "10000",
+        "class": "register",
+        "is_public": 1,
+        "type": "int",
+        "default": "10000",
+        "mark": "用户端口池最小值"
+    },
+    {
+        "id": null,
+        "item": "max_port",
+        "value": "65535",
+        "class": "register",
+        "is_public": 1,
+        "type": "int",
+        "default": "65535",
+        "mark": "用户端口池最大值"
+    },
+    {
+        "id": null,
+        "item": "free_user_reset_day",
+        "value": "0",
+        "class": "register",
+        "is_public": 0,
+        "type": "int",
+        "default": "0",
+        "mark": "免费用戶的流量重置日"
+    },
+    {
+        "id": null,
+        "item": "free_user_reset_bandwidth",
+        "value": "0",
+        "class": "register",
+        "is_public": 0,
+        "type": "int",
+        "default": "0",
+        "mark": "需要重置的免费流量"
+    },
     {
         "id": null,
         "item": "sign_up_for_free_traffic",
@@ -739,6 +819,26 @@
         "default": "www.jd.hk",
         "mark": "默认混淆参数"
     },
+    {
+        "id": null,
+        "item": "mu_suffix",
+        "value": "microsoft.com",
+        "class": "register",
+        "is_public": 0,
+        "type": "string",
+        "default": "microsoft.com",
+        "mark": "单端口多用户混淆参数后缀"
+    },
+    {
+        "id": null,
+        "item": "mu_regex",
+        "value": "%5m%id.%suffix",
+        "class": "register",
+        "is_public": 0,
+        "type": "string",
+        "default": "%5m%id.%suffix",
+        "mark": "单端口多用户混淆参数表达式"
+    },
     {
         "id": null,
         "item": "sign_up_for_daily_report",
@@ -749,6 +849,26 @@
         "default": "0",
         "mark": "注册后是否默认接收每日用量邮件推送"
     },
+    {
+        "id": null,
+        "item": "invite_price",
+        "value": "-1",
+        "class": "invite",
+        "is_public": 1,
+        "type": "int",
+        "default": "-1",
+        "mark": "用户购买邀请码所需要的价格"
+    },
+    {
+        "id": null,
+        "item": "custom_invite_price",
+        "value": "-1",
+        "class": "invite",
+        "is_public": 1,
+        "type": "int",
+        "default": "-1",
+        "mark": "用户定制邀请码所需要的价格"
+    },
     {
         "id": null,
         "item": "sign_up_for_invitation_codes",

+ 91 - 70
resources/views/material/admin/setting.tpl

@@ -36,7 +36,7 @@
                                     <a data-toggle="tab" href="#invitation_settings"><i class="icon icon-lg">loyalty</i>&nbsp;邀请</a>
                                 </li>
                                 <li>
-                                    <a data-toggle="tab" href="#telegram_settings"><i class="icon icon-lg">loyalty</i>&nbsp;Telegram</a>
+                                    <a data-toggle="tab" href="#telegram_settings"><i class="icon icon-lg">send</i>&nbsp;Telegram</a>
                                 </li>
                             </ul>
                         </nav>
@@ -727,16 +727,41 @@
                                             <input class="form-control maxwidth-edit" id="email_verify_ip_limit" value="{$settings['email_verify_ip_limit']}">
                                         </div>
 
-                                        <button id="submit_reg_mode_and_verify" type="submit" class="btn btn-block btn-brand">提交</button>
+                                        <button id="submit_register_settings" type="submit" class="btn btn-block btn-brand">提交</button>
                                     </div>
 
                                     <div class="tab-pane fade" id="register_default_value">
                                         <h5>注册默认</h5>
+                                        <!-- random_group -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">注册时随机分配到的分组,多个分组请用英文半角逗号分隔</label>
+                                            <input class="form-control maxwidth-edit" id="random_group" value="{$settings['random_group']}">
+                                        </div>
+                                        <!-- min_port -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">用户端口池最小值,0为用户在注册的时候不会被分配多用户端口</label>
+                                            <input class="form-control maxwidth-edit" id="min_port" value="{$settings['min_port']}">
+                                        </div>
+                                        <!-- max_port -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">用户端口池最大值,0为用户在注册的时候不会被分配多用户端口</label>
+                                            <input class="form-control maxwidth-edit" id="max_port" value="{$settings['max_port']}">
+                                        </div>
                                         <!-- sign_up_for_free_traffic -->
                                         <div class="form-group form-group-label">
                                             <label class="floating-label">注册时赠送的流量(单位:GB)</label>
                                             <input class="form-control maxwidth-edit" id="sign_up_for_free_traffic" value="{$settings['sign_up_for_free_traffic']}">
                                         </div>
+                                        <!-- free_user_reset_day -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">免费用戶的流量重置日,0为不重置</label>
+                                            <input class="form-control maxwidth-edit" id="free_user_reset_day" value="{$settings['free_user_reset_day']}">
+                                        </div>
+                                        <!-- free_user_reset_bandwidth -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">需要重置的免费流量,0为不重置</label>
+                                            <input class="form-control maxwidth-edit" id="free_user_reset_bandwidth" value="{$settings['free_user_reset_bandwidth']}">
+                                        </div>
                                         <!-- sign_up_for_free_time -->
                                         <div class="form-group form-group-label">
                                             <label class="floating-label">注册时赠送的时长(单位:天)</label>
@@ -794,7 +819,27 @@
                                             <label class="floating-label">默认混淆参数</label>
                                             <input class="form-control maxwidth-edit" id="sign_up_for_obfs_param" value="{$settings['sign_up_for_obfs_param']}">
                                         </div>
+                                        <!-- mu_suffix -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">单端口多用户混淆参数后缀</label>
+                                            <input class="form-control maxwidth-edit" id="mu_suffix" value="{$settings['mu_suffix']}">
+                                        </div>
+                                        <!-- mu_regex -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">单端口多用户混淆参数表达式</label>
+                                            <input class="form-control maxwidth-edit" id="mu_regex" value="{$settings['mu_regex']}">
+                                        </div>
                                         <h5>其他</h5>
+                                        <!-- reg_forbidden_ip -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">注册时默认禁止访问IP列表</label>
+                                            <input class="form-control maxwidth-edit" id="reg_forbidden_ip" value="{$settings['reg_forbidden_ip']}">
+                                        </div>
+                                        <!-- reg_forbidden_port -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">注册时默认禁止访问端口列表</label>
+                                            <input class="form-control maxwidth-edit" id="reg_forbidden_port" value="{$settings['reg_forbidden_port']}">
+                                        </div>
                                         <!-- sign_up_for_daily_report -->
                                         <div class="form-group form-group-label">
                                             <label class="floating-label">注册后是否默认接收每日用量邮件推送</label>
@@ -803,19 +848,27 @@
                                                 <option value="1" {if $settings['sign_up_for_daily_report'] == true}selected{/if}>开启</option>
                                             </select>
                                         </div>
+                                        <!-- enable_reg_im -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">注册时是否要求用户输入IM联系方式</label>
+                                            <select id="enable_reg_im" class="form-control maxwidth-edit">
+                                                <option value="0" {if $settings['enable_reg_im'] == false}selected{/if}>关闭</option>
+                                                <option value="1" {if $settings['enable_reg_im'] == true}selected{/if}>开启</option>
+                                            </select>
+                                        </div>
 
-                                        <button id="submit_register_default_value" type="submit" class="btn btn-block btn-brand">提交</button>
+                                        <button id="submit_register_settings" type="submit" class="btn btn-block btn-brand">提交</button>
                                     </div>
                                 </div>
 
-                                <div class="tab-pane fade" id="invitation_settings">
+                                <div class="tab-pane fade" id="invite_settings">
                                     <nav class="tab-nav margin-top-no">
                                         <ul class="nav nav-list">
                                             <li class="active">
                                                 <a data-toggle="tab" href="#rebate_mode"><i class="icon icon-lg">developer_mode</i>&nbsp;模式</a>
                                             </li>
                                             <li>
-                                                <a data-toggle="tab" href="#invitation_reward"><i class="icon icon-lg">card_giftcard</i>&nbsp;奖励</a>
+                                                <a data-toggle="tab" href="#invite_gernal_settings"><i class="icon icon-lg">cog</i>&nbsp;通用设置</a>
                                             </li>
                                         </ul>
                                     </nav>
@@ -873,10 +926,10 @@
                                         <p class="form-control-guide"><i class="material-icons">info</i>例如:设置为 10 时,一个被邀请用户先后购买了售价为 10,20,50,100 的商品,若返点设置为 20% ,则第一次购买返利为 2;第二次为 4;第三次为 4;第四次及之后的购买,邀请人所能获得的返利均为 0(假设设置为在购买时返利)</p>
                                         <p class="form-control-guide"><i class="material-icons">info</i>在进行第三次返利计算时,按设置应返利订单金额的 20% ,即 10 元。但因已获得历史返利 6 元,则只能获得返利总金额限制与历史返利的差值</p>
                                         
-                                        <br/><button id="submit_rebate_mode" type="submit" class="btn btn-block btn-brand">提交</button>
+                                        <br/><button id="submit_invite_settings" type="submit" class="btn btn-block btn-brand">提交</button>
                                     </div>
 
-                                    <div class="tab-pane fade" id="invitation_reward">
+                                    <div class="tab-pane fade" id="invite_gernal_settings">
                                         <!-- invitation_to_register_balance_reward -->
                                         <div class="form-group form-group-label">
                                             <label class="floating-label">若有人使用现存用户的邀请链接注册,被邀请人所能获得的余额奖励(单位:元)</label>
@@ -887,8 +940,18 @@
                                             <label class="floating-label">若有人使用现存用户的邀请链接注册,邀请人所能获得的流量奖励(单位:GB)</label>
                                             <input class="form-control maxwidth-edit" id="invitation_to_register_traffic_reward" value="{$settings['invitation_to_register_traffic_reward']}">
                                         </div>
+                                        <!-- invite_price -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">用户购买邀请码所需要的价格,价格小于0时视为不开放购买</label>
+                                            <input class="form-control maxwidth-edit" id="invite_price" value="{$settings['invite_price']}">
+                                        </div>
+                                        <!-- custom_invite_price -->
+                                        <div class="form-group form-group-label">
+                                            <label class="floating-label">用户定制邀请码所需要的价格,价格小于0时视为不开放购买</label>
+                                            <input class="form-control maxwidth-edit" id="custom_invite_price" value="{$settings['custom_invite_price']}">
+                                        </div>
 
-                                        <button id="submit_invitation_reward" type="submit" class="btn btn-block btn-brand">提交</button>
+                                        <button id="submit_invite_settings" type="submit" class="btn btn-block btn-brand">提交</button>
                                     </div>
                                 </div>
 
@@ -1710,7 +1773,7 @@
 
 <script>
     window.addEventListener('load', () => {
-        $$.getElementById('submit_reg_mode_and_verify').addEventListener('click', () => {
+        $$.getElementById('submit_register_settings').addEventListener('click', () => {
             $.ajax({
                 type: "POST",
                 url: "/admin/setting",
@@ -1720,35 +1783,13 @@
                     reg_mode: $$getValue('reg_mode'),
                     reg_email_verify: $$getValue('reg_email_verify'),
                     email_verify_ttl: $$getValue('email_verify_ttl'),
-                    email_verify_ip_limit: $$getValue('email_verify_ip_limit')
-                },
-                success: data => {
-                    $("#result").modal();
-                    $$.getElementById('msg').innerHTML = data.msg;
-                    if (data.ret) {
-                        window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
-                    }
-                },
-                error: jqXHR => {
-                    alert(`发生错误:${
-                            jqXHR.status
-                            }`);
-                }
-            })
-        })
-    })
-</script>
-
-<script>
-    window.addEventListener('load', () => {
-        $$.getElementById('submit_register_default_value').addEventListener('click', () => {
-            $.ajax({
-                type: "POST",
-                url: "/admin/setting",
-                dataType: "json",
-                data: {
-                    class: 'register_default_value',
+                    email_verify_ip_limit: $$getValue('email_verify_ip_limit'),
+                    random_group: $$getValue('random_group'),
+                    min_port: $$getValue('min_port'),
+                    max_port: $$getValue('max_port'),
                     sign_up_for_free_traffic: $$getValue('sign_up_for_free_traffic'),
+                    free_user_reset_day: $$getValue('free_user_reset_day'),
+                    free_user_reset_bandwidth: $$getValue('free_user_reset_bandwidth'),
                     sign_up_for_free_time: $$getValue('sign_up_for_free_time'),
                     sign_up_for_class: $$getValue('sign_up_for_class'),
                     sign_up_for_class_time: $$getValue('sign_up_for_class_time'),
@@ -1760,36 +1801,12 @@
                     sign_up_for_protocol_param: $$getValue('sign_up_for_protocol_param'),
                     sign_up_for_obfs: $$getValue('sign_up_for_obfs'),
                     sign_up_for_obfs_param: $$getValue('sign_up_for_obfs_param'),
-                    sign_up_for_daily_report: $$getValue('sign_up_for_daily_report')
-                },
-                success: data => {
-                    $("#result").modal();
-                    $$.getElementById('msg').innerHTML = data.msg;
-                    if (data.ret) {
-                        window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
-                    }
-                },
-                error: jqXHR => {
-                    alert(`发生错误:${
-                            jqXHR.status
-                            }`);
-                }
-            })
-        })
-    })
-</script>
-
-<script>
-    window.addEventListener('load', () => {
-        $$.getElementById('submit_invitation_reward').addEventListener('click', () => {
-            $.ajax({
-                type: "POST",
-                url: "/admin/setting",
-                dataType: "json",
-                data: {
-                    class: 'invitation_reward',
-                    invitation_to_register_balance_reward: $$getValue('invitation_to_register_balance_reward'),
-                    invitation_to_register_traffic_reward: $$getValue('invitation_to_register_traffic_reward')
+                    mu_suffix: $$getValue('mu_suffix'),
+                    mu_regex: $$getValue('mu_regex'),
+                    reg_forbidden_ip: $$getValue('reg_forbidden_ip'),
+                    reg_forbidden_port: $$getValue('reg_forbidden_port'),
+                    sign_up_for_daily_report: $$getValue('sign_up_for_daily_report'),
+                    enable_reg_im: $$getValue('enable_reg_im')
                 },
                 success: data => {
                     $("#result").modal();
@@ -1810,19 +1827,23 @@
 
 <script>
     window.addEventListener('load', () => {
-        $$.getElementById('submit_rebate_mode').addEventListener('click', () => {
+        $$.getElementById('submit_invite_settings').addEventListener('click', () => {
             $.ajax({
                 type: "POST",
                 url: "/admin/setting",
                 dataType: "json",
                 data: {
-                    class: 'rebate_mode',
+                    class: 'invite',
                     invitation_mode: $$getValue('invitation_mode'),
                     invite_rebate_mode: $$getValue('invite_rebate_mode'),
                     rebate_ratio: $$getValue('rebate_ratio'),
                     rebate_frequency_limit: $$getValue('rebate_frequency_limit'),
                     rebate_amount_limit: $$getValue('rebate_amount_limit'),
-                    rebate_time_range_limit: $$getValue('rebate_time_range_limit')
+                    rebate_time_range_limit: $$getValue('rebate_time_range_limit'),
+                    invitation_to_register_balance_reward: $$getValue('invitation_to_register_balance_reward'),
+                    invitation_to_register_traffic_reward: $$getValue('invitation_to_register_traffic_reward'),
+                    invite_price: $$getValue('invite_price'),
+                    custom_invite_price: $$getValue('custom_invite_price')
                 },
                 success: data => {
                     $("#result").modal();

+ 6 - 10
src/Controllers/Admin/SettingController.php

@@ -104,19 +104,15 @@ final class SettingController extends BaseController
                 break;
             // 注册设置
             case 'register':
-                $list = ['reg_mode', 'reg_email_verify', 'email_verify_ttl', 'email_verify_ip_limit'];
-                break;
-            case 'register_default_value':
-                $list = ['sign_up_for_free_traffic', 'sign_up_for_free_time', 'sign_up_for_class', 'sign_up_for_class_time', 'sign_up_for_invitation_codes', 'connection_device_limit', 'connection_rate_limit', 'sign_up_for_method', 'sign_up_for_protocol', 'sign_up_for_protocol_param', 'sign_up_for_obfs', 'sign_up_for_obfs_param', 'sign_up_for_daily_report'];
+                $list = ['reg_mode', 'reg_email_verify', 'email_verify_ttl', 'email_verify_ip_limit', 'random_group', 'min_port', 'max_port',   'sign_up_for_free_traffic','free_user_reset_day', 'free_user_reset_bandwidth', 'sign_up_for_free_time', 'sign_up_for_class', 'sign_up_for_class_time', 'sign_up_for_invitation_codes', 'connection_device_limit', 'connection_rate_limit', 'sign_up_for_method', 'sign_up_for_protocol', 'sign_up_for_protocol_param', 'sign_up_for_obfs', 'sign_up_for_obfs_param', 'mu_suffix', 'mu_regex', 'reg_forbidden_ip', 'reg_forbidden_port', 'enable_reg_im', 'sign_up_for_daily_report'];
                 break;
             // 邀请设置
-            case 'invitation_reward':
-                $list = ['invitation_to_register_balance_reward', 'invitation_to_register_traffic_reward'];
-                break;
-            // 返利设置
-            case 'rebate_mode':
-                $list = ['invitation_mode', 'invite_rebate_mode', 'rebate_ratio', 'rebate_frequency_limit', 'rebate_amount_limit', 'rebate_time_range_limit'];
+            case 'invite':
+                $list = ['invitation_to_register_balance_reward', 'invitation_to_register_traffic_reward', 'invite_price', 'custom_invite_price',
+                    'invitation_mode', 'invite_rebate_mode', 'rebate_ratio', 'rebate_frequency_limit', 'rebate_amount_limit', 'rebate_time_range_limit',
+                ];
                 break;
+            // Telegram 设置
             case 'telegram':
                 $list = ['telegram_add_node', 'telegram_add_node_text', 'telegram_update_node', 'telegram_update_node_text', 'telegram_delete_node', 'telegram_delete_node_text', 'telegram_node_gfwed', 'telegram_node_gfwed_text', 'telegram_node_ungfwed', 'telegram_node_ungfwed_text', 'telegram_node_online', 'telegram_node_online_text', 'telegram_node_offline', 'telegram_node_offline_text', 'telegram_daily_job', 'telegram_daily_job_text', 'telegram_diary', 'telegram_diary_text', 'telegram_unbind_kick_member', 'telegram_group_bound_user', 'telegram_show_group_link', 'telegram_group_link'];
                 break;

+ 5 - 5
src/Controllers/Admin/UserController.php

@@ -118,14 +118,14 @@ final class UserController extends BaseController
         $user->protocol_param = $configs['sign_up_for_protocol_param'];
         $user->obfs = $configs['sign_up_for_obfs'];
         $user->obfs_param = $configs['sign_up_for_obfs_param'];
-        $user->forbidden_ip = $_ENV['reg_forbidden_ip'];
-        $user->forbidden_port = $_ENV['reg_forbidden_port'];
+        $user->forbidden_ip = Setting::obtain('reg_forbidden_ip');
+        $user->forbidden_port = Setting::obtain('reg_forbidden_port');
         $user->im_type = 2;
         $user->im_value = $email;
         $user->transfer_enable = Tools::toGB($configs['sign_up_for_free_traffic']);
         $user->invite_num = $configs['sign_up_for_invitation_codes'];
-        $user->auto_reset_day = $_ENV['free_user_reset_day'];
-        $user->auto_reset_bandwidth = $_ENV['free_user_reset_bandwidth'];
+        $user->auto_reset_day = Setting::obtain('free_user_reset_day');
+        $user->auto_reset_bandwidth = Setting::obtain('free_user_reset_bandwidth');
         $user->money = ($money !== -1 ? $money : 0);
         $user->class_expire = date('Y-m-d H:i:s', time() + $configs['sign_up_for_class_time'] * 86400);
         $user->class = $configs['sign_up_for_class'];
@@ -136,7 +136,7 @@ final class UserController extends BaseController
         $user->reg_ip = $_SERVER['REMOTE_ADDR'];
         $user->theme = $_ENV['theme'];
 
-        $groups = explode(',', $_ENV['random_group']);
+        $groups = explode(',', Setting::obtain('random_group'));
 
         $user->node_group = $groups[array_rand($groups)];
 

+ 5 - 5
src/Controllers/AuthController.php

@@ -310,15 +310,15 @@ final class AuthController extends BaseController
         $user->protocol_param = $configs['sign_up_for_protocol_param'];
         $user->obfs = $configs['sign_up_for_obfs'];
         $user->obfs_param = $configs['sign_up_for_obfs_param'];
-        $user->forbidden_ip = $_ENV['reg_forbidden_ip'];
-        $user->forbidden_port = $_ENV['reg_forbidden_port'];
+        $user->forbidden_ip = Setting::obtain('reg_forbidden_ip');
+        $user->forbidden_port = Setting::obtain('reg_forbidden_port');
         $user->im_type = $imtype;
         $user->im_value = $antiXss->xss_clean($imvalue);
 
         $user->transfer_enable = Tools::toGB($configs['sign_up_for_free_traffic']);
         $user->invite_num = $configs['sign_up_for_invitation_codes'];
-        $user->auto_reset_day = $_ENV['free_user_reset_day'];
-        $user->auto_reset_bandwidth = $_ENV['free_user_reset_bandwidth'];
+        $user->auto_reset_day = Setting::obtain('free_user_reset_day');
+        $user->auto_reset_bandwidth = Setting::obtain('free_user_reset_bandwidth');
         $user->money = 0;
         $user->sendDailyMail = $configs['sign_up_for_daily_report'];
 
@@ -354,7 +354,7 @@ final class AuthController extends BaseController
         $user->reg_date = date('Y-m-d H:i:s');
         $user->reg_ip = $_SERVER['REMOTE_ADDR'];
         $user->theme = $_ENV['theme'];
-        $groups = explode(',', $_ENV['random_group']);
+        $groups = explode(',', Setting::obtain('random_group'));
         $user->node_group = $groups[array_rand($groups)];
 
         if ($user->save()) {

+ 2 - 2
src/Controllers/UserController.php

@@ -565,7 +565,7 @@ final class UserController extends BaseController
      */
     public function buyInvite(Request $request, Response $response, array $args)
     {
-        $price = $_ENV['invite_price'];
+        $price = Setting::obtain('invite_price');
         $num = $request->getParam('num');
         $num = trim($num);
 
@@ -596,7 +596,7 @@ final class UserController extends BaseController
      */
     public function customInvite(Request $request, Response $response, array $args)
     {
-        $price = $_ENV['custom_invite_price'];
+        $price = Setting::obtain('custom_invite_price');
         $customcode = $request->getParam('customcode');
         $customcode = trim($customcode);
 

+ 3 - 3
src/Models/User.php

@@ -102,8 +102,8 @@ final class User extends Model
     {
         $str = str_replace(
             ['%id', '%suffix'],
-            [$this->id, $_ENV['mu_suffix']],
-            $_ENV['mu_regex']
+            [$this->id, Setting::obtain('mu_suffix')],
+            Setting::obtain('mu_regex')
         );
         preg_match_all("|%-?[1-9]\d*m|U", $str, $matches, PREG_PATTERN_ORDER);
         foreach ($matches[0] as $key) {
@@ -751,7 +751,7 @@ final class User extends Model
                 'msg' => '余额不足',
             ];
         }
-        if ($Port < $_ENV['min_port'] || $Port > $_ENV['max_port'] || Tools::isInt($Port) === false) {
+        if ($Port < Setting::obtain('min_port') || $Port > Setting::obtain('max_port') || Tools::isInt($Port) === false) {
             return [
                 'ok' => false,
                 'msg' => '端口不在要求范围内',

+ 7 - 5
src/Services/Config.php

@@ -78,28 +78,30 @@ final class Config
             // 注册
             'register_mode' => $public_configs['reg_mode'],
             'enable_email_verify' => $public_configs['reg_email_verify'],
+            'enable_reg_im' => $public_configs['enable_reg_im'],
+            'min_port' => $public_configs['min_port'],
+            'max_port' => $public_configs['max_port'],
+            'invite_price' => $public_configs['invite_price'],
+            'custom_invite_price' => $public_configs['custom_invite_price'],
             // 邀请
             'invite_get_money' => $public_configs['invitation_to_register_balance_reward'],
             'invite_gift' => $public_configs['invitation_to_register_traffic_reward'],
             'code_payback' => $public_configs['rebate_ratio'],
             // 待处理
-            'min_port' => $_ENV['min_port'],
-            'max_port' => $_ENV['max_port'],
             'enable_checkin' => $_ENV['enable_checkin'],
             'checkinMin' => $_ENV['checkinMin'],
             'checkinMax' => $_ENV['checkinMax'],
-            'invite_price' => $_ENV['invite_price'],
+
             'port_price' => $_ENV['port_price'],
             'port_price_specify' => $_ENV['port_price_specify'],
             'jump_delay' => $_ENV['jump_delay'],
             'enable_analytics_code' => $_ENV['enable_analytics_code'],
             'enable_donate' => $_ENV['enable_donate'],
             'enable_ticket' => $_ENV['enable_ticket'],
-            'enable_reg_im' => $_ENV['enable_reg_im'],
+
             'enable_flag' => $_ENV['enable_flag'],
             'enable_kill' => $_ENV['enable_kill'],
             'enable_change_email' => $_ENV['enable_change_email'],
-            'custom_invite_price' => $_ENV['custom_invite_price'],
 
             'enable_telegram' => $_ENV['enable_telegram'],
             'telegram_bot' => $_ENV['telegram_bot'],

+ 3 - 2
src/Utils/Tools.php

@@ -6,6 +6,7 @@ namespace App\Utils;
 
 use App\Models\Link;
 use App\Models\Model;
+use App\Models\Setting;
 use App\Models\User;
 use App\Services\Config;
 use DateTime;
@@ -344,11 +345,11 @@ final class Tools
 
     public static function getAvPort()
     {
-        if ($_ENV['min_port'] > 65535 || $_ENV['min_port'] <= 0 || $_ENV['max_port'] > 65535 || $_ENV['max_port'] <= 0) {
+        if (Setting::obtain('min_port') > 65535 || Setting::obtain('min_port') <= 0 || Setting::obtain('max_port') > 65535 || Setting::obtain('max_port') <= 0) {
             return 0;
         }
         $det = User::pluck('port')->toArray();
-        $port = array_diff(range($_ENV['min_port'], $_ENV['max_port']), $det);
+        $port = array_diff(range(Setting::obtain('min_port'), Setting::obtain('max_port')), $det);
         shuffle($port);
         return $port[0];
     }