20190530_jeffrey - silenceuncrio/diary GitHub Wiki

0915

今天來做 M330

先 build 一個最新的 M330

0940

昨天 Wifi 部分 jessy 已經幫我做修正了

我只改到 set 沒改到 apply

那就來做 ariel 的需求吧

1015

ariel 的需求收工

commit 66494557236bf7ecc3a2a2dd2ddc8daec933d501
Refs: [release/v0.03], {origin/release/v0.03}
Author: jeffrey <[email protected]>
Date:   Thu May 30 10:14:11 2019 +0800

    check PROSRC_LTE_BRIDGE_ROUTER=y then display BRIDGE+ROUTER
    check PROSRC_LTE_ROUTER_ROUTER =y then display ROUTER+ROUTER

 proscend/prosrc/www/Makefile                     |  1 +
 proscend/prosrc/www/app/feature/wanPriority.html | 75 ------------------------
 2 files changed, 1 insertion(+), 75 deletions(-)

1030

可以再回 M300 - feature/lighttpd

1310

lighttpd 在上傳的檔案太大時會出問題

例如傳一個 5MB 的檔案會回傳 413 - Request Entity Too Large

1400

目前 M300 - feature/lighttpd 的 lighttpd 版本為 1.4.36

root@Cellular Router:/tmp# lighttpd -v
lighttpd/1.4.36 (ssl) - a light and fast webserver
Build-Date: Apr 16 2019 05:47:09

看到以下兩篇都說到 lighttpd v1.4.36 在 file upload 時會有問題

先想辦法升級一下 lighttpd 吧

1425

參考 OpenEmbedded - lighttpd 1.4.53

複製到 M300\meta-proscend\recipes-extended\lighttpd

執行 bitbake lighttpd 產生以下錯誤

user@aef20c2bd55a:~/build_small$ bitbake lighttpd
Loading cache: 100% |##############################################################################################################################################################################| ETA:  00:00:00
Loaded 2793 entries from dependency cache.
ERROR: ExpansionError during parsing /home/user/meta-proscend/recipes-extended/lighttpd/lighttpd_1.4.53.bb: Failure expanding variable PACKAGECONFIG, expression was openssl pcre zlib     ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}     ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)}  which triggered exception AttributeError: 'module' object has no attribute 'filter'

Summary: There was 1 ERROR message shown, returning a non-zero exit code.

作以下修改即可

26c26
<     ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
---
>     ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \

build image... ok

mfgtool 燒錄

1500

成功把 lighttpd 從 1.4.36 升級成 1.4.53

root@Cellular Router:~# lighttpd -v
lighttpd/1.4.53 (ssl) - a light and fast webserver

執行有問題啊

root@Cellular Router:~# lighttpd -f /home/factory/icos/lighttpd/lighttpd.conf
2019-05-30 06:52:41: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/configfile.c.59) Warning: please add "mod_openssl" to server.modules list in lighttpd.conf.  A future release of lighttpd 1.4.x *will not* automatically load mod_openssl and lighttpd *will not* use SSL/TLS where your lighttpd.conf contains ssl.* directives
2019-05-30 06:52:41: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/plugin.c.230) dlopen() failed for: /usr/lib/mod_access.so /usr/lib/mod_access.so: cannot open shared object file: No such file or directory
2019-05-30 06:52:41: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/server.c.1177) loading plugins finally failed

我可能要重套一下 1.4.53 的 config 才行

/etc/lighttpd/lighttpd.conf

# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $

############ Options you really have to take care of ####################

## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules              = (
#                               "mod_rewrite",
#                               "mod_redirect",
#                               "mod_alias",
                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
#                               "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
#                               "mod_webdav",
                                "mod_accesslog" )

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root        = "/www/pages/"

## where to send error-messages to
server.errorlog             = "/www/logs/lighttpd.error.log"

# files to check for if .../ is requested
index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X

