🍕 Sync 2025-11-26 00:13:14

This commit is contained in:
actions-user
2025-11-26 00:13:14 +08:00
parent 0c7c1404f7
commit 4a85def28d
15 changed files with 2178 additions and 416 deletions

View File

@@ -10,7 +10,7 @@ LUCI_DEPENDS:=+luci-base +luci-lib-jsonc +curl +bandix
PKG_MAINTAINER:=timsaya
PKG_VERSION:=0.8.3
PKG_VERSION:=0.9.0
PKG_RELEASE:=1
include $(TOPDIR)/feeds/luci/luci.mk

View File

@@ -751,3 +751,93 @@ msgstr "Mostrar más"
msgid "Show Less"
msgstr "Mostrar menos"
msgid "Add Schedule Rule"
msgstr "Agregar regla de limitación programada"
msgid "Add Rule"
msgstr "Agregar regla"
msgid "Set rate limit rules for different time periods"
msgstr "Establecer reglas de limitación para diferentes períodos de tiempo"
msgid "Time Slot"
msgstr "Franja horaria"
msgid "Days of Week"
msgstr "Días de la semana"
msgid "Mon"
msgstr "Lun"
msgid "Tue"
msgstr "Mar"
msgid "Wed"
msgstr "Mié"
msgid "Thu"
msgstr "Jue"
msgid "Fri"
msgstr "Vie"
msgid "Sat"
msgstr "Sáb"
msgid "Sun"
msgstr "Dom"
msgid "Adding..."
msgstr "Agregando..."
msgid "Failed to add schedule rule: "
msgstr "Error al agregar regla programada: "
msgid "Please set time slot"
msgstr "Por favor establezca la franja horaria"
msgid "Please select at least one day"
msgstr "Por favor seleccione al menos un día"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "Aún no hay reglas programadas, haga clic en \"Agregar regla\" para comenzar"
msgid "Loading..."
msgstr "Cargando..."
msgid "No schedule rules"
msgstr "No hay reglas programadas"
msgid "Failed to load schedule rules"
msgstr "Error al cargar reglas programadas"
msgid "Delete Schedule Rule"
msgstr "Eliminar regla programada"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "¿Está seguro de que desea eliminar esta regla programada?"
msgid "Failed to delete schedule rule"
msgstr "Error al eliminar regla programada"
msgid "Confirm"
msgstr "Confirmar"
msgid "Close"
msgstr "Cerrar"
msgid "rule"
msgstr "regla"
msgid "rules"
msgstr "reglas"
msgid "more"
msgstr "más"
msgid "No active rule"
msgstr "Sin regla activa"
msgid "Schedule Rules"
msgstr "Reglas de limitación programada"

View File

@@ -750,4 +750,94 @@ msgid "Show More"
msgstr "Afficher plus"
msgid "Show Less"
msgstr "Afficher moins"
msgstr "Afficher moins"
msgid "Add Schedule Rule"
msgstr "Ajouter une règle de limitation programmée"
msgid "Add Rule"
msgstr "Ajouter une règle"
msgid "Set rate limit rules for different time periods"
msgstr "Définir des règles de limitation pour différentes périodes"
msgid "Time Slot"
msgstr "Créneau horaire"
msgid "Days of Week"
msgstr "Jours de la semaine"
msgid "Mon"
msgstr "Lun"
msgid "Tue"
msgstr "Mar"
msgid "Wed"
msgstr "Mer"
msgid "Thu"
msgstr "Jeu"
msgid "Fri"
msgstr "Ven"
msgid "Sat"
msgstr "Sam"
msgid "Sun"
msgstr "Dim"
msgid "Adding..."
msgstr "Ajout en cours..."
msgid "Failed to add schedule rule: "
msgstr "Échec de l'ajout de la règle programmée : "
msgid "Please set time slot"
msgstr "Veuillez définir un créneau horaire"
msgid "Please select at least one day"
msgstr "Veuillez sélectionner au moins un jour"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "Aucune règle programmée pour le moment, cliquez sur \"Ajouter une règle\" pour commencer"
msgid "Loading..."
msgstr "Chargement..."
msgid "No schedule rules"
msgstr "Aucune règle programmée"
msgid "Failed to load schedule rules"
msgstr "Échec du chargement des règles programmées"
msgid "Delete Schedule Rule"
msgstr "Supprimer la règle programmée"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "Êtes-vous sûr de vouloir supprimer cette règle programmée ?"
msgid "Failed to delete schedule rule"
msgstr "Échec de la suppression de la règle programmée"
msgid "Confirm"
msgstr "Confirmer"
msgid "Close"
msgstr "Fermer"
msgid "rule"
msgstr "règle"
msgid "rules"
msgstr "règles"
msgid "more"
msgstr "plus"
msgid "No active rule"
msgstr "Aucune règle active"
msgid "Schedule Rules"
msgstr "Règles de limitation programmée"

