luci: add DNS configuration options and more dial option support for qmodem

This commit is contained in:
fujr 2024-12-19 19:19:54 +08:00
parent 0545d9e480
commit 99bc502f71
4 changed files with 61 additions and 6 deletions

View File

@ -28,6 +28,10 @@ sms_at_port = s:taboption("general",Value, "sms_at_port", translate("SMS AT Port
sms_at_port.rmempty = true sms_at_port.rmempty = true
valid_at_ports = uci:get("qmodem",arg[1],"valid_at_ports") valid_at_ports = uci:get("qmodem",arg[1],"valid_at_ports")
avalible_ports = uci:get("qmodem",arg[1],"ports") avalible_ports = uci:get("qmodem",arg[1],"ports")
dns_list = s:taboption("general", DynamicList, "dns_list", translate("DNS"))
dns_list.description = translate("If the DNS server is not set, it will use the DNS server leased by the operator.")
if valid_at_ports == nil then if valid_at_ports == nil then
valid_at_ports = {} valid_at_ports = {}
end end
@ -53,6 +57,14 @@ end
at_port.placeholder = translate("Not null") at_port.placeholder = translate("Not null")
at_port.rmempty = false at_port.rmempty = false
bridge_mode = s:taboption("advanced", Flag, "en_bridge", translate("Bridge Mode"))
bridge_mode.description = translate("Caution: Only avalible for quectel sdx 5G Modem.")
bridge_mode.default = "0"
do_not_add_dns = s:taboption("advanced", Flag, "do_not_add_dns", translate("Do Not modify resolv.conf"))
do_not_add_dns.description = translate("quectel-CM will append the DNS server to the resolv.conf file by default.if you do not want to modify the resolv.conf file, please check this option.")
do_not_add_dns.default = "0"
ra_master = s:taboption("advanced", Flag, "ra_master", translate("RA Master")) ra_master = s:taboption("advanced", Flag, "ra_master", translate("RA Master"))
ra_master.description = translate("Caution: Enabling this option will make it the IPV6 RA Master, and only one interface can be configured as such.") ra_master.description = translate("Caution: Enabling this option will make it the IPV6 RA Master, and only one interface can be configured as such.")
ra_master.default = "0" ra_master.default = "0"
@ -146,4 +158,5 @@ metric.description = translate("The metric value is used to determine the priori
metric.default = "10" metric.default = "10"
return m return m

View File

@ -36,6 +36,22 @@ msgstr "AT端口"
msgid "SMS AT Port" msgid "SMS AT Port"
msgstr "短信AT端口" msgstr "短信AT端口"
msgid "If the DNS server is not set, it will use the DNS server leased by the operator."
msgstr "如果未设置DNS服务器会使用运营商提供的DNS服务器"
msgid "Bridge Mode"
msgstr "桥接模式"
msgid "Caution: Only avalible for quectel sdx 5G Modem."
msgstr "警告仅支持移远高通5G模组"
msgid "Do Not modify resolv.conf"
msgstr "不修改resolv.conf"
msgid "quectel-CM will append the DNS server to the resolv.conf file by default.if you do not want to modify the resolv.conf file, please check this option."
msgstr "quectel-CM默认会将DNS服务器追加到resolv.conf文件中如果不想修改resolv.conf文件请勾选此选项"
msgid "RA Master" msgid "RA Master"
msgstr "作为RA上游" msgstr "作为RA上游"

View File

@ -36,6 +36,22 @@ msgstr "AT端口"
msgid "SMS AT Port" msgid "SMS AT Port"
msgstr "短信AT端口" msgstr "短信AT端口"
msgid "If the DNS server is not set, it will use the DNS server leased by the operator."
msgstr "如果未设置DNS服务器会使用运营商提供的DNS服务器"
msgid "Bridge Mode"
msgstr "桥接模式"
msgid "Caution: Only avalible for quectel sdx 5G Modem."
msgstr "警告仅支持移远高通5G模组"
msgid "Do Not modify resolv.conf"
msgstr "不修改resolv.conf"
msgid "quectel-CM will append the DNS server to the resolv.conf file by default.if you do not want to modify the resolv.conf file, please check this option."
msgstr "quectel-CM默认会将DNS服务器追加到resolv.conf文件中如果不想修改resolv.conf文件请勾选此选项"
msgid "RA Master" msgid "RA Master"
msgstr "作为RA上游" msgstr "作为RA上游"

View File

@ -148,6 +148,9 @@ update_config()
config_get define_connect $modem_config define_connect config_get define_connect $modem_config define_connect
config_get ra_master $modem_config ra_master config_get ra_master $modem_config ra_master
config_get extend_prefix $modem_config extend_prefix config_get extend_prefix $modem_config extend_prefix
config_get en_bridge $modem_config en_bridge
config_get do_not_add_dns $modem_config do_not_add_dns
config_get dns_list $modem_config dns_list
config_get global_dial main enable_dial config_get global_dial main enable_dial
# config_get ethernet_5g u$modem_config ethernet 转往口获取命令更新,待测试 # config_get ethernet_5g u$modem_config ethernet 转往口获取命令更新,待测试
config_foreach get_associate_ethernet_by_path modem-slot config_foreach get_associate_ethernet_by_path modem-slot
@ -377,9 +380,11 @@ set_if()
uci set network.${interface_name}.peerdns='0' uci set network.${interface_name}.peerdns='0'
uci set network.${interface_name}.metric="${metric}" uci set network.${interface_name}.metric="${metric}"
uci del network.${interface_name}.dns uci del network.${interface_name}.dns
uci add_list network.${interface_name}.dns='114.114.114.114' if [ -n "$dns_list" ];then
uci add_list network.${interface_name}.dns='119.29.29.29' for dns in $dns_list;do
uci add_list network.${interface_name}.dns='8.8.8.8' uci add_list network.${interface_name}.dns="${dns}"
done
fi
local num=$(uci show firewall | grep "name='wan'" | wc -l) local num=$(uci show firewall | grep "name='wan'" | wc -l)
local wwan_num=$(uci -q get firewall.@zone[$num].network | grep -w "${interface_name}" | wc -l) local wwan_num=$(uci -q get firewall.@zone[$num].network | grep -w "${interface_name}" | wc -l)
if [ "$wwan_num" = "0" ]; then if [ "$wwan_num" = "0" ]; then
@ -539,7 +544,7 @@ flush_ip_cb()
dial(){ dial(){
update_config update_config
m_debug "modem_path=$modem_path,driver=$driver,interface=$interface_name,at_port=$at_port,using_sim_slot:$sim_slot" m_debug "modem_path=$modem_path,driver=$driver,interface=$interface_name,at_port=$at_port,using_sim_slot:$sim_slot,dns_list:$dns_list"
while [ "$dial_prepare" != 1 ] ; do while [ "$dial_prepare" != 1 ] ; do
sleep 5 sleep 5
update_config update_config
@ -673,13 +678,18 @@ qmi_dial()
if [[ "$modem_netcard" = "rmnet"* ]];then if [[ "$modem_netcard" = "rmnet"* ]];then
qmi_if=$(echo "$modem_netcard" | cut -d. -f1) qmi_if=$(echo "$modem_netcard" | cut -d. -f1)
fi fi
cmd_line="${cmd_line} -i ${qmi_if}" cmd_line="${cmd_line} -i ${qmi_if}"
fi fi
if [ "$en_bridge" = "1" ];then
cmd_line="${cmd_line} -b"
fi
if [ "$do_not_add_dns" = "1" ];then
cmd_line="${cmd_line} -D"
fi
if [ -e "/usr/bin/quectel-CM-M" ];then if [ -e "/usr/bin/quectel-CM-M" ];then
[ -n "$metric" ] && cmd_line="$cmd_line -d -M $metric" [ -n "$metric" ] && cmd_line="$cmd_line -d -M $metric"
else else
[ -n "$metric" ] && cmd_line="$cmd_line -d" [ -n "$metric" ] && cmd_line="$cmd_line"
fi fi
cmd_line="$cmd_line -f $log_file" cmd_line="$cmd_line -f $log_file"
m_debug "dialing $cmd_line" m_debug "dialing $cmd_line"