# mimetype mapping
mimetype.assign             = (
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "application/ogg",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".cpp"          =>      "text/plain",
  ".log"          =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar"
 )

# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr        = "enable"


## send a different Server: header
## be nice and keep it at lighttpd
# server.tag                 = "lighttpd"

#### accesslog module
accesslog.filename          = "/www/logs/access.log"
debug.log-request-handling = "enable"




## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
url.access-deny             = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

######### Options that are good to be but not neccesary to be changed #######

## bind to port (default: 80)
#server.port                = 81

## bind to localhost (default: all interfaces)
#server.bind                = "grisu.home.kneschke.de"

## error-handler for status 404
#server.error-handler-404   = "/error-handler.html"
#server.error-handler-404   = "/error-handler.php"

## to help the rc.scripts
#server.pid-file            = "/var/run/lighttpd.pid"


###### virtual hosts
##
##  If you want name-based virtual hosting add the next three settings and load
##  mod_simple_vhost
##
## document-root =
##   virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
##   virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root   = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host  = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"


##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/home/weigon/projects/lighttpd/doc/status-"

## virtual directory listings
#dir-listing.activate       = "enable"

## enable debugging
#debug.log-request-header   = "enable"
#debug.log-response-header  = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found   = "enable"

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot              = "/"

## change uid to <uid> (default: don't care)
#server.username            = "wwwrun"

## change uid to <uid> (default: don't care)
#server.groupname           = "wwwrun"

#### compress module
#compress.cache-dir         = "/tmp/lighttpd/cache/compress/"
#compress.filetype          = ("text/plain", "text/html")

#### proxy module
## read proxy.txt for more info
#proxy.server               = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "host" => "192.168.0.101",
#                                   "port" => 80
#                                 )
#                               )
#                             )

#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
#fastcgi.server             = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "socket" => "/tmp/php-fastcgi.socket",
#                                   "bin-path" => "/usr/local/bin/php"
#                                 )
#                               )
#                            )

#### CGI module
#cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
#                               ".cgi" => "/usr/bin/perl" )
#

#### SSL engine
#ssl.engine                 = "enable"
#ssl.pemfile                = "server.pem"

#### status module
#status.status-url          = "/server-status"
#status.config-url          = "/server-config"

#### auth module
## read authentication.txt for more info
#auth.backend               = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"

#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
#auth.backend.ldap.filter   = "(uid=$)"

#auth.require               = ( "/server-status" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "user=jan"
#                               ),
#                               "/server-config" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "valid-user"
#                               )
#                             )

#### url handling modules (rewrite, redirect, access)
#url.rewrite                = ( "^/$"             => "/server-status" )
#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )

#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
#  url.redirect            = ( "^/(.*)" => "http://%1/$1" )
#}

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern        = "/home/storage/dev/www/%3/htdocs/"

#### expire module
#expire.url                 = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### ssi
#ssi.extension              = ( ".shtml" )

#### rrdtool
#rrdtool.binary             = "/usr/bin/rrdtool"
#rrdtool.db-name            = "/var/www/lighttpd.rrd"

#### setenv
#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )

## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
# trigger-before-download.trigger-timeout = 10

## for mod_cml
## don't forget to add index.cml to server.indexfiles
# cml.extension               = ".cml"
# cml.memcache-hosts          = ( "127.0.0.1:11211" )

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"

#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1

# include other config file fragments from lighttpd.d subdir
include_shell "find /etc/lighttpd.d -maxdepth 1 -name '*.conf' -exec cat {} \;"

化簡一下

# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $

############ Options you really have to take care of ####################

## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules              = (
                                "mod_rewrite",
                                "mod_access",
                                "mod_cgi",
                                "mod_accesslog" )

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root        = "/www/"

## where to send error-messages to
server.errorlog             = "/www/logs/lighttpd.error.log"

# files to check for if .../ is requested
index-file.names            = ( "index.html" )



######### Options that are good to be but not neccesary to be changed #######