View File

@@ -751,3 +751,93 @@ msgstr "Tampilkan lebih banyak"
msgid "Show Less"
msgstr "Tampilkan lebih sedikit"
msgid "Add Schedule Rule"
msgstr "Tambah aturan pembatasan terjadwal"
msgid "Add Rule"
msgstr "Tambah aturan"
msgid "Set rate limit rules for different time periods"
msgstr "Tetapkan aturan pembatasan untuk periode waktu yang berbeda"
msgid "Time Slot"
msgstr "Slot waktu"
msgid "Days of Week"
msgstr "Hari dalam seminggu"
msgid "Mon"
msgstr "Sen"
msgid "Tue"
msgstr "Sel"
msgid "Wed"
msgstr "Rab"
msgid "Thu"
msgstr "Kam"
msgid "Fri"
msgstr "Jum"
msgid "Sat"
msgstr "Sab"
msgid "Sun"
msgstr "Min"
msgid "Adding..."
msgstr "Menambahkan..."
msgid "Failed to add schedule rule: "
msgstr "Gagal menambahkan aturan terjadwal: "
msgid "Please set time slot"
msgstr "Silakan atur slot waktu"
msgid "Please select at least one day"
msgstr "Silakan pilih setidaknya satu hari"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "Belum ada aturan terjadwal, klik \"Tambah aturan\" untuk mulai pengaturan"
msgid "Loading..."
msgstr "Memuat..."
msgid "No schedule rules"
msgstr "Tidak ada aturan terjadwal"
msgid "Failed to load schedule rules"
msgstr "Gagal memuat aturan terjadwal"
msgid "Delete Schedule Rule"
msgstr "Hapus aturan pembatasan terjadwal"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "Apakah Anda yakin ingin menghapus aturan terjadwal ini?"
msgid "Failed to delete schedule rule"
msgstr "Gagal menghapus aturan terjadwal"
msgid "Confirm"
msgstr "Konfirmasi"
msgid "Close"
msgstr "Tutup"
msgid "rule"
msgstr "aturan"
msgid "rules"
msgstr "aturan"
msgid "more"
msgstr "lainnya"
msgid "No active rule"
msgstr "Tidak ada aturan aktif"
msgid "Schedule Rules"
msgstr "Aturan pembatasan terjadwal"

View File

@@ -751,3 +751,93 @@ msgstr "もっと見る"
msgid "Show Less"
msgstr "閉じる"
msgid "Add Schedule Rule"
msgstr "スケジュール制限ルールを追加"
msgid "Add Rule"
msgstr "ルールを追加"
msgid "Set rate limit rules for different time periods"
msgstr "異なる時間帯にレート制限ルールを設定"
msgid "Time Slot"
msgstr "時間帯"
msgid "Days of Week"
msgstr "曜日"
msgid "Mon"
msgstr "月"
msgid "Tue"
msgstr "火"
msgid "Wed"
msgstr "水"
msgid "Thu"
msgstr "木"
msgid "Fri"
msgstr "金"
msgid "Sat"
msgstr "土"
msgid "Sun"
msgstr "日"
msgid "Adding..."
msgstr "追加中..."
msgid "Failed to add schedule rule: "
msgstr "スケジュール制限ルールの追加に失敗しました:"
msgid "Please set time slot"
msgstr "時間帯を設定してください"
msgid "Please select at least one day"
msgstr "少なくとも1日を選択してください"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "スケジュール制限ルールがまだありません。「ルールを追加」をクリックして設定を開始してください"
msgid "Loading..."
msgstr "読み込み中..."
msgid "No schedule rules"
msgstr "スケジュール制限ルールなし"
msgid "Failed to load schedule rules"
msgstr "スケジュール制限ルールの読み込みに失敗しました"
msgid "Delete Schedule Rule"
msgstr "スケジュール制限ルールを削除"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "このスケジュール制限ルールを削除してもよろしいですか?"
msgid "Failed to delete schedule rule"
msgstr "スケジュール制限ルールの削除に失敗しました"
msgid "Confirm"
msgstr "確認"
msgid "Close"
msgstr "閉じる"
msgid "rule"
msgstr "ルール"
msgid "rules"
msgstr "ルール"
msgid "more"
msgstr "その他"
msgid "No active rule"
msgstr "アクティブなルールなし"
msgid "Schedule Rules"
msgstr "スケジュール制限ルール"

View File

