From 779a059d368beae2facb8d861fd5b6250bc536be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=A7=AC=E6=A1=91?= <867057410@qq.com> Date: Tue, 20 Sep 2022 19:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=89=88=E6=9C=AC=E5=88=A4=E6=96=AD=E6=9D=A5=E8=A7=84?= =?UTF-8?q?=E9=81=BF=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Components/MigrationToolBox.php | 17 ++ ..._21_145711_create_referral_apply_table.php | 7 +- ...0_08_21_145711_create_rule_group_table.php | 11 +- ...0_08_21_145711_create_user_group_table.php | 7 +- .../2022_01_22_231856_improve_node_table.php | 7 +- ..._21_145711_create_referral_apply_table.php | 38 ---- ...0_08_21_145711_create_rule_group_table.php | 36 ---- ...0_08_21_145711_create_user_group_table.php | 32 --- .../2022_01_22_231856_improve_node_table.php | 195 ------------------ 9 files changed, 44 insertions(+), 306 deletions(-) create mode 100644 app/Components/MigrationToolBox.php delete mode 100644 database/migrations/5.6/2020_08_21_145711_create_referral_apply_table.php delete mode 100644 database/migrations/5.6/2020_08_21_145711_create_rule_group_table.php delete mode 100644 database/migrations/5.6/2020_08_21_145711_create_user_group_table.php delete mode 100644 database/migrations/5.6/2022_01_22_231856_improve_node_table.php diff --git a/app/Components/MigrationToolBox.php b/app/Components/MigrationToolBox.php new file mode 100644 index 00000000..204ebbd1 --- /dev/null +++ b/app/Components/MigrationToolBox.php @@ -0,0 +1,17 @@ +{'version()'}; + $dbType = strpos($dbVersion, 'Maria'); + $dbVersion = mb_substr($dbVersion, 0, 6); + + return ($dbType !== false && version_compare($dbVersion, '10.2.7', '>=')) || ($dbType === false && version_compare($dbVersion, '5.7.8', '>=')); + } +} diff --git a/database/migrations/2020_08_21_145711_create_referral_apply_table.php b/database/migrations/2020_08_21_145711_create_referral_apply_table.php index b101b21d..8514dde6 100644 --- a/database/migrations/2020_08_21_145711_create_referral_apply_table.php +++ b/database/migrations/2020_08_21_145711_create_referral_apply_table.php @@ -1,5 +1,6 @@ unsignedInteger('before')->default(0)->comment('操作前可提现金额,单位分'); $table->unsignedInteger('after')->default(0)->comment('操作后可提现金额,单位分'); $table->unsignedInteger('amount')->default(0)->comment('本次提现金额,单位分'); - $table->json('link_logs')->comment('关联返利日志ID,例如:1,3,4'); + if ((new MigrationToolBox())->versionCheck()) { + $table->json('link_logs')->comment('关联返利日志ID,例如:1,3,4'); + } else { + $table->text('link_logs')->comment('关联返利日志ID,例如:1,3,4'); + } $table->boolean('status')->default(0)->comment('状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款'); $table->dateTime('created_at')->comment('创建时间'); $table->dateTime('updated_at')->comment('最后更新时间'); diff --git a/database/migrations/2020_08_21_145711_create_rule_group_table.php b/database/migrations/2020_08_21_145711_create_rule_group_table.php index f7271511..0753007e 100644 --- a/database/migrations/2020_08_21_145711_create_rule_group_table.php +++ b/database/migrations/2020_08_21_145711_create_rule_group_table.php @@ -1,5 +1,6 @@ increments('id'); $table->boolean('type')->default(1)->comment('模式:1-阻断、0-放行'); $table->string('name')->comment('分组名称'); - $table->json('rules')->nullable()->comment('关联的规则ID,多个用,号分隔'); - $table->json('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); + if ((new MigrationToolBox())->versionCheck()) { + $table->json('rules')->nullable()->comment('关联的规则ID,多个用,号分隔'); + $table->json('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); + } else { + $table->text('rules')->nullable()->comment('关联的规则ID,多个用,号分隔'); + $table->text('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); + } + $table->dateTime('created_at')->comment('创建时间'); $table->dateTime('updated_at')->comment('最后更新时间'); }); diff --git a/database/migrations/2020_08_21_145711_create_user_group_table.php b/database/migrations/2020_08_21_145711_create_user_group_table.php index e4cfdbb3..ad73cc31 100644 --- a/database/migrations/2020_08_21_145711_create_user_group_table.php +++ b/database/migrations/2020_08_21_145711_create_user_group_table.php @@ -1,5 +1,6 @@ increments('id'); $table->string('name')->comment('分组名称'); - $table->json('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); + if ((new MigrationToolBox())->versionCheck()) { + $table->json('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); + } else { + $table->text('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); + } }); } diff --git a/database/migrations/2022_01_22_231856_improve_node_table.php b/database/migrations/2022_01_22_231856_improve_node_table.php index 90ad01f0..551bbc92 100644 --- a/database/migrations/2022_01_22_231856_improve_node_table.php +++ b/database/migrations/2022_01_22_231856_improve_node_table.php @@ -1,5 +1,6 @@ json('profile')->comment('节点设置选项')->after('description'); + if ((new MigrationToolBox())->versionCheck()) { + $table->json('profile')->comment('节点设置选项')->after('description'); + } else { + $table->text('profile')->comment('节点设置选项')->after('description'); + } $table->unsignedInteger('relay_node_id')->nullable()->comment('中转节点对接母节点, 默认NULL')->after('is_relay'); }); diff --git a/database/migrations/5.6/2020_08_21_145711_create_referral_apply_table.php b/database/migrations/5.6/2020_08_21_145711_create_referral_apply_table.php deleted file mode 100644 index 85a83080..00000000 --- a/database/migrations/5.6/2020_08_21_145711_create_referral_apply_table.php +++ /dev/null @@ -1,38 +0,0 @@ -increments('id'); - $table->unsignedInteger('user_id')->comment('用户ID'); - $table->unsignedInteger('before')->default(0)->comment('操作前可提现金额,单位分'); - $table->unsignedInteger('after')->default(0)->comment('操作后可提现金额,单位分'); - $table->unsignedInteger('amount')->default(0)->comment('本次提现金额,单位分'); - $table->text('link_logs')->comment('关联返利日志ID,例如:1,3,4'); - $table->boolean('status')->default(0)->comment('状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款'); - $table->dateTime('created_at')->comment('创建时间'); - $table->dateTime('updated_at')->comment('最后更新时间'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('referral_apply'); - } -} diff --git a/database/migrations/5.6/2020_08_21_145711_create_rule_group_table.php b/database/migrations/5.6/2020_08_21_145711_create_rule_group_table.php deleted file mode 100644 index 50c818bc..00000000 --- a/database/migrations/5.6/2020_08_21_145711_create_rule_group_table.php +++ /dev/null @@ -1,36 +0,0 @@ -increments('id'); - $table->boolean('type')->default(1)->comment('模式:1-阻断、0-放行'); - $table->string('name')->comment('分组名称'); - $table->text('rules')->nullable()->comment('关联的规则ID,多个用,号分隔'); - $table->text('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); - $table->dateTime('created_at')->comment('创建时间'); - $table->dateTime('updated_at')->comment('最后更新时间'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('rule_group'); - } -} diff --git a/database/migrations/5.6/2020_08_21_145711_create_user_group_table.php b/database/migrations/5.6/2020_08_21_145711_create_user_group_table.php deleted file mode 100644 index a5b076c3..00000000 --- a/database/migrations/5.6/2020_08_21_145711_create_user_group_table.php +++ /dev/null @@ -1,32 +0,0 @@ -increments('id'); - $table->string('name')->comment('分组名称'); - $table->text('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('user_group'); - } -} diff --git a/database/migrations/5.6/2022_01_22_231856_improve_node_table.php b/database/migrations/5.6/2022_01_22_231856_improve_node_table.php deleted file mode 100644 index 5a3f8ce4..00000000 --- a/database/migrations/5.6/2022_01_22_231856_improve_node_table.php +++ /dev/null @@ -1,195 +0,0 @@ -configs as $config) { - Config::insertOrIgnore(['name' => $config]); - } - - // 插入新字段 - Schema::table('node', function (Blueprint $table) { - $table->text('profile')->comment('节点设置选项')->after('description'); - $table->unsignedInteger('relay_node_id')->nullable()->comment('中转节点对接母节点, 默认NULL')->after('is_relay'); - }); - - foreach (Node::all() as $node) { - $profile = null; - switch ($node->type) { - case 0: - $profile = [ - 'method' => $node->method, - ]; - break; - case 2: - $profile = [ - 'method' => $node->v2_method, - 'v2_alter_id' => $node->v2_alter_id, - 'v2_net' => $node->v2_net, - 'v2_type' => $node->v2_type, - 'v2_host' => $node->v2_host, - 'v2_path' => $node->v2_path, - 'v2_tls' => $node->v2_tls ? 'tls' : '', - 'v2_sni' => $node->v2_sni, - ]; - break; - case 3: - $profile = [ - 'allow_insecure' => false, - ]; - break; - case 1: - case 4: - $profile = [ - 'method' => $node->method, - 'protocol' => $node->protocol, - 'obfs' => $node->obfs, - 'obfs_param' => $node->obfs_param, - 'protocol_param' => $node->protocol_param, - 'passwd' => $node->passwd, - ]; - break; - default: - } - $node->update(['profile' => $profile]); - - if ($node->relay_server && $node->relay_port) { // 创建 中转线路 - $relayNodeData = [ - 'type' => 0, - 'name' => $node->name.'↔️', - 'country_code' => $node->country_code, - 'port' => $node->relay_port, - 'level' => $node->level, - 'rule_group_id' => $node->rule_group_id, - 'speed_limit' => $node->speed_limit, - 'client_limit' => $node->client_limit, - 'description' => $node->description, - 'geo' => $node->geo, - 'traffic_rate' => $node->traffic_rate, - 'relay_node_id' => $node->id, - 'is_udp' => $node->is_udp, - 'push_port' => $node->push_port, - 'detection_type' => $node->detection_type, - 'sort' => $node->sort, - 'status' => $node->status, - ]; - - if (filter_var($node->relay_server, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { - $relayNodeData['ip'] = $node->relay_server; - } elseif (filter_var($node->relay_server, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $relayNodeData['ipv6'] = $node->relay_server; - } else { - $relayNodeData['server'] = $node->relay_server; - $ip = gethostbyname($node->relay_server); - if ($ip) { - $relayNodeData['ip'] = $ip; - } - } - Node::create($relayNodeData); - } - } - - // 销毁老字段 - Schema::table('node', function (Blueprint $table) { - $table->dropColumn('relay_server', 'relay_port', 'method', 'protocol', 'protocol_param', 'obfs', 'obfs_param', 'compatible', 'single', 'passwd', 'v2_alter_id', - 'v2_method', 'v2_net', 'v2_type', 'v2_host', 'v2_path', 'v2_tls', 'v2_sni', 'tls_provider', 'is_relay'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Config::destroy($this->configs); - - Schema::table('node', function (Blueprint $table) { // 回滚老字段 - $table->string('relay_server')->nullable()->comment('中转地址'); - $table->unsignedSmallInteger('relay_port')->nullable()->comment('中转端口'); - $table->string('method', 32)->default('aes-256-cfb')->comment('加密方式'); - $table->string('protocol', 64)->default('origin')->comment('协议'); - $table->string('protocol_param', 128)->nullable()->comment('协议参数'); - $table->string('obfs', 64)->default('plain')->comment('混淆'); - $table->string('obfs_param')->nullable()->comment('混淆参数'); - $table->boolean('compatible')->default(0)->comment('兼容SS'); - $table->boolean('single')->default(0)->comment('启用单端口功能:0-否、1-是'); - $table->string('passwd')->nullable()->comment('单端口的连接密码'); - $table->unsignedSmallInteger('v2_alter_id')->default(16)->comment('V2Ray额外ID'); - $table->string('v2_method', 32)->default('aes-128-gcm')->comment('V2Ray加密方式'); - $table->string('v2_net', 16)->default('tcp')->comment('V2Ray传输协议'); - $table->string('v2_type', 32)->default('none')->comment('V2Ray伪装类型'); - $table->string('v2_host')->nullable()->comment('V2Ray伪装的域名'); - $table->string('v2_path')->nullable()->comment('V2Ray的WS/H2路径'); - $table->boolean('v2_tls')->default(0)->comment('V2Ray连接TLS:0-未开启、1-开启'); - $table->string('v2_sni', 191)->nullable()->comment('V2Ray的SNI配置'); - $table->text('tls_provider')->nullable()->comment('V2Ray节点的TLS提供商授权信息'); - $table->boolean('is_relay')->default(0)->comment('是否中转节点:0-否、1-是'); - }); - - foreach (Node::all() as $node) { - if ($node->relay_node_id) { // 回滚中转节点 - $pNode = Node::find($node->relay_node_id); - $pNode->is_relay = 1; - $pNode->relay_server = $node->server ?: $node->ip; - $pNode->relay_port = $node->port; - $pNode->save(); - try { - $node->delete(); - } catch (Exception $e) { - Log::emergency('中转删除失败,请手动在数据库中删除; '.$e->getMessage()); - } - continue; - } - switch ($node->type) { // 回滚节点配置 - case 0: - $node->method = $node->profile['method']; - break; - case 2: - $node->v2_method = $node->profile['method']; - $node->v2_alter_id = $node->profile['v2_alter_id']; - $node->v2_net = $node->profile['v2_net']; - $node->v2_type = $node->profile['v2_type']; - $node->v2_host = $node->profile['v2_host']; - $node->v2_path = $node->profile['v2_path']; - $node->v2_tls = $node->profile['v2_tls'] ? 1 : 0; - $node->v2_sni = $node->profile['v2_sni']; - break; - case 1: - case 4: - $node->method = $node->profile['method']; - $node->protocol = $node->profile['protocol']; - $node->obfs = $node->profile['obfs']; - $node->obfs_param = $node->profile['obfs_param']; - $node->protocol_param = $node->profile['protocol_param']; - $node->single = $node->profile['passwd'] ? 1 : 0; - $node->passwd = $node->profile['passwd']; - break; - default: - } - $node->save(); - } - - // 回滚新字段 - Schema::table('node', function (Blueprint $table) { - $table->dropColumn('profile', 'relay_node_id'); - }); - } -}