#### CGI module
cgi.assign = ( ".cgi" => "" )

#### SSL engine
#ssl.engine                 = "enable"
#ssl.pemfile                = "server.pem"

#### url handling modules (rewrite, redirect, access)
url.rewrite = (
  "^/api/([a-zA-Z]+)[0-9a-zA-Z=.?]*$" => "/cgi-bin/api.cgi?act=$1",
)



$SERVER["socket"] == ":443" {
  ssl.engine = "enable" 
  ssl.pemfile = "/home/factory/icos/lighttpd/lighttpd.pem" 
}

執行的錯誤如下

<factory/icos/lighttpd# lighttpd -f ./lighttpd.conf.1.4.53
2019-05-30 07:13:50: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/configfile.c.59) Warning: please add "mod_openssl" to server.modules list in lighttpd.conf.  A future release of lighttpd 1.4.x *will not* automatically load mod_openssl and lighttpd *will not* use SSL/TLS where your lighttpd.conf contains ssl.* directives
2019-05-30 07:13:50: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/plugin.c.230) dlopen() failed for: /usr/lib/mod_access.so /usr/lib/mod_access.so: cannot open shared object file: No such file or directory
2019-05-30 07:13:50: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/server.c.1177) loading plugins finally failed

在 config 的 server.modules 加上 mod_openssl

再次執行的錯誤如下

</icos/lighttpd# lighttpd -f ./lighttpd.conf.1.4.53
2019-05-30 07:15:17: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/plugin.c.230) dlopen() failed for: /usr/lib/mod_access.so /usr/lib/mod_access.so: cannot open shared object file: No such file or directory
2019-05-30 07:15:17: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/server.c.1177) loading plugins finally failed

改一下 lighttpd_1.4.53.bbappend

RDEPENDS_${PN} += " \
               lighttpd-module-rewrite \
               lighttpd-module-cgi \
               lighttpd-module-openssl \
               lighttpd-module-access \
"

新增 lighttpd-module-openssllighttpd-module-access

重新產生 image

1605

漏了 mod_accesslog.so

<# lighttpd -f /home/factory/icos/lighttpd/lighttpd.conf
2019-05-30 07:48:43: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/plugin.c.230) dlopen() failed for: /usr/lib/mod_accesslog.so /usr/lib/mod_accesslog.so: cannot open shared object file: No such file or directory
2019-05-30 07:48:43: (/home/user/build_small/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/lighttpd/1.4.53-r0/lighttpd-1.4.53/src/server.c.1177) loading plugins finally failed

繼續改 lighttpd_1.4.53.bbappend

RDEPENDS_${PN} += " \
               lighttpd-module-rewrite \
               lighttpd-module-cgi \
               lighttpd-module-openssl \
               lighttpd-module-access \
               lighttpd-module-accesslog \
"

再 build 一次 image

1640

終於又跑起來了

<# lighttpd -f /home/factory/icos/lighttpd/lighttpd.conf
root@Cellular Router:/www/cgi-bin# ps aux | grep lighttpd
root      3929  0.0  0.2   4868  1172 ?        S    08:29   0:00 lighttpd -f /home/factory/icos/lighttpd/lighttpd.conf
root      4462  0.0  0.0   1768   320 ttymxc0  S+   08:29   0:00 grep lighttpd

趕緊試一下 file upload

慘了

網頁一開起來就進入下載 window 視窗

怕是我 config 刪太多了

1650

mimetype.assign 部分再加回去

M300 首頁正常開起來了

順便試一下 https... 也能把首頁開起來

趕緊來試 file upload

2MB... ok

5MB... ok

直接沖一個目前的 m300 image... 接近 40 MB

成功了... 花了 54 上傳

1805

firmware upgrade

  • 上傳成功
  • upgrade 也成功

目前停在請 user reboot device 的畫面

今天真是大躍進

⚠️ **GitHub.com Fallback** ⚠️