@@ -752,3 +752,93 @@ msgstr "Pokaż więcej"
msgid "Show Less"
msgstr "Pokaż mniej"
msgid "Add Schedule Rule"
msgstr "Dodaj regułę limitu czasu"
msgid "Add Rule"
msgstr "Dodaj regułę"
msgid "Set rate limit rules for different time periods"
msgstr "Ustaw reguły limitu dla różnych okresów czasu"
msgid "Time Slot"
msgstr "Przedział czasowy"
msgid "Days of Week"
msgstr "Dni tygodnia"
msgid "Mon"
msgstr "Pon"
msgid "Tue"
msgstr "Wt"
msgid "Wed"
msgstr "Śr"
msgid "Thu"
msgstr "Czw"
msgid "Fri"
msgstr "Pt"
msgid "Sat"
msgstr "Sob"
msgid "Sun"
msgstr "Nie"
msgid "Adding..."
msgstr "Dodawanie..."
msgid "Failed to add schedule rule: "
msgstr "Nie udało się dodać reguły limitu czasu: "
msgid "Please set time slot"
msgstr "Proszę ustawić przedział czasowy"
msgid "Please select at least one day"
msgstr "Proszę wybrać co najmniej jeden dzień"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "Brak jeszcze reguł limitu czasu, kliknij \"Dodaj regułę\", aby rozpocząć"
msgid "Loading..."
msgstr "Ładowanie..."
msgid "No schedule rules"
msgstr "Brak reguł limitu czasu"
msgid "Failed to load schedule rules"
msgstr "Nie udało się załadować reguł limitu czasu"
msgid "Delete Schedule Rule"
msgstr "Usuń regułę limitu czasu"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "Czy na pewno chcesz usunąć tę regułę limitu czasu?"
msgid "Failed to delete schedule rule"
msgstr "Nie udało się usunąć reguły limitu czasu"
msgid "Confirm"
msgstr "Potwierdź"
msgid "Close"
msgstr "Zamknij"
msgid "rule"
msgstr "reguła"
msgid "rules"
msgstr "reguły"
msgid "more"
msgstr "więcej"
msgid "No active rule"
msgstr "Brak aktywnej reguły"
msgid "Schedule Rules"
msgstr "Reguły limitu czasu"

View File

@@ -750,4 +750,94 @@ msgid "Show More"
msgstr "Показать больше"
msgid "Show Less"
msgstr "Показать меньше"
msgstr "Показать меньше"
msgid "Add Schedule Rule"
msgstr "Добавить правило ограничения по расписанию"
msgid "Add Rule"
msgstr "Добавить правило"
msgid "Set rate limit rules for different time periods"
msgstr "Установить правила ограничения скорости для разных периодов времени"
msgid "Time Slot"
msgstr "Временной интервал"
msgid "Days of Week"
msgstr "Дни недели"
msgid "Mon"
msgstr "Пн"
msgid "Tue"
msgstr "Вт"
msgid "Wed"
msgstr "Ср"
msgid "Thu"
msgstr "Чт"
msgid "Fri"
msgstr "Пт"
msgid "Sat"
msgstr "Сб"
msgid "Sun"
msgstr "Вс"
msgid "Adding..."
msgstr "Добавление..."
msgid "Failed to add schedule rule: "
msgstr "Не удалось добавить правило расписания: "
msgid "Please set time slot"
msgstr "Пожалуйста, установите временной интервал"
msgid "Please select at least one day"
msgstr "Пожалуйста, выберите хотя бы один день"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "Правил расписания пока нет, нажмите \"Добавить правило\", чтобы начать настройку"
msgid "Loading..."
msgstr "Загрузка..."
msgid "No schedule rules"
msgstr "Нет правил расписания"
msgid "Failed to load schedule rules"
msgstr "Не удалось загрузить правила расписания"
msgid "Delete Schedule Rule"
msgstr "Удалить правило ограничения по расписанию"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "Вы уверены, что хотите удалить это правило расписания?"
msgid "Failed to delete schedule rule"
msgstr "Не удалось удалить правило расписания"
msgid "Confirm"
msgstr "Подтвердить"
msgid "Close"
msgstr "Закрыть"
msgid "rule"
msgstr "правило"
msgid "rules"
msgstr "правила"
msgid "more"
msgstr "еще"
msgid "No active rule"
msgstr "Нет активных правил"
msgid "Schedule Rules"
msgstr "Правила ограничения по расписанию"

View File

