自研抓包服务实现(7)—Django服务实现Map Remote

抓包服务实现(7)—Django服务实现Map Remote
Django服务针对Map Remote如何设计?
  1. 保存Map Setting配置并支持修改、删除
  2. 能选择Map Setting确定Map Remote

核心问题是如何暂存确定Map Remote的Map Setting

保存Map Remote配置

我们希望有一个Map Remote总表,用来记录并提供选择去确定Map

from native_project.response import Response
from native_project.mongdb import MongoDB

Response = Response()
MappingMongoDB = MongoDB('mapping_settings')

def save_mapping(request):

    if request.method == 'GET':
        map_title = request.GET.get('map_title')
        protocol_origin = request.GET.get('protocol_origin')
        host_origin = request.GET.get('host_origin')
        protocol_map = request.GET.get('protocol_map')
        host_map = request.GET.get('host_map')

        if MappingMongoDB.find_one({'host_origin': host_origin}):
            return Response.fail('host is duplicate')
        else:
            map_setting = {
                'map_title': map_title,
                'protocol_origin': protocol_origin,
                'host_origin': host_origin,
                'protocol_map': protocol_map,
                'host_map': host_map,
                'isMap': 'False'
            }
            MappingMongoDB.insert_one(map_setting)
            return Response.success(0)

  1. 可以设置每个Map Remote配置的title,这样更加清晰的表达此配置的作用
  2. 本次只设计host和protocol两个字段,后续字段可以自己叠加,而且设置host不能重复
  3. 默认值isMap=false,该字段表示是否正在使用中
获取Map Remote配置表
def list_mapping(request):

    if request.method == 'GET':
        mapping_data = MappingMongoDB.find({})
        new_list = []
        for mapping in mapping_data:
            data = {
                'mapping_id': str(mapping['_id']),
                'map_title': mapping['map_title'],
                'protocol_origin': mapping['protocol_origin'],
                'host_origin': mapping['host_origin'],
                'protocol_map': mapping['protocol_map'],
                'host_map': mapping['host_map'],
                'isMap': mapping['isMap']
            }
            new_list.append(data)
        return Response.success(new_list)
暂存Map Remote配置

暂存意思是本次抓包都是根据选择的Remote配置进行Map的

from native_project.response import Response
from native_project.mongdb import MongoDB
import json

Response = Response()
MappingMongoDB=MongoDB('mapping_settings')
TemporaryMongoDB = MongoDB('temporary_mapping')

def temporary_mapping(request):
    
    if request.method == 'GET':
        mapping=request.GET.get('mapping')
        map_list=json.loads(mapping)
        TemporaryMongoDB.delete_many({})
        MappingMongoDB.update_many({},{'isMap':'False'})
        for map_temporary in map_list:
            map_setting={
                'map_title':map_temporary['map_title'],
                'protocol_origin':map_temporary['protocol_origin'],
                'host_origin':map_temporary['host_origin'],
                'protocol_map':map_temporary['protocol_map'],
                'host_map':map_temporary['host_map']
            }
            TemporaryMongoDB.insert_one(map_setting)
            MappingMongoDB.update_one({'host_origin':map_temporary['host_origin']},{'isMap':'True'})
        return Response.success(0)
  1. 先清空temporary_mapping临时表,并且把Remote Setting表所有配置都变成isMap=False
  2. 然后遍历所选的配置,插入到临时表,并且更新isMap=True
删除Map Remote配置
def delete_mapping(request):

    if request.method == 'GET':
        host_origin = request.GET.get('host_origin')
        query = {'host_origin': host_origin}
        MappingMongoDB.delete_one(query)
        TemporaryMongoDB.delete_one(query)
        return Response.success(0)

删除settings配置的时候同时删除该临时配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值