Merge pull request 'dev to main' (#1) from dev into main
Reviewed-on: http://git.kakunet.top/kaku/FzHUEL/pulls/1
This commit is contained in:
		| @@ -2,31 +2,61 @@ | ||||
|  | ||||
| VENV_DIR=".venv" | ||||
| PYTHON_APP="main.py" | ||||
| LOG_FILE="output.log" | ||||
| PID_FILE="app.pid" | ||||
|  | ||||
| start_app() { | ||||
|     if [ ! -d "$VENV_DIR" ]; then | ||||
|         echo -e "\033[31m Virtual environment directory $VENV_DIR not found! \033[0m" | ||||
|         exit 1 | ||||
|     fi | ||||
|  | ||||
|     if [ ! -f "$PYTHON_APP" ]; then | ||||
|         echo -e "\033[31m Python application $PYTHON_APP not found! \033[0m" | ||||
|         exit 1 | ||||
|     fi | ||||
|  | ||||
|     source "$VENV_DIR/bin/activate" | ||||
|     nohup python3 $PYTHON_APP > output.log 2>&1 & | ||||
|     nohup python3 "$PYTHON_APP" > "$LOG_FILE" 2>&1 & | ||||
|     echo $! > "$PID_FILE" | ||||
|     echo -e "\033[32m Application started! \033[0m" | ||||
| } | ||||
|  | ||||
| stop_app() { | ||||
|     pid=$(ps aux | grep $PYTHON_APP | grep -v grep | awk '{print $2}') | ||||
|     if [ -n "$pid" ]; then | ||||
|         kill $pid | ||||
|     if [ ! -f "$PID_FILE" ]; then | ||||
|         echo -e "\033[31m PID file not found! \033[0m" | ||||
|         exit 1 | ||||
|     fi | ||||
|  | ||||
|     pid=$(cat "$PID_FILE") | ||||
|     if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then | ||||
|         kill "$pid" | ||||
|         rm "$PID_FILE" | ||||
|         echo -e "\033[32m Application ended! \033[0m" | ||||
|     else | ||||
|         echo -e "\033[31m Application not runing! \033[0m" | ||||
|         echo -e "\033[31m Application not running or PID not found! \033[0m" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| check_app_status() { | ||||
|     pid=$(ps aux | grep $PYTHON_APP | grep -v grep | awk '{print $2}') | ||||
|     if [ -n "$pid" ]; then | ||||
|         echo -e "PID:" $pid | ||||
|         echo -e "\033[32m Application runing! \033[0m" | ||||
|     else | ||||
|         echo -e "\033[31m Application not runing! \033[0m" | ||||
|     if [ ! -f "$PID_FILE" ]; then | ||||
|         echo -e "\033[31m Application not running! \033[0m" | ||||
|         exit 1 | ||||
|     fi | ||||
|  | ||||
|     pid=$(cat "$PID_FILE") | ||||
|     if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then | ||||
|         echo -e "PID: $pid" | ||||
|         echo -e "\033[32m Application running! \033[0m" | ||||
|     else | ||||
|         echo -e "\033[31m Application not running! \033[0m" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| restart_app() { | ||||
|     stop_app | ||||
|     start_app | ||||
|     echo -e "\033[32m Application restarted! \033[0m" | ||||
| } | ||||
|  | ||||
| case "$1" in | ||||
| @@ -39,8 +69,11 @@ case "$1" in | ||||
|     status) | ||||
|         check_app_status | ||||
|         ;; | ||||
|     restart) | ||||
|         restart_app | ||||
|         ;; | ||||
|     *) | ||||
|         echo -e "\033[33m Usage: $0 {start|stop|status}\033[0m" | ||||
|         echo -e "\033[33m Usage: $0 {start|stop|status|restart} \033[0m" | ||||
|         exit 1 | ||||
|         ;; | ||||
| esac | ||||
|   | ||||
| @@ -5,11 +5,11 @@ host=0.0.0.0 | ||||
| threaded=1 | ||||
|  | ||||
| [database] | ||||
| host=127.0.0.1 | ||||
| host=172.16.0.4 | ||||
| port=3306 | ||||
| user=root | ||||
| password=password | ||||
| password=123456 | ||||
| database=fz_data | ||||
|  | ||||
| [RSA] | ||||
| key= | ||||
| key=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAN132X+pP8D0m/if/TzcPdhpHD+4xtjW0wgkhMZh+72FJAJ35CWMbMm71bDyTq370lVvy+Eahbm2fAMPy3hIJisWuTlQ8bqscRSxyUNoVVt30qSI2Rb/uNYc79Sm6rwWdLj+mgFBKJgqmH4UHHoc17SjXIDmaW5VMVHjpiMYkRvDAgMBAAECgYBFs+tZ8RhWMAaI7T3EMmMqogZYjdzTsWUw6mF5mKwlHWrUdgxxvu0cXwhmDRUzUA8Ggc2utuzAow0L36Q/4qFUF2x99okk3ACcJsLcVm3+Ou7fhu5jtq2G7VW2J3aIIxzNs85ZsdGRBb9leZ4OVgbBGIj//GqlRiGKhR8qZma9sQJBAPgC2nHO4sNowDTIE558uPe0jh9hgdZysFUpL3FKIlbibGHQ7D/QFUcYbYqBlYbm2WluVIKF0TL2OqteKzBdbHMCQQDkmh4r7d+lmLhhr/j+200bIeLIoytHwMNOJodCUMU3gg4m0PHOEMhZsXu6EgqLXYierV/JPMxnlK93W90BQI9xAkBqTfbKD26dabnxJc1bAoTaD/dXNhlMDS7N4fBm8+rSKQ1hxAZvt8ZXCf5x/udTwoFwMo1gwPERkf9F0wBaI8FHAkALZxicLlhahTylOsbbx4qYEN+kDGeLQ7U6P7e9ehPsSeN00jVNhw7HUpAOXvoBq5+18oX1nr+/Zu49sOpcNqExAkEA6uKRPmM4rsJVtXotC1gZJsYTrGlVtY3smKG2wWE/xsw0nqAaw/MdsOkrxpNxKa0IDSOtubtyD0PIQgC2HGT4kw== | ||||
| @@ -19,9 +19,9 @@ def saveFzData(data) -> bool: | ||||
|     sql = """ | ||||
|     INSERT INTO table_zhapian  | ||||
|     VALUES ( | ||||
|     %(uuid)s,%(callednm)s,%(zptype)s,%(zpfeatures)s,%(early_warning_time)s, | ||||
|     %(warninglevel)s,%(zpcallernm)s,%(talktime)s,%(auth_code)s,%(student_number)s, | ||||
|     %(transfer_amout)s,%(url_or_app_name)s,%(zp_account)s | ||||
|     %(uuid)s,%(callednm)s,%(isPushZkj)s,%(called_city_name)s,%(called_province_name)s,%(called_location_county)s, | ||||
|     %(insert_time)s,%(warninglevel)s,%(zpfeatures)s,%(url)s,%(data_source)s,%(url_or_app_name)s, | ||||
|     %(called_location_province)s,%(pushZkjTime)s,%(zp_ip_address)s,%(first_login_time)s,%(called_location_city)s | ||||
|     ); | ||||
|     """ | ||||
|     conn = getConn() | ||||
| @@ -29,21 +29,26 @@ def saveFzData(data) -> bool: | ||||
|     try: | ||||
|         for message in data: | ||||
|             message.setdefault("uuid",None) | ||||
|             message.setdefault("callednm",None) | ||||
|             message.setdefault("zptype",None) | ||||
|             message.setdefault("zpfeatures",None) | ||||
|             message.setdefault("early_warning_time",None) | ||||
|             message.setdefault("isPushZkj",None) | ||||
|             message.setdefault("called_city_name",None) | ||||
|             message.setdefault("called_province_name",None) | ||||
|             message.setdefault("called_location_county",None) | ||||
|             message.setdefault("insert_time",None) | ||||
|             message.setdefault("warninglevel",None) | ||||
|             message.setdefault("zpcallernm",None) | ||||
|             message.setdefault("talktime",None) | ||||
|             message.setdefault("auth_code",None) | ||||
|             message.setdefault("student_number",None) | ||||
|             message.setdefault("transfer_amout",None) | ||||
|             message.setdefault("zpfeatures",None) | ||||
|             message.setdefault("url",None) | ||||
|             message.setdefault("data_source",None) | ||||
|             message.setdefault("url_or_app_name",None) | ||||
|             message.setdefault("zp_account",None) | ||||
|             message.setdefault("called_location_province",None) | ||||
|             message.setdefault("pushZkjTime",None) | ||||
|             message.setdefault("zp_ip_address",None) | ||||
|             message.setdefault("first_login_time",None) | ||||
|             message.setdefault("called_location_city",None) | ||||
|             print("已保存",message.get("uuid")) | ||||
|             cursor.execute(sql,message) | ||||
|         conn.commit() | ||||
|     except: | ||||
|     except Exception as e: | ||||
|         print(e) | ||||
|         return False | ||||
|     conn.close() | ||||
|     return True | ||||
| @@ -51,7 +56,7 @@ def saveFzData(data) -> bool: | ||||
| def LoadFzData(): | ||||
|     "从数据库读取数据" | ||||
|     sql = """ | ||||
|     SELECT * FROM `table_zhapian` ORDER BY `early_warning_time` DESC LIMIT 0,1000; | ||||
|     SELECT * FROM `table_zhapian` ORDER BY `insert_time` DESC LIMIT 0,1000; | ||||
|     """ | ||||
|     conn = getConn() | ||||
|     cursor = conn.cursor() | ||||
|   | ||||
							
								
								
									
										24
									
								
								fz_data.sql
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								fz_data.sql
									
									
									
									
									
								
							| @@ -11,7 +11,7 @@ | ||||
