feat: Add a description for syncing WAF IP groups. (#13143)

This commit is contained in:
CityFun
2026-06-29 18:42:02 +08:00
committed by GitHub
parent 9a660db4c3
commit 458a30c520
15 changed files with 286 additions and 57743 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9
View File
@@ -1,6 +1,8 @@
package router
import (
"crypto/sha256"
"encoding/hex"
"io"
"net/http"
"os"
@@ -147,6 +149,13 @@ func setStaticResource(rootRouter *gin.RouterGroup) {
c.AbortWithStatus(http.StatusNotFound)
return
}
sum := sha256.Sum256(data)
etag := `"` + hex.EncodeToString(sum[:]) + `"`
c.Writer.Header().Set("ETag", etag)
if c.GetHeader("If-None-Match") == etag {
c.AbortWithStatus(http.StatusNotModified)
return
}
c.Writer.Header().Set("Content-Type", "application/json; charset=utf-8")
c.Writer.Write(data)
})
+1
View File
@@ -1743,6 +1743,7 @@ const message = {
cutWebsiteLog: 'Website log rotation',
cutWebsiteLogHelper: 'The rotated log files will be backed up to the backup directory of 1Panel.',
syncIpGroup: 'Sync WAF IP groups',
syncIpGroupHelper: 'Sync remote IP groups used in WAF allowlists and blocklists',
requestExpirationTime: 'Upload request expiration time(Hours)',
unitHours: 'Unit: Hours',
alertTitle: 'Planned Task - {0} {1} Task Failure Alert',
+1
View File
@@ -1786,6 +1786,7 @@ const message = {
cutWebsiteLog: 'Rotación de logs del sitio',
cutWebsiteLogHelper: 'Los archivos de log rotados se respaldarán en el directorio de respaldos de 1Panel.',
syncIpGroup: 'Sincronizar grupos de IP de WAF',
syncIpGroupHelper: 'Sincroniza grupos de IP remotos usados en las listas negras/blancas de WAF',
requestExpirationTime: 'Tiempo de expiración de solicitud de subida (Horas)',
unitHours: 'Unidad: Horas',
alertTitle: 'Tarea programada - {0} {1} Alerta de fallo',
+1
View File
@@ -1736,6 +1736,7 @@ const message = {
cutWebsiteLog: 'چرخش لاگ وب‌سایت',
cutWebsiteLogHelper: 'فایل‌های لاگ چرخش یافته به دایرکتوری پشتیبان 1Panel پشتیبان‌گیری می‌شوند.',
syncIpGroup: 'همگام‌سازی گروه‌های IP WAF',
syncIpGroupHelper: 'گروه‌های IP راه دور استفاده‌شده در فهرست‌های سیاه/سفید WAF را همگام‌سازی می‌کند',
requestExpirationTime: 'زمان انقضای درخواست بارگذاری (ساعت)',
unitHours: 'واحد: ساعت',
alertTitle: 'وظیفه زمان‌بندی - {0} «{1}» هشدار شکست وظیفه',
+1
View File
@@ -1742,6 +1742,7 @@ const message = {
cutWebsiteLog: 'ウェブサイトのログローテーション',
cutWebsiteLogHelper: '回転したログファイルは1パネルのバックアップディレクトリにバックアップされます',
syncIpGroup: 'WAF IP グループを同期',
syncIpGroupHelper: 'WAF のブラック/ホワイトリストで使用するリモート IP グループを同期します',
requestExpirationTime: 'リクエストの有効期限時間のアップロード',
unitHours: 'ユニット:時間',
alertTitle: '計画タスク - {0}{1}タスク障害アラート',
+1
View File
@@ -1719,6 +1719,7 @@ const message = {
cutWebsiteLog: '웹사이트 로그 회전',
cutWebsiteLogHelper: '회전된 로그 파일은 1Panel 백업 디렉토리로 백업됩니다.',
syncIpGroup: 'WAF IP 그룹 동기화',
syncIpGroupHelper: 'WAF 블랙/화이트리스트에서 사용하는 원격 IP 그룹을 동기화합니다',
requestExpirationTime: '업로드 요청 만료 시간(시간)',
unitHours: '단위: 시간',
alertTitle: '예정된 작업 - {0} {1} 작업 실패 경고',
+1
View File
@@ -1765,6 +1765,7 @@ const message = {
cutWebsiteLog: 'Putaran log laman web',
cutWebsiteLogHelper: 'Fail log yang diputar akan disandarkan ke direktori sandaran 1Panel.',
syncIpGroup: 'Segerakkan kumpulan IP WAF',
syncIpGroupHelper: 'Segerakkan kumpulan IP jauh yang digunakan dalam senarai hitam/putih WAF',
requestExpirationTime: 'Waktu luput permintaan muat naik (Jam)',
unitHours: 'Unit: Jam',
alertTitle: 'Tugas Terancang - {0} {1} Amaran Kegagalan Tugas',
+1
View File
@@ -1763,6 +1763,7 @@ const message = {
cutWebsiteLog: 'Rotação de log do site',
cutWebsiteLogHelper: 'Os arquivos de log rotacionados serão salvos no diretório de backup do 1Panel.',
syncIpGroup: 'Sincronizar grupos de IP do WAF',
syncIpGroupHelper: 'Sincroniza grupos de IP remotos usados nas listas negra/branca do WAF',
requestExpirationTime: 'Tempo de expiração da solicitação de upload (Horas)',
unitHours: 'Unidade: Horas',
alertTitle: 'Tarefa Planejada - {0} {1} Alerta de Falha na Tarefa',
+1
View File
@@ -1757,6 +1757,7 @@ const message = {
cutWebsiteLog: 'Ротация логов сайта',
cutWebsiteLogHelper: 'Ротированные файлы логов будут сохранены в директории резервных копий 1Panel.',
syncIpGroup: 'Синхронизировать группы IP WAF',
syncIpGroupHelper: 'Синхронизирует удалённые IP-группы, используемые в чёрных и белых списках WAF',
requestExpirationTime: 'Время истечения запроса на загрузку (часы)',
unitHours: 'Единица: часы',
alertTitle: 'Плановая задача - {0} «{1}» Оповещение о сбое задачи',
+1
View File
@@ -1767,6 +1767,7 @@ const message = {
cutWebsiteLog: 'Website log döndürme',
cutWebsiteLogHelper: 'Döndürülen log dosyaları 1Panel yedek dizinine yedeklenecektir.',
syncIpGroup: 'WAF IP gruplarını senkronize et',
syncIpGroupHelper: 'WAF kara/beyaz listelerinde kullanılan uzak IP gruplarını senkronize eder',
requestExpirationTime: 'Yükleme isteği son kullanma süresi(Saat)',
unitHours: 'Birim: Saat',
alertTitle: 'Planlanmış Görev - {0} {1} Görev Başarısızlık Uyarısı',
+1
View File
@@ -1648,6 +1648,7 @@ const message = {
cutWebsiteLog: '切割網站日誌',
cutWebsiteLogHelper: '切割的日誌檔案會備份到 1Panel backup 目錄下',
syncIpGroup: '同步 WAF IP ',
syncIpGroupHelper: '同步 WAF 黑白名單中的遠端 IP ',
requestExpirationTime: '上傳請求過期時間小時',
unitHours: '單位小時',
alertTitle: '計劃任務-{0}{1}任務失敗告警',
+1
View File
@@ -1653,6 +1653,7 @@ const message = {
cutWebsiteLog: '切割网站日志',
cutWebsiteLogHelper: '切割的日志文件会备份到 1Panel backup 目录下',
syncIpGroup: '同步 WAF IP ',
syncIpGroupHelper: '同步 WAF 黑白名单中的远程 IP ',
requestExpirationTime: '上传请求过期时间小时',
unitHours: '单位小时',
@@ -64,6 +64,12 @@
{{ $t('firewall.quickJump') }}
</el-link>
</span>
<span class="input-help logText" v-if="form.type === 'syncIpGroup'">
{{ $t('cronjob.syncIpGroupHelper') }}
<el-link class="link" icon="Position" @click="goWafIpGroup" type="primary">
{{ $t('firewall.quickJump') }}
</el-link>
</span>
</el-form-item>
<el-row :gutter="20">
<LayoutCol>
@@ -1149,6 +1155,11 @@ const goRouter = async (path: string) => {
routerToPath(path);
};
const goWafIpGroup = async () => {
localStorage.setItem('black-white-tab', '3');
routerToPath('/xpack/waf/blackwhite');
};
const containerOptions = ref([]);
const websiteOptions = ref([]);
const backupOptions = ref([]);