update node name
This commit is contained in:
parent
5a2f5f79e6
commit
9d65e4180a
|
@ -48,16 +48,6 @@ async def asset_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Dep
|
||||||
document['id'] = str(document['_id'])
|
document['id'] = str(document['_id'])
|
||||||
del document['_id']
|
del document['_id']
|
||||||
APP[document['id']] = document['name']
|
APP[document['id']] = document['name']
|
||||||
if len(SensitiveRuleList) == 0:
|
|
||||||
collection = db["SensitiveRule"]
|
|
||||||
cursor = await collection.find({}, {"_id": 1, "name": 1})
|
|
||||||
async for document in cursor:
|
|
||||||
document['id'] = str(document['_id'])
|
|
||||||
del document['_id']
|
|
||||||
SensitiveRuleList[document['id']] = {
|
|
||||||
"name": document['name'],
|
|
||||||
"color": document['color']
|
|
||||||
}
|
|
||||||
page_index = request_data.get("pageIndex", 1)
|
page_index = request_data.get("pageIndex", 1)
|
||||||
page_size = request_data.get("pageSize", 10)
|
page_size = request_data.get("pageSize", 10)
|
||||||
query = await get_search_query("asset", request_data)
|
query = await get_search_query("asset", request_data)
|
||||||
|
@ -105,7 +95,11 @@ async def asset_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Dep
|
||||||
for k in raw_data:
|
for k in raw_data:
|
||||||
tmp['banner'] += k + ":" + str(raw_data[k]).strip("\n") + "\n"
|
tmp['banner'] += k + ":" + str(raw_data[k]).strip("\n") + "\n"
|
||||||
except:
|
except:
|
||||||
tmp['banner'] = ""
|
try:
|
||||||
|
raw_data = r['raw'].decode('utf-8')
|
||||||
|
tmp['banner'] = raw_data
|
||||||
|
except:
|
||||||
|
tmp['banner'] = ""
|
||||||
tmp['products'] = []
|
tmp['products'] = []
|
||||||
else:
|
else:
|
||||||
tmp['domain'] = r['url'].replace(f'{r["type"]}://', '')
|
tmp['domain'] = r['url'].replace(f'{r["type"]}://', '')
|
||||||
|
@ -342,6 +336,17 @@ async def url_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depen
|
||||||
query = await get_search_query("url", request_data)
|
query = await get_search_query("url", request_data)
|
||||||
if query == "":
|
if query == "":
|
||||||
return {"message": "Search condition parsing error", "code": 500}
|
return {"message": "Search condition parsing error", "code": 500}
|
||||||
|
sort = request_data.get("sort", {})
|
||||||
|
sort_by = [('_id', -1)]
|
||||||
|
if sort != {}:
|
||||||
|
if 'length' in sort:
|
||||||
|
sort_value = sort['length']
|
||||||
|
if sort_value is not None:
|
||||||
|
if sort_value == "ascending":
|
||||||
|
sort_value = 1
|
||||||
|
else:
|
||||||
|
sort_value = -1
|
||||||
|
sort_by = [('length', sort_value)]
|
||||||
total_count = await db['UrlScan'].count_documents(query)
|
total_count = await db['UrlScan'].count_documents(query)
|
||||||
cursor: AsyncIOMotorCursor = ((db['UrlScan'].find(query, {"_id": 0,
|
cursor: AsyncIOMotorCursor = ((db['UrlScan'].find(query, {"_id": 0,
|
||||||
"id": {"$toString": "$_id"},
|
"id": {"$toString": "$_id"},
|
||||||
|
@ -353,9 +358,9 @@ async def url_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depen
|
||||||
"url": "$output",
|
"url": "$output",
|
||||||
"time": 1,
|
"time": 1,
|
||||||
})
|
})
|
||||||
|
.sort(sort_by)
|
||||||
.skip((page_index - 1) * page_size)
|
.skip((page_index - 1) * page_size)
|
||||||
.limit(page_size))
|
.limit(page_size)))
|
||||||
.sort([("time", DESCENDING)]))
|
|
||||||
result = await cursor.to_list(length=None)
|
result = await cursor.to_list(length=None)
|
||||||
return {
|
return {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
|
23
api/node.py
23
api/node.py
|
@ -2,6 +2,7 @@
|
||||||
# @name: node
|
# @name: node
|
||||||
# @auth: rainy-autumn@outlook.com
|
# @auth: rainy-autumn@outlook.com
|
||||||
# @version:
|
# @version:
|
||||||
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from fastapi import WebSocket
|
from fastapi import WebSocket
|
||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends
|
||||||
|
@ -69,6 +70,9 @@ async def node_data_online(_: dict = Depends(verify_token), redis_con=Depends(ge
|
||||||
async def node_config_update(config_data: dict, _: dict = Depends(verify_token), redis_con=Depends(get_redis_pool)):
|
async def node_config_update(config_data: dict, _: dict = Depends(verify_token), redis_con=Depends(get_redis_pool)):
|
||||||
try:
|
try:
|
||||||
name = config_data.get("name")
|
name = config_data.get("name")
|
||||||
|
old_name = config_data.get("oldName", "")
|
||||||
|
if old_name == "":
|
||||||
|
old_name = name
|
||||||
max_task_num = config_data.get("maxTaskNum")
|
max_task_num = config_data.get("maxTaskNum")
|
||||||
state = config_data.get("state")
|
state = config_data.get("state")
|
||||||
if name is None or max_task_num is None or state is None:
|
if name is None or max_task_num is None or state is None:
|
||||||
|
@ -76,6 +80,24 @@ async def node_config_update(config_data: dict, _: dict = Depends(verify_token),
|
||||||
|
|
||||||
async with redis_con as redis:
|
async with redis_con as redis:
|
||||||
key = f"node:{name}"
|
key = f"node:{name}"
|
||||||
|
if old_name != name:
|
||||||
|
old_name_key = f"node:{old_name}"
|
||||||
|
value = await redis_con.hgetall(old_name_key)
|
||||||
|
await redis_con.hmset(key, value)
|
||||||
|
await refresh_config(old_name, 'UpdateNodeName', name)
|
||||||
|
await redis_con.delete(old_name_key)
|
||||||
|
flag = 0
|
||||||
|
# while True:
|
||||||
|
# key_exists = await redis_con.exists(key)
|
||||||
|
# if flag == 5:
|
||||||
|
# logger.error("未检测节点名称更新")
|
||||||
|
# break
|
||||||
|
# if key_exists:
|
||||||
|
# await redis_con.delete(old_name_key)
|
||||||
|
# break
|
||||||
|
# else:
|
||||||
|
# flag += 1
|
||||||
|
# time.sleep(4)
|
||||||
redis_state = await redis.hget(key, "state")
|
redis_state = await redis.hget(key, "state")
|
||||||
if state:
|
if state:
|
||||||
if redis_state == "2":
|
if redis_state == "2":
|
||||||
|
@ -85,6 +107,7 @@ async def node_config_update(config_data: dict, _: dict = Depends(verify_token),
|
||||||
await redis.hset(key, "state", "2")
|
await redis.hset(key, "state", "2")
|
||||||
del config_data["name"]
|
del config_data["name"]
|
||||||
del config_data["state"]
|
del config_data["state"]
|
||||||
|
del config_data["oldName"]
|
||||||
for c in config_data:
|
for c in config_data:
|
||||||
await redis.hset(key, c, config_data[c])
|
await redis.hset(key, c, config_data[c])
|
||||||
await refresh_config(name, 'nodeConfig')
|
await refresh_config(name, 'nodeConfig')
|
||||||
|
|
|
@ -25,7 +25,7 @@ async def poc_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depen
|
||||||
# Get the total count of documents matching the search criteria
|
# Get the total count of documents matching the search criteria
|
||||||
total_count = await db.PocList.count_documents(query)
|
total_count = await db.PocList.count_documents(query)
|
||||||
# Perform pagination query and sort by time
|
# Perform pagination query and sort by time
|
||||||
cursor: AsyncIOMotorCursor = db.PocList.find(query, {"_id": 0, "id": {"$toString": "$_id"}, "name": 1, "level": 1, "time": 1}).sort([("level", DESCENDING), ("time", DESCENDING)]).skip((page_index - 1) * page_size).limit(page_size)
|
cursor: AsyncIOMotorCursor = db.PocList.find(query, {"_id": 0, "id": {"$toString": "$_id"}, "name": 1, "level": 1, "time": 1}).sort([("time", DESCENDING)]).skip((page_index - 1) * page_size).limit(page_size)
|
||||||
result = await cursor.to_list(length=None)
|
result = await cursor.to_list(length=None)
|
||||||
return {
|
return {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
|
|
|
@ -11,7 +11,6 @@ from pymongo import DESCENDING
|
||||||
from api.users import verify_token
|
from api.users import verify_token
|
||||||
from motor.motor_asyncio import AsyncIOMotorCursor
|
from motor.motor_asyncio import AsyncIOMotorCursor
|
||||||
|
|
||||||
from core.config import SensitiveRuleList
|
|
||||||
from core.db import get_mongo_db
|
from core.db import get_mongo_db
|
||||||
from core.redis_handler import refresh_config
|
from core.redis_handler import refresh_config
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
@ -20,6 +19,7 @@ from core.util import search_to_mongodb, get_search_query
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/sensitive/data")
|
@router.post("/sensitive/data")
|
||||||
async def get_sensitive_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
async def get_sensitive_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
||||||
try:
|
try:
|
||||||
|
@ -78,10 +78,6 @@ async def upgrade_sensitive_rule(request_data: dict, db=Depends(get_mongo_db), _
|
||||||
# Perform the update
|
# Perform the update
|
||||||
result = await db.SensitiveRule.update_one(update_query, update_values)
|
result = await db.SensitiveRule.update_one(update_query, update_values)
|
||||||
if result:
|
if result:
|
||||||
SensitiveRuleList[str(rule_id)] = {
|
|
||||||
"name": name,
|
|
||||||
"color": color
|
|
||||||
}
|
|
||||||
await refresh_config('all', 'sensitive')
|
await refresh_config('all', 'sensitive')
|
||||||
return {"code": 200, "message": "SensitiveRule updated successfully"}
|
return {"code": 200, "message": "SensitiveRule updated successfully"}
|
||||||
else:
|
else:
|
||||||
|
@ -115,10 +111,6 @@ async def add_sensitive_rule(request_data: dict, db=Depends(get_mongo_db), _: di
|
||||||
|
|
||||||
# Check if the insertion was successful
|
# Check if the insertion was successful
|
||||||
if result.inserted_id:
|
if result.inserted_id:
|
||||||
SensitiveRuleList[str(result.inserted_id)] = {
|
|
||||||
"name": name,
|
|
||||||
"color": color
|
|
||||||
}
|
|
||||||
await refresh_config('all', 'sensitive')
|
await refresh_config('all', 'sensitive')
|
||||||
return {"code": 200, "message": "SensitiveRule added successfully"}
|
return {"code": 200, "message": "SensitiveRule added successfully"}
|
||||||
else:
|
else:
|
||||||
|
@ -130,6 +122,30 @@ async def add_sensitive_rule(request_data: dict, db=Depends(get_mongo_db), _: di
|
||||||
return {"message": "error", "code": 500}
|
return {"message": "error", "code": 500}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/sensitive/update/state")
|
||||||
|
async def update_state_sensitive_rule(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
||||||
|
try:
|
||||||
|
rule_ids = request_data.get("ids", [])
|
||||||
|
state = request_data.get("state")
|
||||||
|
if state is None:
|
||||||
|
return {"code": 500, "message": "state not found"}
|
||||||
|
obj_ids = []
|
||||||
|
for rule_id in rule_ids:
|
||||||
|
if rule_id != None and rule_id != "":
|
||||||
|
obj_ids.append(ObjectId(rule_id))
|
||||||
|
result = await db.SensitiveRule.update_many({'_id': {'$in': obj_ids}}, {'$set': {'state': state}})
|
||||||
|
# Check if the deletion was successful
|
||||||
|
if result.modified_count > 0:
|
||||||
|
await refresh_config('all', 'sensitive')
|
||||||
|
return {"code": 200, "message": "SensitiveRules update successfully"}
|
||||||
|
else:
|
||||||
|
return {"code": 404, "message": "SensitiveRules not found"}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(str(e))
|
||||||
|
# Handle exceptions as needed
|
||||||
|
return {"message": "error", "code": 500}
|
||||||
|
|
||||||
@router.post("/sensitive/delete")
|
@router.post("/sensitive/delete")
|
||||||
async def delete_sensitive_rules(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
async def delete_sensitive_rules(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
||||||
try:
|
try:
|
||||||
|
@ -146,8 +162,6 @@ async def delete_sensitive_rules(request_data: dict, db=Depends(get_mongo_db), _
|
||||||
|
|
||||||
# Check if the deletion was successful
|
# Check if the deletion was successful
|
||||||
if result.deleted_count > 0:
|
if result.deleted_count > 0:
|
||||||
for rule_id in rule_ids:
|
|
||||||
del SensitiveRuleList[rule_id]
|
|
||||||
await refresh_config('all', 'sensitive')
|
await refresh_config('all', 'sensitive')
|
||||||
return {"code": 200, "message": "SensitiveRules deleted successfully"}
|
return {"code": 200, "message": "SensitiveRules deleted successfully"}
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -26,8 +26,9 @@ GET_LOG_NAME = []
|
||||||
NODE_TIMEOUT = 50
|
NODE_TIMEOUT = 50
|
||||||
TOTAL_LOGS = 1000
|
TOTAL_LOGS = 1000
|
||||||
APP = {}
|
APP = {}
|
||||||
SensitiveRuleList = {}
|
|
||||||
Project_List = {}
|
Project_List = {}
|
||||||
|
|
||||||
|
|
||||||
def set_timezone(t):
|
def set_timezone(t):
|
||||||
global TIMEZONE
|
global TIMEZONE
|
||||||
TIMEZONE = t
|
TIMEZONE = t
|
||||||
|
|
24
core/db.py
24
core/db.py
|
@ -58,7 +58,7 @@ async def create_database():
|
||||||
await collection.insert_one(
|
await collection.insert_one(
|
||||||
{"name": "DirscanThread", 'value': '15', 'type': 'system'})
|
{"name": "DirscanThread", 'value': '15', 'type': 'system'})
|
||||||
await collection.insert_one(
|
await collection.insert_one(
|
||||||
{"name": "PortscanThread", 'value': '15', 'type': 'system'})
|
{"name": "PortscanThread", 'value': '5', 'type': 'system'})
|
||||||
await collection.insert_one(
|
await collection.insert_one(
|
||||||
{"name": "CrawlerThread", 'value': '2', 'type': 'system'})
|
{"name": "CrawlerThread", 'value': '2', 'type': 'system'})
|
||||||
await collection.insert_one(
|
await collection.insert_one(
|
||||||
|
@ -132,7 +132,7 @@ async def create_database():
|
||||||
await collection.insert_one(
|
await collection.insert_one(
|
||||||
{"id": "page_monitoring", "name": "Page Monitoring", 'hour': 24, 'type': 'Page Monitoring', 'state': True})
|
{"id": "page_monitoring", "name": "Page Monitoring", 'hour': 24, 'type': 'Page Monitoring', 'state': True})
|
||||||
await get_fingerprint(client[DATABASE_NAME])
|
await get_fingerprint(client[DATABASE_NAME])
|
||||||
await get_sens_rule(client[DATABASE_NAME])
|
# await get_sens_rule(client[DATABASE_NAME])
|
||||||
await get_project(client[DATABASE_NAME])
|
await get_project(client[DATABASE_NAME])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# 处理异常
|
# 处理异常
|
||||||
|
@ -153,16 +153,16 @@ async def get_fingerprint(client):
|
||||||
APP[document['id']] = document['name']
|
APP[document['id']] = document['name']
|
||||||
|
|
||||||
|
|
||||||
async def get_sens_rule(client):
|
# async def get_sens_rule(client):
|
||||||
collection = client["SensitiveRule"]
|
# collection = client["SensitiveRule"]
|
||||||
cursor = collection.find({}, {"_id": 1, "name": 1, "color": 1})
|
# cursor = collection.find({}, {"_id": 1, "name": 1, "color": 1})
|
||||||
async for document in cursor:
|
# async for document in cursor:
|
||||||
document['id'] = str(document['_id'])
|
# document['id'] = str(document['_id'])
|
||||||
del document['_id']
|
# del document['_id']
|
||||||
SensitiveRuleList[document['id']] = {
|
# SensitiveRuleList[document['id']] = {
|
||||||
"name": document['name'],
|
# "name": document['name'],
|
||||||
"color": document['color']
|
# "color": document['color']
|
||||||
}
|
# }
|
||||||
|
|
||||||
|
|
||||||
async def get_project(client):
|
async def get_project(client):
|
||||||
|
|
|
@ -7,7 +7,7 @@ import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from core.config import TIMEZONE, APP, SensitiveRuleList, Project_List
|
from core.config import TIMEZONE, APP, Project_List
|
||||||
from datetime import timezone
|
from datetime import timezone
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import json
|
import json
|
||||||
|
@ -404,7 +404,7 @@ async def get_search_query(name, request_data):
|
||||||
if query == "" or query is None:
|
if query == "" or query is None:
|
||||||
return ""
|
return ""
|
||||||
query = query[0]
|
query = query[0]
|
||||||
filter_key = {'app':'app','color': 'color', 'status': 'status', 'level': 'level', 'type': 'type', 'project': 'project', 'port': 'port', 'protocol': ['protocol', 'type'], 'icon': 'faviconmmh3'}
|
filter_key = {'app':'app','color': 'color', 'status': 'status', 'level': 'level', 'type': 'type', 'project': 'project', 'port': 'port', 'protocol': ['protocol', 'type'], 'icon': 'faviconmmh3', "statuscode":"statuscode"}
|
||||||
filter = request_data.get("filter", {})
|
filter = request_data.get("filter", {})
|
||||||
if filter:
|
if filter:
|
||||||
query["$and"] = []
|
query["$and"] = []
|
||||||
|
|
Loading…
Reference in New Issue