mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 14:21:46 +00:00
fix(airtrail): gate airtrail update behind a user setting, on airtrail update: rebuild payload from fresh data to prevent any data loss
This commit is contained in:
@@ -21,6 +21,11 @@ export const airtrailSettingsSchema = z.object({
|
||||
apiKey: z.string().max(512).optional(),
|
||||
/** Allow self-signed TLS certs (common on LAN instances). */
|
||||
allowInsecureTls: z.boolean().optional().default(false),
|
||||
/**
|
||||
* Opt in to writing TREK edits back to AirTrail (#1240). Off by default:
|
||||
* AirTrail is the source of truth and TREK only reads from it.
|
||||
*/
|
||||
writeEnabled: z.boolean().optional().default(false),
|
||||
});
|
||||
export type AirtrailSettings = z.infer<typeof airtrailSettingsSchema>;
|
||||
|
||||
@@ -28,6 +33,7 @@ export const airtrailConnectionSchema = z.object({
|
||||
url: z.string(),
|
||||
apiKeyMasked: z.string(),
|
||||
allowInsecureTls: z.boolean(),
|
||||
writeEnabled: z.boolean(),
|
||||
connected: z.boolean(),
|
||||
});
|
||||
export type AirtrailConnection = z.infer<typeof airtrailConnectionSchema>;
|
||||
|
||||
@@ -327,6 +327,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'يُنشأ في AirTrail ضمن الإعدادات ← الأمان. يُخزَّن مشفّرًا.',
|
||||
'settings.airtrail.allowInsecureTls': 'السماح بالشهادات الموقّعة ذاتيًا',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'فعّل هذا فقط لنسخة موثوقة على شبكتك الخاصة.',
|
||||
'settings.airtrail.writeBack': 'كتابة التغييرات إلى AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'مُعطّل افتراضيًا: AirTrail هو مصدر الحقيقة وTREK يقرأ منه فقط. فعّله لإرسال التعديلات التي تجريها في TREK إلى AirTrail.',
|
||||
'settings.airtrail.connected': 'متصل',
|
||||
'settings.airtrail.notConnected': 'غير متصل',
|
||||
'settings.airtrail.toast.saved': 'تم حفظ اتصال AirTrail',
|
||||
|
||||
@@ -333,6 +333,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Gerada no AirTrail em Configurações → Segurança. Armazenada de forma criptografada.',
|
||||
'settings.airtrail.allowInsecureTls': 'Permitir certificados autoassinados',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Ative apenas para uma instância confiável na sua própria rede.',
|
||||
'settings.airtrail.writeBack': 'Gravar alterações de volta no AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Desativado por padrão: o AirTrail é a fonte da verdade e o TREK apenas lê dele. Ative para enviar ao AirTrail as alterações feitas no TREK.',
|
||||
'settings.airtrail.connected': 'Conectado',
|
||||
'settings.airtrail.notConnected': 'Não conectado',
|
||||
'settings.airtrail.toast.saved': 'Conexão com o AirTrail salva',
|
||||
|
||||
@@ -334,6 +334,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Vygenerován v AirTrail v Nastavení → Zabezpečení. Uložen šifrovaně.',
|
||||
'settings.airtrail.allowInsecureTls': 'Povolit certifikáty podepsané sebou samým',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Povolte pouze pro důvěryhodnou instanci ve vlastní síti.',
|
||||
'settings.airtrail.writeBack': 'Zapisovat změny zpět do AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Ve výchozím stavu vypnuto: AirTrail je zdrojem pravdy a TREK z něj pouze čte. Zapněte, chcete-li odesílat úpravy provedené v TREK zpět do AirTrail.',
|
||||
'settings.airtrail.connected': 'Připojeno',
|
||||
'settings.airtrail.notConnected': 'Nepřipojeno',
|
||||
'settings.airtrail.toast.saved': 'Připojení k AirTrail uloženo',
|
||||
|
||||
@@ -337,6 +337,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Wird in AirTrail unter Einstellungen → Sicherheit erstellt. Verschlüsselt gespeichert.',
|
||||
'settings.airtrail.allowInsecureTls': 'Selbstsignierte Zertifikate erlauben',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Nur für eine vertrauenswürdige Instanz im eigenen Netzwerk aktivieren.',
|
||||
'settings.airtrail.writeBack': 'Änderungen zurück nach AirTrail schreiben',
|
||||
'settings.airtrail.writeBackHint': 'Standardmäßig aus: AirTrail ist die maßgebliche Quelle und TREK liest nur. Aktivieren, um in TREK vorgenommene Änderungen zurück an AirTrail zu senden.',
|
||||
'settings.airtrail.connected': 'Verbunden',
|
||||
'settings.airtrail.notConnected': 'Nicht verbunden',
|
||||
'settings.airtrail.toast.saved': 'AirTrail-Verbindung gespeichert',
|
||||
|
||||
@@ -326,6 +326,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Generated in AirTrail under Settings → Security. Stored encrypted.',
|
||||
'settings.airtrail.allowInsecureTls': 'Allow self-signed certificates',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Enable only for a trusted instance on your own network.',
|
||||
'settings.airtrail.writeBack': 'Write changes back to AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Off by default: AirTrail is the source of truth and TREK only reads from it. Turn on to push edits made in TREK back to AirTrail.',
|
||||
'settings.airtrail.connected': 'Connected',
|
||||
'settings.airtrail.notConnected': 'Not connected',
|
||||
'settings.airtrail.toast.saved': 'AirTrail connection saved',
|
||||
|
||||
@@ -334,6 +334,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Generada en AirTrail en Ajustes → Seguridad. Se almacena cifrada.',
|
||||
'settings.airtrail.allowInsecureTls': 'Permitir certificados autofirmados',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Actívalo solo para una instancia de confianza en tu propia red.',
|
||||
'settings.airtrail.writeBack': 'Escribir cambios de vuelta en AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Desactivado por defecto: AirTrail es la fuente de referencia y TREK solo lee de él. Actívalo para enviar a AirTrail los cambios hechos en TREK.',
|
||||
'settings.airtrail.connected': 'Conectado',
|
||||
'settings.airtrail.notConnected': 'No conectado',
|
||||
'settings.airtrail.toast.saved': 'Conexión con AirTrail guardada',
|
||||
|
||||
@@ -339,6 +339,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Générée dans AirTrail sous Paramètres → Sécurité. Stockée chiffrée.',
|
||||
'settings.airtrail.allowInsecureTls': 'Autoriser les certificats auto-signés',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'À activer uniquement pour une instance de confiance sur votre propre réseau.',
|
||||
'settings.airtrail.writeBack': 'Réécrire les modifications dans AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Désactivé par défaut : AirTrail fait référence et TREK se contente de le lire. Activez pour renvoyer vers AirTrail les modifications faites dans TREK.',
|
||||
'settings.airtrail.connected': 'Connecté',
|
||||
'settings.airtrail.notConnected': 'Non connecté',
|
||||
'settings.airtrail.toast.saved': 'Connexion AirTrail enregistrée',
|
||||
|
||||
@@ -340,6 +340,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Δημιουργείται στο AirTrail από Ρυθμίσεις → Ασφάλεια. Αποθηκεύεται κρυπτογραφημένο.',
|
||||
'settings.airtrail.allowInsecureTls': 'Να επιτρέπονται αυτο-υπογεγραμμένα πιστοποιητικά',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Ενεργοποιήστε το μόνο για μια αξιόπιστη εγκατάσταση στο δικό σας δίκτυο.',
|
||||
'settings.airtrail.writeBack': 'Εγγραφή αλλαγών πίσω στο AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Απενεργοποιημένο από προεπιλογή: το AirTrail είναι η πηγή αλήθειας και το TREK μόνο διαβάζει από αυτό. Ενεργοποιήστε το για να στέλνετε πίσω στο AirTrail τις αλλαγές που κάνετε στο TREK.',
|
||||
'settings.airtrail.connected': 'Συνδέθηκε',
|
||||
'settings.airtrail.notConnected': 'Δεν συνδέθηκε',
|
||||
'settings.airtrail.toast.saved': 'Η σύνδεση με το AirTrail αποθηκεύτηκε',
|
||||
|
||||
@@ -336,6 +336,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Az AirTrailben a Beállítások → Biztonság menüpontban generálva. Titkosítva tárolva.',
|
||||
'settings.airtrail.allowInsecureTls': 'Önaláírt tanúsítványok engedélyezése',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Csak megbízható, saját hálózaton futó példány esetén engedélyezd.',
|
||||
'settings.airtrail.writeBack': 'Módosítások visszaírása az AirTrailbe',
|
||||
'settings.airtrail.writeBackHint': 'Alapértelmezés szerint kikapcsolva: az AirTrail a hiteles forrás, és a TREK csak olvas belőle. Kapcsold be, hogy a TREK-ben végzett módosításokat visszaküldje az AirTrailbe.',
|
||||
'settings.airtrail.connected': 'Csatlakoztatva',
|
||||
'settings.airtrail.notConnected': 'Nincs csatlakoztatva',
|
||||
'settings.airtrail.toast.saved': 'AirTrail-kapcsolat mentve',
|
||||
|
||||
@@ -334,6 +334,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Dibuat di AirTrail pada Pengaturan → Keamanan. Disimpan terenkripsi.',
|
||||
'settings.airtrail.allowInsecureTls': 'Izinkan sertifikat yang ditandatangani sendiri',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Aktifkan hanya untuk instans tepercaya di jaringanmu sendiri.',
|
||||
'settings.airtrail.writeBack': 'Tulis perubahan kembali ke AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Nonaktif secara bawaan: AirTrail adalah sumber kebenaran dan TREK hanya membaca darinya. Aktifkan untuk mengirim perubahan yang dibuat di TREK kembali ke AirTrail.',
|
||||
'settings.airtrail.connected': 'Terhubung',
|
||||
'settings.airtrail.notConnected': 'Tidak terhubung',
|
||||
'settings.airtrail.toast.saved': 'Koneksi AirTrail disimpan',
|
||||
|
||||
@@ -333,6 +333,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Generata in AirTrail in Impostazioni → Sicurezza. Memorizzata crittografata.',
|
||||
'settings.airtrail.allowInsecureTls': 'Consenti certificati autofirmati',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Abilita solo per un\'istanza attendibile sulla tua rete.',
|
||||
'settings.airtrail.writeBack': 'Scrivi le modifiche su AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Disattivato per impostazione predefinita: AirTrail è la fonte attendibile e TREK si limita a leggerlo. Attiva per inviare ad AirTrail le modifiche fatte in TREK.',
|
||||
'settings.airtrail.connected': 'Connesso',
|
||||
'settings.airtrail.notConnected': 'Non connesso',
|
||||
'settings.airtrail.toast.saved': 'Connessione AirTrail salvata',
|
||||
|
||||
@@ -313,6 +313,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'AirTrail の「設定 → セキュリティ」で生成します。暗号化して保存されます。',
|
||||
'settings.airtrail.allowInsecureTls': '自己署名証明書を許可する',
|
||||
'settings.airtrail.allowInsecureTlsHint': '自分のネットワーク内の信頼できるインスタンスの場合にのみ有効にしてください。',
|
||||
'settings.airtrail.writeBack': '変更を AirTrail に書き戻す',
|
||||
'settings.airtrail.writeBackHint': '既定ではオフ: AirTrail が信頼できる情報源で、TREK は読み取りのみを行います。TREK で行った編集を AirTrail に書き戻すにはオンにします。',
|
||||
'settings.airtrail.connected': '接続済み',
|
||||
'settings.airtrail.notConnected': '未接続',
|
||||
'settings.airtrail.toast.saved': 'AirTrail の接続を保存しました',
|
||||
|
||||
@@ -330,6 +330,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'AirTrail의 설정 → 보안에서 생성됩니다. 암호화하여 저장됩니다.',
|
||||
'settings.airtrail.allowInsecureTls': '자체 서명 인증서 허용',
|
||||
'settings.airtrail.allowInsecureTlsHint': '자체 네트워크의 신뢰할 수 있는 인스턴스에서만 활성화하세요.',
|
||||
'settings.airtrail.writeBack': '변경 사항을 AirTrail에 다시 기록',
|
||||
'settings.airtrail.writeBackHint': '기본적으로 꺼져 있음: AirTrail이 신뢰할 수 있는 원본이며 TREK은 읽기만 합니다. TREK에서 변경한 내용을 AirTrail로 다시 보내려면 켜세요.',
|
||||
'settings.airtrail.connected': '연결됨',
|
||||
'settings.airtrail.notConnected': '연결되지 않음',
|
||||
'settings.airtrail.toast.saved': 'AirTrail 연결이 저장되었습니다',
|
||||
|
||||
@@ -336,6 +336,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.allowInsecureTls': 'Zelfondertekende certificaten toestaan',
|
||||
'settings.airtrail.allowInsecureTlsHint':
|
||||
'Schakel dit alleen in voor een vertrouwde instantie op je eigen netwerk.',
|
||||
'settings.airtrail.writeBack': 'Wijzigingen terugschrijven naar AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Standaard uit: AirTrail is de bron van waarheid en TREK leest er alleen uit. Schakel in om in TREK gemaakte wijzigingen terug te sturen naar AirTrail.',
|
||||
'settings.airtrail.connected': 'Verbonden',
|
||||
'settings.airtrail.notConnected': 'Niet verbonden',
|
||||
'settings.airtrail.toast.saved': 'AirTrail-verbinding opgeslagen',
|
||||
|
||||
@@ -335,6 +335,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Wygenerowany w AirTrail w sekcji Ustawienia → Bezpieczeństwo. Przechowywany w postaci zaszyfrowanej.',
|
||||
'settings.airtrail.allowInsecureTls': 'Zezwalaj na certyfikaty samopodpisane',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Włącz tylko dla zaufanej instancji we własnej sieci.',
|
||||
'settings.airtrail.writeBack': 'Zapisuj zmiany z powrotem w AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Domyślnie wyłączone: AirTrail jest źródłem prawdy, a TREK tylko z niego odczytuje. Włącz, aby wysyłać zmiany wprowadzone w TREK z powrotem do AirTrail.',
|
||||
'settings.airtrail.connected': 'Połączono',
|
||||
'settings.airtrail.notConnected': 'Nie połączono',
|
||||
'settings.airtrail.toast.saved': 'Zapisano połączenie z AirTrail',
|
||||
|
||||
@@ -333,6 +333,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Создаётся в AirTrail в разделе «Настройки → Безопасность». Хранится в зашифрованном виде.',
|
||||
'settings.airtrail.allowInsecureTls': 'Разрешить самоподписанные сертификаты',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Включайте только для доверенного экземпляра в вашей собственной сети.',
|
||||
'settings.airtrail.writeBack': 'Записывать изменения обратно в AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'По умолчанию выключено: AirTrail является источником истины, а TREK только читает из него. Включите, чтобы отправлять изменения, сделанные в TREK, обратно в AirTrail.',
|
||||
'settings.airtrail.connected': 'Подключено',
|
||||
'settings.airtrail.notConnected': 'Не подключено',
|
||||
'settings.airtrail.toast.saved': 'Подключение к AirTrail сохранено',
|
||||
|
||||
@@ -334,6 +334,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'AirTrail\'de Ayarlar → Güvenlik altında oluşturulur. Şifreli olarak saklanır.',
|
||||
'settings.airtrail.allowInsecureTls': 'Kendinden imzalı sertifikalara izin ver',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Yalnızca kendi ağınızdaki güvenilir bir örnek için etkinleştirin.',
|
||||
'settings.airtrail.writeBack': 'Değişiklikleri AirTrail’e geri yaz',
|
||||
'settings.airtrail.writeBackHint': 'Varsayılan olarak kapalı: AirTrail asıl kaynaktır ve TREK yalnızca okur. TREK’te yapılan değişiklikleri AirTrail’e geri göndermek için açın.',
|
||||
'settings.airtrail.connected': 'Bağlandı',
|
||||
'settings.airtrail.notConnected': 'Bağlı değil',
|
||||
'settings.airtrail.toast.saved': 'AirTrail bağlantısı kaydedildi',
|
||||
|
||||
@@ -332,6 +332,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': 'Згенеровано в AirTrail у розділі Налаштування → Безпека. Зберігається в зашифрованому вигляді.',
|
||||
'settings.airtrail.allowInsecureTls': 'Дозволити самопідписані сертифікати',
|
||||
'settings.airtrail.allowInsecureTlsHint': 'Вмикайте лише для довіреного екземпляра у вашій власній мережі.',
|
||||
'settings.airtrail.writeBack': 'Записувати зміни назад у AirTrail',
|
||||
'settings.airtrail.writeBackHint': 'Типово вимкнено: AirTrail є джерелом істини, а TREK лише читає з нього. Увімкніть, щоб надсилати зміни, зроблені в TREK, назад до AirTrail.',
|
||||
'settings.airtrail.connected': 'Підключено',
|
||||
'settings.airtrail.notConnected': 'Не підключено',
|
||||
'settings.airtrail.toast.saved': 'Підключення AirTrail збережено',
|
||||
|
||||
@@ -319,6 +319,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': '在 AirTrail 的「設定 → 安全性」中產生。以加密方式儲存。',
|
||||
'settings.airtrail.allowInsecureTls': '允許自簽憑證',
|
||||
'settings.airtrail.allowInsecureTlsHint': '僅在你自己網路上受信任的執行個體啟用。',
|
||||
'settings.airtrail.writeBack': '將變更寫回 AirTrail',
|
||||
'settings.airtrail.writeBackHint': '預設關閉:AirTrail 是資料來源,TREK 僅從中讀取。開啟後會將在 TREK 中所做的修改寫回 AirTrail。',
|
||||
'settings.airtrail.connected': '已連接',
|
||||
'settings.airtrail.notConnected': '未連接',
|
||||
'settings.airtrail.toast.saved': '已儲存 AirTrail 連接',
|
||||
|
||||
@@ -318,6 +318,8 @@ const settings: TranslationStrings = {
|
||||
'settings.airtrail.apiKeyHint': '在 AirTrail 的“设置 → 安全”中生成。加密存储。',
|
||||
'settings.airtrail.allowInsecureTls': '允许自签名证书',
|
||||
'settings.airtrail.allowInsecureTlsHint': '仅对您自己网络中受信任的实例启用。',
|
||||
'settings.airtrail.writeBack': '将更改写回 AirTrail',
|
||||
'settings.airtrail.writeBackHint': '默认关闭:AirTrail 是数据来源,TREK 仅从中读取。开启后会将在 TREK 中所做的修改写回 AirTrail。',
|
||||
'settings.airtrail.connected': '已连接',
|
||||
'settings.airtrail.notConnected': '未连接',
|
||||
'settings.airtrail.toast.saved': 'AirTrail 连接已保存',
|
||||
|
||||
Reference in New Issue
Block a user