class ServiceTypes(JsonObject):
    name = StringField()
    protocol = MultipleChoiceStringField(options=["_udp", "_tcp"], null=False)
    port = IntegerField()
    properties = StringField()

    def get_properties(self) -> Dict[str, Any]:
        if self.properties is None:
            return {}
        return json.loads(self.properties)  # type: ignore
class Location(JsonObject):
    location_id: str = StringField()
    page_id: str = StringField()
    page_title: str = StringField()
    paragraph_id: str = StringField()
    section_id: List[str] = ListField(str)
    section_headings: List[str] = ListField(item_type=str)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.subsections = []
class EntityMention(JsonObject):
    entity_name: str = StringField()
    entity_id: str = StringField()
    mention: str = StringField()
    target_mention: bool = BooleanField()
    entity_aspect: str
    start: int = IntegerField()
    end: int = IntegerField()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.entity_aspect = ""
class Interface(JsonObject):
    name = StringField()
    domain_names = ListField(item_type=str)
    advertise = ListField(item_type=str)
    ip = StringField()

    def get_phys(self) -> List[psutil._common.snicaddr]:
        """
        return Physical interface from psutil
        """
        return list(
            filter(lambda address: address.family == socket.AF_INET,
                   psutil.net_if_addrs()[self.name]))

    def get_ip_strs(self) -> List[str]:
        """
        get ip as a string. this also translates 'ips[n]' to the n-th ip in that interface
        """
        address = str(self.ip)
        # Check for 'ips[n]'

        if address == "ips[*]":
            addresses = []
            for iface in self.get_phys():
                try:
                    addresses.append(str(iface.address))
                except Exception as e:
                    logger.warning(f"unable to add ip {iface.address}: {e}")
            return addresses
        matches = re.findall(r"ips\[(\d+)]", self.ip)
        if len(matches) != 0:
            index = int(matches[0])
            try:
                address = str(self.get_phys()[index].address)
            except Exception as e:
                logger.warning(f"unable to get {index}-th IP address: {e}")
                return []
        # Validate ip
        try:
            socket.inet_aton(address)
            return [address]
        except OSError as e:
            raise InvalidIpAddress(f"Invalid IP address: {address}") from e

    def get_ips(self) -> List[bytes]:
        """
        returns the ip as 4 bytes
        """
        return [socket.inet_aton(ip) for ip in self.get_ip_strs()]

    def __repr__(self) -> str:
        return str(self.name)
Esempio n. 5
0
class Res(JsonObject):
    info = StringField()
    proportion = StringField()
    maxPicNum = IntegerField()
    minPicNum = IntegerField()

    def __init__(self):
        super(Res, self).__init__()
        self.info = ""
        self.proportion = "square"
        self.maxPicNum = 0
        self.minPicNum = 0

    def setInfo(self, new_info):
        self.info = new_info

    def setMaxPicNum(self, new_max):
        self.maxPicNum = new_max

    def setMinPicNum(self, new_max):
        self.minPicNum = new_max
class Context(JsonObject):
    target_entity: str = StringField()
    location: Location = ObjectField(Location)
    sentence: AnnotatedText = ObjectField(AnnotatedText)
    paragraph: AnnotatedText = ObjectField(AnnotatedText)
class AnnotatedText(JsonObject):
    content: str = StringField()
    entities: List[EntityMention] = ObjectListField(EntityMention)
class AspectLinkExample(JsonObject):
    unhashed_id: str = StringField()
    id: str = StringField()
    context: Context = ObjectField(Context)
    true_aspect: str = StringField()
    candidate_aspects: List[Aspect] = ObjectListField(Aspect)
class Aspect(JsonObject):
    aspect_id: str = StringField()
    aspect_name: str = StringField()
    location: Location = ObjectField(Location)
    aspect_content: AnnotatedText = ObjectField(AnnotatedText)
Esempio n. 10
0
class MinersKills(JsonObject):
    killerName = StringField()
    kills = IntegerField()
Esempio n. 11
0
class WolvesKills(JsonObject):
    killerName = StringField()
    kills = IntegerField()
Esempio n. 12
0
class DefaultSettings(JsonObject):
    domain_names = ListField(item_type=str)
    advertise = ListField(item_type=str)
    ip = StringField()
Esempio n. 13
0
class Data(JsonObject):
    file_tracking_id = StringField()
    relatid = StringField()
    name = StringField()
    subtype = StringField()
    restype = StringField()
    restype_id = IntegerField()
    sub_restype = StringField()
    sub_restype_id = IntegerField()
    order = IntegerField()
    tracking_code = StringField()
    tj_url = StringField()
    reddot_type = StringField()
    thumb_80 = StringField()
    thumb_120 = StringField()
    size = IntegerField()
    needFontId = StringField()
    needMusicId = StringField()
    measure = StringField()
    res_arr = ObjectListField(Res)

    def __init__(self):
        super(Data, self).__init__()
        self.file_tracking_id = ""
        self.relatid = ""
        self.name = ""
        self.subtype = "normal"
        self.restype = "基础拼图"
        self.restype_id = 11
        self.sub_restype = ""
        self.sub_restype_id = 0
        self.order = 0
        self.tracking_code = ""
        self.tj_url = ""
        self.reddot_type = ""
        self.thumb_80 = ""
        self.thumb_120 = ""
        self.size = 0
        self.needFontId = ""
        self.needMusicId = ""
        self.measure = ""
        self.res_arr = []

    def setId(self, new_id):
        self.file_tracking_id = new_id

    def setName(self, new_name):
        self.name = new_name

    def setThumb80(self, new_thumb):
        self.thumb_80 = new_thumb

    def setThumb120(self, new_thumb):
        self.thumb_120 = new_thumb

    def setOrder(self, new_order):
        self.order = new_order

    def setSize(self, new_size):
        self.size = new_size

    def setResArr(self, new_res_arr=None):
        if new_res_arr is None:
            new_res_arr = []
        self.res_arr = new_res_arr