Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions agent/app/service/device_clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@ import (
)

const (
rollbackPath = "1panel/tmp"
upgradePath = "1panel/tmp/upgrade"
uploadPath = "1panel/uploads"
downloadPath = "1panel/download"
rollbackPath = "1panel/tmp"
communityRestorePath = "1panel/tmp/community-restore"
upgradePath = "1panel/tmp/upgrade"
uploadPath = "1panel/uploads"
downloadPath = "1panel/download"
)

func (u *DeviceService) Scan() dto.CleanData {
Expand Down Expand Up @@ -113,12 +114,15 @@ func (u *DeviceService) Clean(req []dto.Clean) {
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "app"))
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "database"))
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "website"))
dropFileOrDir(path.Join(global.Dir.BaseDir, communityRestorePath))
case "rollback_app":
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "app", item.Name))
case "rollback_database":
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "database", item.Name))
case "rollback_website":
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "website", item.Name))
case "rollback_community_restore":
dropFileOrDir(path.Join(global.Dir.BaseDir, communityRestorePath, item.Name))

case "upload":
dropFileOrDir(path.Join(global.Dir.BaseDir, uploadPath, item.Name))
Expand Down Expand Up @@ -214,6 +218,7 @@ func doSystemClean(taskItem *task.Task) func(t *task.Task) error {
dropWithTask(path.Join(global.Dir.BaseDir, rollbackPath, "app"), taskItem, &size, &fileCount)
dropWithTask(path.Join(global.Dir.BaseDir, rollbackPath, "website"), taskItem, &size, &fileCount)
dropWithTask(path.Join(global.Dir.BaseDir, rollbackPath, "database"), taskItem, &size, &fileCount)
dropWithTask(path.Join(global.Dir.BaseDir, communityRestorePath), taskItem, &size, &fileCount)

upgrades := path.Join(global.Dir.BaseDir, upgradePath)
oldUpgradeFiles, _ := os.ReadDir(upgrades)
Expand Down Expand Up @@ -611,6 +616,7 @@ func loadRollBackTree(fileOp fileUtils.FileOp) []dto.CleanTree {
treeData = loadTreeWithCheck(treeData, path.Join(global.Dir.BaseDir, rollbackPath, "app"), "rollback_app", fileOp)
treeData = loadTreeWithCheck(treeData, path.Join(global.Dir.BaseDir, rollbackPath, "website"), "rollback_website", fileOp)
treeData = loadTreeWithCheck(treeData, path.Join(global.Dir.BaseDir, rollbackPath, "database"), "rollback_database", fileOp)
treeData = loadTreeWithCheck(treeData, path.Join(global.Dir.BaseDir, communityRestorePath), "rollback_community_restore", fileOp)

return treeData
}
Expand Down
7 changes: 7 additions & 0 deletions frontend/src/api/interface/setting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,13 @@ export namespace Setting {
status: string;
message: string;
}
export interface CommunityRestoreStatus {
state: 'Ready' | 'Running' | 'Failed';
message: string;
packageExist: boolean;
packageDirectory: string;
}
export type CommunityRestoreMode = 'online' | 'offline';
export interface NodeItem {
id: number;
groupID?: number;
Expand Down
6 changes: 6 additions & 0 deletions frontend/src/api/modules/setting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ export const getEnterpriseLicense = () => {
export const getEnterpriseLicenseStatus = () => {
return http.get<Setting.LicenseStatus>(`/core/enterprise/licenses/status`);
};
export const getCommunityRestoreStatus = () => {
return http.get<Setting.CommunityRestoreStatus>(`/core/enterprise/licenses/community-restore/status`);
};
export const restoreCommunity = (mode: Setting.CommunityRestoreMode) => {
return http.post(`/core/enterprise/licenses/community-restore`, { mode });
};

// agent
export const loadBaseDir = (node?: string) => {
Expand Down
14 changes: 14 additions & 0 deletions frontend/src/lang/modules/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3175,6 +3175,20 @@ const message = {
'Please copy the device ID first to obtain a license. You can log in after importing the license.',
licenseRequiredUserTip:
'The Enterprise Edition license is not bound. Contact a super administrator to import the license.',
restoreCommunity: 'Restore Community Edition',
restoreCommunityOnline: 'Online restore',
restoreCommunityOffline: 'Offline restore',
restoreCommunityPackageFound:
'A usable offline Community Edition package was detected. Offline restore is available.',
restoreCommunityPackageMissing:
'No usable offline Community Edition package was detected. Offline restore is currently unavailable.',
restoreCommunityOnlineHelper:
'The Community Edition package for the current version will be downloaded automatically, and Enterprise-only data will be cleaned up.',
restoreCommunityOfflineHelper:
'Place an official package no older than the current Enterprise version in {path}. Switching is enabled after a usable package is detected.',
restoreCommunityConfirm:
'After switching, you can sign in to Community Edition with the current Enterprise super administrator account. Enterprise-only databases will be deleted during the switch.',
restoreCommunityStarting: 'Preparing Community Edition. The panel will restart automatically when ready.',
levelUpPro: 'Upgrade to Commercial Edition',
licenseSync: 'License Sync',
knowMorePro: 'Learn More',
Expand Down
15 changes: 15 additions & 0 deletions frontend/src/lang/modules/es-es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3239,6 +3239,21 @@ const message = {
'Primero copie el ID del dispositivo para obtener una licencia. Podrá iniciar sesión después de importarla.',
licenseRequiredUserTip:
'La licencia Enterprise Edition no está vinculada. Contacte con un superadministrador para importar la licencia.',
restoreCommunity: 'Restaurar Community Edition',
restoreCommunityOnline: 'Restauración en línea',
restoreCommunityOffline: 'Restauración sin conexión',
restoreCommunityPackageFound:
'Se detectó un paquete sin conexión de Community Edition válido. La restauración sin conexión está disponible.',
restoreCommunityPackageMissing:
'No se detectó ningún paquete sin conexión de Community Edition válido. La restauración sin conexión no está disponible actualmente.',
restoreCommunityOnlineHelper:
'Se descargará automáticamente el paquete Community Edition de la versión actual y se limpiarán los datos exclusivos de Enterprise.',
restoreCommunityOfflineHelper:
'Coloque en {path} un paquete oficial cuya versión no sea anterior a la versión Enterprise actual. El cambio se habilitará al detectar un paquete utilizable.',
restoreCommunityConfirm:
'Después del cambio, podrá iniciar sesión en Community Edition con la cuenta actual de superadministrador de Enterprise. Las bases de datos exclusivas de Enterprise se eliminarán durante el cambio.',
restoreCommunityStarting:
'Preparando Community Edition. El panel se reiniciará automáticamente cuando termine.',
levelUpPro: 'Actualizar a la edición comercial',
licenseSync: 'Sincronizar licencia',
knowMorePro: 'Ver más',
Expand Down
15 changes: 15 additions & 0 deletions frontend/src/lang/modules/fa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3147,6 +3147,21 @@ const message = {
licenseRequiredShortTip:
'لطفاً ابتدا شناسه دستگاه را کپی کنید تا مجوز دریافت کنید. پس از وارد کردن مجوز می‌توانید وارد شوید.',
licenseRequiredUserTip: 'مجوز نسخه سازمانی متصل نیست. برای وارد کردن مجوز با ابرمدیر تماس بگیرید.',
restoreCommunity: 'بازیابی نسخه Community',
restoreCommunityOnline: 'بازیابی آنلاین',
restoreCommunityOffline: 'بازیابی آفلاین',
restoreCommunityPackageFound:
'یک بسته آفلاین قابل استفاده Community Edition شناسایی شد. بازیابی آفلاین در دسترس است.',
restoreCommunityPackageMissing:
'هیچ بسته آفلاین قابل استفاده Community Edition شناسایی نشد. بازیابی آفلاین در حال حاضر در دسترس نیست.',
restoreCommunityOnlineHelper:
'بسته نسخه Community برای نسخه فعلی به‌طور خودکار دانلود و داده‌های ویژه Enterprise پاک‌سازی می‌شوند.',
restoreCommunityOfflineHelper:
'یک بسته رسمی با نسخه‌ای قدیمی‌تر نبودن از نسخه فعلی Enterprise را در {path} قرار دهید. پس از شناسایی بسته قابل استفاده، تغییر نسخه فعال می‌شود.',
restoreCommunityConfirm:
'پس از تغییر، می‌توانید با حساب ابرمدیر فعلی Enterprise وارد نسخه Community شوید. پایگاه‌های داده ویژه Enterprise در طول تغییر حذف می‌شوند.',
restoreCommunityStarting:
'نسخه Community در حال آماده‌سازی است. پس از تکمیل، پنل به‌طور خودکار راه‌اندازی مجدد می‌شود.',
levelUpPro: 'ارتقاء به نسخه تجاری',
licenseSync: 'همگام‌سازی مجوز',
knowMorePro: 'بیشتر بدانید',
Expand Down
14 changes: 14 additions & 0 deletions frontend/src/lang/modules/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3181,6 +3181,20 @@ const message = {
'まずデバイス ID をコピーしてライセンスを取得し、ライセンスをインポートするとログインできます。',
licenseRequiredUserTip:
'Enterprise Edition のライセンスがバインドされていません。スーパー管理者に連絡してライセンスをインポートしてください。',
restoreCommunity: 'コミュニティ版に戻す',
restoreCommunityOnline: 'オンライン復元',
restoreCommunityOffline: 'オフライン復元',
restoreCommunityPackageFound:
'使用可能なコミュニティ版オフラインパッケージが検出されました。オフライン復元を実行できます。',
restoreCommunityPackageMissing:
'使用可能なコミュニティ版オフラインパッケージが検出されていないため、現在オフライン復元を実行できません。',
restoreCommunityOnlineHelper:
'現在のバージョンのコミュニティ版パッケージを自動的にダウンロードし、Enterprise 専用データを削除します。',
restoreCommunityOfflineHelper:
'現在の Enterprise バージョン以上の公式パッケージを {path} に配置してください。使用可能なパッケージが検出されると切り替えが有効になります。',
restoreCommunityConfirm:
'切り替え後は、現在の Enterprise スーパー管理者アカウントでコミュニティ版にログインできます。切り替え中に Enterprise 専用データベースが削除されます。',
restoreCommunityStarting: 'コミュニティ版を準備しています。完了後、パネルは自動的に再起動します。',
technicalAdvice: '技術的な相談',
advice: '相談',
levelUpPro: '商用版にアップグレード',
Expand Down
14 changes: 14 additions & 0 deletions frontend/src/lang/modules/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3112,6 +3112,20 @@ const message = {
licenseRequiredShortTip: '먼저 장치 ID를 복사해 라이선스를 받은 뒤, 라이선스를 가져오면 로그인할 수 있습니다.',
licenseRequiredUserTip:
'Enterprise Edition 라이선스가 바인딩되지 않았습니다. 슈퍼 관리자에게 라이선스 가져오기를 요청하세요.',
restoreCommunity: '커뮤니티 버전 복원',
restoreCommunityOnline: '온라인 복원',
restoreCommunityOffline: '오프라인 복원',
restoreCommunityPackageFound:
'사용 가능한 Community Edition 오프라인 설치 패키지가 감지되었습니다. 오프라인 복원을 실행할 수 있습니다.',
restoreCommunityPackageMissing:
'사용 가능한 Community Edition 오프라인 설치 패키지가 감지되지 않아 현재 오프라인 복원을 실행할 수 없습니다.',
restoreCommunityOnlineHelper:
'현재 버전의 커뮤니티 버전 패키지를 자동으로 다운로드하고 Enterprise 전용 데이터를 정리합니다.',
restoreCommunityOfflineHelper:
'현재 Enterprise 버전 이상인 공식 패키지를 {path}에 저장하세요. 사용 가능한 패키지가 감지되면 전환이 활성화됩니다.',
restoreCommunityConfirm:
'전환 후 현재 Enterprise 슈퍼 관리자 계정으로 커뮤니티 버전에 로그인할 수 있습니다. 전환 과정에서 Enterprise 전용 데이터베이스가 삭제됩니다.',
restoreCommunityStarting: '커뮤니티 버전을 준비 중입니다. 완료되면 패널이 자동으로 다시 시작됩니다.',
technicalAdvice: '기술 상담',
advice: '상담',
levelUpPro: '상용 버전으로 업그레이드',
Expand Down
14 changes: 14 additions & 0 deletions frontend/src/lang/modules/lo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3101,6 +3101,20 @@ const message = {
licenseRequiredShortTip:
'ກະລຸນາຄັດລອກ ID ອຸປະກອນກ່ອນເພື່ອຮັບລິຂະສິດ. ທ່ານສາມາດເຂົ້າລະບົບໄດ້ຫຼັງຈາກນຳເຂົ້າລິຂະສິດແລ້ວ.',
licenseRequiredUserTip: 'ລິຂະສິດເວີຊັນ Enterprise ບໍ່ໄດ້ຖືກຜູກ. ຕິດຕໍ່ຜູ້ດູແລລະບົບສູງສຸດເພື່ອນຳເຂົ້າລິຂະສິດ.',
restoreCommunity: 'ກູ້ຄືນ Community Edition',
restoreCommunityOnline: 'ກູ້ຄືນອອນລາຍ',
restoreCommunityOffline: 'ກູ້ຄືນອອບລາຍ',
restoreCommunityPackageFound:
'ກວດພົບແພັກເກດ Community Edition ອອບລາຍທີ່ໃຊ້ໄດ້ ແລະສາມາດດຳເນີນການກູ້ຄືນອອບລາຍໄດ້.',
restoreCommunityPackageMissing:
'ບໍ່ພົບແພັກເກດ Community Edition ອອບລາຍທີ່ໃຊ້ໄດ້ ຈຶ່ງຍັງບໍ່ສາມາດກູ້ຄືນອອບລາຍໄດ້.',
restoreCommunityOnlineHelper:
'ລະບົບຈະດາວໂຫຼດແພັກເກດ Community Edition ສຳລັບເວີຊັນປັດຈຸບັນອັດຕະໂນມັດ ແລະ ລ້າງຂໍ້ມູນສະເພາະ Enterprise.',
restoreCommunityOfflineHelper:
'ວາງແພັກເກດທາງການທີ່ມີເວີຊັນບໍ່ຕ່ຳກວ່າ Enterprise ປັດຈຸບັນໄວ້ໃນ {path}. ການສະຫຼັບຈະເປີດໃຊ້ເມື່ອກວດພົບແພັກເກດທີ່ໃຊ້ໄດ້.',
restoreCommunityConfirm:
'ຫຼັງຈາກສະຫຼັບ ສາມາດໃຊ້ບັນຊີຜູ້ດູແລສູງສຸດ Enterprise ປັດຈຸບັນເຂົ້າ Community Edition. ຖານຂໍ້ມູນສະເພາະ Enterprise ຈະຖືກລຶບໃນລະຫວ່າງການສະຫຼັບ.',
restoreCommunityStarting: 'ກຳລັງກະກຽມ Community Edition. ແຜງຄວບຄຸມຈະເລີ່ມໃໝ່ອັດຕະໂນມັດເມື່ອສຳເລັດ.',
levelUpPro: 'ອັບເກຣດເປັນເວີຊັນ Commercial',
licenseSync: 'ຊິງຄ໌ລິຂະສິດ',
knowMorePro: 'ຮຽນຮູ້ເພີ່ມເຕີມ',
Expand Down
15 changes: 15 additions & 0 deletions frontend/src/lang/modules/ms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3237,6 +3237,21 @@ const message = {
'Sila salin ID peranti terlebih dahulu untuk mendapatkan lesen. Anda boleh log masuk selepas mengimport lesen.',
licenseRequiredUserTip:
'Lesen Enterprise Edition belum diikat. Hubungi pentadbir super untuk mengimport lesen.',
restoreCommunity: 'Pulihkan Community Edition',
restoreCommunityOnline: 'Pemulihan dalam talian',
restoreCommunityOffline: 'Pemulihan luar talian',
restoreCommunityPackageFound:
'Pakej luar talian Community Edition yang boleh digunakan telah dikesan. Pemulihan luar talian tersedia.',
restoreCommunityPackageMissing:
'Tiada pakej luar talian Community Edition yang boleh digunakan dikesan. Pemulihan luar talian tidak tersedia pada masa ini.',
restoreCommunityOnlineHelper:
'Pakej Community Edition untuk versi semasa akan dimuat turun secara automatik dan data khusus Enterprise akan dibersihkan.',
restoreCommunityOfflineHelper:
'Letakkan pakej rasmi yang tidak lebih lama daripada versi Enterprise semasa dalam {path}. Pertukaran akan didayakan selepas pakej yang boleh digunakan dikesan.',
restoreCommunityConfirm:
'Selepas pertukaran, anda boleh log masuk ke Community Edition menggunakan akaun pentadbir super Enterprise semasa. Pangkalan data khusus Enterprise akan dipadamkan semasa pertukaran.',
restoreCommunityStarting:
'Community Edition sedang disediakan. Panel akan dimulakan semula secara automatik apabila selesai.',
technicalAdvice: 'Konsultasi Teknikal',
advice: 'Konsultasi',
levelUpPro: 'Naik taraf ke Edisi Komersial',
Expand Down
15 changes: 15 additions & 0 deletions frontend/src/lang/modules/pt-br.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3358,6 +3358,21 @@ const message = {
'Copie primeiro o ID do dispositivo para obter a licença. Você poderá entrar depois de importá-la.',
licenseRequiredUserTip:
'A licença Enterprise Edition não está vinculada. Entre em contato com o superadministrador para importar a licença.',
restoreCommunity: 'Restaurar Community Edition',
restoreCommunityOnline: 'Restauração online',
restoreCommunityOffline: 'Restauração offline',
restoreCommunityPackageFound:
'Um pacote offline utilizável da Community Edition foi detectado. A restauração offline está disponível.',
restoreCommunityPackageMissing:
'Nenhum pacote offline utilizável da Community Edition foi detectado. A restauração offline não está disponível no momento.',
restoreCommunityOnlineHelper:
'O pacote Community Edition da versão atual será baixado automaticamente e os dados exclusivos da Enterprise serão limpos.',
restoreCommunityOfflineHelper:
'Coloque em {path} um pacote oficial cuja versão não seja anterior à versão Enterprise atual. A troca será habilitada quando um pacote utilizável for detectado.',
restoreCommunityConfirm:
'Após a troca, você poderá entrar na Community Edition com a conta atual de superadministrador da Enterprise. Os bancos de dados exclusivos da Enterprise serão excluídos durante a troca.',
restoreCommunityStarting:
'Preparando a Community Edition. O painel será reiniciado automaticamente quando estiver pronto.',
technicalAdvice: 'Consultoria técnica',
advice: 'Consultoria',
levelUpPro: 'Fazer upgrade para a edição comercial',
Expand Down
Loading
Loading