Ver código fonte

fixed: WebApi 和 中转相关的BUG

修复:
1. WebApi 不更新用户流量;
2. SSR中转设置问题

鸣谢:
藤原佑为;
ThereChave;
兔姬桑 4 anos atrás
pai
commit
2ad7b6537e

+ 18 - 11
app/Http/Controllers/Api/WebApi/BaseController.php

@@ -102,19 +102,26 @@ class BaseController {
 
 			$rate = Node::find($id)->traffic_rate;
 
-			$obj = new UserDataFlowLog();
-			$obj->user_id = (int) $input['uid'];
-			$obj->u = (int) $input['upload'] * $rate;
-			$obj->d = (int) $input['download'] * $rate;
-			$obj->node_id = $id;
-			$obj->rate = $rate;
-			$obj->traffic = flowAutoShow($obj->u + $obj->d);
-			$obj->log_time = time();
-			$obj->save();
-
-			if(!$obj->id){
+			$log = new UserDataFlowLog();
+			$log->user_id = (int) $input['uid'];
+			$log->u = (int) $input['upload'] * $rate;
+			$log->d = (int) $input['download'] * $rate;
+			$log->node_id = $id;
+			$log->rate = $rate;
+			$log->traffic = flowAutoShow($log->u + $log->d);
+			$log->log_time = time();
+			$log->save();
+
+			if(!$log->id){
 				return $this->returnData('上报用户流量日志失败,请检查字段');
 			}
+			$user = User::find($log->user_id);
+			if($user){
+				$user->u += $log->u;
+				$user->d += $log->d;
+				$user->t = time();
+				$user->save();
+			}
 		}
 
 		return $this->returnData('上报用户流量日志成功', 'success', 200);

+ 4 - 3
app/Http/Controllers/Controller.php

@@ -151,7 +151,7 @@ class Controller extends BaseController {
 		$scheme = null;
 		// 获取分组名称
 		$group = $node->level_name;
-		$host = $node->server?: $node->ip;
+		$host = $node->is_relay? $node->relay_server : ($node->server?: $node->ip);
 		$data = null;
 		switch($node->type){
 			case 2:
@@ -177,7 +177,8 @@ class Controller extends BaseController {
 				$method = $node->method;
 				$obfs = $node->obfs;
 				if($node->single){
-					$port = $node->port;
+					//单端口使用中转的端口
+					$port = $node->is_relay? $node->relay_port : $node->port;
 					$passwd = $node->passwd;
 					$protocol_param = $user->port.':'.$user->passwd;
 				}else{
@@ -270,7 +271,7 @@ class Controller extends BaseController {
 			'trafficDaily'  => json_encode($dailyData),
 			'trafficHourly' => json_encode($hourlyData),
 			'monthDays'     => json_encode(range(1, date("j"), 1)),// 本月天数
-			'dayHours'      => json_encode(range(0, date("G"), 1))// 本日小时
+			'dayHours'      => json_encode(range(0, date("G") + 1, 1))// 本日小时
 		];
 	}
 }

+ 1 - 0
app/Models/Rule.php

@@ -24,6 +24,7 @@ use Illuminate\Database\Eloquent\Model;
  * @mixin \Eloquent
  */
 class Rule extends Model {
+	public $timestamps = false;
 	protected $table = 'rule';
 
 	public function getTypeLabelAttribute(): string {