@@ -751,3 +751,93 @@ msgstr "แสดงเพิ่มเติม"
msgid "Show Less"
msgstr "แสดงน้อยลง"
msgid "Add Schedule Rule"
msgstr "เพิ่มกฎการจำกัดอัตราแบบกำหนดเวลา"
msgid "Add Rule"
msgstr "เพิ่มกฎ"
msgid "Set rate limit rules for different time periods"
msgstr "ตั้งค่ากฎการจำกัดอัตราสำหรับช่วงเวลาต่างๆ"
msgid "Time Slot"
msgstr "ช่วงเวลา"
msgid "Days of Week"
msgstr "วันในสัปดาห์"
msgid "Mon"
msgstr "จ"
msgid "Tue"
msgstr "อ"
msgid "Wed"
msgstr "พ"
msgid "Thu"
msgstr "พฤ"
msgid "Fri"
msgstr "ศ"
msgid "Sat"
msgstr "ส"
msgid "Sun"
msgstr "อา"
msgid "Adding..."
msgstr "กำลังเพิ่ม..."
msgid "Failed to add schedule rule: "
msgstr "เพิ่มกฎการจำกัดอัตราแบบกำหนดเวลาล้มเหลว: "
msgid "Please set time slot"
msgstr "โปรดตั้งค่าช่วงเวลา"
msgid "Please select at least one day"
msgstr "โปรดเลือกอย่างน้อยหนึ่งวัน"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "ยังไม่มีกฎการจำกัดอัตราแบบกำหนดเวลา คลิก \"เพิ่มกฎ\" เพื่อเริ่มตั้งค่า"
msgid "Loading..."
msgstr "กำลังโหลด..."
msgid "No schedule rules"
msgstr "ไม่มีกฎการจำกัดอัตราแบบกำหนดเวลา"
msgid "Failed to load schedule rules"
msgstr "โหลดกฎการจำกัดอัตราแบบกำหนดเวลาล้มเหลว"
msgid "Delete Schedule Rule"
msgstr "ลบกฎการจำกัดอัตราแบบกำหนดเวลา"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "คุณแน่ใจหรือไม่ว่าต้องการลบกฎการจำกัดอัตราแบบกำหนดเวลานี้?"
msgid "Failed to delete schedule rule"
msgstr "ลบกฎการจำกัดอัตราแบบกำหนดเวลาล้มเหลว"
msgid "Confirm"
msgstr "ยืนยัน"
msgid "Close"
msgstr "ปิด"
msgid "rule"
msgstr "กฎ"
msgid "rules"
msgstr "กฎ"
msgid "more"
msgstr "เพิ่มเติม"
msgid "No active rule"
msgstr "ไม่มีกฎที่ใช้งาน"
msgid "Schedule Rules"
msgstr "กฎการจำกัดอัตราแบบกำหนดเวลา"

View File

@@ -750,4 +750,94 @@ msgid "Show More"
msgstr "显示更多"
msgid "Show Less"
msgstr "显示更少"
msgstr "显示更少"
msgid "Add Schedule Rule"
msgstr "添加定时限速规则"
msgid "Add Rule"
msgstr "添加规则"
msgid "Set rate limit rules for different time periods"
msgstr "为不同时间段设置限速规则"
msgid "Time Slot"
msgstr "时间段"
msgid "Days of Week"
msgstr "星期"
msgid "Mon"
msgstr "周一"
msgid "Tue"
msgstr "周二"
msgid "Wed"
msgstr "周三"
msgid "Thu"
msgstr "周四"
msgid "Fri"
msgstr "周五"
msgid "Sat"
msgstr "周六"
msgid "Sun"
msgstr "周日"
msgid "Adding..."
msgstr "添加中..."
msgid "Failed to add schedule rule: "
msgstr "添加定时限速规则失败:"
msgid "Please set time slot"
msgstr "请设置时间段"
msgid "Please select at least one day"
msgstr "请至少选择一天"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "还没有定时限速规则,点击"添加规则"开始设置"
msgid "Loading..."
msgstr "加载中..."
msgid "No schedule rules"
msgstr "没有定时限速规则"
msgid "Failed to load schedule rules"
msgstr "加载定时限速规则失败"
msgid "Delete Schedule Rule"
msgstr "删除定时限速规则"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "确定要删除这个定时限速规则吗?"
msgid "Failed to delete schedule rule"
msgstr "删除定时限速规则失败"
msgid "Confirm"
msgstr "确认"
msgid "Close"
msgstr "关闭"
msgid "rule"
msgstr "规则"
msgid "rules"
msgstr "规则"
msgid "more"
msgstr "更多"
msgid "No active rule"
msgstr "无生效规则"
msgid "Schedule Rules"
msgstr "定时限速规则"

View File

