示例#1
0
 def handle(self) -> None:
     address = self.client_address[0]
     device = fetch("Device", allow_none=True, ip_address=address)
     properties = {
         "source": device.name if device else address,
         "content": str(bytes.decode(self.request[0].strip())),
     }
     for event in fetch_all("Event"):
         event.match_log(**properties)
     log = factory("Syslog", **properties)
     Session.add(log)
     Session.commit()
示例#2
0
def factory(cls_name: str, **kwargs: Any) -> Any:
    instance, instance_id = None, kwargs.pop("id", 0)
    if instance_id:
        instance = fetch(cls_name, id=instance_id)
    elif "name" in kwargs:
        instance = fetch(cls_name, allow_none=True, name=kwargs["name"])
    if instance:
        instance.update(**kwargs)
    else:
        instance = models[cls_name](**kwargs)
        Session.add(instance)
    return instance
示例#3
0
文件: functions.py 项目: mww012/eNMS
def factory(cls_name, **kwargs):
    if set("/\\'" + '"') & set(kwargs.get("name", "") + kwargs.get("scoped_name", "")):
        raise Exception("Names cannot contain a slash or a quote.")
    instance, instance_id = None, kwargs.pop("id", 0)
    if instance_id:
        instance = fetch(cls_name, id=instance_id)
    elif "name" in kwargs:
        instance = fetch(cls_name, allow_none=True, name=kwargs["name"])
    if instance and not kwargs.get("must_be_new"):
        instance.update(**kwargs)
    else:
        instance = models[cls_name](**kwargs)
        Session.add(instance)
    return instance
示例#4
0
文件: base.py 项目: deniskin82/eNMS
 def init_parameters(self):
     parameters = Session.query(models["parameters"]).one_or_none()
     if not parameters:
         parameters = models["parameters"]()
         parameters.update(
             **{
                 property: getattr(self, property)
                 for property in model_properties["parameters"]
                 if hasattr(self, property)
             })
         Session.add(parameters)
         Session.commit()
     else:
         for parameter in parameters.get_properties():
             setattr(self, parameter, getattr(parameters, parameter))
示例#5
0
def factory(cls_name: str, **kwargs: Any) -> Any:
    if "/" in kwargs.get("name", ""):
        raise Exception("Names cannot contain a slash ('/').")
    instance, instance_id = None, kwargs.pop("id", 0)
    if instance_id:
        instance = fetch(cls_name, id=instance_id)
    elif "name" in kwargs:
        instance = fetch(cls_name, allow_none=True, name=kwargs["name"])
    if instance:
        if kwargs.get("must_be_new"):
            raise Exception(
                f"There already is a {cls_name} with the same name.")
        else:
            instance.update(**kwargs)
    else:
        instance = models[cls_name](**kwargs)
        Session.add(instance)
    return instance
示例#6
0
def factory(cls_name, **kwargs):
    if {"/", '"', "'"
        } & set(kwargs.get("name", "") + kwargs.get("scoped_name", "")):
        raise Exception("Names cannot contain a slash or a quote.")
    instance, instance_id = None, kwargs.pop("id", 0)
    if instance_id:
        instance = fetch(cls_name, id=instance_id)
    elif "name" in kwargs:
        instance = fetch(cls_name, allow_none=True, name=kwargs["name"])
    if instance:
        if kwargs.get("must_be_new"):
            raise Exception(
                f"There already is a {cls_name} with the same name.")
        else:
            instance.update(**kwargs)
    else:
        instance = models[cls_name](**kwargs)
        Session.add(instance)
    return instance