diff options
author | crupest <crupest@outlook.com> | 2024-11-11 01:12:29 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-01-09 20:33:26 +0800 |
commit | c761b945bc8ab0226576b75144440e1f619e69e8 (patch) | |
tree | 177071951d8bcd2de37876f875fdfed07a1dd809 /tools/cru-py/cru/service/_config.py | |
parent | 47ebda69daa34ea7992b6bbadf46de98dd17a390 (diff) | |
download | crupest-c761b945bc8ab0226576b75144440e1f619e69e8.tar.gz crupest-c761b945bc8ab0226576b75144440e1f619e69e8.tar.bz2 crupest-c761b945bc8ab0226576b75144440e1f619e69e8.zip |
HALF WORK: 2024.1.9 - 2
Diffstat (limited to 'tools/cru-py/cru/service/_config.py')
-rw-r--r-- | tools/cru-py/cru/service/_config.py | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/tools/cru-py/cru/service/_config.py b/tools/cru-py/cru/service/_config.py index 3bfb6c9..b5f3e7c 100644 --- a/tools/cru-py/cru/service/_config.py +++ b/tools/cru-py/cru/service/_config.py @@ -1,9 +1,81 @@ -from ._base import AppFeaturePath, AppFeatureProvider +from cru.config import Configuration, ConfigItem +from cru.value import ( + INTEGER_VALUE_TYPE, + TEXT_VALUE_TYPE, + RandomStringValueGenerator, + UuidValueGenerator, +) + +from ._base import AppFeaturePath, AppFeatureProvider, OWNER_NAME class ConfigManager(AppFeatureProvider): def __init__(self) -> None: super().__init__("config-manager") + configuration = Configuration() + self._configuration = configuration + self._add_text_item("DOMAIN", "domain name") + self._add_text_item("EMAIL", "admin email address") + self._add_text_item( + "AUTO_BACKUP_COS_SECRET_ID", + "access key id for Tencent COS, used for auto backup", + ) + self._add_text_item( + "AUTO_BACKUP_COS_SECRET_KEY", + "access key secret for Tencent COS, used for auto backup", + ) + self._add_text_item( + "AUTO_BACKUP_COS_REGION", "region for Tencent COS, used for auto backup" + ) + self._add_text_item( + "AUTO_BACKUP_BUCKET_NAME", + "bucket name for Tencent COS, used for auto backup", + ) + self._add_text_item("GITHUB_USERNAME", "github username for fetching todos") + self._add_int_item( + "GITHUB_PROJECT_NUMBER", "github project number for fetching todos" + ) + self._add_text_item("GITHUB_TOKEN", "github token for fetching todos") + self._add_text_item("GITHUB_TODO_COUNT", "github todo count") + self._add_uuid_item("V2RAY_TOKEN", "v2ray user id") + self._add_uuid_item("V2RAY_PATH", "v2ray path, which will be prefixed by _") + self._add_text_item("FORGEJO_MAILER_USER", "Forgejo SMTP user") + self._add_text_item("FORGEJO_MAILER_PASSWD", "Forgejo SMTP password") + self._add_random_string_item("2FAUTH_APP_KEY", "2FAuth App Key") + self._add_text_item("2FAUTH_MAIL_USERNAME", "2FAuth SMTP user") + self._add_text_item("2FAUTH_MAIL_PASSWORD", "2FAuth SMTP password") + + def _add_text_item(self, name: str, description: str) -> None: + self.configuration.add( + ConfigItem(f"{OWNER_NAME}_{name}", description, TEXT_VALUE_TYPE) + ) + + def _add_uuid_item(self, name: str, description: str) -> None: + self.configuration.add( + ConfigItem( + f"{OWNER_NAME}_{name}", + description, + TEXT_VALUE_TYPE, + default=UuidValueGenerator(), + ) + ) + + def _add_random_string_item( + self, name: str, description: str, length: int = 32, secure: bool = True + ) -> None: + self.configuration.add( + ConfigItem( + f"{OWNER_NAME}_{name}", + description, + TEXT_VALUE_TYPE, + default=RandomStringValueGenerator(length, secure), + ) + ) + + def _add_int_item(self, name: str, description: str) -> None: + self.configuration.add( + ConfigItem(f"{OWNER_NAME}_{name}", description, INTEGER_VALUE_TYPE) + ) def setup(self) -> None: self._config_path = self.app.data_dir.add_subpath( @@ -15,5 +87,9 @@ class ConfigManager(AppFeatureProvider): return self._config_path @property + def configuration(self) -> Configuration: + return self._configuration + + @property def config_map(self) -> dict[str, str]: raise NotImplementedError() |