Преглед изворни кода

1.用户流量监控
2.修改管理员密码
3.移除shadowsocks关键字,防止网站被爬虫抓取导致域名被污染或者ip被封

zhangjiangbin пре 8 година
родитељ
комит
7ae3c16ca8

+ 0 - 1
.gitignore

@@ -2,7 +2,6 @@
 /public/hot
 /public/storage
 /storage/*.key
-/storage/logs
 /vendor
 /.idea
 /.vagrant

+ 61 - 1
app/Http/Controllers/AdminController.php

@@ -428,7 +428,7 @@ class AdminController extends BaseController
             return Redirect::to('login');
         }
 
-        $trafficLogList = UserTrafficLog::with(['User', 'SsNode'])->paginate(20);
+        $trafficLogList = UserTrafficLog::with(['User', 'SsNode'])->orderBy('id', 'desc')->paginate(20);
         foreach ($trafficLogList as &$trafficLog) {
             $trafficLog->u = $this->flowAutoShow($trafficLog->u);
             $trafficLog->d = $this->flowAutoShow($trafficLog->d);
@@ -678,6 +678,66 @@ TXT;
         return Response::view('admin/export', $view);
     }
 
+    // 修改个人资料
+    public function profile(Request $request)
+    {
+        if (!$request->session()->has('user')) {
+            return Redirect::to('login');
+        }
+
+        $user = $request->session()->get('user');
+
+        if ($request->method() == 'POST') {
+            $old_password = $request->get('old_password');
+            $new_password = $request->get('new_password');
+
+            $old_password = md5(trim($old_password));
+            $new_password = md5(trim($new_password));
+
+            $user = User::where('id', $user['id'])->first();
+            if ($user->password != $old_password) {
+                $request->session()->flash('errorMsg', '旧密码错误,请重新输入');
+                return Redirect::back();
+            } else if ($user->password == $new_password) {
+                $request->session()->flash('errorMsg', '新密码不可与旧密码一样,请重新输入');
+                return Redirect::back();
+            }
+
+            $ret = User::where('id', $user['id'])->update(['password' => $new_password]);
+            if (!$ret) {
+                $request->session()->flash('errorMsg', '修改失败');
+                return Redirect::back();
+            } else {
+                $request->session()->flash('successMsg', '修改成功');
+                return Redirect::back();
+            }
+        } else {
+            return Response::view('admin/profile');
+        }
+    }
+
+    // 流量监控
+    public function monitor(Request $request)
+    {
+        if (!$request->session()->has('user')) {
+            return Redirect::to('login');
+        }
+
+        $id = $request->get('id');
+        if (empty($id)) {
+            return Redirect::to('admin/userList');
+        }
+
+        $user = User::where('id', $id)->first();
+        if (empty($user)) {
+            return Redirect::to('admin/userList');
+        }
+
+        $view['traffic'] = '';
+
+        return Response::view('admin/monitor', $view);
+    }
+
     // 生成SS密码
     public function makePasswd(Request $request)
     {

+ 2 - 2
app/Http/Controllers/LoginController.php

@@ -18,8 +18,8 @@ class LoginController extends Controller
     public function index(Request $request)
     {
         if ($request->method() == 'POST') {
-            $username = $request->get('username');
-            $password = $request->get('password');
+            $username = trim($request->get('username'));
+            $password = trim($request->get('password'));
 
             if (empty($username) || empty($password)) {
                 $request->session()->flash('error_msg', '请输入用户名和密码');

+ 0 - 5
readme.md

@@ -208,11 +208,6 @@ server {
 }
 ````
 
-#### 登录
-````
-
-````
-
 ## 代码解释
 ````
 \app\Http\Controllers 控制器文件

+ 1 - 1
resources/views/admin/addUser.blade.php

@@ -163,7 +163,7 @@
                                     <div class="portlet light bordered">
                                         <div class="portlet-title">
                                             <div class="caption">
-                                                <span class="caption-subject font-dark bold">Shadowsocks信息</span>
+                                                <span class="caption-subject font-dark bold">SS(R)信息</span>
                                             </div>
                                         </div>
                                         <div class="portlet-body">

+ 1 - 1
resources/views/admin/editUser.blade.php

@@ -164,7 +164,7 @@
                                     <div class="portlet light bordered">
                                         <div class="portlet-title">
                                             <div class="caption">
-                                                <span class="caption-subject font-dark bold">Shadowsocks信息</span>
+                                                <span class="caption-subject font-dark bold">SS(R)信息</span>
                                             </div>
                                         </div>
                                         <div class="portlet-body">

+ 1 - 1
resources/views/admin/layouts.blade.php

@@ -65,7 +65,7 @@
                             <img alt="" class="img-circle" src="/assets/images/avatar.jpg" /> </a>
                         <ul class="dropdown-menu dropdown-menu-default">
                             <li>
-                                <a href="JavaScript:;"> <i class="icon-user"></i> 个人资料 </a>
+                                <a href="{{url('admin/profile')}}"> <i class="icon-user"></i> 个人资料 </a>
                             </li>
                             <li>
                                 <a href="{{url('logout')}}"> <i class="icon-key"></i> 退出 </a>

+ 46 - 0
resources/views/admin/monitor.blade.php

@@ -0,0 +1,46 @@
+@extends('admin.layouts')
+
+@section('css')
+    <link href="/assets/global/plugins/datatables/datatables.min.css" rel="stylesheet" type="text/css" />
+    <link href="/assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.css" rel="stylesheet" type="text/css" />
+@endsection
+@section('title', '控制面板')
+@section('content')
+    <!-- BEGIN CONTENT BODY -->
+    <div class="page-content">
+        <!-- BEGIN PAGE BREADCRUMB -->
+        <ul class="page-breadcrumb breadcrumb">
+            <li>
+                <a href="{{url('admin')}}">管理中心</a>
+                <i class="fa fa-circle"></i>
+            </li>
+            <li>
+                <a href="{{url('admin/monitor')}}">流量监控</a>
+            </li>
+        </ul>
+        <!-- END PAGE BREADCRUMB -->
+        <!-- BEGIN PAGE BASE CONTENT -->
+        <div class="row">
+            <div class="col-md-12">
+                <!-- BEGIN PORTLET-->
+                <div class="portlet light bordered">
+                    <div class="portlet-body">
+                        、、、
+                    </div>
+                </div>
+                <!-- END PORTLET-->
+            </div>
+        </div>
+        <!-- END PAGE BASE CONTENT -->
+    </div>
+    <!-- END CONTENT BODY -->
+@endsection
+@section('script')
+    <script src="/assets/global/plugins/jquery-qrcode/jquery.qrcode.min.js" type="text/javascript"></script>
+    <script src="/assets/global/plugins/jquery-ui/jquery-ui.min.js" type="text/javascript"></script>
+    <script src="/assets/global/plugins/bootbox/bootbox.min.js" type="text/javascript"></script>
+
+    <script type="text/javascript">
+        //
+    </script>
+@endsection

+ 117 - 0
resources/views/admin/profile.blade.php

@@ -0,0 +1,117 @@
+@extends('admin.layouts')
+
+@section('css')
+    <link href="/assets/pages/css/profile.min.css" rel="stylesheet" type="text/css" />
+@endsection
+@section('title', '控制面板')
+@section('content')
+    <!-- BEGIN CONTENT BODY -->
+    <div class="page-content">
+        <!-- BEGIN PAGE BREADCRUMB -->
+        <ul class="page-breadcrumb breadcrumb">
+            <li>
+                <a href="{{url('admin')}}">管理中心</a>
+                <i class="fa fa-circle"></i>
+            </li>
+            <li>
+                <a href="{{url('admin/monitor')}}">流量监控</a>
+            </li>
+        </ul>
+        <!-- END PAGE BREADCRUMB -->
+        <!-- BEGIN PAGE BASE CONTENT -->
+        <div class="row">
+            <div class="col-md-12">
+                @if (Session::has('successMsg'))
+                    <div class="alert alert-success alert-dismissable">
+                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
+                        {{Session::get('successMsg')}}
+                    </div>
+                @endif
+                @if (Session::has('errorMsg'))
+                    <div class="alert alert-danger alert-dismissable">
+                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
+                        <strong>错误:</strong> {{Session::get('errorMsg')}}
+                    </div>
+                @endif
+                <!-- BEGIN PROFILE SIDEBAR -->
+                <div class="profile-sidebar">
+                    <!-- PORTLET MAIN -->
+                    <div class="portlet light profile-sidebar-portlet bordered">
+                        <!-- SIDEBAR USERPIC -->
+                        <div class="profile-userpic">
+                            <img src="/assets/images/avatar.jpg" class="img-responsive" alt=""> </div>
+                        <!-- END SIDEBAR USERPIC -->
+                        <!-- SIDEBAR USER TITLE -->
+                        <div class="profile-usertitle">
+                            <div class="profile-usertitle-name"> {{Session::get('user')['username']}} </div>
+                            <div class="profile-usertitle-job"> 管理员 </div>
+                        </div>
+                        <!-- END SIDEBAR USER TITLE -->
+                        <!-- SIDEBAR MENU -->
+                        <div class="profile-usermenu">
+                            <!--
+                            <ul class="nav">
+                                <li class="active">
+                                    <a href="javascript:;">
+                                        <i class="icon-user"></i> 个人资料 </a>
+                                </li>
+                            </ul>
+                            -->
+                        </div>
+                        <!-- END MENU -->
+                    </div>
+                    <!-- END PORTLET MAIN -->
+                </div>
+                <!-- END BEGIN PROFILE SIDEBAR -->
+                <!-- BEGIN PROFILE CONTENT -->
+                <div class="profile-content">
+                    <div class="row">
+                        <div class="col-md-12">
+                            <div class="portlet light bordered">
+                                <div class="portlet-title tabbable-line">
+                                    <ul class="nav nav-tabs">
+                                        <li class="active">
+                                            <a href="#tab_1" data-toggle="tab">修改密码</a>
+                                        </li>
+                                    </ul>
+                                </div>
+                                <div class="portlet-body">
+                                    <div class="tab-content">
+                                        <!-- CHANGE PASSWORD TAB -->
+                                        <div class="tab-pane active" id="tab_1">
+                                            <form action="{{url('admin/profile')}}" method="post" enctype="multipart/form-data" class="form-bordered">
+                                                <div class="form-group">
+                                                    <label class="control-label"> 旧密码 </label>
+                                                    <input type="password" class="form-control" name="old_password" id="old_password" required />
+                                                    <input type="hidden" name="_token" value="{{csrf_token()}}" />
+                                                </div>
+                                                <div class="form-group">
+                                                    <label class="control-label"> 新密码 </label>
+                                                    <input type="password" class="form-control" name="new_password" id="new_password" required />
+                                                </div>
+                                                <div class="form-actions">
+                                                    <div class="row">
+                                                        <div class=" col-md-4">
+                                                            <button type="submit" class="btn green"> 提 交 </button>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </form>
+                                        </div>
+                                        <!-- END CHANGE PASSWORD TAB -->
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <!-- END PROFILE CONTENT -->
+            </div>
+        </div>
+        <!-- END PAGE BASE CONTENT -->
+    </div>
+    <!-- END CONTENT BODY -->
+@endsection
+@section('script')
+
+@endsection

+ 6 - 0
resources/views/admin/userList.blade.php

@@ -114,6 +114,7 @@
                                                 <button type="button" class="btn btn-sm blue btn-outline" onclick="editUser('{{$user->id}}')">编辑</button>
                                                 <button type="button" class="btn btn-sm red btn-outline" onclick="delUser('{{$user->id}}')">删除</button>
                                                 <button type="button" class="btn btn-sm green btn-outline" onclick="do_export('{{$user->id}}')">配置信息</button>
+                                                <button type="button" class="btn btn-sm purple btn-outline" onclick="do_monitor('{{$user->id}}')">流量监控</button>
                                             </td>
                                         </tr>
                                         @endforeach
@@ -207,5 +208,10 @@
         function do_export(id) {
             window.location.href = '{{url('admin/export?id=')}}' + id;
         }
+
+        // 流量监控
+        function do_monitor(id) {
+            window.location.href = '{{url('admin/monitor?id=')}}' + id;
+        }
     </script>
 @endsection

+ 2 - 0
routes/web.php

@@ -21,5 +21,7 @@ Route::any('admin/trafficLog', 'AdminController@trafficLog'); // 流量日志
 Route::any('admin/export', 'AdminController@export'); // 导出配置信息
 Route::any('admin/convert', 'AdminController@convert'); // 格式转换
 Route::any('admin/import', 'AdminController@import'); // 数据导入
+Route::any('admin/monitor', 'AdminController@monitor'); // 流量监控
+Route::any('admin/profile', 'AdminController@profile'); // 修改个人信息
 Route::get('makePasswd', 'AdminController@makePasswd'); // 获取随机密码
 Route::get('download', 'AdminController@download'); // 下载转换过的JSON配置

+ 2 - 0
storage/logs/.gitignore

@@ -0,0 +1,2 @@
+*
+!.gitignore