@@ -750,4 +750,94 @@ msgid "Show More"
msgstr "顯示更多"
msgid "Show Less"
msgstr "顯示更少"
msgstr "顯示更少"
msgid "Add Schedule Rule"
msgstr "新增定時限速規則"
msgid "Add Rule"
msgstr "新增規則"
msgid "Set rate limit rules for different time periods"
msgstr "為不同時間段設定限速規則"
msgid "Time Slot"
msgstr "時間段"
msgid "Days of Week"
msgstr "星期"
msgid "Mon"
msgstr "週一"
msgid "Tue"
msgstr "週二"
msgid "Wed"
msgstr "週三"
msgid "Thu"
msgstr "週四"
msgid "Fri"
msgstr "週五"
msgid "Sat"
msgstr "週六"
msgid "Sun"
msgstr "週日"
msgid "Adding..."
msgstr "新增中..."
msgid "Failed to add schedule rule: "
msgstr "新增定時限速規則失敗:"
msgid "Please set time slot"
msgstr "請設定時間段"
msgid "Please select at least one day"
msgstr "請至少選擇一天"
msgid "No scheduled rules yet, click \"Add Rule\" to start setting"
msgstr "還沒有定時限速規則,點擊"新增規則"開始設定"
msgid "Loading..."
msgstr "載入中..."
msgid "No schedule rules"
msgstr "沒有定時限速規則"
msgid "Failed to load schedule rules"
msgstr "載入定時限速規則失敗"
msgid "Delete Schedule Rule"
msgstr "刪除定時限速規則"
msgid "Are you sure you want to delete this schedule rule?"
msgstr "確定要刪除這個定時限速規則嗎?"
msgid "Failed to delete schedule rule"
msgstr "刪除定時限速規則失敗"
msgid "Confirm"
msgstr "確認"
msgid "Close"
msgstr "關閉"
msgid "rule"
msgstr "規則"
msgid "rules"
msgstr "規則"
msgid "more"
msgstr "更多"
msgid "No active rule"
msgstr "無生效規則"
msgid "Schedule Rules"
msgstr "定時限速規則"

View File