|  Target Server Version : 101106 (10.11.6-MariaDB-0+deb12u1) | ||||
|  File Encoding         : 65001 | ||||
|  | ||||
|  Date: 23/05/2024 10:53:04 | ||||
|  Date: 05/07/2024 23:19:08 | ||||
| */ | ||||
|  | ||||
| SET NAMES utf8mb4; | ||||
| @@ -34,17 +34,21 @@ DROP TABLE IF EXISTS `table_zhapian`; | ||||
| CREATE TABLE `table_zhapian`  ( | ||||
|   `uuid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, | ||||
|   `callednm` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `zptype` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `zpfeatures` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `early_warning_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `warninglevel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `zpcallernm` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `talktime` int(11) NULL DEFAULT NULL, | ||||
|   `auth_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `student_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `transfer_amout` float NULL DEFAULT NULL, | ||||
|   `isPushZkj` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `called_city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `called_province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `called_location_county` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `insert_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `zpfeatures` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `data_source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `url_or_app_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `zp_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `called_location_province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `pushZkjTime` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `zp_ip_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `first_login_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   `called_location_city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, | ||||
|   PRIMARY KEY (`uuid`) USING BTREE | ||||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; | ||||
|  | ||||
|   | ||||
							
								
								
									
										22
									
								
								templates/log.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								templates/log.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="zh-cn"> | ||||
|  | ||||
| <head> | ||||
|  | ||||
|     <meta charset="utf-8"> | ||||
|     <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|     <meta name="description" content=""> | ||||
|     <meta name="author" content=""> | ||||
|  | ||||
|     <title>反诈预警平台</title> | ||||
| </head> | ||||
|  | ||||
| <body> | ||||
|     <h1>日志</h1> | ||||
|     {% for i in data %} | ||||
|     <p>{{i}}</p> | ||||
|     {% endfor %} | ||||
| </body> | ||||
|  | ||||
| </html> | ||||
| @@ -100,18 +100,22 @@ | ||||
|                                 <thead> | ||||
|                                     <tr> | ||||
|                                         <th>UUID</th> | ||||
|                                         <th>受害人号码</th> | ||||
|                                         <th>诈骗方式</th> | ||||
|                                         <th>诈骗类型</th> | ||||
|                                         <th>预警时间</th> | ||||
|                                         <th>被叫号码</th> | ||||
|                                         <th>isPushZkj</th> | ||||
|                                         <th>报警城市</th> | ||||
|                                         <th>报警省份</th> | ||||
|                                         <th>报警本地 区/县</th></th> | ||||
|                                         <th>插入时间</th> | ||||
|                                         <th>预警等级</th> | ||||
|                                         <th>诈骗类型</th> | ||||
|                                         <th>URL</th> | ||||
|                                         <th>数据源</th> | ||||
|                                         <th>APP/URL名称</th> | ||||
|                                         <th>诈骗电话</th> | ||||
|                                         <th>通话时长</th> | ||||
|                                         <th>诈骗人账号</th> | ||||
|                                         <th>转账金额</th> | ||||
|                                         <th>机构授权码</th> | ||||
|                                         <th>学号</th> | ||||
|                                         <th>报警本地省份</th> | ||||
|                                         <th>推送时间</th> | ||||
|                                         <th>诈骗IP地址</th> | ||||
|                                         <th>首次登录时间</th> | ||||
|                                         <th>报警本地城市</th> | ||||
|                                     </tr> | ||||
|                                 </thead> | ||||
|                                 <tbody> | ||||
|   | ||||
| @@ -17,6 +17,12 @@ def showTable(): | ||||
|     data = db.fz_data.LoadFzData() | ||||
|     return render_template("tables.html", data=data) | ||||
|  | ||||
| @page_bp.route("/log", methods=["GET"]) | ||||
| def log(): | ||||
|     if request.cookies.get("user") == None: | ||||
|         return redirect("/login") | ||||
|     file = open("output.log","r").readlines()[::-1] | ||||
|     return render_template("log.html", data=file) | ||||
|  | ||||
| @page_bp.route("/", methods=["GET"]) | ||||
| def index(): | ||||
| @@ -26,7 +32,7 @@ def index(): | ||||
|     total[0] = db.fz_data.total() | ||||
|     data = db.fz_data.LoadFzData() | ||||
|     for i in data: | ||||
|         w_time = time.mktime(time.strptime(i[4], "%Y-%m-%d %H:%M:%S")) | ||||
|         w_time = time.mktime(time.strptime(i[15], "%Y-%m-%d %H:%M:%S")) | ||||
|         nowtime = time.time() | ||||
|         if w_time + 60 * 60 * 24 * 7 > nowtime: | ||||
|             total[1] += 1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user