栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OSSIM项目研究记录(四)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OSSIM项目研究记录(四)

2021SC@SDUSC

os-sim/frameworked源码分析之action
  • 一、frameworked与action
  • 二、重点解析
    • 2.1、action.py
    • 2.2、部分函数
      • 1.
      • 2.
  • 三、总结


一、frameworked与action

下图在ossim项目中各个主要模块之间的数据流动示意。

关注framework与其他模块的交互,主要有:

  1. Server至frameworkd:发送请求命令,要求frameworkd针对警告(Alarm)采取相应操作,例如执行外部程序或发出Email来通知管理员。

  2. framework至Server:发送请求命令至Server。要求Server通知Agent对插件(Plugins)进行启动、停止等操作。

  3. framework至frameworkd:发送请求命令,要求frameworkd启动OpenVas扫描进程。

  4. frameworkd至framework: 传送OpenVas扫描结果在前端页面中显示。

  5. frameworkd至Database:在frameworkd执行过程中将Openvas扫描结果存入数据库。

  6. Database至framework: PHP页面显示需要调用数据库的告警事件。

  7. framework至Database:用户参数设置信息需要存入数据库。

二、重点解析 2.1、action.py

代码整体结构如下

在这里插入代码片class Action(threading.Thread):
    base64field = ["username", 
                 "password", "filename", 
                 "userdata1", "userdata2", "userdata3", 
                 "userdata4", "userdata5", "userdata6", 
                 "userdata7", "userdata8", "userdata9"] 

    def __init__(self, request):
  
    def get_mail_server_data(self):
     
    def parseRequest(self, request):
       
    def getActions(self, id):
  
    def requestRepr(self, request, email_to):
        
    def getHostnameFromIP(self, hostip):
      
    def doAction(self, action_id):
        
    def mailNotify(self):
       
    def run(self)
       

首先import了若干包
然后定义了一个类Action,
其数据结构中包含了用户名,密码,文件名,用户数据。
同时定义了9个函数,分别用于初始化,获取服务器数据,解析请求,获取动作,从Ip获取主机名等操作

2.2、部分函数 1.

构造函数/初始化函数,将应答内容置空,邮件服务器的端口号,用户名密码等初始化。

   def __init__(self, request):

        self.__request = self.parseRequest(request)
        self.__responses = {}
        self.__conf = OssimConf()
        self.__db = OssimDB(self.__conf[VAR_DB_HOST], 
                            self.__conf[VAR_DB_SCHEMA], 
                            self.__conf[VAR_DB_USER],
                            self.__conf[VAR_DB_PASSWORD]
                            )
        self.__component_id = None
        self.__email_server_relay_enabled = False
        
        self.__email_server = ""
        self.__email_server_port = 0
        self.__email_server_user = ""
        self.__email_server_passwd = ""

        threading.Thread.__init__(self)
2.

获取邮件服务器数据。用异常捕获结构编写的,从数据库检索电子邮件服务器配置。
然后打印服务器、服务器密码、服务器端口、服务器用户。
如果服务器未打开成功,警告“电子邮件服务器中继未配置”
尝试赋值服务器端口, 如果值错误:警告“无效的服务器端口"
抛出其他异常,则导入回溯,警告“获取电子邮件服务器配置时出错”

 def get_mail_server_data(self):
        """Retrieves the email server configuration from the database.
        """
        try:
            server = ossim_setup['mailserver_relay']                #data['mailserver_relay']
            server_port = ossim_setup ['mailserver_relay_port']      #data['mailserver_relay_port']
            server_user = ossim_setup['mailserver_relay_user']      #data['mailserver_relay_user']
            server_passwd = ossim_setup['mailserver_relay_passwd']  #data['mailserver_relay_passwd']
            print server,server_passwd,server_port,server_user
            if server == "no":
                logger.warning("Email server relay not configured -> mailserver_relay = no")
                self.__email_server_relay_enabled = False
                return
            self.__email_server = server

            try:
                self.__email_server_port = int(server_port)
            except ValueError:
                logger.warning("Invalid server port: %s" % server_port)
                self.__email_server_relay_enabled = False
                return
            self.__email_server_user = server_user
            self.__email_server_passwd = server_passwd
            self.__email_server_relay_enabled = True
        except Exception, e:
            self.__email_server_relay_enabled = False
            import traceback
            traceback.print_exc()
            logger.error("Error getting the email server configuration: %s" % str(e))
三、总结

Action 定义了一个Server至frameworkd的行为标准,要求frameworkd对通信进行检查,针对警告采取相应操作,例如执行外部程序或发出Email来通知管理员。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/326871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号