@@ -12,6 +12,7 @@ readonly BANDIX_METRICS_API="$BANDIX_API_BASE/api/traffic/metrics"
readonly BANDIX_CONNECTION_API="$BANDIX_API_BASE/api/connection/devices"
readonly BANDIX_DNS_QUERIES_API="$BANDIX_API_BASE/api/dns/queries"
readonly BANDIX_DNS_STATS_API="$BANDIX_API_BASE/api/dns/stats"
readonly BANDIX_SCHEDULE_LIMITS_API="$BANDIX_API_BASE/api/traffic/limits/schedule"
# 通用函数创建简单的JSON响应
make_value() {
@@ -98,56 +99,6 @@ get_metrics() {
fi
}
# 设置设备限速
set_device_rate_limit() {
local mac="$1"
local wide_tx_rate_limit="$2"
local wide_rx_rate_limit="$3"
# logger "luci.bandix: set_device_rate_limit 参数: mac=$mac tx=$wide_tx_rate_limit rx=$wide_rx_rate_limit"
# 验证参数
if [ -z "$mac" ]; then
make_error "MAC address is required"
return
fi
# 转义MAC地址中的特殊字符
local mac_escaped=$(escape_json_string "$mac")
# 构建请求数据
local request_data="{
\"mac\": \"$mac\",
\"wide_tx_rate_limit\": $wide_tx_rate_limit,
\"wide_rx_rate_limit\": $wide_rx_rate_limit
}"
# 记录请求数据(用于调试)
# logger "luci.bandix: request_data=$request_data"
# 发送请求到bandix API
local response=$(curl -s --connect-timeout 3 --max-time 10 -X POST -H "Content-Type: application/json" -d "$request_data" "$BANDIX_LIMITS_API" 2>/dev/null)
# logger "luci.bandix: API response=$response"
if [ $? -eq 0 ] && [ -n "$response" ]; then
# 检查API响应是否包含success状态
if echo "$response" | grep -q '"status":\s*"success"'; then
make_success "Rate limit set successfully"
else
# API返回了响应但不是success状态
json_init
json_add_boolean "success" 0
json_add_string "error" "API returned error response"
json_add_string "response" "$response"
json_dump
json_cleanup
fi
else
make_error "Failed to set rate limit"
fi
}
# 设置设备主机名绑定
set_device_hostname() {
local mac="$1"
@@ -293,6 +244,129 @@ get_dns_stats() {
echo "$response"
}
# 获取定时限速规则
get_schedule_limits() {
# 从 Bandix API 获取定时限速规则
local response=$(curl -s --connect-timeout 2 --max-time 5 -X GET "$BANDIX_SCHEDULE_LIMITS_API" 2>/dev/null)
# 检查API调用是否成功
if [ $? -ne 0 ] || [ -z "$response" ]; then
make_error "Failed to connect to Bandix service"
return
fi
# 直接返回API结果
echo "$response"
}
# 设置定时限速规则
set_schedule_limit() {
local mac="$1"
local start_time="$2"
local end_time="$3"
local days="$4"
local wide_tx_rate_limit="$5"
local wide_rx_rate_limit="$6"
# 验证参数
if [ -z "$mac" ]; then
make_error "MAC address is required"
return
fi
if [ -z "$start_time" ] || [ -z "$end_time" ] || [ -z "$days" ]; then
make_error "Time slot parameters are required"
return
fi
# 转义MAC地址中的特殊字符
local mac_escaped=$(escape_json_string "$mac")
# 构建请求数据
local request_data="{
\"mac\": \"$mac\",
\"time_slot\": {
\"start\": \"$start_time\",
\"end\": \"$end_time\",
\"days\": $days
},
\"wide_tx_rate_limit\": $wide_tx_rate_limit,
\"wide_rx_rate_limit\": $wide_rx_rate_limit
}"
# 发送请求到bandix API
local response=$(curl -s --connect-timeout 3 --max-time 10 -X POST -H "Content-Type: application/json" -d "$request_data" "$BANDIX_SCHEDULE_LIMITS_API" 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$response" ]; then
# 检查API响应是否包含success状态
if echo "$response" | grep -q '"status":\s*"success"'; then
make_success "Schedule limit set successfully"
else
# API返回了响应但不是success状态
json_init
json_add_boolean "success" 0
json_add_string "error" "API returned error response"
json_add_string "response" "$response"
json_dump
json_cleanup
fi
else
make_error "Failed to set schedule limit"
fi
}
# 删除定时限速规则
delete_schedule_limit() {
local mac="$1"
local start_time="$2"
local end_time="$3"
local days="$4"
# 验证参数
if [ -z "$mac" ]; then
make_error "MAC address is required"
return
fi
if [ -z "$start_time" ] || [ -z "$end_time" ] || [ -z "$days" ]; then
make_error "Time slot parameters are required"
return
fi
# 转义MAC地址中的特殊字符
local mac_escaped=$(escape_json_string "$mac")
# 构建请求数据
local request_data="{
\"mac\": \"$mac\",
\"time_slot\": {
\"start\": \"$start_time\",
\"end\": \"$end_time\",
\"days\": $days
}
}"
# 发送请求到bandix API
local response=$(curl -s --connect-timeout 3 --max-time 10 -X DELETE -H "Content-Type: application/json" -d "$request_data" "$BANDIX_SCHEDULE_LIMITS_API" 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$response" ]; then
# 检查API响应是否包含success状态
if echo "$response" | grep -q '"status":\s*"success"'; then
make_success "Schedule limit deleted successfully"
else
# API返回了响应但不是success状态
json_init
json_add_boolean "success" 0
json_add_string "error" "API returned error response"
json_add_string "response" "$response"
json_dump
json_cleanup
fi
else
make_error "Failed to delete schedule limit"
fi
}
case "$1" in
list)
json_init
@@ -303,12 +377,6 @@ case "$1" in
json_add_string "mac"
json_close_object
json_add_object "setRateLimit"
json_add_string "mac"
json_add_int "wide_rx_rate_limit"
json_add_int "wide_tx_rate_limit"
json_close_object
json_add_object "setHostname"
json_add_string "mac"
json_add_string "hostname"
@@ -330,6 +398,25 @@ case "$1" in
json_add_object "getDnsStats"
json_close_object
json_add_object "getScheduleLimits"
json_close_object
json_add_object "setScheduleLimit"
json_add_string "mac"
json_add_string "start_time"
json_add_string "end_time"
json_add_string "days"
json_add_int "wide_rx_rate_limit"
json_add_int "wide_tx_rate_limit"
json_close_object
json_add_object "deleteScheduleLimit"
json_add_string "mac"
json_add_string "start_time"
json_add_string "end_time"
json_add_string "days"
json_close_object
json_dump
json_cleanup
;;
@@ -360,42 +447,6 @@ case "$1" in
fi
get_metrics "$mac"
;;
setRateLimit)
# logger "luci.bandix: setRateLimit called"
# 从 stdin 读取 JSON 参数
read input
# logger "luci.bandix: received input: $input"
if [ -n "$input" ]; then
# 尝试解析数组格式的 JSON 参数 (LuCI RPC 通常使用数组格式)
# 参数格式: ["mac", wide_tx_rate_limit, wide_rx_rate_limit]
mac=$(echo "$input" | jsonfilter -e '$[0]' 2>/dev/null)
wide_tx_rate_limit=$(echo "$input" | jsonfilter -e '$[1]' 2>/dev/null)
wide_rx_rate_limit=$(echo "$input" | jsonfilter -e '$[2]' 2>/dev/null)
# 如果数组格式解析失败,尝试对象格式
if [ -z "$mac" ]; then
mac=$(echo "$input" | jsonfilter -e '$.mac' 2>/dev/null)
wide_tx_rate_limit=$(echo "$input" | jsonfilter -e '$.wide_tx_rate_limit' 2>/dev/null)
wide_rx_rate_limit=$(echo "$input" | jsonfilter -e '$.wide_rx_rate_limit' 2>/dev/null)
fi
# logger "luci.bandix: parsed - mac=$mac tx=$wide_tx_rate_limit rx=$wide_rx_rate_limit"
# 验证参数
if [ -n "$mac" ] && [ -n "$wide_tx_rate_limit" ] && [ -n "$wide_rx_rate_limit" ]; then
# 调用限速设置函数
set_device_rate_limit "$mac" "$wide_tx_rate_limit" "$wide_rx_rate_limit"
else
# logger "luci.bandix: setRateLimit 参数缺失或无效"
make_error "Missing or invalid parameters"
fi
else
# logger "luci.bandix: setRateLimit 没有接收到输入"
make_error "No input received"
fi
;;
setHostname)
# logger "luci.bandix: setHostname called"
@@ -471,6 +522,122 @@ case "$1" in
# logger "luci.bandix: getDnsStats called"
get_dns_stats
;;
getScheduleLimits)
# logger "luci.bandix: getScheduleLimits called"
get_schedule_limits
;;
setScheduleLimit)
# logger "luci.bandix: setScheduleLimit called"
# 从 stdin 读取 JSON 参数
read input
# logger "luci.bandix: received input: $input"
if [ -n "$input" ]; then
# 尝试解析数组格式的 JSON 参数 (LuCI RPC 通常使用数组格式)
# 参数格式: ["mac", "start_time", "end_time", "days", wide_tx_rate_limit, wide_rx_rate_limit]
mac=$(echo "$input" | jsonfilter -e '$[0]' 2>/dev/null)
start_time=$(echo "$input" | jsonfilter -e '$[1]' 2>/dev/null)
end_time=$(echo "$input" | jsonfilter -e '$[2]' 2>/dev/null)
# days 可能是 JSON 数组字符串,需要特殊处理
days=$(echo "$input" | jsonfilter -e '$[3]' 2>/dev/null)
# 如果提取失败,尝试作为字符串提取
if [ -z "$days" ]; then
days=$(echo "$input" | jsonfilter -e '$[3]' -s 2>/dev/null)
fi
wide_tx_rate_limit=$(echo "$input" | jsonfilter -e '$[4]' 2>/dev/null)
wide_rx_rate_limit=$(echo "$input" | jsonfilter -e '$[5]' 2>/dev/null)
# 如果数组格式解析失败,尝试对象格式
if [ -z "$mac" ]; then
mac=$(echo "$input" | jsonfilter -e '$.mac' 2>/dev/null)
start_time=$(echo "$input" | jsonfilter -e '$.start_time' 2>/dev/null)
end_time=$(echo "$input" | jsonfilter -e '$.end_time' 2>/dev/null)
# days 可能是 JSON 数组字符串
days=$(echo "$input" | jsonfilter -e '$.days' 2>/dev/null)
# 如果提取失败,尝试提取为 JSON 数组
if [ -z "$days" ]; then
days=$(echo "$input" | jsonfilter -e '$.days' -s 2>/dev/null)
fi
wide_tx_rate_limit=$(echo "$input" | jsonfilter -e '$.wide_tx_rate_limit' 2>/dev/null)
wide_rx_rate_limit=$(echo "$input" | jsonfilter -e '$.wide_rx_rate_limit' 2>/dev/null)
fi
# 如果 days 还不是有效的 JSON 数组格式,尝试从原始输入中提取
if [ -z "$days" ] || ! echo "$days" | grep -q '^\['; then
# 尝试直接提取 days 字段的值
days=$(echo "$input" | sed -n 's/.*"days"[[:space:]]*:[[:space:]]*\(\[.*\]\).*/\1/p' 2>/dev/null)
fi
# logger "luci.bandix: parsed - mac=$mac start=$start_time end=$end_time days=$days tx=$wide_tx_rate_limit rx=$wide_rx_rate_limit"
# 验证参数
if [ -n "$mac" ] && [ -n "$start_time" ] && [ -n "$end_time" ] && [ -n "$days" ] && [ -n "$wide_tx_rate_limit" ] && [ -n "$wide_rx_rate_limit" ]; then
# 调用定时限速设置函数
set_schedule_limit "$mac" "$start_time" "$end_time" "$days" "$wide_tx_rate_limit" "$wide_rx_rate_limit"
else
# logger "luci.bandix: setScheduleLimit 参数缺失或无效"
make_error "Missing or invalid parameters"
fi
else
# logger "luci.bandix: setScheduleLimit 没有接收到输入"
make_error "No input received"
fi
;;
deleteScheduleLimit)
# logger "luci.bandix: deleteScheduleLimit called"
# 从 stdin 读取 JSON 参数
read input
# logger "luci.bandix: received input: $input"
if [ -n "$input" ]; then
# 尝试解析数组格式的 JSON 参数 (LuCI RPC 通常使用数组格式)
# 参数格式: ["mac", "start_time", "end_time", "days"]
mac=$(echo "$input" | jsonfilter -e '$[0]' 2>/dev/null)
start_time=$(echo "$input" | jsonfilter -e '$[1]' 2>/dev/null)
end_time=$(echo "$input" | jsonfilter -e '$[2]' 2>/dev/null)
# days 可能是 JSON 数组字符串,需要特殊处理
days=$(echo "$input" | jsonfilter -e '$[3]' 2>/dev/null)
# 如果提取失败,尝试作为字符串提取
if [ -z "$days" ]; then
days=$(echo "$input" | jsonfilter -e '$[3]' -s 2>/dev/null)
fi
# 如果数组格式解析失败,尝试对象格式
if [ -z "$mac" ]; then
mac=$(echo "$input" | jsonfilter -e '$.mac' 2>/dev/null)
start_time=$(echo "$input" | jsonfilter -e '$.start_time' 2>/dev/null)
end_time=$(echo "$input" | jsonfilter -e '$.end_time' 2>/dev/null)
# days 可能是 JSON 数组字符串
days=$(echo "$input" | jsonfilter -e '$.days' 2>/dev/null)
# 如果提取失败,尝试提取为 JSON 数组
if [ -z "$days" ]; then
days=$(echo "$input" | jsonfilter -e '$.days' -s 2>/dev/null)
fi
fi
# 如果 days 还不是有效的 JSON 数组格式,尝试从原始输入中提取
if [ -z "$days" ] || ! echo "$days" | grep -q '^\['; then
# 尝试直接提取 days 字段的值
days=$(echo "$input" | sed -n 's/.*"days"[[:space:]]*:[[:space:]]*\(\[.*\]\).*/\1/p' 2>/dev/null)
fi
# logger "luci.bandix: parsed - mac=$mac start=$start_time end=$end_time days=$days"
# 验证参数
if [ -n "$mac" ] && [ -n "$start_time" ] && [ -n "$end_time" ] && [ -n "$days" ]; then
# 调用定时限速删除函数
delete_schedule_limit "$mac" "$start_time" "$end_time" "$days"
else
# logger "luci.bandix: deleteScheduleLimit 参数缺失或无效"
make_error "Missing or invalid parameters"
fi
else
# logger "luci.bandix: deleteScheduleLimit 没有接收到输入"
make_error "No input received"
fi
;;
esac
;;
esac

