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()
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
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
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))
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
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