Example #1
0
class GlobalConfig(ParseableConfigObject):
    debug: DebugConfig = conf_field(to_json=False)
    server: ServerConfig = conf_field(to_json=False)
    database: DatabaseConfig = conf_field(to_json=False)
    game: GameConfig
    users: UserConfig
    chat: ChatConfig
Example #2
0
class ChatConfig(ParseableConfigObject):
    max_length: int = conf_field(min=1)
    blacklist: Sequence[str] = conf_field(to_json=False,
                                          validate=_validate_blacklist_syntax)

    def is_valid_message(self, message: str):
        message = message.strip()
        if not 1 <= len(message) <= self.max_length:
            return False
        # TODO: check for bad unicode characters
        return _validate_against_blacklist(message, self.blacklist)
Example #3
0
class BlankCardConfig(ParseableConfigObject):
    count: IntOptions = conf_field(min=0)
    max_length: int = conf_field(min=1)
    blacklist: Sequence[str] = conf_field(to_json=False,
                                          validate=_validate_blacklist_syntax)

    def is_valid_text(self, text: str):
        text = text.strip()
        if not 1 <= len(text) <= self.max_length:
            return False
        # TODO: check for bad unicode characters
        return _validate_against_blacklist(text, self.blacklist)
Example #4
0
class GamePasswordConfig(ParseableConfigObject):
    length: IntOptions = conf_field(min=0)
    characters: str = conf_field(min_length=1)

    def make_options_field(self):
        return field(default_factory=self._generate_default_password,
                     metadata={
                         "min_length": self.length.min,
                         "max_length": self.length.max
                     })

    def _generate_default_password(self):
        return generate_code(self.characters, self.length.default)
Example #5
0
class UsernameConfig(ParseableConfigObject):
    length: IntLimits = conf_field(min=1)
    characters: str = conf_field(min_length=1)
    blacklist: Sequence[str] = conf_field(to_json=False,
                                          validate=_validate_blacklist_syntax)

    def is_valid_name(self, username):
        if len(username) not in self.length.as_range():
            return False
        # TODO: check for bad unicode characters
        bad_regex = r"^ | {2}| $|[^" + self.characters + r"]"
        if re.search(bad_regex, username):
            return False
        return _validate_against_blacklist(username, self.blacklist)
Example #6
0
class GameTitleConfig(ParseableConfigObject):
    max_length: int = conf_field(min=0)
    default: str
    blacklist: Sequence[str] = conf_field(to_json=False,
                                          validate=_validate_blacklist_syntax)

    def make_options_field(self):
        return field(default="",
                     metadata={
                         "max_length": self.max_length,
                         "validate": self._validate_title
                     })

    def _validate_title(self, title: str):
        # no need to validate length as the field has max_length
        # TODO: check for bad unicode characters
        if not _validate_against_blacklist(title, self.blacklist):
            raise ConfigError(None, "%s: blacklisted words used")
Example #7
0
class GameConfig(ParseableConfigObject):
    title: GameTitleConfig
    password: GamePasswordConfig
    public: GamePublicityConfig

    think_time: IntOptions = conf_field(min=1)
    round_end_time: IntOptions = conf_field(min=1)
    idle_rounds: IntOptions = conf_field(min=1)

    blank_cards: BlankCardConfig
    player_limit: IntOptions = conf_field(min=3)
    point_limit: IntOptions = conf_field(min=1)

    hand_size: int = conf_field(min=2)

    code: GameCodeConfig
Example #8
0
class BotConfig(ParseableConfigObject):
    count: int = conf_field(min=0, max=1000)
    game_size: int = conf_field(min=3)
    create_games: bool
    play_speed: NormalDistributionOptions
    game_options: dict
Example #9
0
class UserConfig(ParseableConfigObject):
    username: UsernameConfig
    disconnect_kick_time: int = conf_field(min=1, to_json=False)
    disconnect_forget_time: int = conf_field(min=1, to_json=False)
Example #10
0
class GameCodeConfig(ParseableConfigObject):
    length: int = conf_field(min=1)
    characters: str = conf_field(min_length=2)
Example #11
0
class ServerConfig(ParseableConfigObject):
    host: str
    port: int = conf_field(min=1, max=65535)