View File

@@ -6,11 +6,13 @@
"luci.bandix": [
"getStatus",
"getMetrics",
"setRateLimit",
"getConnection",
"setHostname",
"getDnsQueries",
"getDnsStats"
"getDnsStats",
"getScheduleLimits",
"setScheduleLimit",
"deleteScheduleLimit"
]
},
"uci": [
@@ -20,13 +22,15 @@
"write": {
"ubus": {
"luci.bandix": [
"setRateLimit",
"getStatus",
"getMetrics",
"getConnection",
"setHostname",
"getDnsQueries",
"getDnsStats"
"getDnsStats",
"getScheduleLimits",
"setScheduleLimit",
"deleteScheduleLimit"
]
},
"uci": [

View File

@@ -7,13 +7,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=openlist2
PKG_VERSION:=4.1.7
PKG_WEB_VERSION:=4.1.7
PKG_VERSION:=4.1.8
PKG_WEB_VERSION:=4.1.8
PKG_RELEASE:=1
PKG_SOURCE:=openlist-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/OpenListTeam/OpenList/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=f1b92628be09ba181decc46423c3e0624b78aedfcd28590990a46ba03d75e5e4
PKG_HASH:=8ba861db0ad29e60fcfb4544ff3744dfa235ab1744ea0c998e1c6f80a630996d
PKG_BUILD_DIR:=$(BUILD_DIR)/OpenList-$(PKG_VERSION)
@@ -24,7 +24,7 @@ PKG_MAINTAINER:=sbwml <admin@cooluc.com>
define Download/openlist-frontend
FILE:=openlist-frontend-dist-lite-v$(PKG_WEB_VERSION).tar.gz
URL:=https://github.com/OpenListTeam/OpenList-Frontend/releases/download/v$(PKG_WEB_VERSION)/
HASH:=2a365c1ce17904926cf275540680f0f24c0c8c3620fcbb98149d7faf781235aa
HASH:=00c8cf73fa98ba3ff56de9a8fd02d545ef87236170e03ca6f9a76c04d4cf957e
endef
PKG_BUILD_DEPENDS:=golang/host

View File

@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=bandix
PKG_VERSION:=0.8.3
PKG_VERSION:=0.9.0
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
@@ -13,7 +13,7 @@ include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/rust/rust-values.mk
# 二进制文件的文件名和URL
RUST_BANDIX_VERSION:=0.8.3
RUST_BANDIX_VERSION:=0.9.0
RUST_BINARY_FILENAME:=bandix-$(RUST_BANDIX_VERSION)-$(RUSTC_TARGET_ARCH).tar.gz