20190611_jeffrey - silenceuncrio/diary GitHub Wiki
緊急事件
M300 寬溫
開機出現下面的訊息
### module <zebra> init
vty_read_config: failed to open configuration file /etc/quagga/zebra.conf: Permission denied
can't open configuration file [/etc/quagga/zebra.conf]
### module <smtp> init
### module <ospf> init
...
先 build 一版寬溫的來看看
利用 mfgtool 燒錄
開機看看
我的並不會
我的 icos zebra module log 如下
root@Hardened Cellular Router:~# cat /home/log/zebra.log
1560218050[20190611 1:54:10] [_init:227][caller:1213.1316]in
1560218050[20190611 1:54:10] [_init:240]copy configuration from factory to etc
1560218050[20190611 1:54:10] [_getSetting:180][caller:1213.1316]in
1560218050[20190611 1:54:10] [_callBack:135]attID:1, pAttValue:on
1560218050[20190611 1:54:10] [_callBack:136]res:0
1560218050[20190611 1:54:10] [_callBack:135]attID:2, pAttValue:Router
1560218050[20190611 1:54:10] [_callBack:136]res:0
1560218050[20190611 1:54:10] [_callBack:135]attID:3, pAttValue:zebra
1560218050[20190611 1:54:10] [_callBack:136]res:0
1560218050[20190611 1:54:10] [_apply:200][caller:1213.1316]in
1560218050[20190611 1:54:10] [_locSaveConfigTxt:93][pid:1316]in
1560218050[20190611 1:54:10] [_prepare_config:54]_prepare_config
root@Hardened Cellular Router:~#
拿反映問題的 ariel 的板子來看看
ariel 的 log 如下
root@M301-TXGW:~# cat /home/log/zebra.log
1560164865[20190610 11:7:45] [_init:227][caller:1235.1336]in
1560164865[20190610 11:7:45] [_getSetting:180][caller:1235.1336]in
1560164865[20190610 11:7:45] [_callBack:135]attID:1, pAttValue:on
1560164865[20190610 11:7:45] [_callBack:136]res:0
1560164865[20190610 11:7:45] [_callBack:135]attID:2, pAttValue:Router
1560164865[20190610 11:7:45] [_callBack:136]res:0
1560164865[20190610 11:7:45] [_callBack:135]attID:3, pAttValue:zebra
1560164865[20190610 11:7:45] [_callBack:136]res:0
1560164865[20190610 11:7:45] [_apply:200][caller:1235.1336]in
1560164865[20190610 11:7:45] [_locSaveConfigTxt:93][pid:1336]in
1560164865[20190610 11:7:45] [_prepare_config:54]_prepare_config
1560218808[20190611 2:6:48] [_init:227][caller:252.355]in
1560218808[20190611 2:6:48] [_getSetting:180][caller:252.355]in
1560218808[20190611 2:6:48] [_callBack:135]attID:1, pAttValue:on
1560218808[20190611 2:6:48] [_callBack:136]res:0
1560218808[20190611 2:6:48] [_callBack:135]attID:2, pAttValue:Router
1560218808[20190611 2:6:48] [_callBack:136]res:0
1560218808[20190611 2:6:48] [_callBack:135]attID:3, pAttValue:zebra
1560218808[20190611 2:6:48] [_callBack:136]res:0
1560218808[20190611 2:6:48] [_apply:200][caller:252.355]in
1560218808[20190611 2:6:48] [_locSaveConfigTxt:93][pid:355]in
1560218809[20190611 2:6:49] [_prepare_config:54]_prepare_config
root@M301-TXGW:~#
看一下 /etc/quagga/zebra.conf
所在目錄的相關權限資訊
先看 ariel 的
fig: failed to open configuration file /etc/quagga/zebra.conf: Permission denied
can't open configuration file [/etc/quagga/zebra.conf]
root@M301-TXGW:~# ls -l /etc/quagga/
-rw-r----- 1 www postdrop 0 Jun 10 11:03 bgpd.conf
-rw-r----- 1 root root 566 Jun 10 11:03 bgpd.conf.sample
-rw-r----- 1 www postdrop 0 Jun 10 11:03 isisd.conf
-rw-r----- 1 root root 789 Jun 10 11:03 isisd.conf.sample
-rw-r----- 1 www postdrop 0 Jun 10 11:03 ospf6d.conf
-rw-r----- 1 root root 1110 Jun 10 11:03 ospf6d.conf.sample
-rw-r----- 1 www postdrop 0 Jun 10 11:03 ospfd.conf
-rw-r----- 1 root root 182 Jun 10 11:03 ospfd.conf.sample
-rw-r----- 1 www postdrop 0 Jun 10 11:03 ripd.conf
-rw-r----- 1 root root 406 Jun 10 11:03 ripd.conf.sample
-rw-r----- 1 www postdrop 0 Jun 10 11:03 ripngd.conf
-rw-r----- 1 root root 390 Jun 10 11:03 ripngd.conf.sample
-rw-r----- 1 www postdrop 0 Jun 10 11:03 vtysh.conf
-rw-r----- 1 root root 128 Jun 10 11:03 vtysh.conf.sample
-rw-r----- 1 www postdrop 31 Jun 11 02:06 zebra.conf
-rw-r----- 1 root root 369 Jun 10 11:03 zebra.conf.sample
root@M301-TXGW:~#
我的
root@Hardened Cellular Router:~# ls /etc/quagga/ -al
drwxr-x--- 2 quagga quaggavt 1024 Jan 1 1970 .
drwxr-xr-x 45 root root 3072 Jun 11 02:00 ..
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 bgpd.conf
-rw-r----- 1 root root 566 Jun 11 01:47 bgpd.conf.sample
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 isisd.conf
-rw-r----- 1 root root 789 Jun 11 01:47 isisd.conf.sample
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 ospf6d.conf
-rw-r----- 1 root root 1110 Jun 11 01:47 ospf6d.conf.sample
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 ospfd.conf
-rw-r----- 1 root root 182 Jun 11 01:47 ospfd.conf.sample
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 ripd.conf
-rw-r----- 1 root root 406 Jun 11 01:47 ripd.conf.sample
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 ripngd.conf
-rw-r----- 1 root root 390 Jun 11 01:47 ripngd.conf.sample
-rw-r----- 1 quagga quagga 0 Jun 11 01:47 vtysh.conf
-rw-r----- 1 root root 128 Jun 11 01:47 vtysh.conf.sample
-rw-r----- 1 quagga quagga 31 Jun 11 02:00 zebra.conf
-rw-r----- 1 root root 369 Jun 11 01:47 zebra.conf.sample
root@Hardened Cellular Router:~#
感覺是 quagga 升級造成的問題
尤其是從舊版的 quagga 就是 M300 V2.00 之前的版本
透過 web upgrade 成新版 quagga 也就是 M300 V2.00
那麼就會出現 ariel 所反應的問題
因為新舊版 quagga 其一開始的 rootfs 的 /etc/quagga/
目錄下各 file 權限有所差異
最保險的做法就是不要跟 quagga 預設的 configuration 目錄扯上關係
因為我們 firmware upgrade 之後並不會對 rootfs 下的 /etc/quagga
做任何影響
所以才會有今天的這個現象
目前 branch release/v2.00
修改如下
diff --git a/proscend/prosrc/icos/icoslib/bgp/bgp.c b/proscend/prosrc/icos/icoslib/bgp/bgp.c
index 2af028e..e55a87e 100644
--- a/proscend/prosrc/icos/icoslib/bgp/bgp.c
+++ b/proscend/prosrc/icos/icoslib/bgp/bgp.c
@@ -37,9 +37,11 @@
#define BGP_DAEMON_PATH "/usr/sbin/bgpd"
-#define BGP_DAEMON "ospfd"
-#define BGP_ARGV "-d -u root -f %s"
-#define BGP_CONFIGURATION_FILE "/etc/quagga/bgpd.conf"
+#define BGP_DAEMON "bgpd"
+#define BGP_ARGV "-d -u root -g quaggavty -f %s"
+#define BGP_CONFIGURATION_FILE BGP_TMP_DIR"/bgpd.conf"
+#define BGP_CMD_ON "bgpd -d -u root -g quaggavty -f "BGP_CONFIGURATION_FILE
+#define BGP_CMD_OFF "killall bgpd 1>/dev/null 2>&1"
#define BGP_DEBUG_LOG "/tmp/bgpd.log"
@@ -561,13 +563,13 @@ static int _apply(int flag, int index, void* pStruct, int structSize)
{
IPTF_I("%s -p tcp --dport %d -j ACCEPT", BGP_IPT_INPUT_CHAIN, 179);
- system("killall bgpd 1>/dev/null 2>&1");
+ system(BGP_CMD_OFF);
_make_configuration_file(setting);
- system("bgpd -d");
+ system(BGP_CMD_ON);
}
else
{
- system("killall bgpd 1>/dev/null 2>&1");
+ system(BGP_CMD_OFF);
}
diff --git a/proscend/prosrc/icos/icoslib/ospf_2g/ospf_2g.c b/proscend/prosrc/icos/icoslib/ospf_2g/ospf_2g.c
index 7abf97b..1761a11 100644
--- a/proscend/prosrc/icos/icoslib/ospf_2g/ospf_2g.c
+++ b/proscend/prosrc/icos/icoslib/ospf_2g/ospf_2g.c
@@ -38,8 +38,10 @@
#define OSPF_2G_DAEMON_PATH "/usr/sbin/ospfd"
#define OSPF_2G_DAEMON "ospfd"
-#define OSPF_2G_ARGV "-d -u root -f %s"
-#define OSPF_2G_CONFIGURATION_FILE "/etc/quagga/ospfd.conf"
+#define OSPF_2G_ARGV "-d -u root -g quaggavty -f %s"
+#define OSPF_2G_CONFIGURATION_FILE OSPF_2G_TMP_DIR"/ospfd.conf"
+#define OSPF_2G_CMD_ON "ospfd -d -u root -g quaggavty -f "OSPF_2G_CONFIGURATION_FILE
+#define OSPF_2G_CMD_OFF "killall ospfd 1>/dev/null 2>&1"
#define OSPF_2G_DEBUG_LOG "/tmp/ospfd.log"
@@ -570,13 +572,13 @@ static int _apply(int flag, int index, void* pStruct, int structSize)
{
IPTF_I("%s -p ospf -j ACCEPT", OSPF_2G_IPT_INPUT_CHAIN);
- system("killall ospfd 1>/dev/null 2>&1");
+ system(OSPF_2G_CMD_OFF);
_make_configuration_file(setting);
- system("ospfd -d");
+ system(OSPF_2G_CMD_ON);
}
else
{
- system("killall ospfd 1>/dev/null 2>&1");
+ system(OSPF_2G_CMD_OFF);
}
diff --git a/proscend/prosrc/icos/icoslib/rip_2g/rip_2g.c b/proscend/prosrc/icos/icoslib/rip_2g/rip_2g.c
index ec27d9d..0aa66e3 100644
--- a/proscend/prosrc/icos/icoslib/rip_2g/rip_2g.c
+++ b/proscend/prosrc/icos/icoslib/rip_2g/rip_2g.c
@@ -32,8 +32,10 @@
#define RIP_2G_DAEMON_PATH "/usr/sbin/ripd"
#define RIP_2G_DAEMON "ripd"
-#define RIP_2G_ARGV "-d -u root -f %s"
-#define RIP_2G_CONFIGURATION_FILE "/etc/quagga/ripd.conf"
+#define RIP_2G_ARGV "-d -u root -g quaggavty -f %s"
+#define RIP_2G_CONFIGURATION_FILE RIP_2G_TMP_DIR"/ripd.conf"
+#define RIP_2G_CMD_ON "ripd -d -u root -g quaggavty -f "RIP_2G_CONFIGURATION_FILE
+#define RIP_2G_CMD_OFF "killall ripd 1>/dev/null 2>&1"
#define RIP_2G_DEBUG_LOG "/tmp/ripd.log"
@@ -466,13 +468,13 @@ static int _apply(int flag, int index, void* pStruct, int structSize)
{
IPTF_I("%s -p udp --dport %d -j ACCEPT", RIP_2G_IPT_INPUT_CHAIN, 520);
- system("killall ripd 1>/dev/null 2>&1");
+ system(RIP_2G_CMD_OFF);
_make_configuration_file(setting);
- system("ripd -d");
+ system(RIP_2G_CMD_ON);
}
else
{
- system("killall ripd 1>/dev/null 2>&1");
+ system(RIP_2G_CMD_OFF);
}
diff --git a/proscend/prosrc/icos/icoslib/zebra/zebra.c b/proscend/prosrc/icos/icoslib/zebra/zebra.c
index 245b2cb..0165d1e 100644
--- a/proscend/prosrc/icos/icoslib/zebra/zebra.c
+++ b/proscend/prosrc/icos/icoslib/zebra/zebra.c
@@ -20,9 +20,11 @@
#define ZEBRA_DAEMON_PATH "/usr/sbin/zebra"
-#define ZEBRA_DAEMON "zebra"
-#define ZEBRA_ARGV "-d -u root -f %s"
-#define ZEBRA_CONF_FILE "/etc/quagga/zebra.conf"
+#define ZEBRA_DAEMON "zebra"
+#define ZEBRA_ARGV "-d -u root -g quaggavty -f %s"
+#define ZEBRA_CONF_FILE ZEBRA_TMP_DIR"/zebra.conf"
+#define ZEBRA_CMD_ON "zebra -d -u root -g quaggavty -f "ZEBRA_CONF_FILE
+#define ZEBRA_CMD_OFF "killall zebra 1>/dev/null 2>&1"
#define ZEBRA_CONF_FORMAT \
"hostname %s\n" \
"password %s\n"
@@ -208,13 +210,13 @@ static int _apply(int flag, int index, void* pStruct, int structSize)
if (ATTVAL_MODE_ON == config->mode)
{
- system("killall zebra 1>/dev/null 2>&1");
+ system(ZEBRA_CMD_OFF);
_prepare_config(config);
- system("zebra -d");
+ system(ZEBRA_CMD_ON);
}
else
{
- system("killall zebra 1>/dev/null 2>&1");
+ system(ZEBRA_CMD_OFF);
}
return ICOS_SUCCESS;
關鍵點就在於明確指定 quagga 相關 daemon run 時的 user 及 group
root@Hardened Cellular Router:~# zebra -h
Usage : zebra [OPTION...]
Daemon which manages kernel routing table management and redistribution between different routing protocols.
-b, --batch Runs in batch mode
-d, --daemon Runs in daemon mode
-f, --config_file Set configuration file name
-F, --fpm_format Set fpm format to 'netlink' or 'protobuf'
-i, --pid_file Set process identifier file name
-z, --socket Set path of zebra socket
-k, --keep_kernel Don't delete old routes which installed by zebra.
-C, --dryrun Check configuration for validity and exit
-A, --vty_addr Set vty's bind address
-P, --vty_port Set vty's port number
-r, --retain When program terminates, retain added route by zebra.
-u, --user User to run as
-g, --group Group to run as
-s, --nl-bufsize Set netlink receive buffer size
-v, --version Print program version
-h, --help Display this help and exit
Report bugs to https://bugzilla.quagga.net
root@Hardened Cellular Router:~#
由以下可知
#define ZEBRA_CMD_ON "zebra -d -u root -g quaggavty -f "ZEBRA_CONF_FILE
- user = root
- group = quaggavty
這樣就不會有問題了
不慣是從舊版的作 upgrade 或是直接用 mfgtool 燒錄 v2.00
測試 PASS
可以上 code 了
commit 61f01f6f75250dfb04ab7f12bc22e7951a5e8000
Refs: [release/v2.00], {origin/release/v2.00}
Author: jeffrey <[email protected]>
Date: Tue Jun 11 13:26:00 2019 +0800
solve the problem about the icos module zebra init fail as following:
```
vty_read_config: failed to open configuration file /etc/quagga/zebra.conf: Permission denied
can't open configuration file [/etc/quagga/zebra.conf]
```
this problem cause by the firmware upgrade from
the image with quagga 0.99.24
upgrade to
the image with quagga 1.2.4
because the default configuration files of these 2 quagga version have different file owner at `/etc/quagga`
current solution is move the quagga related daemon configuration
from `/etc/quagga/...` to 'tmp/icos/...'
proscend/prosrc/icos/icoslib/bgp/bgp.c | 14 ++++++++------
proscend/prosrc/icos/icoslib/ospf_2g/ospf_2g.c | 12 +++++++-----
proscend/prosrc/icos/icoslib/rip_2g/rip_2g.c | 12 +++++++-----
proscend/prosrc/icos/icoslib/zebra/zebra.c | 14 ++++++++------
4 files changed, 30 insertions(+), 22 deletions(-)
順便 update release note
M330 HYTEC web ui signal 圖示有問題
generic 正常
感覺跟 M300 上次修正的現現有點像 - change a way to display review at setting wizard
改個寫法再試試看
diff --git a/proscend/prosrc/www/app/app.controller.js b/proscend/prosrc/www/app/app.controller.js
index 7d660a1..462721f 100644
--- a/proscend/prosrc/www/app/app.controller.js
+++ b/proscend/prosrc/www/app/app.controller.js
@@ -103,6 +103,7 @@ function appController($scope, $translate, $templateCache, $interval, $window, i
vm.help = {};
vm.get_signal_img = get_signal_img;
+ vm._get_signal_img = "app/images/signal-0.png";
@@ -130,6 +131,7 @@ function appController($scope, $translate, $templateCache, $interval, $window, i
vm.top = result.data.top;
vm.help.signal = vm.top.signal;
+ vm._get_signal_img = vm.get_signal_img(vm.help.signal);
if (vm.top.lte_cur_proto_state == 2) {
vm.help.operator = vm.top.modem_operator_name;
diff --git a/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src b/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src
index 668f520..8bd0ddb 100644
--- a/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.help.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_hytec/src/brand/top.html.src b/proscend/prosrc/www/brand_hytec/src/brand/top.html.src
index 57752ed..1e5a651 100644
--- a/proscend/prosrc/www/brand_hytec/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_hytec/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.help.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src b/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src
index df983da..ed62d24 100644
--- a/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.help.signal)}}" height="20"> {{vm.help.rssi}} {{vm.help.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.help.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_proscend/src/brand/top.html.src b/proscend/prosrc/www/brand_proscend/src/brand/top.html.src
index df983da..ed62d24 100644
--- a/proscend/prosrc/www/brand_proscend/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_proscend/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.help.signal)}}" height="20"> {{vm.help.rssi}} {{vm.help.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.help.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
先在 M330 確認沒問題後再 update 到 M300 上
M330 沒問題 上 code
commit 13145eeaa594631a42634e672958d71b85854f90
Refs: [release/v0.03]
Author: jeffrey <[email protected]>
Date: Tue Jun 11 14:42:36 2019 +0800
change a way to display the signal image at top banner:
- sometimes the 'signal' parameter at 'vm.get_signal_img(signal)' will be 'undefined'
current solution is that do not use function call at view template
proscend/prosrc/www/app/app.controller.js | 2 ++
proscend/prosrc/www/brand_ctcu/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_hytec/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_nobrand/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_proscend/src/brand/top.html.src | 2 +-
5 files changed, 6 insertions(+), 4 deletions(-)
M300 用一樣的方式掃台
diff --git a/proscend/prosrc/www/app/app.controller.js b/proscend/prosrc/www/app/app.controller.js
index 725b5e2..8e56785 100644
--- a/proscend/prosrc/www/app/app.controller.js
+++ b/proscend/prosrc/www/app/app.controller.js
@@ -108,6 +108,7 @@ function appController($scope, $http, $timeout, $translate, $location, $template
vm.help.gnss_link_to_google_maps = 0;
vm.get_signal_img = get_signal_img;
+ vm._get_signal_img = "app/images/signal-0.png";^M
@@ -183,6 +184,7 @@ function appController($scope, $http, $timeout, $translate, $location, $template
// update from share service data
vm.share.operator = share.data.operator;
vm.share.signal = share.data.signal;
+ vm._get_signal_img = vm.get_signal_img(vm.share.signal);^M
vm.share.whoAmI = share.data.whoAmI;
diff --git a/proscend/prosrc/www/brand_advice/src/brand/top.html.src b/proscend/prosrc/www/brand_advice/src/brand/top.html.src
index 92383f6..4f643b3 100644
--- a/proscend/prosrc/www/brand_advice/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_advice/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src b/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src
index 668f520..7aabf60 100644
--- a/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_ctcu/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_cxr/src/brand/top.html.src b/proscend/prosrc/www/brand_cxr/src/brand/top.html.src
index 3be3bb1..9442bb4 100644
--- a/proscend/prosrc/www/brand_cxr/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_cxr/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_digicomm/src/brand/top.html.src b/proscend/prosrc/www/brand_digicomm/src/brand/top.html.src
index 6db1cce..25dd153 100644
--- a/proscend/prosrc/www/brand_digicomm/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_digicomm/src/brand/top.html.src
@@ -8,7 +8,7 @@
</div>
<p class="navbar-text">M300</p>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{vm.help.date | date:'medium':"+0000"}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_hytec/src/brand/top.html.src b/proscend/prosrc/www/brand_hytec/src/brand/top.html.src
index 57752ed..ace8a75 100644
--- a/proscend/prosrc/www/brand_hytec/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_hytec/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src b/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src
index 4f5f18f..27ee234 100644
--- a/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_nobrand/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_planet/src/brand/top.html.src b/proscend/prosrc/www/brand_planet/src/brand/top.html.src
index 6efb868..597cacd 100644
--- a/proscend/prosrc/www/brand_planet/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_planet/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
diff --git a/proscend/prosrc/www/brand_xentino/src/brand/top.html.src b/proscend/prosrc/www/brand_xentino/src/brand/top.html.src
index 2fa44f0..c0aa604 100644
--- a/proscend/prosrc/www/brand_xentino/src/brand/top.html.src
+++ b/proscend/prosrc/www/brand_xentino/src/brand/top.html.src
@@ -7,7 +7,7 @@
</a>
</div>
<p class="navbar-text">
- <img ng-src="{{vm.get_signal_img(vm.share.signal)}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
+ <img ng-src="{{vm._get_signal_img}}" height="20"> {{vm.help.rssi}} {{vm.share.operator}}</p>
<p class="navbar-text">{{ 'IDENTIFICATION_SYSTEM_UPTIME' | translate }}: {{vm.help.sysUpTime_text}}</p>
#ifndef PROSRC_NO_ETH_WAN
先測一下 generic 版本 - M300/0_GENERIC
- PASS
再測個 M300/10_GPS_HYTEC
M300/10_GPS_HYTEC
- PASS
M300 也可以上 code
commit 804a0d15c0ba63d34493fb9c477a0acc296cdc6a
Refs: [release/v2.00], {origin/release/v2.00}
Author: jeffrey <[email protected]>
Date: Tue Jun 11 17:20:22 2019 +0800
change a way to display the signal image at top banner:
- sometimes the 'signal' parameter at 'vm.get_signal_img(signal)' will be 'undefined'
current solution is that do not use function call at view template
proscend/prosrc/www/app/app.controller.js | 2 ++
proscend/prosrc/www/brand_advice/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_ctcu/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_cxr/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_digicomm/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_hytec/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_nobrand/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_planet/src/brand/top.html.src | 2 +-
proscend/prosrc/www/brand_xentino/src/brand/top.html.src | 2 +-
9 files changed, 10 insertions(+), 8 deletions(-)