aboutsummaryrefslogtreecommitdiff
path: root/tools/cru-py/cru/service/_config.py
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2025-01-09 20:33:26 +0800
commitc761b945bc8ab0226576b75144440e1f619e69e8 (patch)
tree177071951d8bcd2de37876f875fdfed07a1dd809 /tools/cru-py/cru/service/_config.py
parent47ebda69daa34ea7992b6bbadf46de98dd17a390 (diff)
downloadcrupest-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.py78
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()