Merge "[Bugfix][R306BJ][bug-view-2160]When WiFi is hidden in the Quick Settings, the first time an auxiliary device attempts to connect to the R306 WiFi, it prompts a password error."
diff --git a/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 7e870db..1656a7f 100755
--- a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R306_MTN/BJMTN/ap/app/zte_webui/subpg/ota_update.html b/lynq/R306_MTN/BJMTN/ap/app/zte_webui/subpg/ota_update.html
new file mode 100755
index 0000000..f26fce5
--- /dev/null
+++ b/lynq/R306_MTN/BJMTN/ap/app/zte_webui/subpg/ota_update.html
@@ -0,0 +1,244 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='advanced_settings'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li data-bind="visible: isDataCard"><a href="#demilitarized_zone" data-trans="dmz_setting"></a></li>
+ <li data-bind="visible: isDataCard"><a href="#pin_mode" data-trans="pin_management"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#wlan_sleep" data-trans="sleep_mode"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#route_set" data-trans="router_setting"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#filter_main" data-trans="firewall"></a></li>
+ <li data-bind="visible:hasUpdateCheck" class="active"><a href="#fota" data-trans="update_settings"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->
+ <li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#more" data-trans="others"></a></li>
+ <li><a data-trans="tr069" href="#tr069"></a></li>
+ </ul>
+ </div>
+ </div>
+
+<div class="col-xs-10">
+<form id="frmOTAUpdate" role="form" data-bind="visible: updateType() == 'mifi_fota'">
+ <!-- <h3 data-trans="ota_update_manual" class="form-title"></h3 -->
+ <div class="form-body margin-top-20">
+ <!--div class="content">
+ <div class="row">
+ <div class="col-xs-6">
+ <span data-trans="ota_last_update_check"></span>
+ <span data-bind="text: lastCheckTime"></span>
+ </div>
+ <div class="col-xs-6 align-right">
+ <input id="btnCheckNewVersion" data-bind="click:checkNewVersion" data-trans="ota_check_new_version" type="button" class="btn btn-primary margin-right-20"/>
+ </div>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="ota_check_new_version_desc"></li>
+ </ul>
+ </div>
+ </div-->
+
+ <!--div class="form-title" data-trans='ota_update_manual'></div>
+ <div class="content">
+ <span class="paddingleft25" data-trans="ota_check_new_version_desc"></span>
+ </div>
+ <div class="form-buttons">
+ <input id="btnCheckNewVersion" type="button" class="btn btn-primary" data-trans="ota_check_new_version"
+ data-bind="click:checkNewVersion"/>
+ </div>
+ <div class="form-title" data-trans='ota_update_setting'></div-->
+ <div class="content">
+ <!--
+ <h3 data-trans="ota_update_setting" class="form-title"></h3>
+ <div class="row">
+ <label data-trans="ota_auto_update_switch" class="col-xs-4 side-right"></label>
+ <div class="col-xs-8">
+ <div class="row form-group">
+ <div class="col-xs-3">
+ <input id="auto_update_enable" name="updateMode" data-bind="checked: updateMode" type="radio" value="1"/>
+ <label data-trans="enable" for="auto_update_enable"></label>
+ </div>
+ <div class="col-xs-3">
+ <input id="auto_update_disable" name="updateMode" data-bind="checked: updateMode" type="radio" value="0"/>
+ <label data-trans="disable" for="auto_update_disable"></label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: false">
+ <label data-trans="ota_update_interval_day" for="selInterValDay" class="col-xs-4 side-right"></label>
+
+ <div class="col-xs-3">
+ <select id="selInterValDay" name="selInterValDay" data-bind="value: updateIntervalDay" class="form-control">
+ <option data-trans="ota_update_every_day" value="1"></option>
+ <option data-trans="ota_update_15_day" value="15"></option>
+ <option data-trans="ota_update_30_day" value="30"></option>
+ </select>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: updateMode()=='1'">
+ <div class="col-xs-12 padding-top-10">
+ <p class="checkbox" data-bind="css:{'checkbox_selected': allowRoamingUpdate()=='1'}, click: clickAllowRoamingUpdate"
+ manualControl="true">
+ <input id="chkUpdateRoamPermission" name="chkUpdateRoamPermission" data-bind="checked:allowRoamingUpdate()=='1'" type="checkbox" value="1"/>
+ </p>
+ <label data-trans="ota_update_roaming_remind" class="update_inline floatleft"></label>
+ </div>
+ </div>
+
+ <div class="form-buttons">
+ <input id="btnApply" data-trans="apply" type="submit" formmethod="post" class="btn btn-primary"/>
+ </div-->
+
+ <!--
+ <div class="row form-group">
+ <label data-trans="ota_manual_upgrade_url" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="upgrade_url" type="text" size="128" data-bind="value:updateURL" class="required form-control">
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input id="btnOtaUpgApply" data-bind="click:ota_upgrade_apply" data-trans="download" type="submit" formmethod="post" class="btn btn-primary"/>
+ </div-->
+
+ <!--div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="fota_note1"></li>
+ </ul>
+ </div-->
+ </div>
+
+ </div>
+</form>
+<!--form id="frmNativeUpdate" data-bind="visible: updateType() == 'mifi_local'" method="post" name="UploadFile" id="UploadFile" action="../../cgi-bin/upload.cgi" enctype="multipart/form-data" target="ifr">
+ <div class="form-body">
+ <h3 class="form-title" data-trans="software_upload"></h3>
+ <table style="width:100%">
+ <input type="text" id="upfile" size="20" style="height:35px; width:200px; display:inline-block;" readonly />
+ <input type="button" class="btn btn-primary" data-trans='browse_btn' style="height:34px; width:81px;" />
+ <input id="fileName" class="form-control" type="file" name="fileName" style="margin-left: 15px;background-color:#E3E3E3;opacity:0;filter:alpha(opacity=0);position:absolute;left:0px; width:280px; display:inline-block;" />
+ <input class="btn btn-primary" id="fileuploadsubmit" type="submit" formmethod="post" data-trans="ota_title" style="float:right; margin-top:8px; margin-right: 20px;" />
+ </table>
+ <iframe name="ifr" id="ifr" style="display:none;"></iframe>
+ </div>
+</form-->
+
+
+<!-- <br><br> -->
+<form id="uploadForm" action="../../cgi-bin/upload/upload.cgi" method="post" enctype="multipart/form-data">
+ <h3 class="form-title" data-trans="local_upload"></h3>
+ <div class="row form-group col-xs-4 side-right">
+ <label for="fileInput" data-trans="software_upload" style="display: none;"></label>
+ <input class="required form-control btn btn-primary" type="file" id="fileInput" name="file" style="display: none;">
+ <label for="fileInput" class="required btn btn-primary" data-trans="browse_btn" style="width: 80px;"></label>
+ <span id="fileNameDisplay" style="margin-left: 10px; font-weight: normal;"></span>
+ </div>
+ <br><br>
+ <div style="text-align: right; padding-right: 20px;">
+ <button class="btn btn-primary" type="submit" data-trans="ota_title" id="submitButton" disabled></button>
+ </div>
+</form>
+
+
+ <div id="uploadSection" data-bind="visible: updateType() == 'mifi_local'">
+ <h3 class="form-title" data-trans="software_upload"></h3>
+ <iframe id="fileUploadIframe" name="fileUploadIframe" frameborder="0" height="0" scrolling="no" style="height:0px;width:0px;" width="0"></iframe>
+ <form id="fileUploadForm" name="fileUploadForm" action="../../cgi-bin/upload/upload.cgi" enctype="multipart/form-data" method="post" target="fileUploadIframe">
+ <input id="fileField" name="filename" dir="ltr" maxlength="200" type="file"/>
+ <div class="fileUploadDiv">
+ <input id="fileUploadApplyBtn" name="fileUploadApplyBtn" data-trans="ota_title" type="button" onclick="fileUploadSubmitClickHandler();" class="btn btn-primary margin-left-5 margin-top-2"/>
+ </div>
+ <div class="clear"></div>
+ </form>
+ </div>
+ <form data-bind="visible: updateType() == 'mifi_local'">
+ <div class="form-body">
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="local_note"></li>
+ </ul>
+ </div>
+ </div>
+ </form>
+</div>
+</div>
+</div>
+
+<script>
+ const fileInput = document.getElementById('fileInput');
+ const fileNameDisplay = document.getElementById('fileNameDisplay');
+ const submitButton = document.getElementById('submitButton');
+ const uploadForm = document.getElementById('uploadForm');
+ const browseButton = document.querySelector('label[for="fileInput"].btn.btn-primary');
+
+ fileInput.addEventListener('change', function () {
+ fileNameDisplay.textContent = '';
+ submitButton.disabled = true;
+
+ const file = fileInput.files[0];
+ if (file) {
+ if (file.size > 2097152) {
+ errorOverlay("file_verify_error");
+ return;
+ }
+ fileNameDisplay.textContent = file.name;
+ submitButton.disabled = false;
+ }
+ });
+
+ browseButton.addEventListener('click', function () {
+ fileInput.value = '';
+ });
+
+ uploadForm.addEventListener('submit', function (event) {
+ event.preventDefault();
+ showLoading("upload_file");
+
+ const formData = new FormData(uploadForm);
+ console.log("Form data submitted:", formData);
+
+ fetch(uploadForm.action, {
+ method: 'POST',
+ body: formData
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(`HTTP error! Status: ${response.status}`);
+ }
+ return response.text();
+ })
+ .then(text => {
+ console.log("Server response:", text);
+ try {
+ const data = JSON.parse(text);
+ if (data.success) {
+ showAlert("start_update");
+ } else {
+ errorOverlay("verify_error");
+ }
+ } catch (error) {
+ console.error("Upload error:", error);
+ errorOverlay("File upload successful: Server returned non-JSON response.");
+ }
+ })
+ .catch(error => {
+ console.error("Upload error:", error);
+ errorOverlay("upload_error");
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css b/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css
index d0bb563..dc1c1bf 100755
--- a/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css
@@ -114,12 +114,12 @@
line-height: inherit;
}
a {
- color: #ffc72c;
+ color: #333;
text-decoration: none;
}
a:hover,
a:focus {
- color: #f0c954;
+ color: #000;
text-decoration: underline;
}
a:focus {
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/favicon.ico b/lynq/S300/BJMTN/ap/app/zte_webui/favicon.ico
new file mode 100755
index 0000000..0b6384b
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/favicon.ico
Binary files differ
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js b/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js
index ff95585..b25249a 100755
--- a/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js
@@ -27,6 +27,7 @@
HAS_BUY_BUNDLE: true, //是否支持购买服务
WIFI_WAP3_SUPPORT: false, //是否支持wifi WAP3加密
WIFI_WPA2_WAP3_SUPPORT: false, //是否支持wifi WPA2/WAP3兼容模式
+ HAS_URL: true, // 是否支持URL过滤,
//station����ģʽ
//wifi加密模式
AUTH_MODES: [{
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/subpg/firewall.html b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/firewall.html
new file mode 100755
index 0000000..fa65d81
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/firewall.html
@@ -0,0 +1,70 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='advanced_settings'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="sleep_mode" href="#wlan_sleep"></a></li>
+ <li><a data-trans="router_setting" href="#route_set"></a></li>
+ <li class="active"><a data-trans="firewall" href="#filter_main"></a></li>
+ <li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li> -->
+ <li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>
+ <li><a data-trans="others" href="#more"></a></li>
+ <li><a data-trans="tr069" href="#tr069"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="col-xs-10">
+ <div class="form-body">
+ <div class="content margin-top-20">
+ <div class="col-xs-4">
+ <div class="row">
+ <a href="#filter_port">
+ <div data-trans="port_filter" class="line-height-40 arrow-right cursorhand"></div>
+ </a>
+ </div>
+ <div class="row" style="display:none">
+ <a href="#map_port">
+ <div data-trans="port_map" class="line-height-40 arrow-right cursorhand"></div>
+ </a>
+ </div>
+ <div class="row" style="display:none">
+ <a href="#foward_port">
+ <div data-trans="port_forward" class="line-height-40 arrow-right cursorhand"></div>
+ </a>
+ </div>
+ <div data-bind="visible: hasUrlFilter" class="row">
+ <a href="#filter_url">
+ <div data-trans="url_filter" class="line-height-40 arrow-right cursorhand"></div>
+ </a>
+ </div>
+ <div class="row">
+ <a href="#universal_plug_and_play">
+ <div data-trans="upnp" class="line-height-40 arrow-right cursorhand"></div>
+ </a>
+ </div>
+ <div class="row">
+ <a href="#demilitarized_zone">
+ <div data-trans="dmz" class="line-height-40 arrow-right cursorhand"></div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/subpg/main.html b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/main.html
new file mode 100755
index 0000000..38cbb41
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/main.html
@@ -0,0 +1,222 @@
+
+<div class="row margin-top-20">
+<div class="type_items">
+ <ul>
+ <li><a href="#child_ctl" data-bind="visible: hasParentalControl" data-trans="parental_control" class="c0EC6DC"></a></li>
+ <li><a href="#msg_main" data-bind="visible: hasSms" data-trans="sms" class="cF53A58"></a></li>
+ <li><a href="#usat" data-bind="visible:hasUssd" data-trans="USSD"></a></li>
+ <li><a href="#pb_main" data-bind="visible: hasPhonebook" data-trans="phonebook" class="c00AEFF"></a></li>
+ <li><a href="#sdcard" data-bind="visible: isSupportSD" data-trans="sd" class="c2175FF"></a></li>
+ <li><a data-bind="attr: {href: notDataCard? '#route_set' : '#demilitarized_zone'}" data-trans="advanced_settings" class="cFFCE2B"></a></li>
+ <li><a href="#fast_set" data-bind="visible: isSupportQuicksetting()" data-trans="quick_setting" class="cFFCE2B"></a></li>
+ <li><a href="https://my.mtn.bj/mon-routeur" target="_blank" data-bind="visible:hasBuyBundle" data-trans="buy_bundle"></a></li>
+ </ul>
+</div>
+</div>
+
+<div class="row margin-top-20" id="home_image">
+
+<div class="row">
+ <div style="position: relative">
+ <div class="internet_status_container">
+ <div data-bind=" css: {'item_icon_connect': cStatus()== 1, 'item_icon_disconnect': cStatus() != 1}"></div>
+ <h3 data-trans="net_surfing" class="home_h3"></h3>
+ <div class="net_surfing_list">
+ <ul>
+ <li><a id="h_connect_btn" href="javascript: void(0)" data-bind="visible: canConnect() && isShowHomeConnect(), click: connectHandler , css: {'h_connect_on': cStatus()== 1, 'h_connect_off': cStatus() != 1}" style="display: none;"></a></li>
+ <li><i class="up"></i><span data-bind="text: up_Speed"></span></li>
+ <li><i class="down"></i><span data-bind="text: down_Speed"></span></li>
+ <li><span data-bind="text: connected_Time"></span></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="network_control_container">
+ <div class="item_icon"></div>
+ <h3 data-trans="my_router" class="home_h3"></h3>
+ <!--div id="h_network_type" data-bind="text: networkType, css: {'no-btn': !(canConnect() && isShowHomeConnect())}"></div-->
+ <div class="my_router_list">
+ <ul>
+ <li data-bind="visible: hasRj45"><a id="opmode" data-bind="click: showOpModeWindow, css: {'not-allowed': enableFlag}" href="javascript:void(0)"></a></li>
+ <li><a data-bind="click: showNetworkSettingsWindow" data-trans="settings_internet" href="javascript:void(0)"></a></li>
+ <!--li><div id="h_ssid"></div></li-->
+ <li data-bind="visible: notDataCard"><a data-trans="settings_wireless" href="#wlan_main"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <!--div id="h_connect_status" data-bind="visible:notDataCard, css: {'h_status_connected': cStatus()== 1, 'h_status_disconnected': cStatus()== 2, 'h_status_connecting': cStatus()== 3, 'h_status_disconnecting': cStatus()== 4, }">
+ </div-->
+
+ <div data-bind="visible: notDataCard" onclick="window.location.hash='#conn_device'" class="connected_devices_container">
+ <div class="item_icon"></div>
+ <h3 data-trans="station_info" class="home_h3" ></h3>
+ <div style="text-align:center;display:inline" class="margin-top-20">
+ <div id="h_wire_device" data-bind="visible: hasRj45 && isCPE">
+ <span data-bind="text: wireDeviceNum" style="font-size:70px;"><em></em></span><sub data-trans="device_unit" style="font-size: 16px;"></sub>
+ <span data-trans="cable" style="font-size:15px;text-align:center;display:block"></span>
+ </div>
+ <div id="h_wireless_device" style="display-block">
+ <span data-bind="text: wirelessDeviceNum" style="font-size:70px"></span><sub data-trans="device_unit" style="font-size: 16px;"></sub>
+ <span data-trans="wireless" style="font-size:15px;text-align:center;display:block"></span>
+ </div>
+ </div>
+ <!--a href="#conn_device" id="h_attached_device_link">
+ </a-->
+ </div>
+ </div>
+</div>
+</div>
+
+
+<div class="row margin-top-20 label-font-normal margin-bottom-20">
+ <div class="text-center traffic_control_container" data-bind="visible: showTraffic()">
+ <h4 data-trans="traffic_data_plan" style="font-size:14px;text-align:right;padding-right:15px"></h4>
+ <div style="display:inline-block">
+ <div id="traffic_graphic" style="width: 200px; height: 165px; visibility: visible;"></div>
+ </div>
+ <div style="text-align: left;padding-left:20px;font-size:18px">
+ <span style="background-color: #8CC916;" class="color_block"></span>
+ <span data-trans="traffic_used" class="color_block_desc"></span>
+ <span class="color_block_desc">:</span>
+ <span data-bind="text: trafficUsed" class="color_block_desc"></span>
+ </div>
+ <div class="statistics_list">
+ <ul>
+ <li><a href="#flow_ctl">
+ <div data-bind="visible: trafficAlertEnable">
+ <span data-bind="text: trafficLimited" class="line-height-20"></span>
+ <span data-trans="traffic_limit_data" class="line-height-20"></span>
+ </div>
+ <div data-bind="visible: trafficAlertEnable() == false">
+ <div data-trans="traffic_not_set_limited" class="line-height-20"></div>
+ </div>
+ </a></li>
+ </ul>
+ </div>
+ </div>
+
+
+ <div data-bind="css:{'device_info_container_hastraffic':showTraffic(),'device_info_container_notraffic':!showTraffic()}" class="device_info_container">
+ <h4 data-trans="device_info" style="font-size:14px;text-align:left;padding-left:15px;color:#fff"></h4>
+ <div style="color:#fff;position: relative;height: 210px;font-size: 18px;line-height: 1.5em;padding:20px 0px 0px 15px;">
+ <div class="row">
+ <label data-trans="sim_serial_number" class="col-xs-5"></label>
+ <label data-bind="text: simSerialNumber" class="col-xs-7"></label>
+ </div>
+ <div class="row">
+ <label data-trans="imei" class="col-xs-5"></label>
+ <label data-bind="text: imei" class="col-xs-7"></label>
+ </div>
+ <div class="row">
+ <label data-trans="imsi" class="col-xs-5"></label>
+ <label data-bind="text: imsi" class="col-xs-7"></label>
+ </div>
+ <!--div class="row" data-bind="visible: notDataCard">
+ <label class="col-xs-5" data-trans="wifi_range"></label>
+ <label class="col-xs-7" data-bind="attr: {'data-trans': wifiLongMode}"></label>
+ </div-->
+ <div class="row">
+ <label data-trans="signal_strength_label" class="col-xs-5"></label>
+ <label id="fresh_signal_strength" class="col-xs-7"></label>
+ </div>
+ <div class="row" data-bind="visible: hasWifi && showMultiSsid()">
+ <label data-trans="network_name_ssid1" class="col-xs-5"></label>
+ <label data-bind="text: ssid" style="word-wrap: break-word;" class="col-xs-7"></label>
+ </div>
+ <div class="row" data-bind="visible: hasWifi && !showMultiSsid()">
+ <label data-trans="network_name" class="col-xs-5"></label>
+ <label data-bind="text: ssid" style="word-wrap: break-word;" class="col-xs-7"></label>
+ </div>
+ </div>
+ <div style="text-align:right;">
+ <a href="javascript: void(0)" data-trans="detail_info" id="showDetailInfo" tabindex="0"></a>
+ </div>
+ </div>
+</div>
+
+
+<div id="h_qrcode" data-bind="visible: showQRCode" style="float:right" class="text-center">
+ <img id="qrcode_img" data-bind="attr: {src: qrcodeSrc}" src="./pic/res_blacktrans.png" width="111"/>
+</div>
+
+<script type="text/x-jquery-tmpl" id="detailInfoTmpl">
+<div class="row">
+ <label class="col-xs-6" data-trans="sim_serial_number" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= simSerialNumber %></label>
+</div>
+<div class="row">
+ <label data-trans="imei" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= imei %></label>
+</div>
+<div class="row">
+ <label data-trans="imsi" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= imsi %></label>
+</div>
+<div class="row">
+ <label data-trans="signal_strength_label" class="col-xs-6"></label>
+ <label class="col-xs-6" id="popoverSignalTxt"><%= signal %></label>
+</div>
+<% if(hasWifi){ %>
+<div class="row">
+ <label data-trans="<%= showMultiSsid ? 'network_name_ssid1': 'network_name' %>" class="col-xs-6"></label>
+ <label style="word-wrap: break-word; word-break: break-all;" class="col-xs-6"><%= ssid %></label>
+</div>
+<div class="row">
+ <label data-trans="<%= showMultiSsid ? 'max_access_num_ssid1': 'max_access_num' %>" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= max_access_num %></label>
+</div>
+ <% if(showMultiSsid){ %>
+ <div class="row">
+ <label data-trans="network_name_ssid2" class="col-xs-6"></label>
+ <label style="word-wrap: break-word; word-break: break-all;" class="col-xs-6"><%= m_ssid %></label>
+ </div>
+ <div class="row">
+ <label data-trans="max_access_num_ssid2" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= m_max_access_num %></label>
+ </div>
+ <% } %>
+<div class="row" style="display: none">
+ <label data-trans="wifi_range" class="col-xs-6"></label>
+ <label data-trans="<%= wifi_long_mode %>" class="col-xs-6"></label>
+</div>
+<% } %>
+<div class="row">
+ <label data-trans="cell_id" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= cellid %></label>
+</div>
+<div class="row" style="display: none">
+ <label data-trans="lan_domain" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= lanDomain %></label>
+</div>
+<div class="row">
+ <label data-trans="ip_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= ipAddress %></label>
+</div>
+<% if(showMacAddress){ %>
+<div class="row">
+ <label data-trans="mac_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= macAddress %></label>
+</div>
+<% } %>
+<% if(showIpv4WanIpAddr){ %>
+<div class="row">
+ <label data-trans="wan_ip_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= wanIpAddress %></label>
+</div>
+<% } %>
+<% if(showIpv6WanIpAddr){ %>
+<div class="row">
+ <label data-trans="ipv6_wan_ip_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= ipv6WanIpAddress %></label>
+</div>
+<% } %>
+<div class="row">
+ <label data-trans="software_version" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= sw_version %></label>
+</div>
+<div class="row">
+ <label data-trans="hardware_version" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= hw_version %></label>
+</div>
+</script>
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/subpg/ota_update.html b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/ota_update.html
new file mode 100755
index 0000000..b4489ff
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/ota_update.html
@@ -0,0 +1,243 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='advanced_settings'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li data-bind="visible: isDataCard"><a href="#demilitarized_zone" data-trans="dmz_setting"></a></li>
+ <li data-bind="visible: isDataCard"><a href="#pin_mode" data-trans="pin_management"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#wlan_sleep" data-trans="sleep_mode"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#route_set" data-trans="router_setting"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#filter_main" data-trans="firewall"></a></li>
+ <li data-bind="visible:hasUpdateCheck" class="active"><a href="#fota" data-trans="update_settings"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->
+ <li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>
+ <li data-bind="visible: !isDataCard"><a href="#more" data-trans="others"></a></li>
+ <li><a data-trans="tr069" href="#tr069"></a></li>
+ </ul>
+ </div>
+ </div>
+
+<div class="col-xs-10">
+<form id="frmOTAUpdate" role="form" data-bind="visible: updateType() == 'mifi_fota'">
+ <!-- <h3 data-trans="ota_update_manual" class="form-title"></h3 -->
+ <div class="form-body margin-top-20">
+ <!--div class="content">
+ <div class="row">
+ <div class="col-xs-6">
+ <span data-trans="ota_last_update_check"></span>
+ <span data-bind="text: lastCheckTime"></span>
+ </div>
+ <div class="col-xs-6 align-right">
+ <input id="btnCheckNewVersion" data-bind="click:checkNewVersion" data-trans="ota_check_new_version" type="button" class="btn btn-primary margin-right-20"/>
+ </div>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="ota_check_new_version_desc"></li>
+ </ul>
+ </div>
+ </div-->
+
+ <!--div class="form-title" data-trans='ota_update_manual'></div>
+ <div class="content">
+ <span class="paddingleft25" data-trans="ota_check_new_version_desc"></span>
+ </div>
+ <div class="form-buttons">
+ <input id="btnCheckNewVersion" type="button" class="btn btn-primary" data-trans="ota_check_new_version"
+ data-bind="click:checkNewVersion"/>
+ </div>
+ <div class="form-title" data-trans='ota_update_setting'></div-->
+ <div class="content">
+ <!--
+ <h3 data-trans="ota_update_setting" class="form-title"></h3>
+ <div class="row">
+ <label data-trans="ota_auto_update_switch" class="col-xs-4 side-right"></label>
+ <div class="col-xs-8">
+ <div class="row form-group">
+ <div class="col-xs-3">
+ <input id="auto_update_enable" name="updateMode" data-bind="checked: updateMode" type="radio" value="1"/>
+ <label data-trans="enable" for="auto_update_enable"></label>
+ </div>
+ <div class="col-xs-3">
+ <input id="auto_update_disable" name="updateMode" data-bind="checked: updateMode" type="radio" value="0"/>
+ <label data-trans="disable" for="auto_update_disable"></label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: false">
+ <label data-trans="ota_update_interval_day" for="selInterValDay" class="col-xs-4 side-right"></label>
+
+ <div class="col-xs-3">
+ <select id="selInterValDay" name="selInterValDay" data-bind="value: updateIntervalDay" class="form-control">
+ <option data-trans="ota_update_every_day" value="1"></option>
+ <option data-trans="ota_update_15_day" value="15"></option>
+ <option data-trans="ota_update_30_day" value="30"></option>
+ </select>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: updateMode()=='1'">
+ <div class="col-xs-12 padding-top-10">
+ <p class="checkbox" data-bind="css:{'checkbox_selected': allowRoamingUpdate()=='1'}, click: clickAllowRoamingUpdate"
+ manualControl="true">
+ <input id="chkUpdateRoamPermission" name="chkUpdateRoamPermission" data-bind="checked:allowRoamingUpdate()=='1'" type="checkbox" value="1"/>
+ </p>
+ <label data-trans="ota_update_roaming_remind" class="update_inline floatleft"></label>
+ </div>
+ </div>
+
+ <div class="form-buttons">
+ <input id="btnApply" data-trans="apply" type="submit" formmethod="post" class="btn btn-primary"/>
+ </div-->
+
+ <div class="row form-group">
+ <label data-trans="ota_manual_upgrade_url" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="upgrade_url" type="text" size="128" data-bind="value:updateURL" class="required form-control">
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input id="btnOtaUpgApply" data-bind="click:ota_upgrade_apply" data-trans="download" type="submit" formmethod="post" class="btn btn-primary"/>
+ </div>
+
+ <!--div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="fota_note1"></li>
+ </ul>
+ </div-->
+ </div>
+
+ </div>
+</form>
+<!--form id="frmNativeUpdate" data-bind="visible: updateType() == 'mifi_local'" method="post" name="UploadFile" id="UploadFile" action="../../cgi-bin/upload.cgi" enctype="multipart/form-data" target="ifr">
+ <div class="form-body">
+ <h3 class="form-title" data-trans="software_upload"></h3>
+ <table style="width:100%">
+ <input type="text" id="upfile" size="20" style="height:35px; width:200px; display:inline-block;" readonly />
+ <input type="button" class="btn btn-primary" data-trans='browse_btn' style="height:34px; width:81px;" />
+ <input id="fileName" class="form-control" type="file" name="fileName" style="margin-left: 15px;background-color:#E3E3E3;opacity:0;filter:alpha(opacity=0);position:absolute;left:0px; width:280px; display:inline-block;" />
+ <input class="btn btn-primary" id="fileuploadsubmit" type="submit" formmethod="post" data-trans="ota_title" style="float:right; margin-top:8px; margin-right: 20px;" />
+ </table>
+ <iframe name="ifr" id="ifr" style="display:none;"></iframe>
+ </div>
+</form-->
+
+
+<!-- <br><br> -->
+<form id="uploadForm" action="../../cgi-bin/upload/upload.cgi" method="post" enctype="multipart/form-data">
+ <h3 class="form-title" data-trans="local_upload"></h3>
+ <div class="row form-group col-xs-4 side-right">
+ <label for="fileInput" data-trans="software_upload" style="display: none;"></label>
+ <input class="required form-control btn btn-primary" type="file" id="fileInput" name="file" style="display: none;">
+ <label for="fileInput" class="required btn btn-primary" data-trans="browse_btn" style="width: 80px;"></label>
+ <span id="fileNameDisplay" style="margin-left: 10px; font-weight: normal;"></span>
+ </div>
+ <br><br>
+ <div style="text-align: right; padding-right: 20px;">
+ <button class="btn btn-primary" type="submit" data-trans="ota_title" id="submitButton" disabled></button>
+ </div>
+</form>
+
+
+ <div id="uploadSection" data-bind="visible: updateType() == 'mifi_local'">
+ <h3 class="form-title" data-trans="software_upload"></h3>
+ <iframe id="fileUploadIframe" name="fileUploadIframe" frameborder="0" height="0" scrolling="no" style="height:0px;width:0px;" width="0"></iframe>
+ <form id="fileUploadForm" name="fileUploadForm" action="../../cgi-bin/upload/upload.cgi" enctype="multipart/form-data" method="post" target="fileUploadIframe">
+ <input id="fileField" name="filename" dir="ltr" maxlength="200" type="file"/>
+ <div class="fileUploadDiv">
+ <input id="fileUploadApplyBtn" name="fileUploadApplyBtn" data-trans="ota_title" type="button" onclick="fileUploadSubmitClickHandler();" class="btn btn-primary margin-left-5 margin-top-2"/>
+ </div>
+ <div class="clear"></div>
+ </form>
+ </div>
+ <form data-bind="visible: updateType() == 'mifi_local'">
+ <div class="form-body">
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="local_note"></li>
+ </ul>
+ </div>
+ </div>
+ </form>
+</div>
+</div>
+</div>
+
+<script>
+ const fileInput = document.getElementById('fileInput');
+ const fileNameDisplay = document.getElementById('fileNameDisplay');
+ const submitButton = document.getElementById('submitButton');
+ const uploadForm = document.getElementById('uploadForm');
+ const browseButton = document.querySelector('label[for="fileInput"].btn.btn-primary');
+
+ fileInput.addEventListener('change', function () {
+ fileNameDisplay.textContent = '';
+ submitButton.disabled = true;
+
+ const file = fileInput.files[0];
+ if (file) {
+ if (file.size > 2097152) {
+ errorOverlay("file_verify_error");
+ return;
+ }
+ fileNameDisplay.textContent = file.name;
+ submitButton.disabled = false;
+ }
+ });
+
+ browseButton.addEventListener('click', function () {
+ fileInput.value = '';
+ });
+
+ uploadForm.addEventListener('submit', function (event) {
+ event.preventDefault();
+ showLoading("upload_file");
+
+ const formData = new FormData(uploadForm);
+ console.log("Form data submitted:", formData);
+
+ fetch(uploadForm.action, {
+ method: 'POST',
+ body: formData
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(`HTTP error! Status: ${response.status}`);
+ }
+ return response.text();
+ })
+ .then(text => {
+ console.log("Server response:", text);
+ try {
+ const data = JSON.parse(text);
+ if (data.success) {
+ showAlert("start_update");
+ } else {
+ errorOverlay("verify_error");
+ }
+ } catch (error) {
+ console.error("Upload error:", error);
+ errorOverlay("File upload successful: Server returned non-JSON response.");
+ }
+ })
+ .catch(error => {
+ console.error("Upload error:", error);
+ errorOverlay("upload_error");
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user b/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
index abd95b1..565e684 100755
--- a/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -191,7 +191,7 @@
rootdev_manufacturer=LYNQ
rootdev_modeldes=MBB
rootdev_modelname=MBB
-os_url=http://mtnbroadband.ng
+os_url=
serialnumber=See-IMEI
static_dhcp_enable=1
static_ethwan_gw=
@@ -237,7 +237,7 @@
regver=4.0
meid=
uetype=1
-LocalDomain=mtnbroadband.ng
+LocalDomain=
data_volume_alert_percent=
data_volume_limit_size=
data_volume_limit_switch=0
diff --git a/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties b/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties
index 57a4ba7..60e227c 100755
--- a/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties
+++ b/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties
@@ -1742,4 +1742,5 @@
check_airtime = Check Airtime Balance
check_data = Check Data Balance
check_number = Check My Number
-buy_bundle = Buy Bundle
\ No newline at end of file
+buy_bundle = Buy Bundle
+block_operate_note = To enable the block function, please modify the rule to blacklist in the WLAN MAC Filter settings.
\ No newline at end of file
diff --git a/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties b/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties
index 8fbe46b..c65f672 100755
--- a/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties
+++ b/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties
@@ -1743,3 +1743,4 @@
check_data = Balance Des Données
check_number = Vérifiez Mon Numéro
buy_bundle = Acheter Bundle
+block_operate_note = Pour activer la fonction Block, vous devez modifier la règle en liste noire dans les paramètres de Filtre MAC WLAN.
\ No newline at end of file
diff --git a/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties b/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties
index e50a810..620c709 100755
--- a/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties
+++ b/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties
@@ -1746,4 +1746,5 @@
check_airtime = 通话余额
check_data = 数据余额
check_number = 检查号码
-buy_bundle = 购买套餐
\ No newline at end of file
+buy_bundle = 购买套餐
+block_operate_note = 要打开block功能,需要在WLAN MAC Filter中修改规则为黑名单。
\ No newline at end of file
diff --git a/lynq/S300/ap/app/zte_webui/subpg/wifi_station_info.html b/lynq/S300/ap/app/zte_webui/subpg/wifi_station_info.html
new file mode 100755
index 0000000..30cf4ab
--- /dev/null
+++ b/lynq/S300/ap/app/zte_webui/subpg/wifi_station_info.html
@@ -0,0 +1,129 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title form-title-multi">
+ <h1 data-trans='station_info'></h1>
+ <p data-trans="station_info_sub_title"></p>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-1 margin-top-15">
+ </div>
+ <div class="col-xs-11">
+
+<div id="station_info_div" class="form-body">
+ <div class="content ko-grid-container">
+ <div id="wireless_div">
+ <h2 data-trans="wireless_access_device"></h2>
+ <table class="table table-striped table-hover">
+ <thead>
+ <tr>
+ <th data-trans="station_number" width="60"></th>
+ <th data-trans="host_name"></th>
+ <th width="100"></th>
+ <th data-trans="mac_address" width="200"></th>
+ <th data-trans="pc_action" data-bind="visible: supportBlock" width="150"></th>
+ </tr>
+ </thead>
+ <tbody data-bind="foreach:deviceInfo">
+ <tr data-bind="css: {odd: $index() % 2 == 0, even: $index() % 2 != 0}">
+ <td data-bind="text: $index()+1"></td>
+ <td>
+ <span data-bind="text: hostName, attr: {id: 'hostname_txt_'+idx}"></span>
+ <input data-bind="attr: {id: 'hostname_input_'+idx}" maxlength="20" style="display: none;" type="text" class="form-control">
+ </td>
+ <td>
+ <a data-bind="click: $root.editHostNameHandler, attr: {id: 'edit_btn_'+idx}" class="cursorhand"><img height="25" src="./pic/res_edit.png"></a>
+ <a data-bind="click: $root.saveHostNameHandler, attr: {id: 'save_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_save.png"></a>
+ <a data-bind="click: $root.cancelEditHostNameHandler, attr: {id: 'cancel_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_cancel.png"></a>
+ </td>
+ <td data-bind="text: macAddress"></td>
+ <td data-bind="visible: $root.supportBlock"><a data-trans="block" data-bind="visible: !inBlackGroup, css: {'not-allowed': disableFlag}, click: $root.wirelessBlockHandler" class="btn btn-primary btn-sm"></a></td>
+ </tr>
+ </tbody>
+ </table>
+ <p data-bind="visible: deviceInfo().length == 0" data-trans="no_data"></p>
+ </div>
+
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="block_operate_note"></li>
+ </ul>
+ </div>
+
+ <div id="cable_div" data-bind="visible: showCableDiv">
+ <h2 data-trans="cable_access_device"></h2>
+ <table class="table table-striped table-hover">
+ <thead>
+ <tr>
+ <th data-trans="station_number" width="60"></th>
+ <th data-trans="host_name"></th>
+ <th width="100"></th>
+ <th data-trans="mac_address" width="350"></th>
+ </tr>
+ </thead>
+ <tbody data-bind="foreach:cableDeviceInfo">
+ <tr data-bind="css: {odd: $index() % 2 == 0, even: $index() % 2 != 0}">
+ <td data-bind="text: $index()+1"></td>
+ <td>
+ <span data-bind="text: hostName, attr: {id: 'hostname_txt_'+idx}"></span>
+ <input data-bind="attr: {id: 'hostname_input_'+idx}" maxlength="20" type="text" style="display: none;" class="form-control">
+ </td>
+ <td>
+ <a data-bind="click: $root.editHostNameHandler, attr: {id: 'edit_btn_'+idx}" class="cursorhand" ><img height="25" src="./pic/res_edit.png"></a>
+ <a data-bind="click: $root.saveHostNameHandler, attr: {id: 'save_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_save.png"></a>
+ <a data-bind="click: $root.cancelEditHostNameHandler, attr: {id: 'cancel_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_cancel.png"></a>
+ </td>
+ <td data-bind="text: macAddress"></td>
+ </tr>
+ </tbody>
+ </table>
+ <p data-bind="visible: cableDeviceInfo().length == 0" data-trans="no_data"></p>
+ </div>
+
+ <div id="black_div" data-bind="visible: showBlackDiv">
+ <h2 data-trans="black_list"></h2>
+ <table class="table table-striped table-hover">
+ <thead>
+ <tr>
+ <th data-trans="station_number" width="60"></th>
+ <th data-trans="host_name" style="display:none"></th>
+ <th style="display:none" width="100"></th>
+ <th data-trans="mac_address"></th>
+ <th data-trans="pc_action" width="150"></th>
+ </tr>
+ </thead>
+ <tbody data-bind="foreach:blackDevices">
+ <tr data-bind="css: {odd: $index() % 2 == 0, even: $index() % 2 != 0}">
+ <td data-bind="text: $index()+1"></td>
+ <td style="display:none">
+ <span data-bind="text: hostName, attr: {id: 'hostname_txt_'+idx}"></span>
+ <input data-bind="attr: {id: 'hostname_input_'+idx}" maxlength="20" style="display: none;" type="text" class="form-control">
+ </td>
+ <td style="display:none">
+ <a data-bind="click: $root.editHostNameHandler, attr: {id: 'edit_btn_'+idx}" class="cursorhand"><img height="25" src="./pic/res_edit.png"></a>
+ <a data-bind="click: $root.saveHostNameHandler, attr: {id: 'save_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_save.png"></a>
+ <a data-bind="click: $root.cancelEditHostNameHandler, attr: {id: 'cancel_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_cancel.png"></a>
+ </td>
+ <td data-bind="text: macAddress"></td>
+ <td><a data-trans="pc_remove" data-bind="click: $root.blacklistRemoveHandler" class="btn btn-primary btn-sm"></a></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div data-bind="visible: showPCLink">
+ <span data-trans="station_info_desc"></span> <a data-trans="parental_control" href="#child_ctl"></a>
+ </div>
+ </div>
+</div>
+ </div>
+</div>
+</div>
diff --git a/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