Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 82f978c

Browse files
fix: Add file upload restrictions for cronjob (1Panel-dev#9710)
1 parent ed28836 commit 82f978c

File tree

11 files changed

+50
-3
lines changed

11 files changed

+50
-3
lines changed

‎frontend/src/lang/modules/en.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -991,6 +991,7 @@ const message = {
991991
create: 'Create cron job',
992992
edit: 'Edit cron job',
993993
errImport: 'File content exception:',
994+
errImportFormat: 'The scheduled task data or format is abnormal. Please check and try again!',
994995
importHelper:
995996
'Duplicate scheduled tasks will be automatically skipped during import. Tasks will be set to [Disabled] status by default, and set to [Pending Edit] status when data association is abnormal.',
996997
changeStatus: 'Change status',

‎frontend/src/lang/modules/ja.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,6 +961,7 @@ const message = {
961961
create: 'Cronジョブを作成します',
962962
edit: 'Cronジョブを編集します',
963963
errImport: 'ファイル内容異常:',
964+
errImportFormat: 'インポートしたスケジュールタスクのデータまたは形式が異常です。確認して再試行してください!',
964965
importHelper:
965966
'インポート時に同名のスケジュールタスクは自動的にスキップされます。タスクはデフォルトで【無効】状態に設定され、データ関連付け異常時には【編集待ち】状態に設定されます。',
966967
changeStatus: 'ステータスを変更します',

‎frontend/src/lang/modules/ko.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,7 @@ const message = {
951951
create: '크론 작업 생성',
952952
edit: '크론 작업 수정',
953953
errImport: '파일 내용 이상:',
954+
errImportFormat: '가져온 예약 작업 데이터 또는 형식이 이상합니다. 확인 후 다시 시도하십시오!',
954955
importHelper:
955956
'가져오기 시 동일한 이름의 예약 작업은 자동으로 건너뜁니다. 작업은 기본적으로 【비활성화】 상태로 설정되며, 데이터 연동 이상 시 【편집 대기】 상태로 설정됩니다.',
956957
changeStatus: '상태 변경',

‎frontend/src/lang/modules/ms.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,7 @@ const message = {
982982
create: 'Cipta tugas cron',
983983
edit: 'Edit tugas cron',
984984
errImport: 'Kandungan fail tidak normal:',
985+
errImportFormat: 'Data atau format tugas terjadual yang diimport tidak normal. Sila semak dan cuba lagi!',
985986
importHelper:
986987
'Tugas terjadual dengan nama sama akan dilangkau secara automatik semasa import. Tugas akan ditetapkan ke status 【Lumpuh】 secara lalai, dan ditetapkan ke status 【Menunggu Edit】 apabila perkaitan data tidak normal.',
987988
changeStatus: 'Tukar status',

‎frontend/src/lang/modules/pt-br.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,8 @@ const message = {
978978
create: 'Criar tarefa cron',
979979
edit: 'Editar tarefa cron',
980980
errImport: 'Conteúdo do arquivo anormal:',
981+
errImportFormat:
982+
'Os dados ou formato da tarefa agendada estão anormais. Por favor, verifique e tente novamente!',
981983
importHelper:
982984
'Tarefas agendadas duplicadas serão automaticamente ignoradas durante a importação. As tarefas serão definidas como status 【Desativado】 por padrão, e como status 【Aguardando Edição】 quando a associação de dados for anormal.',
983985
changeStatus: 'Alterar status',

‎frontend/src/lang/modules/ru.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,8 @@ const message = {
975975
create: 'Создать задачу cron',
976976
edit: 'Редактировать задачу cron',
977977
errImport: 'Аномальное содержимое файла:',
978+
errImportFormat:
979+
'Данные или формат запланированной задачи ненормальны. Пожалуйста, проверьте и повторите попытку!',
978980
importHelper:
979981
'Повторяющиеся запланированные задачи будут автоматически пропущены при импорте. По умолчанию задачи устанавливаются в статус 【Отключено】, а при аномальной ассоциации данных - в статус 【Ожидает редактирования】.',
980982
changeStatus: 'Изменить статус',

‎frontend/src/lang/modules/tr.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,7 @@ const message = {
10031003
create: 'Cron görevi oluştur',
10041004
edit: 'Cron görevini düzenle',
10051005
errImport: 'Dosya içeriği anormal:',
1006+
errImportFormat: 'Zamanlanmış görev verileri veya biçimi anormal. Lütfen kontrol edip tekrar deneyin!',
10061007
importHelper:
10071008
'İçe aktarım sırasında aynı isimli zamanlanmış görevler otomatik olarak atlanacaktır. Görevler varsayılan olarak 【Devre Dışı】 durumuna ayarlanır ve veri ilişkilendirme anormalse 【Düzenleme Bekliyor】 durumuna ayarlanır.',
10081009
changeStatus: 'Durumu değiştir',

‎frontend/src/lang/modules/zh-Hant.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,7 @@ const message = {
945945
create: '創建計劃任務',
946946
edit: '編輯計劃任務',
947947
errImport: '文件內容異常:',
948+
errImportFormat: '導入的計劃任務數據或格式異常,請檢查後重試!',
948949
importHelper:
949950
'導入時將自動跳過重名計劃任務。任務默認設置為【停用】狀態,數據關聯異常時,設置為【待編輯】狀態。',
950951
changeStatus: '狀態修改',

‎frontend/src/lang/modules/zh.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,7 @@ const message = {
943943
create: '创建计划任务',
944944
edit: '编辑计划任务',
945945
errImport: '文件内容异常:',
946+
errImportFormat: '导入的计划任务数据或格式异常,请检查后重试!',
946947
importHelper:
947948
'导入时将自动跳过重名计划任务。任务默认设置为【停用】状态,数据关联异常时,设置为【待编辑】状态。',
948949
changeStatus: '状态修改',

‎frontend/src/views/cronjob/cronjob/import/index.vue

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
class="upload mt-2"
1010
:show-file-list="false"
1111
:limit="1"
12+
:accept="'.json'"
1213
:on-change="fileOnChange"
1314
:on-exceed="handleExceed"
1415
v-model:file-list="uploaderFiles"
@@ -110,8 +111,20 @@ const fileOnChange = (_uploadFile: UploadFile, uploadFiles: UploadFiles) => {
110111
reader.onload = (e) => {
111112
try {
112113
const content = e.target.result as string;
113-
data.value = JSON.parse(content) as Cronjob.CronjobTrans;
114-
console.log(data.value);
114+
const parsed = JSON.parse(content) as Cronjob.CronjobTrans;
115+
if (!Array.isArray(parsed)) {
116+
MsgError(i18n.global.t('cronjob.errImportFormat'));
117+
loading.value = false;
118+
return;
119+
}
120+
for (const item of parsed) {
121+
if (!checkDataFormat(item)) {
122+
MsgError(i18n.global.t('cronjob.errImportFormat'));
123+
loading.value = false;
124+
return;
125+
}
126+
}
127+
data.value = parsed;
115128
loading.value = false;
116129
} catch (error) {
117130
MsgError(i18n.global.t('cronjob.errImport') + error.message);
@@ -128,6 +141,29 @@ const handleExceed: UploadProps['onExceed'] = (files) => {
128141
uploadRef.value!.handleStart(file);
129142
};
130143
144+
const checkDataFormat = (item: any) => {
145+
if (!item.name) {
146+
return false;
147+
}
148+
const cronjobTypes = [
149+
'shell',
150+
'app',
151+
'website',
152+
'database',
153+
'directory',
154+
'log',
155+
'curl',
156+
'cutWebsiteLog',
157+
'clean',
158+
'snapshot',
159+
'ntp',
160+
];
161+
if (!item.type || cronjobTypes.indexOf(item.type) === -1) {
162+
return false;
163+
}
164+
return true;
165+
};
166+
131167
const onImport = async () => {
132168
await importCronjob(selects.value).then(() => {
133169
MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /