| 48 | self._compile_patterns() |
| 49 | |
| 50 | def _compile_patterns(self) -> None: |
| 51 | for pattern in self.whitelist: |
| 52 | if "*" in pattern: |
| 53 | regex_pattern = ( |
| 54 | pattern.replace(".", r"\.") |
| 55 | .replace("*", ".*") |
| 56 | ) |
| 57 | if not pattern.startswith("/"): |
| 58 | regex_pattern = f"^{regex_pattern}$" |
| 59 | else: |
| 60 | regex_pattern = f"^{regex_pattern}$" |
| 61 | try: |
| 62 | self._compiled_patterns.append(re.compile(regex_pattern)) |
| 63 | except re.error: |
| 64 | SQLBotLogUtil.error(f"Invalid regex pattern: {regex_pattern}") |
| 65 | |
| 66 | def is_whitelisted(self, path: str) -> bool: |
| 67 | prefix = settings.API_V1_STR |