Sfoglia il codice sorgente

统计模块加权限验证

walkor 11 anni fa
parent
commit
5ea143aae8

+ 6 - 0
applications/Statistics/Config/Config.php

@@ -4,4 +4,10 @@ class Config
 {
     // 数据源端口,会向这个端口发送udp广播获取ip,然后从这个端口以tcp协议获取统计信息
     public static $ProviderPort = 55858;
+    
+    // 管理员用户名,用户名密码都为空字符串时说明不用验证
+    public static $adminName = '';
+    
+    // 管理员密码,用户名密码都为空字符串时说明不用验证
+    public static $adminPassword = '';
 }

+ 60 - 0
applications/Statistics/Lib/functions.php

@@ -79,4 +79,64 @@ function multiRequest($request_buffer_array)
     ksort($read_buffer);
 
     return $read_buffer;
+}
+
+/**
+ * 检查是否登录
+ */
+function check_auth()
+{
+    // 如果配置中管理员用户名密码为空则说明不用验证
+    if(Statistics\Config\Config::$adminName == '' && Statistics\Config\Config::$adminPassword == '')
+    {
+        return true;
+    }
+    // 进入验证流程
+    _session_start();
+    if(!isset($_SESSION['admin']))
+    {
+        if(!isset($_POST['admin_name']) || !isset($_POST['admin_password']))
+        {
+            include ST_ROOT . '/Views/login.tpl.php';
+            _exit();
+        }
+        else 
+        {
+            $admin_name = $_POST['admin_name'];
+            $admin_password = $_POST['admin_password'];
+            if($admin_name != Statistics\Config\Config::$adminName || $admin_password != Statistics\Config\Config::$adminPassword)
+            {
+                $msg = "用户名或者密码不正确";
+                include ST_ROOT . '/Views/login.tpl.php';
+                _exit();
+            }
+            $_SESSION['admin'] = $admin_name;
+        }
+    }
+    return true;
+}
+
+/**
+ * 启动session,兼容fpm
+ */
+function _session_start()
+{
+    if(defined('WORKERMAN_ROOT_DIR'))
+    {
+        return \Man\Common\Protocols\Http\session_start();
+    }
+    return session_start();
+}
+
+/**
+ * 退出
+ * @param string $str
+ */
+function _exit($str = '')
+{
+    if(defined('WORKERMAN_ROOT_DIR'))
+    {
+        return \Man\Common\Protocols\Http\jump_exit($str);
+    }
+    return exit($str);
 }

+ 7 - 0
applications/Statistics/README.md

@@ -0,0 +1,7 @@
+
+统计模块
+=======
+
+  *  管理员用户名密码默认都为空,即不需要登录就可以查看监控数据
+  *  如果需要登录验证,在applications/Statistics/Config/Config.php里面设置管理员密码
+

+ 67 - 0
applications/Statistics/Views/login.tpl.php

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+  <meta charset="utf-8">
+  <title>WorkerMan-集群统计与监控</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <meta name="description" content="">
+  <meta name="author" content="">
+
+	<!--link rel="stylesheet/less" href="/less/bootstrap.less" type="text/css" /-->
+	<!--link rel="stylesheet/less" href="/less/responsive.less" type="text/css" /-->
+	<!--script src="/js/less-1.3.3.min.js"></script-->
+	<!--append ‘#!watch’ to the browser URL, then refresh the page. -->
+	
+	<link href="/css/bootstrap.min.css" rel="stylesheet">
+	<link href="/css/style.css" rel="stylesheet">
+
+  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
+  <!--[if lt IE 9]>
+    <script src="js/html5shiv.js"></script>
+  <![endif]-->
+
+  <!-- Fav and touch icons -->
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/apple-touch-icon-144-precomposed.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/apple-touch-icon-114-precomposed.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/apple-touch-icon-72-precomposed.png">
+  <link rel="apple-touch-icon-precomposed" href="img/apple-touch-icon-57-precomposed.png">
+  <link rel="shortcut icon" href="img/favicon.png">
+  
+	<script type="text/javascript" src="/js/jquery.min.js"></script>
+	<script type="text/javascript" src="/js/bootstrap.min.js"></script>
+	<script type="text/javascript" src="/js/scripts.js"></script>
+	 <script type="text/javascript" src="/js/jquery.min.js"></script>
+	 <script type="text/javascript" src="/js/highcharts.js"></script>
+</head>
+<body>
+<div class="container">
+	<div class="row clearfix">
+		<div class="col-md-4 column">
+		</div>
+		<div class="col-md-4 column">
+		<?php if(!empty($msg)){?>
+			<div class="alert alert-dismissable alert-danger">
+				<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
+				<h4>
+					<?php echo $msg;?>
+				</h4> 
+			</div>
+		<?php }?>
+			<h1>workerman管理员登录</h1>
+			<form role="form" method="POST" action="">
+				<div class="form-group">
+					 <label>用户名</label><input type="text" name="admin_name" class="form-control" />
+				</div>
+				<div class="form-group">
+					 <label for="exampleInputPassword1">密码</label><input type="password" name="admin_password"  class="form-control" id="exampleInputPassword1" />
+				</div>
+				<button type="submit" class="btn btn-default">登录</button>
+			</form>
+		</div>
+		<div class="col-md-4 column">
+		</div>
+	</div>
+</div>
+<div class="footer">Powered by <a href="http://www.workerman.net" target="_blank"><strong>Workerman!</strong></a></div>
+</body>
+</html>

+ 3 - 0
applications/Statistics/Web/index.php

@@ -1,6 +1,9 @@
 <?php
 require_once  __DIR__.'/_init.php';
 
+// 检查是否登录
+check_auth();
+
 $func = isset($_GET['fn']) ? $_GET['fn'] : 'main';
 $func = "\\Statistics\\Modules\\".$func;
 if(!function_exists($func))

+ 1 - 1
workerman/Core/AbstractWorker.php

@@ -260,7 +260,7 @@ abstract class AbstractWorker
     {
         $str = 'Worker['.get_class($this).']:'.$str;
         Lib\Log::add($str);
-        if($display && Lib\Config::get('workerman.debug') == 1 && @posix_ttyname(STDOUT))
+        if($display && Lib\Config::get('workerman.debug') == 1)
         {
             echo $str."\n";
         }