§2024-10-30
試作機器: hc4Noble.yushei.net
alexlai@hc4Noble:~/build$ git clone https://github.com/nodemailer/wildduck-webmail.git
Cloning into 'wildduck-webmail'...
remote: Enumerating objects: 2853, done.
remote: Counting objects: 100% (138/138), done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 2853 (delta 68), reused 109 (delta 53), pack-reused 2715 (from 1)
Receiving objects: 100% (2853/2853), 3.87 MiB | 7.78 MiB/s, done.
Resolving deltas: 100% (1567/1567), done.
alexlai@hc4Noble:~/build$ cd wildduck-webmail
alexlai@hc4Noble:~/build/wildduck-webmail$ git tag
v1.0.0
v1.0.1
alexlai@hc4Noble:~/build/wildduck-webmail$ git checkout v1.0.1 -b v1.0.1
Switched to a new branch 'v1.0.1'
$ ls
app.js bower.json config Dockerfile Gruntfile.js lib LICENSE LICENSE_ET package.json public README.md routes server.js views
$ ls config/
default.toml
- config/default.toml
name="Wild Duck Mail"
title="wildduck-www"
[service]
# email domain for new users
domain="localhost"
# default quotas for new users
quota=1024
recipients=2000
forwards=2000
identities=10
allowIdentityEdit=true
allowJoin=true
enableSpecial=false # if true the allow creating addresses with special usernames
# allowed domains for new addresses
domains=["localhost"]
generalNotification="" # static notification to show on top of the page
[service.sso.http]
enabled = false
header = "X-UserName" # value from this header is treated as logged in username
authRedirect = "http:/127.0.0.1:3000/login" # URL to redirect non-authenticated users
logoutRedirect = "http:/127.0.0.1:3000/logout" # URL to redirect when user clicks on "log out"
[api]
url="http://127.0.0.1:8080"
accessToken=""
[dbs]
# redis connection string for Express sessions
redis="redis://127.0.0.1:6379/5"
[www]
host=false
port=3000
proxy=false
postsize="5MB"
log="dev"
secret="a cat"
secure=false
listSize=20
[recaptcha]
enabled=false
siteKey=""
secretKey=""
[totp]
# Issuer name for TOTP, defaults to config.name
issuer=false
# once setup do not change as it would invalidate all existing 2fa sessions
secret="a secret cat"
[u2f]
# set to false if not using HTTPS
enabled=true
# must be https url or use default
#appId="https://127.0.0.1:8080"
[log]
level="silly"
mail=true
[setup]
# these values are shown in the configuration help page
[setup.imap]
hostname="localhost"
secure=true
port=9993
[setup.pop3]
hostname="localhost"
secure=true
port=9995
[setup.smtp]
hostname="localhost"
secure=false
port=2587
- npm install
$ npm install
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated osenv@0.1.5: This package is no longer supported.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated npmlog@6.0.2: This package is no longer supported.
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated csurf@1.11.0: Please use another csrf package
npm WARN deprecated are-we-there-yet@3.0.1: This package is no longer supported.
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated rimraf@2.4.5: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated glob@8.0.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@6.0.4: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@5.0.15: Glob versions prior to v9 are no longer supported
npm WARN deprecated multer@1.4.4: Multer 1.x is affected by CVE-2022-24434. This is fixed in v1.4.4-lts.1 which drops support for versions of Node.js before 6. Please upgrade to at least Node.js 6 and version 1.4.4-lts.1 of Multer. If you need support for older versions of Node.js, we are open to accepting patches that would fix the CVE on the main 1.x release line, whilst maintaining compatibility with Node.js 0.10.
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated gauge@4.0.4: This package is no longer supported.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
added 444 packages, and audited 445 packages in 1m
52 packages are looking for funding
run `npm fund` for details
15 vulnerabilities (4 low, 5 moderate, 6 high)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
npm run bowerdeps
The command npm run bowerdeps is used to run a specific script defined in the package.json file of a Node.js project. Here’s a breakdown of what it typically involves: What is Bower? Bower: Bower is a package manager for front-end dependencies. It was commonly used to manage libraries and frameworks like jQuery, Bootstrap, etc. However, it has largely fallen out of favor in recent years, with many projects moving to npm or Yarn for package management.
alexlai@hc4Noble:~/build/wildduck-webmail$ npm run bowerdeps
> wildduck-webmail@1.0.1 bowerdeps
> mkdir -p public/components && bower install
bower bootstrap-daterangepicker#* not-cached https://github.com/dangrossman/bootstrap-daterangepicker.git#*
bower bootstrap-daterangepicker#* resolve https://github.com/dangrossman/bootstrap-daterangepicker.git#*
bower jquery#* not-cached https://github.com/jquery/jquery-dist.git#*
bower jquery#* resolve https://github.com/jquery/jquery-dist.git#*
bower underscore#* not-cached https://github.com/jashkenas/underscore.git#*
bower underscore#* resolve https://github.com/jashkenas/underscore.git#*
bower handlebars#* not-cached https://github.com/components/handlebars.js.git#*
bower handlebars#* resolve https://github.com/components/handlebars.js.git#*
bower favico.js#^0.3.10 not-cached https://github.com/ejci/favico.js.git#^0.3.10
bower favico.js#^0.3.10 resolve https://github.com/ejci/favico.js.git#^0.3.10
bower DOMPurify#^1.0.2 not-cached https://github.com/cure53/DOMPurify.git#^1.0.2
bower DOMPurify#^1.0.2 resolve https://github.com/cure53/DOMPurify.git#^1.0.2
bower moment#* not-cached https://github.com/moment/moment.git#*
bower moment#* resolve https://github.com/moment/moment.git#*
bower fetch#2.0.4 not-cached https://github.com/github/fetch.git#2.0.4
bower fetch#2.0.4 resolve https://github.com/github/fetch.git#2.0.4
bower summernote#* not-cached https://github.com/summernote/summernote.git#*
bower summernote#* resolve https://github.com/summernote/summernote.git#*
bower promise-polyfill#^7.0.0 not-cached https://github.com/taylorhakes/promise-polyfill.git#^7.0.0
bower promise-polyfill#^7.0.0 resolve https://github.com/taylorhakes/promise-polyfill.git#^7.0.0
bower event-source-polyfill#* not-cached https://github.com/Yaffle/EventSource.git#*
bower event-source-polyfill#* resolve https://github.com/Yaffle/EventSource.git#*
bower jquery#* download https://github.com/jquery/jquery-dist/archive/3.7.1.tar.gz
bower bootstrap-daterangepicker#* download https://github.com/dangrossman/bootstrap-daterangepicker/archive/v3.0.5.tar.gz
bower handlebars#* download https://github.com/components/handlebars.js/archive/v4.7.8.tar.gz
bower underscore#* download https://github.com/jashkenas/underscore/archive/1.13.7.tar.gz
bower favico.js#^0.3.10 download https://github.com/ejci/favico.js/archive/0.3.10.tar.gz
bower DOMPurify#^1.0.2 download https://github.com/cure53/DOMPurify/archive/1.0.11.tar.gz
bower moment#* download https://github.com/moment/moment/archive/2.30.1.tar.gz
bower fetch#2.0.4 download https://github.com/github/fetch/archive/v2.0.4.tar.gz
bower summernote#* download https://github.com/summernote/summernote/archive/v0.9.1.tar.gz
bower promise-polyfill#^7.0.0 download https://github.com/taylorhakes/promise-polyfill/archive/7.1.2.tar.gz
bower favico.js#^0.3.10 extract archive.tar.gz
bower event-source-polyfill#* download https://github.com/Yaffle/EventSource/archive/1.0.31.tar.gz
bower handlebars#* extract archive.tar.gz
bower jquery#* extract archive.tar.gz
bower bootstrap-daterangepicker#* extract archive.tar.gz
bower promise-polyfill#^7.0.0 extract archive.tar.gz
bower DOMPurify#^1.0.2 extract archive.tar.gz
bower fetch#2.0.4 extract archive.tar.gz
bower underscore#* extract archive.tar.gz
bower event-source-polyfill#* extract archive.tar.gz
bower summernote#* extract archive.tar.gz
bower favico.js#^0.3.10 resolved https://github.com/ejci/favico.js.git#0.3.10
bower handlebars#* resolved https://github.com/components/handlebars.js.git#4.7.8
bower promise-polyfill#^7.0.0 mismatch Version declared in the json (7.1.0) is different than the resolved one (7.1.2)
bower promise-polyfill#^7.0.0 resolved https://github.com/taylorhakes/promise-polyfill.git#7.1.2
bower moment#* extract archive.tar.gz
bower event-source-polyfill#* resolved https://github.com/Yaffle/EventSource.git#1.0.31
bower fetch#2.0.4 resolved https://github.com/github/fetch.git#2.0.4
bower bootstrap-daterangepicker#* resolved https://github.com/dangrossman/bootstrap-daterangepicker.git#3.0.5
bower jquery#1.9.1 - 3 not-cached https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower jquery#1.9.1 - 3 resolve https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower moment#>=2.9.0 not-cached https://github.com/moment/moment.git#>=2.9.0
bower moment#>=2.9.0 resolve https://github.com/moment/moment.git#>=2.9.0
bower jquery#1.9.1 - 3 download https://github.com/jquery/jquery-dist/archive/3.7.1.tar.gz
bower moment#>=2.9.0 download https://github.com/moment/moment/archive/2.30.1.tar.gz
bower jquery#1.9.1 - 3 extract archive.tar.gz
bower DOMPurify#^1.0.2 invalid-meta for:/tmp/alexlai/bower/7466080023e35ac1d0e405573139662b-6921-wcnUfL/bower.json
bower DOMPurify#^1.0.2 invalid-meta The "name" is recommended to be lowercase, can contain digits, dots, dashes
bower moment#>=2.9.0 extract archive.tar.gz
bower DOMPurify#^1.0.2 resolved https://github.com/cure53/DOMPurify.git#1.0.11
bower jquery#* resolved https://github.com/jquery/jquery-dist.git#3.7.1
bower jquery#1.9.1 - 3 resolved https://github.com/jquery/jquery-dist.git#3.7.1
bower summernote#* resolved https://github.com/summernote/summernote.git#0.9.1
bower underscore#* resolved https://github.com/jashkenas/underscore.git#1.13.7
bower moment#* resolved https://github.com/moment/moment.git#2.30.1
bower moment#>=2.9.0 resolved https://github.com/moment/moment.git#2.30.1
bower favico.js#^0.3.10 install favico.js#0.3.10
bower handlebars#* install handlebars#4.7.8
bower promise-polyfill#^7.0.0 install promise-polyfill#7.1.2
bower event-source-polyfill#* install event-source-polyfill#1.0.31
bower fetch#2.0.4 install fetch#2.0.4
bower bootstrap-daterangepicker#* install bootstrap-daterangepicker#3.0.5
bower DOMPurify#^1.0.2 install DOMPurify#1.0.11
bower jquery#1.9.1 - 3 install jquery#3.7.1
bower summernote#* install summernote#0.9.1
bower underscore#* install underscore#1.13.7
bower moment#>=2.9.0 install moment#2.30.1
favico.js#0.3.10 public/components/favico.js
handlebars#4.7.8 public/components/handlebars
promise-polyfill#7.1.2 public/components/promise-polyfill
event-source-polyfill#1.0.31 public/components/event-source-polyfill
fetch#2.0.4 public/components/fetch
bootstrap-daterangepicker#3.0.5 public/components/bootstrap-daterangepicker
├── jquery#3.7.1
└── moment#2.30.1
DOMPurify#1.0.11 public/components/DOMPurify
jquery#3.7.1 public/components/jquery
summernote#0.9.1 public/components/summernote
underscore#1.13.7 public/components/underscore
moment#2.30.1 public/components/moment
node server.js
alexlai@hc4Noble:~/build/wildduck-webmail$ node server.js
info Express WWW server listening on port 3000
info HTTP GET / 200 393.057 ms - 13924
info HTTP GET /bootstrap-3.3.7/css/lumen.css 200 53.186 ms - 155929
info HTTP GET /css/wildduck.css 200 58.577 ms - 5845
info HTTP GET /demo/img01.png 200 53.186 ms - 322725
info HTTP GET /demo/img02.png 200 46.259 ms - 300356
info HTTP GET /demo/img03.png 200 25.936 ms - 200377
info HTTP GET /components/underscore/underscore-min.js 200 31.363 ms - 19571
info HTTP GET /demo/img04.png 200 67.261 ms - 178487
info HTTP GET /demo/img05.png 200 50.087 ms - 160518
info HTTP GET /components/jquery/dist/jquery.min.js 200 73.953 ms - 87533
info HTTP GET /components/promise-polyfill/dist/promise.min.js 200 69.679 ms - 2884
info HTTP GET /bootstrap-3.3.7/js/bootstrap.js 200 75.519 ms - 69707
info HTTP GET /components/bootstrap-daterangepicker/daterangepicker.css 200 70.349 ms - 7659
info HTTP GET /components/bootstrap-daterangepicker/daterangepicker.js 200 58.669 ms - 65703
info HTTP GET /components/moment/min/moment-with-locales.min.js 200 73.420 ms - 375055
info HTTP GET /components/summernote/dist/summernote.css 404 113.052 ms - 5375
info HTTP GET /components/summernote/dist/summernote.min.js 404 67.400 ms - 5375
info HTTP GET /components/fetch/fetch.js 200 28.148 ms - 13012
info HTTP GET /components/event-source-polyfill/src/eventsource.min.js 200 27.400 ms - 11567
info HTTP GET /components/handlebars/handlebars.min.js 200 17.912 ms - 88427
info HTTP GET /components/favico.js/favico.js 200 8.800 ms - 20258
info HTTP GET /wd.js 200 8.948 ms - 2132
info HTTP GET /favicon-32x32.png 200 8.468 ms - 2819
info HTTP GET /bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff2 200 4.182 ms - 18028
info HTTP GET /favicon-32x32.png 304 14.748 ms - -
...