更新
This commit is contained in:
parent
8948cd5bd6
commit
1ad23e0836
@ -11,11 +11,23 @@ PKG_LICENSE:=GPLv3
|
|||||||
PKG_LINCESE_FILES:=LICENSE
|
PKG_LINCESE_FILES:=LICENSE
|
||||||
PKF_MAINTAINER:=Siriling <siriling@qq.com>
|
PKF_MAINTAINER:=Siriling <siriling@qq.com>
|
||||||
LUCI_DEPENDS:=+luci-compat \
|
LUCI_DEPENDS:=+luci-compat \
|
||||||
|
+kmod-usb2 +kmod-usb3 \
|
||||||
|
+kmod-usb-net-sierrawireless +kmod-usb-ohci \
|
||||||
|
+kmod-usb-serial-option +kmod-usb-serial +kmod-usb-serial-qualcomm \
|
||||||
|
+kmod-usb-net +kmod-usb-acm \
|
||||||
|
+kmod-usb-wdm +kmod-usb-net-qmi-wwan \
|
||||||
|
+kmod-usb-net-cdc-ether \
|
||||||
|
+kmod-usb-net-cdc-mbim \
|
||||||
|
+kmod-usb-net-rndis \
|
||||||
|
+kmod-usb-net-cdc-ncm +kmod-usb-net-huawei-cdc-ncm \
|
||||||
+usbutils \
|
+usbutils \
|
||||||
|
+kmod-pcie_mhi \
|
||||||
+pciutils \
|
+pciutils \
|
||||||
+quectel-CM-5G \
|
+quectel-CM-5G \
|
||||||
|
+modemmanager \
|
||||||
|
+luci-proto-modemmanager \
|
||||||
+sms-tool \
|
+sms-tool \
|
||||||
+jq \
|
+jq
|
||||||
|
|
||||||
define Package/luci-app-modem/conffiles
|
define Package/luci-app-modem/conffiles
|
||||||
/etc/config/modem
|
/etc/config/modem
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
| -------- | -------------------------------------------------- | -------- | ------------ | ---------------------------- |
|
| -------- | -------------------------------------------------- | -------- | ------------ | ---------------------------- |
|
||||||
| 移远通信 | RG200U-CN(DONGLE版) | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
| 移远通信 | RG200U-CN(DONGLE版) | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||||
| 移远通信 | RM500U-CN | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
| 移远通信 | RM500U-CN | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||||
|
| 移远通信 | RM500U-EA | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||||
|
| 移远通信 | RM500U-CNV | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||||
| 移远通信 | RM500Q-CN | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
| 移远通信 | RM500Q-CN | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
| 移远通信 | RM500Q-AE | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
| 移远通信 | RM500Q-AE | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
| 移远通信 | RM500Q-GL | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
| 移远通信 | RM500Q-GL | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
@ -39,13 +41,13 @@
|
|||||||
| 移远通信 | RM500Q-GL | 高通 | PCIE | RMNET,MBIM |
|
| 移远通信 | RM500Q-GL | 高通 | PCIE | RMNET,MBIM |
|
||||||
| 移远通信 | RG500Q-EA | 高通 | PCIE | RMNET,MBIM |
|
| 移远通信 | RG500Q-EA | 高通 | PCIE | RMNET,MBIM |
|
||||||
| 移远通信 | RM502Q-GL | 高通 | PCIE | RMNET,MBIM |
|
| 移远通信 | RM502Q-GL | 高通 | PCIE | RMNET,MBIM |
|
||||||
| 移远通信 | RM520Q-GL | 高通 | PCIE | RMNET,MBIM |
|
| 移远通信 | RM520N-GL | 高通 | PCIE | RMNET,MBIM |
|
||||||
| 移远通信 | RG520N-EU | 高通 | PCIE | RMNET,MBIM |
|
| 移远通信 | RG520N-EU | 高通 | PCIE | RMNET,MBIM |
|
||||||
| 广和通 | FM650-CN | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
| 广和通 | FM650-CN | 紫光展锐 | USB | ECM,MBIM,RNDIS,NCM |
|
||||||
| 广和通 | FM350-GL | 联发科 | USB | RNDIS |
|
| 广和通 | FM350-GL | 联发科 | USB | RNDIS |
|
||||||
| 广和通 | FM150-AE-01,FM150-AE-11,FM150-AE-21,FM150-NA-01 | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
| 广和通 | FM150-AE-01,FM150-AE-11,FM150-AE-21,FM150-NA-01 | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
| 广和通 | FM350-GL | 联发科 | PCIE | MBIM |
|
| 广和通 | FM350-GL | 联发科 | PCIE | MBIM |
|
||||||
| 广和通 | FM150-AE-00,FM150-AE-10,FM150-AE-20,FM150-NA-00 | 高通 | PCIE | QMI |
|
| 广和通 | FM150-AE-00,FM150-AE-10,FM150-AE-20,FM150-NA-00 | 高通 | PCIE | QMI |
|
||||||
| 美格智能 | SRM815 | 高通 | USB | ECM,MBIM,RNDIS,NCM |
|
| 美格智能 | SRM815 | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
| 美格智能 | SRM825 | 高通 | USB | ECM,MBIM,RNDIS,NCM |
|
| 美格智能 | SRM825 | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
| 美格智能 | SRM825N | 高通 | USB | ECM,MBIM,RNDIS,NCM |
|
| 美格智能 | SRM825N | 高通 | USB | RMNET,ECM,MBIM,RNDIS,NCM |
|
||||||
|
@ -869,8 +869,10 @@ function getPluginInfo()
|
|||||||
|
|
||||||
-- 获取拨号工具信息
|
-- 获取拨号工具信息
|
||||||
local dial_tool_info={}
|
local dial_tool_info={}
|
||||||
dial_tool_info["quectel-CM-5G"]="Not installed"
|
|
||||||
dial_tool_info["modemmanager"]="Not installed"
|
dial_tool_info["modemmanager"]="Not installed"
|
||||||
|
dial_tool_info["quectel-CM-5G"]="Not installed"
|
||||||
|
dial_tool_info["fibocom-dial"]="Not installed"
|
||||||
|
dial_tool_info["meig-cm"]="Not installed"
|
||||||
setPluginVersionInfo(dial_tool_info)
|
setPluginVersionInfo(dial_tool_info)
|
||||||
|
|
||||||
-- 获取通用驱动信息
|
-- 获取通用驱动信息
|
||||||
@ -882,21 +884,28 @@ function getPluginInfo()
|
|||||||
|
|
||||||
-- 获取模组USB驱动信息
|
-- 获取模组USB驱动信息
|
||||||
local usb_driver_info={}
|
local usb_driver_info={}
|
||||||
|
--通用驱动
|
||||||
usb_driver_info["qmi_wwan.ko"]="Not loaded"
|
usb_driver_info["qmi_wwan.ko"]="Not loaded"
|
||||||
usb_driver_info["GobiNet.ko"]="Not loaded"
|
usb_driver_info["GobiNet.ko"]="Not loaded"
|
||||||
usb_driver_info["cdc_ether.ko"]="Not loaded"
|
usb_driver_info["cdc_ether.ko"]="Not loaded"
|
||||||
usb_driver_info["cdc_mbim.ko"]="Not loaded"
|
usb_driver_info["cdc_mbim.ko"]="Not loaded"
|
||||||
usb_driver_info["rndis_host.ko"]="Not loaded"
|
usb_driver_info["rndis_host.ko"]="Not loaded"
|
||||||
usb_driver_info["cdc_ncm.ko"]="Not loaded"
|
usb_driver_info["cdc_ncm.ko"]="Not loaded"
|
||||||
|
--制造商私有驱动
|
||||||
|
usb_driver_info["qmi_wwan_q.ko"]="Not loaded"
|
||||||
|
usb_driver_info["qmi_wwan_f.ko"]="Not loaded"
|
||||||
|
usb_driver_info["meig_cdc_driver.ko"]="Not loaded"
|
||||||
setModelStatus(usb_driver_info)
|
setModelStatus(usb_driver_info)
|
||||||
|
|
||||||
-- 获取模组PCIE驱动信息
|
-- 获取模组PCIE驱动信息
|
||||||
local pcie_driver_info={}
|
local pcie_driver_info={}
|
||||||
|
--通用驱动
|
||||||
pcie_driver_info["mhi_net.ko"]="Not loaded"
|
pcie_driver_info["mhi_net.ko"]="Not loaded"
|
||||||
pcie_driver_info["qrtr_mhi.ko"]="Not loaded"
|
pcie_driver_info["qrtr_mhi.ko"]="Not loaded"
|
||||||
pcie_driver_info["mhi_pci_generic.ko"]="Not loaded"
|
pcie_driver_info["mhi_pci_generic.ko"]="Not loaded"
|
||||||
pcie_driver_info["mhi_wwan_mbim.ko"]="Not loaded"
|
pcie_driver_info["mhi_wwan_mbim.ko"]="Not loaded"
|
||||||
pcie_driver_info["mhi_wwan_ctrl.ko"]="Not loaded"
|
pcie_driver_info["mhi_wwan_ctrl.ko"]="Not loaded"
|
||||||
|
--制造商私有驱动
|
||||||
pcie_driver_info["pcie_mhi.ko"]="Not loaded"
|
pcie_driver_info["pcie_mhi.ko"]="Not loaded"
|
||||||
pcie_driver_info["mtk_pcie_wwan_m80.ko"]="Not loaded"
|
pcie_driver_info["mtk_pcie_wwan_m80.ko"]="Not loaded"
|
||||||
setModelStatus(pcie_driver_info)
|
setModelStatus(pcie_driver_info)
|
||||||
|
@ -63,7 +63,7 @@ o = s:option(DummyValue, "network", translate("Network"))
|
|||||||
o = s:option(DummyValue, "name", translate("Modem Name"))
|
o = s:option(DummyValue, "name", translate("Modem Name"))
|
||||||
o.cfgvalue = function(t, n)
|
o.cfgvalue = function(t, n)
|
||||||
local name = (Value.cfgvalue(t, n) or "")
|
local name = (Value.cfgvalue(t, n) or "")
|
||||||
return name:upper()
|
return translate(name:upper())
|
||||||
end
|
end
|
||||||
|
|
||||||
-- AT串口
|
-- AT串口
|
||||||
|
@ -509,6 +509,9 @@
|
|||||||
document.getElementById('mode_option').innerHTML=mode_option_view;
|
document.getElementById('mode_option').innerHTML=mode_option_view;
|
||||||
|
|
||||||
//设置拨号模式选项
|
//设置拨号模式选项
|
||||||
|
if (current_mode=="gobinet") {
|
||||||
|
current_mode="qmi"
|
||||||
|
}
|
||||||
element=document.getElementById('mode_option_'+current_mode).checked=true;
|
element=document.getElementById('mode_option_'+current_mode).checked=true;
|
||||||
|
|
||||||
//设置第一次获取数据标志
|
//设置第一次获取数据标志
|
||||||
|
@ -118,7 +118,18 @@
|
|||||||
<h3><%:Dial Tool Info%></h3>
|
<h3><%:Dial Tool Info%></h3>
|
||||||
<div class="cbi-section-node">
|
<div class="cbi-section-node">
|
||||||
<div class="cbi-value">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:quectel-CM Version%></label>
|
<label class="cbi-value-title">modemmanager <%:Version%></label>
|
||||||
|
<div class="cbi-value-field">
|
||||||
|
<div class="version">
|
||||||
|
<strong id="modemmanager_version"></strong>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="cbi-value-description">
|
||||||
|
<%:Select a modem for debugging%>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cbi-value">
|
||||||
|
<label class="cbi-value-title">quectel-CM <%:Version%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<div class="version">
|
<div class="version">
|
||||||
<strong id="quectel-CM-5G_version"></strong>
|
<strong id="quectel-CM-5G_version"></strong>
|
||||||
@ -129,10 +140,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cbi-value cbi-value-last">
|
<div class="cbi-value cbi-value-last">
|
||||||
<label class="cbi-value-title"><%:modemmanager Version%></label>
|
<label class="cbi-value-title">fibocom-dial <%:Version%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<div class="version">
|
<div class="version">
|
||||||
<strong id="modemmanager_version"></strong>
|
<strong id="fibocom-dial_version"></strong>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="cbi-value-description">
|
||||||
|
<%:Select a modem for debugging%>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cbi-value cbi-value-last">
|
||||||
|
<label class="cbi-value-title">meig-cm <%:Version%></label>
|
||||||
|
<div class="cbi-value-field">
|
||||||
|
<div class="version">
|
||||||
|
<strong id="meig-cm_version"></strong>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="cbi-value-description">
|
<!-- <div class="cbi-value-description">
|
||||||
<%:Select a modem for debugging%>
|
<%:Select a modem for debugging%>
|
||||||
@ -182,39 +204,64 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr class="tr cbi-section-table-titles anonymous">
|
<tr class="tr cbi-section-table-titles anonymous">
|
||||||
<th class="th cbi-section-table-cell"><%:Driver Type%></th>
|
<th class="th cbi-section-table-cell"><%:Driver Type%></th>
|
||||||
|
<th class="th cbi-section-table-cell"><%:Mode%></th>
|
||||||
<th class="th cbi-section-table-cell"><%:Kernel Model%></th>
|
<th class="th cbi-section-table-cell"><%:Kernel Model%></th>
|
||||||
<th class="th cbi-section-table-cell"><%:Status%></th>
|
<th class="th cbi-section-table-cell"><%:Status%></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
||||||
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="qmi"><%:QMI%></td>
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="qmi_wwan"><%:General%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>" id="qmi"><%:QMI%></td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="qmi_kernel_model_name">qmi_wwan.ko</td>
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="qmi_kernel_model_name">qmi_wwan.ko</td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Status%>" id="qmi_wwan_status">-</td>
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="qmi_wwan_status">-</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
||||||
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="gobinet"><%:GobiNet%></td>
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="gobinet"><%:General%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>" id="gobinet"><%:GobiNet%></td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="gobinet_kernel_model_name">GobiNet.ko</td>
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="gobinet_kernel_model_name">GobiNet.ko</td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Status%>" id="gobinet_status">-</td>
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="gobinet_status">-</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
||||||
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="ecm"><%:ECM%></td>
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="cdc_ether"><%:General%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>" id="ecm"><%:ECM%></td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="ecm_kernel_model_name">cdc_ether.ko</td>
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="ecm_kernel_model_name">cdc_ether.ko</td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Status%>" id="cdc_ether_status">-</td>
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="cdc_ether_status">-</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
||||||
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="mbim"><%:MBIM%></td>
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="cdc_mbim"><%:General%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>" id="mbim"><%:MBIM%></td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="mbim_kernel_model_name">cdc_mbim.ko</td>
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="mbim_kernel_model_name">cdc_mbim.ko</td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Status%>" id="cdc_mbim_status">-</td>
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="cdc_mbim_status">-</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
||||||
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="rndis"><%:RNDIS%></td>
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="rndis_host"><%:General%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>" id="rndis"><%:RNDIS%></td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="rndis_kernel_model_name">rndis_host.ko</td>
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="rndis_kernel_model_name">rndis_host.ko</td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Status%>" id="rndis_host_status">-</td>
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="rndis_host_status">-</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
||||||
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="ecm"><%:NCM%></td>
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>" id="cdc_ncm"><%:General%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>" id="ecm"><%:NCM%></td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="ncm_kernel_model_name">cdc_ncm.ko</td>
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="ncm_kernel_model_name">cdc_ncm.ko</td>
|
||||||
<td class="td cbi-value-field" data-title="<%:Status%>" id="cdc_ncm_status">-</td>
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="cdc_ncm_status">-</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>"><%:Private (Quectel)%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>"><%:QMI%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="qmi_wwan_q_kernel_model_name">qmi_wwan_q.ko</td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="qmi_wwan_q_status">-</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="tr cbi-section-table-row cbi-rowstyle-2">
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>"><%:Private (Fibocom)%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>"><%:QMI%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="qmi_wwan_f_kernel_model_name">qmi_wwan_f.ko</td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="qmi_wwan_f_status">-</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="tr cbi-section-table-row cbi-rowstyle-1">
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Driver Type%>"><%:Private (Meig)%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Mode%>"><%:NCM%></td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Kernel Model%>" id="meig_cdc_driver_kernel_model_name">meig_cdc_driver.ko</td>
|
||||||
|
<td class="td cbi-value-field" data-title="<%:Status%>" id="meig_cdc_driver_status">-</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -604,11 +604,8 @@ msgstr "插件版本"
|
|||||||
msgid "Dial Tool Info"
|
msgid "Dial Tool Info"
|
||||||
msgstr "拨号工具信息"
|
msgstr "拨号工具信息"
|
||||||
|
|
||||||
msgid "quectel-CM Version"
|
msgid "Version"
|
||||||
msgstr "quectel-CM 版本"
|
msgstr "版本"
|
||||||
|
|
||||||
msgid "modemmanager Version"
|
|
||||||
msgstr "modemmanager 版本"
|
|
||||||
|
|
||||||
msgid "Not installed"
|
msgid "Not installed"
|
||||||
msgstr "未安装"
|
msgstr "未安装"
|
||||||
@ -644,4 +641,13 @@ msgid "General"
|
|||||||
msgstr "通用"
|
msgstr "通用"
|
||||||
|
|
||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "私有"
|
msgstr "私有"
|
||||||
|
|
||||||
|
msgid "Private (Quectel)"
|
||||||
|
msgstr "私有(移远)"
|
||||||
|
|
||||||
|
msgid "Private (Fibocom)"
|
||||||
|
msgstr "私有(广和通)"
|
||||||
|
|
||||||
|
msgid "Private (Meig)"
|
||||||
|
msgstr "私有(美格)"
|
@ -604,11 +604,8 @@ msgstr "插件版本"
|
|||||||
msgid "Dial Tool Info"
|
msgid "Dial Tool Info"
|
||||||
msgstr "拨号工具信息"
|
msgstr "拨号工具信息"
|
||||||
|
|
||||||
msgid "quectel-CM Version"
|
msgid "Version"
|
||||||
msgstr "quectel-CM 版本"
|
msgstr "版本"
|
||||||
|
|
||||||
msgid "modemmanager Version"
|
|
||||||
msgstr "modemmanager 版本"
|
|
||||||
|
|
||||||
msgid "Not installed"
|
msgid "Not installed"
|
||||||
msgstr "未安装"
|
msgstr "未安装"
|
||||||
@ -644,4 +641,13 @@ msgid "General"
|
|||||||
msgstr "通用"
|
msgstr "通用"
|
||||||
|
|
||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "私有"
|
msgstr "私有"
|
||||||
|
|
||||||
|
msgid "Private (Quectel)"
|
||||||
|
msgstr "私有(移远)"
|
||||||
|
|
||||||
|
msgid "Private (Fibocom)"
|
||||||
|
msgstr "私有(广和通)"
|
||||||
|
|
||||||
|
msgid "Private (Meig)"
|
||||||
|
msgstr "私有(美格)"
|
@ -324,11 +324,19 @@ qmi()
|
|||||||
|
|
||||||
gobinet()
|
gobinet()
|
||||||
{
|
{
|
||||||
|
#获取制造商
|
||||||
|
local manufacturer=$(uci -q get modem.modem${modem_no}.manufacturer)
|
||||||
|
|
||||||
#拨号
|
#拨号
|
||||||
procd_open_instance
|
case $manufacturer in
|
||||||
procd_set_param command sh ${SCRIPT_DIR}/modem_network_task.sh "${id}" "${modem_no}" "gobinet"
|
"quectel") qmi ;;
|
||||||
procd_set_param respawn
|
*)
|
||||||
procd_close_instance
|
procd_open_instance
|
||||||
|
procd_set_param command sh ${SCRIPT_DIR}/modem_network_task.sh "${id}" "${modem_no}" "gobinet"
|
||||||
|
procd_set_param respawn
|
||||||
|
procd_close_instance
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
ecm()
|
ecm()
|
||||||
@ -399,11 +407,11 @@ stop_gobinet()
|
|||||||
#停止拨号
|
#停止拨号
|
||||||
local at_command
|
local at_command
|
||||||
if [ "$manufacturer" = "quectel" ]; then
|
if [ "$manufacturer" = "quectel" ]; then
|
||||||
at_command='ATI'
|
stop_qmi
|
||||||
elif [ "$manufacturer" = "fibocom" ]; then
|
elif [ "$manufacturer" = "fibocom" ]; then
|
||||||
at_command='AT$QCRMCALL=0,1'
|
at_command='AT$QCRMCALL=0,1'
|
||||||
elif [ "$manufacturer" = "meig" ]; then
|
elif [ "$manufacturer" = "meig" ]; then
|
||||||
at_command='ATI'
|
at_command="AT$QCRMCALL=0,1,${define_connect},2,1"
|
||||||
else
|
else
|
||||||
at_command='ATI'
|
at_command='ATI'
|
||||||
fi
|
fi
|
||||||
@ -431,7 +439,7 @@ stop_ecm()
|
|||||||
at_command="AT+GTRNDIS=0,${define_connect}"
|
at_command="AT+GTRNDIS=0,${define_connect}"
|
||||||
fi
|
fi
|
||||||
elif [ "$manufacturer" = "meig" ]; then
|
elif [ "$manufacturer" = "meig" ]; then
|
||||||
at_command="AT$QCRMCALL=0,1,${define_connect},2,1"
|
at_command="AT^NDISDUP=${define_connect},0"
|
||||||
else
|
else
|
||||||
at_command='ATI'
|
at_command='ATI'
|
||||||
fi
|
fi
|
||||||
@ -620,13 +628,22 @@ dial()
|
|||||||
[ -z "${modem_no}" ] && return 0
|
[ -z "${modem_no}" ] && return 0
|
||||||
|
|
||||||
#获取模组的拨号模式
|
#获取模组的拨号模式
|
||||||
|
local time=0
|
||||||
local mode
|
local mode
|
||||||
while true; do
|
while [ $time -lt 10 ]; do
|
||||||
mode=$(get_mode ${modem_no})
|
mode=$(get_mode ${modem_no})
|
||||||
[ -n "$mode" ] && [ "$mode" != "unknown" ] && break
|
[ -n "$mode" ] && [ "$mode" != "unknown" ] && break
|
||||||
sleep 5s
|
sleep 5s
|
||||||
|
time=$((time+1))
|
||||||
done
|
done
|
||||||
|
|
||||||
|
#获取不到拨号模式
|
||||||
|
[ -z "$mode" ] || [ "$mode" = "unknown" ] && {
|
||||||
|
uci set modem.$1.enable=0
|
||||||
|
uci commit modem
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
#查看该移动网络是否已经有拨号配置在运行
|
#查看该移动网络是否已经有拨号配置在运行
|
||||||
mkdir -m 0755 -p "${MODEM_RUNDIR}"
|
mkdir -m 0755 -p "${MODEM_RUNDIR}"
|
||||||
if [ ! -f "${MODEM_RUN_CONFIG}" ] || ! grep -q "${network}" "${MODEM_RUN_CONFIG}"; then
|
if [ ! -f "${MODEM_RUN_CONFIG}" ] || ! grep -q "${network}" "${MODEM_RUN_CONFIG}"; then
|
||||||
@ -636,7 +653,7 @@ dial()
|
|||||||
#获取网络接口
|
#获取网络接口
|
||||||
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
|
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
|
||||||
#设置网络接口
|
#设置网络接口
|
||||||
set_interface "${modem_no}" "$network_interface"
|
set_interface "${modem_no}" "${network_interface}"
|
||||||
else
|
else
|
||||||
local config_id=$(awk -v network="${network}" -F',' '!/^#/ && $0 ~ network { print $2 }' "${MODEM_RUN_CONFIG}")
|
local config_id=$(awk -v network="${network}" -F',' '!/^#/ && $0 ~ network { print $2 }' "${MODEM_RUN_CONFIG}")
|
||||||
#该移动网络已存在,且已有其他拨号配置在运行
|
#该移动网络已存在,且已有其他拨号配置在运行
|
||||||
@ -697,17 +714,10 @@ manual_set_modem_config()
|
|||||||
|
|
||||||
#获取物理路径
|
#获取物理路径
|
||||||
local physical_path=$(m_get_device_physical_path ${network_path})
|
local physical_path=$(m_get_device_physical_path ${network_path})
|
||||||
|
|
||||||
#获取模组数量
|
#获取当前模组数量(下面新增配置会导致多一个,这里需要减掉一个)
|
||||||
local modem_number=$(uci -q get modem.@global[0].modem_number)
|
local modem_number=$(uci -q get modem.@global[0].modem_number)
|
||||||
#模组配置是否存在
|
uci set modem.@global[0].modem_number=$((modem_number-1))
|
||||||
for i in $(seq 0 $((modem_number-1))); do
|
|
||||||
local modem_network=$(uci -q get modem.modem${i}.network)
|
|
||||||
if [ "$modem_network" = "$network" ]; then
|
|
||||||
# 配置已存在,退出
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
#设置模组硬件配置
|
#设置模组硬件配置
|
||||||
m_set_modem_hardware_config "${physical_path}"
|
m_set_modem_hardware_config "${physical_path}"
|
||||||
@ -780,6 +790,9 @@ service_triggers()
|
|||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
|
|
||||||
|
#加载模组配置
|
||||||
|
config_load modem
|
||||||
|
|
||||||
#统计模组数量
|
#统计模组数量
|
||||||
modem_count=0
|
modem_count=0
|
||||||
config_foreach count_modem_number "modem-device"
|
config_foreach count_modem_number "modem-device"
|
||||||
@ -787,8 +800,6 @@ start_service() {
|
|||||||
uci set modem.@global[0].modem_number=${modem_count}
|
uci set modem.@global[0].modem_number=${modem_count}
|
||||||
uci commit modem
|
uci commit modem
|
||||||
|
|
||||||
#加载模组配置
|
|
||||||
config_load modem
|
|
||||||
#手动设置模组信息
|
#手动设置模组信息
|
||||||
config_foreach manual_set_modem_config "modem-device"
|
config_foreach manual_set_modem_config "modem-device"
|
||||||
|
|
||||||
|
@ -109,17 +109,10 @@ fibocom_get_mode()
|
|||||||
case "$platform" in
|
case "$platform" in
|
||||||
"qualcomm")
|
"qualcomm")
|
||||||
case "$mode_num" in
|
case "$mode_num" in
|
||||||
"17") mode="qmi" ;; #-
|
"17"|"31"|"32"|"34") mode="qmi" ;;
|
||||||
"31") mode="qmi" ;; #-
|
|
||||||
"32") mode="qmi" ;;
|
|
||||||
"34") mode="qmi" ;;
|
|
||||||
# "32") mode="gobinet" ;;
|
# "32") mode="gobinet" ;;
|
||||||
"18") mode="ecm" ;;
|
"18"|"23"|"33"|"35") mode="ecm" ;;
|
||||||
"23") mode="ecm" ;; #-
|
"29"|"30") mode="mbim" ;;
|
||||||
"33") mode="ecm" ;; #-
|
|
||||||
"35") mode="ecm" ;; #-
|
|
||||||
"29") mode="mbim" ;; #-
|
|
||||||
"30") mode="mbim" ;;
|
|
||||||
"24") mode="rndis" ;;
|
"24") mode="rndis" ;;
|
||||||
"18") mode="ncm" ;;
|
"18") mode="ncm" ;;
|
||||||
*) mode="$mode_num" ;;
|
*) mode="$mode_num" ;;
|
||||||
@ -127,22 +120,17 @@ fibocom_get_mode()
|
|||||||
;;
|
;;
|
||||||
"unisoc")
|
"unisoc")
|
||||||
case "$mode_num" in
|
case "$mode_num" in
|
||||||
"34") mode="ecm" ;;
|
"34"|"35") mode="ecm" ;;
|
||||||
"35") mode="ecm" ;; #-
|
"40"|"41") mode="mbim" ;;
|
||||||
"40") mode="mbim" ;;
|
"38"|"39") mode="rndis" ;;
|
||||||
"41") mode="mbim" ;; #-
|
"36"|"37") mode="ncm" ;;
|
||||||
"38") mode="rndis" ;;
|
|
||||||
"39") mode="rndis" ;; #-
|
|
||||||
"36") mode="ncm" ;;
|
|
||||||
"37") mode="ncm" ;; #-
|
|
||||||
*) mode="$mode_num" ;;
|
*) mode="$mode_num" ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
"mediatek")
|
"mediatek")
|
||||||
case "$mode_num" in
|
case "$mode_num" in
|
||||||
"29") mode="mbim" ;;
|
"29") mode="mbim" ;;
|
||||||
"40") mode="rndis" ;; #-
|
"40"|"41") mode="rndis" ;;
|
||||||
"41") mode="rndis" ;;
|
|
||||||
*) mode="$mode_num" ;;
|
*) mode="$mode_num" ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
@ -101,12 +101,13 @@ meig_get_mode()
|
|||||||
case "$platform" in
|
case "$platform" in
|
||||||
"qualcomm")
|
"qualcomm")
|
||||||
case "$mode_num" in
|
case "$mode_num" in
|
||||||
"1") mode="qmi" ;; #-
|
"1") mode="qmi" ;;
|
||||||
# "1") mode="gobinet" ;;
|
# "1") mode="gobinet" ;;
|
||||||
"2") mode="ecm" ;;
|
"2") mode="ecm" ;;
|
||||||
"7") mode="mbim" ;;
|
"7") mode="mbim" ;;
|
||||||
"3") mode="rndis" ;;
|
"3") mode="rndis" ;;
|
||||||
"2") mode="ncm" ;;
|
"2") mode="ncm" ;;
|
||||||
|
"8") mode="unknown" ;;
|
||||||
*) mode="$mode_num" ;;
|
*) mode="$mode_num" ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
@ -275,6 +276,8 @@ meig_get_temperature()
|
|||||||
local temperature
|
local temperature
|
||||||
if [ -n "$response" ]; then
|
if [ -n "$response" ]; then
|
||||||
temperature="${response}$(printf "\xc2\xb0")C"
|
temperature="${response}$(printf "\xc2\xb0")C"
|
||||||
|
else
|
||||||
|
temperature="NaN $(printf "\xc2\xb0")C"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "${temperature}"
|
echo "${temperature}"
|
||||||
|
@ -358,7 +358,7 @@ get_modem_info()
|
|||||||
|
|
||||||
#检查模块状态(是否处于重启,重置,串口异常状态)
|
#检查模块状态(是否处于重启,重置,串口异常状态)
|
||||||
local at_command="ATI"
|
local at_command="ATI"
|
||||||
local response=$(sh ${SCRIPT_DIR}/modem_at.sh $at_port $at_command)
|
local response=$(at ${at_port} ${at_command})
|
||||||
if [[ "$response" = *"failed"* ]] || [[ "$response" = *"$at_port"* ]]; then
|
if [[ "$response" = *"failed"* ]] || [[ "$response" = *"$at_port"* ]]; then
|
||||||
debug "模组AT串口未就绪"
|
debug "模组AT串口未就绪"
|
||||||
return
|
return
|
||||||
|
@ -83,11 +83,12 @@ gobinet_dial()
|
|||||||
#拨号
|
#拨号
|
||||||
local at_command
|
local at_command
|
||||||
if [ "$manufacturer" = "quectel" ]; then
|
if [ "$manufacturer" = "quectel" ]; then
|
||||||
|
#移远不走该分支
|
||||||
at_command='ATI'
|
at_command='ATI'
|
||||||
elif [ "$manufacturer" = "fibocom" ]; then
|
elif [ "$manufacturer" = "fibocom" ]; then
|
||||||
at_command='AT$QCRMCALL=1,3'
|
at_command='AT$QCRMCALL=1,3'
|
||||||
elif [ "$manufacturer" = "meig" ]; then
|
elif [ "$manufacturer" = "meig" ]; then
|
||||||
at_command="ATI"
|
at_command="AT$QCRMCALL=1,1,${define_connect},2,1"
|
||||||
else
|
else
|
||||||
at_command='ATI'
|
at_command='ATI'
|
||||||
fi
|
fi
|
||||||
@ -122,7 +123,7 @@ ecm_dial()
|
|||||||
elif [ "$manufacturer" = "fibocom" ]; then
|
elif [ "$manufacturer" = "fibocom" ]; then
|
||||||
at_command="AT+GTRNDIS=1,${define_connect}"
|
at_command="AT+GTRNDIS=1,${define_connect}"
|
||||||
elif [ "$manufacturer" = "meig" ]; then
|
elif [ "$manufacturer" = "meig" ]; then
|
||||||
at_command="AT$QCRMCALL=1,1,${define_connect},2,1"
|
at_command="AT^NDISDUP=${define_connect},1"
|
||||||
else
|
else
|
||||||
at_command='ATI'
|
at_command='ATI'
|
||||||
fi
|
fi
|
||||||
|
@ -17,6 +17,22 @@
|
|||||||
"define_connect":"1",
|
"define_connect":"1",
|
||||||
"modes":["ecm","mbim","rndis","ncm"]
|
"modes":["ecm","mbim","rndis","ncm"]
|
||||||
},
|
},
|
||||||
|
"rm500u-ea":{
|
||||||
|
"manufacturer_id":"2c7c",
|
||||||
|
"manufacturer":"quectel",
|
||||||
|
"platform":"unisoc",
|
||||||
|
"data_interface":"usb",
|
||||||
|
"define_connect":"1",
|
||||||
|
"modes":["ecm","mbim","rndis","ncm"]
|
||||||
|
},
|
||||||
|
"rm500u-cnv":{
|
||||||
|
"manufacturer_id":"2c7c",
|
||||||
|
"manufacturer":"quectel",
|
||||||
|
"platform":"unisoc",
|
||||||
|
"data_interface":"usb",
|
||||||
|
"define_connect":"1",
|
||||||
|
"modes":["ecm","mbim","rndis","ncm"]
|
||||||
|
},
|
||||||
"rm500q-cn":{
|
"rm500q-cn":{
|
||||||
"manufacturer_id":"2c7c",
|
"manufacturer_id":"2c7c",
|
||||||
"manufacturer":"quectel",
|
"manufacturer":"quectel",
|
||||||
@ -119,7 +135,7 @@
|
|||||||
"platform":"qualcomm",
|
"platform":"qualcomm",
|
||||||
"data_interface":"usb",
|
"data_interface":"usb",
|
||||||
"define_connect":"1",
|
"define_connect":"1",
|
||||||
"modes":["ecm","rndis","ncm"]
|
"modes":["qmi","gobinet","ecm","rndis","ncm"]
|
||||||
},
|
},
|
||||||
"srm825":{
|
"srm825":{
|
||||||
"manufacturer_id":"2dee",
|
"manufacturer_id":"2dee",
|
||||||
@ -127,7 +143,7 @@
|
|||||||
"platform":"qualcomm",
|
"platform":"qualcomm",
|
||||||
"data_interface":"usb",
|
"data_interface":"usb",
|
||||||
"define_connect":"1",
|
"define_connect":"1",
|
||||||
"modes":["ecm","rndis","ncm"]
|
"modes":["qmi","gobinet","ecm","rndis","ncm"]
|
||||||
},
|
},
|
||||||
"srm825n":{
|
"srm825n":{
|
||||||
"manufacturer_id":"2dee",
|
"manufacturer_id":"2dee",
|
||||||
@ -135,7 +151,7 @@
|
|||||||
"platform":"qualcomm",
|
"platform":"qualcomm",
|
||||||
"data_interface":"usb",
|
"data_interface":"usb",
|
||||||
"define_connect":"1",
|
"define_connect":"1",
|
||||||
"modes":["ecm","rndis","ncm"]
|
"modes":["qmi","gobinet","ecm","rndis","ncm"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pcie":{
|
"pcie":{
|
||||||
@ -167,7 +183,7 @@
|
|||||||
"define_connect":"1",
|
"define_connect":"1",
|
||||||
"modes":["qmi","gobinet","mbim"]
|
"modes":["qmi","gobinet","mbim"]
|
||||||
},
|
},
|
||||||
"rm520q-gl":{
|
"rm520n-gl":{
|
||||||
"manufacturer":"quectel",
|
"manufacturer":"quectel",
|
||||||
"platform":"qualcomm",
|
"platform":"qualcomm",
|
||||||
"data_interface":"pcie",
|
"data_interface":"pcie",
|
||||||
|
@ -62,22 +62,28 @@ m_report_event()
|
|||||||
#模组预设
|
#模组预设
|
||||||
# $1:AT串口
|
# $1:AT串口
|
||||||
# $2:连接定义
|
# $2:连接定义
|
||||||
|
# $3:制造商
|
||||||
m_modem_presets()
|
m_modem_presets()
|
||||||
{
|
{
|
||||||
local at_port="$1"
|
local at_port="$1"
|
||||||
local define_connect="$2"
|
local define_connect="$2"
|
||||||
|
local manufacturer="$3"
|
||||||
|
|
||||||
#运营商选择设置
|
#运营商选择设置
|
||||||
local at_command='AT+COPS=0,0'
|
local at_command='AT+COPS=0,0'
|
||||||
at "${at_port}" "${at_command}"
|
at "${at_port}" "${at_command}"
|
||||||
|
|
||||||
#设置IPv6地址格式
|
|
||||||
at_command='AT+CGPIAF=1,0,0,0'
|
|
||||||
at "${at_port}" "${at_command}"
|
|
||||||
|
|
||||||
#PDP设置
|
#PDP设置
|
||||||
at_command="AT+CGDCONT=${define_connect},\"IPV4V6\",\"\""
|
at_command="AT+CGDCONT=${define_connect},\"IPV4V6\",\"\""
|
||||||
at "${at_port}" "${at_command}"
|
at "${at_port}" "${at_command}"
|
||||||
|
|
||||||
|
#制造商私有预设
|
||||||
|
case $manufacturer in
|
||||||
|
"quectel") quectel_presets ;;
|
||||||
|
"fibocom") fibocom_presets ;;
|
||||||
|
"meig") meig_presets ;;
|
||||||
|
"simcom") simcom_presets ;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
#获取设备物理路径
|
#获取设备物理路径
|
||||||
@ -364,9 +370,9 @@ handle_special_modem_name()
|
|||||||
modem_name="fm350-gl"
|
modem_name="fm350-gl"
|
||||||
}
|
}
|
||||||
|
|
||||||
#RM500U-CNV
|
#SRM825-PV
|
||||||
[[ "$modem_name" = *"rm500u-cn"* ]] && {
|
[[ "$modem_name" = *"srm825-pv"* ]] && {
|
||||||
modem_name="rm500u-cn"
|
modem_name="srm825"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "$modem_name"
|
echo "$modem_name"
|
||||||
@ -436,7 +442,7 @@ retry_set_modem_config()
|
|||||||
done
|
done
|
||||||
|
|
||||||
#设置模组预设
|
#设置模组预设
|
||||||
m_modem_presets "${at_port}" "${define_connect}"
|
m_modem_presets "${at_port}" "${define_connect}" "${manufacturer}"
|
||||||
|
|
||||||
#打印日志
|
#打印日志
|
||||||
m_log "info" "Successfully retrying to configure the Modem ${modem_name}"
|
m_log "info" "Successfully retrying to configure the Modem ${modem_name}"
|
||||||
@ -509,7 +515,7 @@ m_set_modem_config()
|
|||||||
done
|
done
|
||||||
|
|
||||||
#设置模组预设
|
#设置模组预设
|
||||||
m_modem_presets "${at_port}" "${define_connect}"
|
m_modem_presets "${at_port}" "${define_connect}" "${manufacturer}"
|
||||||
|
|
||||||
#打印日志
|
#打印日志
|
||||||
m_log "info" "${log_message}"
|
m_log "info" "${log_message}"
|
||||||
@ -532,7 +538,7 @@ m_set_usb_at_port()
|
|||||||
|
|
||||||
local modem_at_port=$(uci -q get modem.modem${modem_no}.at_port)
|
local modem_at_port=$(uci -q get modem.modem${modem_no}.at_port)
|
||||||
[ -z "$modem_at_port" ] && {
|
[ -z "$modem_at_port" ] && {
|
||||||
local response="$(sh ${SCRIPT_DIR}/modem_at.sh ${port} 'ATI')"
|
local response="$(at ${port} 'ATI')"
|
||||||
local str1="No" #No response from modem.
|
local str1="No" #No response from modem.
|
||||||
local str2="failed"
|
local str2="failed"
|
||||||
if [[ "$response" != *"$str1"* ]] && [[ "$response" != *"$str2"* ]] && [ -n "$response" ]; then
|
if [[ "$response" != *"$str1"* ]] && [[ "$response" != *"$str2"* ]] && [ -n "$response" ]; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user