janeczku / calibre-web

:books: Web app for browsing, reading and downloading eBooks stored in a Calibre database
GNU General Public License v3.0
13.19k stars 1.41k forks source link

only last e-mail address is saved when specifying multiple e-reader mail addresses in user settings #3130

Closed orcofthedarkness closed 1 week ago

orcofthedarkness commented 3 months ago

Describe the bug/problem

Since 0.6.23 it is possible to specify multiple e-mail addresses in user settings to be able to send an e-book to multiple e-readers at once. The issue is, that once you specify more than one e-reader address in the user settings only the last specified address is saved. It is not an UI issue, as a book is only sent so the last address saved.

To Reproduce

Steps to reproduce the behavior:

  1. Go to 'Settings - Edit Users - Edit '
  2. Specify more than one e-mail address in section: "Send to eReader Email Address"
  3. Click "Save" at the bottom of the page
  4. Check the e-mail addresses specified in section: "Send to eReader Email Address"
  5. Select a random book in your library and click on "Send to Reader" on the book details page

Expected behavior

1) Click "Save" at the bottom of the page --> After click on "Save" all specified e-mail addresses are shown in section: "Send to eReader Email Address" 2)Select a random book in the library, and click "Send book to eReader" on the book details page --> the book will be sent to all specified ereader addresses (step 2 in "To Reproduce")

Experienced behavior

1) Click "Save" at the bottom of the page --> After click on "Save" only the last of the specified e-mail addresses is shown in section: "Send to eReader Email Address" 2) Select a random book in the library, and click "Send book to eReader" on the book details page --> the book will be sent only to the last specified ereader address

Logfile

both the calibre-web and the access log files start after changing to logging mode=DEBUG

access.log:

81.*.*.* - - [2024-08-19 18:41:50] "GET //admin/view HTTP/1.1" 200 19095 0.005142
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001185
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000711
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000804
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000808
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/css/libs/images/loading-icon.gif HTTP/1.1" 304 465 0.000634
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000903
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000677
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000635
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000625
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000787
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000659
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000695
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000633
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000721
81.*.*.* - - [2024-08-19 18:41:50] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000690
81.*.*.* - - [2024-08-19 18:41:54] "GET //admin/config HTTP/1.1" 200 35501 0.038239
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001295
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000935
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000840
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/css/libs/images/loading-icon.gif HTTP/1.1" 304 465 0.000789
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.001431
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000934
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000689
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000681
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000731
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000620
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000767
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000628
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000615
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000598
81.*.*.* - - [2024-08-19 18:41:54] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000690
81.*.*.* - - [2024-08-19 18:41:59] "POST //admin/ajaxconfig HTTP/1.1" 200 545 0.017889
81.*.*.* - - [2024-08-19 18:42:02] "GET //admin/alive HTTP/1.1" 200 409 0.004112
81.*.*.* - - [2024-08-19 18:42:16] "GET //admin/view HTTP/1.1" 200 19096 0.074929
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001466
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000769
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/css/libs/images/loading-icon.gif HTTP/1.1" 304 465 0.000971
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000684
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000827
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000991
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000776
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000693
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000677
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000818
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000668
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000664
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000684
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000660
81.*.*.* - - [2024-08-19 18:42:16] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000698
81.*.*.* - - [2024-08-19 18:42:20] "GET //admin/logfile HTTP/1.1" 200 10185 0.007483
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001193
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000755
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.001005
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000854
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000736
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000934
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000669
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000670
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000873
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/logviewer.js HTTP/1.1" 200 2596 0.000680
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000721
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000649
81.*.*.* - - [2024-08-19 18:42:20] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000752
81.*.*.* - - [2024-08-19 18:42:21] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000842
81.*.*.* - - [2024-08-19 18:42:21] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000658
81.*.*.* - - [2024-08-19 18:42:21] "GET //ajax/log/0?_=1724092941052 HTTP/1.1" 200 94947 0.002390
81.*.*.* - - [2024-08-19 18:42:38] "GET // HTTP/1.1" 302 886 0.002620
81.*.*.* - - [2024-08-19 18:42:39] "GET //login?next=%2Fbooks%2F HTTP/1.1" 200 5128 0.059884
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001219
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000874
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000630
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.001047
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.001035
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000971
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000822
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000658
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000821
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000837
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000722
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000965
81.*.*.* - - [2024-08-19 18:42:39] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000646
81.*.*.* - - [2024-08-19 18:42:42] "POST //login?next=%2Fbooks%2F HTTP/1.1" 302 1073 0.003014
81.*.*.* - - [2024-08-19 18:42:42] "GET // HTTP/1.1" 200 86902 0.169368
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/css/style.css HTTP/1.1" 200 9483 0.001035
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000674
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.000936
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2366/md?c=1723998560 HTTP/1.1" 304 473 0.004407
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2365/md?c=1723811023 HTTP/1.1" 304 473 0.002318
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2364/md?c=1723811023 HTTP/1.1" 304 474 0.002687
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2363/md?c=1723811023 HTTP/1.1" 304 474 0.002153
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2362/md?c=1723811023 HTTP/1.1" 304 474 0.002589
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000890
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000706
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000810
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000845
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000834
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000802
81.*.*.* - - [2024-08-19 18:42:42] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000980
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2360/md?c=1723811022 HTTP/1.1" 304 473 0.003191
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2359/md?c=1723811022 HTTP/1.1" 304 474 0.002247
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2357/md?c=1723811028 HTTP/1.1" 304 473 0.002164
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2358/md?c=1723811022 HTTP/1.1" 304 474 0.002225
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2356/md?c=1723995767 HTTP/1.1" 304 474 0.002494
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2355/md?c=1723995767 HTTP/1.1" 304 474 0.002635
81.*.*.* - - [2024-08-19 18:42:42] "GET //cover/2361/md?c=1723811022 HTTP/1.1" 304 473 0.002171
81.*.*.* - - [2024-08-19 18:42:43] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000672
81.*.*.* - - [2024-08-19 18:42:43] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000863
81.*.*.* - - [2024-08-19 18:42:43] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000854
81.*.*.* - - [2024-08-19 18:42:43] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000781
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2354/md?c=1722097284 HTTP/1.1" 304 474 0.002588
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2353/md?c=1722097284 HTTP/1.1" 304 472 0.002230
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2352/md?c=1717157187 HTTP/1.1" 304 474 0.002243
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2351/md?c=1722238714 HTTP/1.1" 304 474 0.002197
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2320/md?c=1717055849 HTTP/1.1" 304 474 0.002266
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2321/md?c=1717055849 HTTP/1.1" 304 473 0.002220
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2322/md?c=1717224052 HTTP/1.1" 304 474 0.002136
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2323/md?c=1717055849 HTTP/1.1" 304 474 0.002296
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2324/md?c=1717055849 HTTP/1.1" 304 472 0.002191
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2325/md?c=1717055849 HTTP/1.1" 304 474 0.002147
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2326/md?c=1717055849 HTTP/1.1" 304 474 0.002189
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2327/md?c=1717055849 HTTP/1.1" 304 474 0.002195
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2328/md?c=1717055849 HTTP/1.1" 304 473 0.002196
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2329/md?c=1717055849 HTTP/1.1" 304 474 0.002194
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2330/md?c=1717055849 HTTP/1.1" 304 473 0.002138
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2331/md?c=1717055849 HTTP/1.1" 304 474 0.002191
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2332/md?c=1717055849 HTTP/1.1" 304 474 0.002195
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2333/md?c=1717055849 HTTP/1.1" 304 473 0.002193
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2319/md?c=1717055849 HTTP/1.1" 304 473 0.002285
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2281/md?c=1717055849 HTTP/1.1" 304 474 0.002134
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2280/md?c=1717055849 HTTP/1.1" 304 472 0.002295
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2279/md?c=1722238714 HTTP/1.1" 304 474 0.002301
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2273/md?c=1717055849 HTTP/1.1" 304 474 0.002378
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2271/md?c=1717055849 HTTP/1.1" 304 474 0.002254
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2270/md?c=1717055849 HTTP/1.1" 304 474 0.002211
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2269/md?c=1717055849 HTTP/1.1" 304 472 0.002322
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2268/md?c=1717055849 HTTP/1.1" 304 474 0.002430
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2267/md?c=1717055849 HTTP/1.1" 304 474 0.002374
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2265/md?c=1717055849 HTTP/1.1" 304 474 0.002210
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2266/md?c=1717055849 HTTP/1.1" 304 475 0.002326
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2264/md?c=1717055849 HTTP/1.1" 304 473 0.002276
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2263/md?c=1717055849 HTTP/1.1" 304 474 0.002265
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2262/md?c=1717055849 HTTP/1.1" 304 474 0.002129
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2261/md?c=1723995767 HTTP/1.1" 304 472 0.002165
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2260/md?c=1723995767 HTTP/1.1" 304 474 0.002140
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2259/md?c=1723995767 HTTP/1.1" 304 474 0.002168
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2257/md?c=1717055849 HTTP/1.1" 304 474 0.002121
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2256/md?c=1717055849 HTTP/1.1" 304 474 0.002162
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2258/md?c=1717055849 HTTP/1.1" 304 474 0.002192
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2255/md?c=1717055849 HTTP/1.1" 304 474 0.002169
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2254/md?c=1717055849 HTTP/1.1" 304 473 0.002135
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2253/md?c=1717055849 HTTP/1.1" 304 475 0.002117
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2252/md?c=1717055849 HTTP/1.1" 304 473 0.002129
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2251/md?c=1717055849 HTTP/1.1" 304 473 0.002121
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2250/md?c=1717055849 HTTP/1.1" 304 474 0.002159
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2249/md?c=1717055849 HTTP/1.1" 304 473 0.002177
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2248/md?c=1717055849 HTTP/1.1" 304 473 0.002126
81.*.*.* - - [2024-08-19 18:42:43] "GET //cover/2247/md?c=1717055849 HTTP/1.1" 304 474 0.002116
81.*.*.* - - [2024-08-19 18:42:44] "GET //book/2365 HTTP/1.1" 200 11031 0.059177
81.*.*.* - - [2024-08-19 18:42:44] "GET //cover/2365/og?c=1723811023 HTTP/1.1" 304 473 0.002462
81.*.*.* - - [2024-08-19 18:42:44] "GET //static/js/details.js HTTP/1.1" 200 5857 0.000931
81.*.*.* - - [2024-08-19 18:42:44] "GET //static/js/fullscreen.js HTTP/1.1" 200 2294 0.000661
81.*.*.* - - [2024-08-19 18:42:49] "GET //admin/view HTTP/1.1" 200 19096 0.005262
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001141
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000755
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000702
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/css/libs/images/loading-icon.gif HTTP/1.1" 304 465 0.000799
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000834
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.001151
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000841
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000856
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000664
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000830
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000792
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000736
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000654
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000711
81.*.*.* - - [2024-08-19 18:42:49] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000756
81.*.*.* - - [2024-08-19 18:42:54] "GET //admin/usertable HTTP/1.1" 200 176300 0.110153
81.*.*.* - - [2024-08-19 18:42:54] "GET //static/css/libs/bootstrap-table.min.css HTTP/1.1" 200 9800 0.000874
81.*.*.* - - [2024-08-19 18:42:54] "GET //static/css/libs/bootstrap-editable.css HTTP/1.1" 200 21772 0.000864
81.*.*.* - - [2024-08-19 18:42:54] "GET //static/css/libs/bootstrap-select.min.css HTTP/1.1" 200 11692 0.000687
81.*.*.* - - [2024-08-19 18:42:54] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000640
81.*.*.* - - [2024-08-19 18:42:54] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.000889
81.*.*.* - - [2024-08-19 18:42:54] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000705
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000916
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000656
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000839
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000955
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000694
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000642
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000826
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000715
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000809
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000890
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000799
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/bootstrap-table/bootstrap-table.min.js HTTP/1.1" 200 121298 0.000960
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/bootstrap-table/bootstrap-table-locale-all.min.js HTTP/1.1" 200 123911 0.000869
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/bootstrap-table/bootstrap-table-editable.min.js HTTP/1.1" 200 22924 0.000698
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/bootstrap-table/bootstrap-editable.min.js HTTP/1.1" 200 76781 0.000870
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/libs/bootstrap-select.min.js HTTP/1.1" 200 52842 0.000810
81.*.*.* - - [2024-08-19 18:42:55] "GET //static/js/table.js HTTP/1.1" 200 36242 0.000772
81.*.*.* - - [2024-08-19 18:42:55] "GET //ajax/listusers?search=&offset=0&limit=10&state=%5B%5D HTTP/1.1" 200 9230 0.008706
81.*.*.* - - [2024-08-19 18:42:55] "GET //ajax/getlocale?_=1724092975382 HTTP/1.1" 200 1446 0.002263
81.*.*.* - - [2024-08-19 18:42:55] "GET //ajax/getdefaultlanguage?_=1724092975383 HTTP/1.1" 200 561 0.002397
81.*.*.* - - [2024-08-19 18:42:56] "GET //admin/user/3 HTTP/1.1" 200 23646 0.031549
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000982
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000745
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000898
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000875
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000690
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.000878
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000661
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000825
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000835
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000689
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000652
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/bootstrap-table/bootstrap-table.min.js HTTP/1.1" 200 121298 0.000970
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000710
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/bootstrap-table/bootstrap-table-editable.min.js HTTP/1.1" 200 22924 0.000753
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/bootstrap-table/bootstrap-editable.min.js HTTP/1.1" 200 76781 0.000940
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/pwstrength/i18next.min.js HTTP/1.1" 200 56233 0.000762
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/pwstrength/i18nextHttpBackend.min.js HTTP/1.1" 200 9602 0.000671
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/libs/pwstrength/pwstrength-bootstrap.js HTTP/1.1" 200 34760 0.000729
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/password.js HTTP/1.1" 200 3280 0.000650
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/js/table.js HTTP/1.1" 200 36242 0.000726
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000866
81.*.*.* - - [2024-08-19 18:42:56] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000660
81.*.*.* - - [2024-08-19 18:42:57] "GET //static/js/libs/pwstrength/locales/en.json HTTP/1.1" 304 455 0.000897
81.*.*.* - - [2024-08-19 18:43:14] "GET //admin/logfile HTTP/1.1" 200 10185 0.003905
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001107
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000856
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000724
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.000819
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000780
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000741
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000709
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.001123
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000674
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000694
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/logviewer.js HTTP/1.1" 200 2596 0.000674
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000712
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000670
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000850
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000663
81.*.*.* - - [2024-08-19 18:43:15] "GET //ajax/log/0?_=1724092995194 HTTP/1.1" 200 95035 0.002032
81.*.*.* - - [2024-08-19 18:43:15] "GET //static/favicon.ico HTTP/1.1" 200 9642 0.000916
81.*.*.* - - [2024-08-19 18:43:57] "POST //admin/user/3 HTTP/1.1" 200 24179 0.015605
81.*.*.* - - [2024-08-19 18:43:57] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.004840
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000980
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000900
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.001465
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.001344
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.001866
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.001501
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.001896
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.001474
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.002328
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.002219
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/bootstrap-table/bootstrap-table.min.js HTTP/1.1" 200 121298 0.003089
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/main.js HTTP/1.1" 200 30970 0.002318
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.002236
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.002225
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/bootstrap-table/bootstrap-table-editable.min.js HTTP/1.1" 200 22924 0.002328
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/bootstrap-table/bootstrap-editable.min.js HTTP/1.1" 200 76781 0.002882
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/pwstrength/i18next.min.js HTTP/1.1" 200 56233 0.002506
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/pwstrength/i18nextHttpBackend.min.js HTTP/1.1" 200 9602 0.000666
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/pwstrength/pwstrength-bootstrap.js HTTP/1.1" 200 34760 0.000722
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/password.js HTTP/1.1" 200 3280 0.000647
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/table.js HTTP/1.1" 200 36242 0.000730
81.*.*.* - - [2024-08-19 18:43:58] "GET //static/js/libs/pwstrength/locales/en.json HTTP/1.1" 304 455 0.003451
81.*.*.* - - [2024-08-19 18:44:00] "GET //admin/logfile HTTP/1.1" 200 10185 0.003961
81.*.*.* - - [2024-08-19 18:44:00] "GET //static/css/libs/bootstrap.min.css HTTP/1.1" 200 122023 0.001128
81.*.*.* - - [2024-08-19 18:44:00] "GET //static/css/style.css HTTP/1.1" 200 9483 0.000684
81.*.*.* - - [2024-08-19 18:44:00] "GET //static/css/upload.css HTTP/1.1" 200 722 0.000653
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/jquery.min.js HTTP/1.1" 200 90530 0.001024
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/intention.min.js HTTP/1.1" 200 6449 0.000641
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/underscore-umd-min.js HTTP/1.1" 200 20121 0.000686
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/bootstrap.min.js HTTP/1.1" 200 40267 0.000811
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/context.min.js HTTP/1.1" 200 2116 0.000640
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/plugins.js HTTP/1.1" 200 80564 0.000865
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/libs/jquery.form.min.js HTTP/1.1" 200 17681 0.000776
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/uploadprogress.js HTTP/1.1" 200 7986 0.000719
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/main.js HTTP/1.1" 200 30970 0.000705
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/js/logviewer.js HTTP/1.1" 200 2596 0.000634
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/css/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1" 304 484 0.000873
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/css/fonts/GrandHotel-Regular.ttf HTTP/1.1" 304 472 0.000645
81.*.*.* - - [2024-08-19 18:44:01] "GET //ajax/log/0?_=1724093041173 HTTP/1.1" 200 95035 0.002024
81.*.*.* - - [2024-08-19 18:44:01] "GET //static/favicon.ico HTTP/1.1" 304 459 0.000737
81.*.*.* - - [2024-08-19 18:44:57] "GET //ajax/log/1?_=1724093041174 HTTP/1.1" 200 3835 0.004864

calibre-web.log:

[2024-08-19 18:41:59,216]  WARN {cps.config_sql:384} Log path  not valid, falling back to default
[2024-08-19 18:41:59,217]  INFO {cps.server:319} webserver stop (restart=True)
[2024-08-19 18:41:59,217]  INFO {apscheduler.scheduler:212} Scheduler has been shut down
[2024-08-19 18:42:00,220]  INFO {cps.server:301} Performing restart of Calibre-Web
[2024-08-19 18:42:00,836]  WARN {cps.config_sql:384} Log path  not valid, falling back to default
[2024-08-19 18:42:00,868]  INFO {cps:175} Starting Calibre Web...
[2024-08-19 18:42:01,102]  WARN {py.warnings:109} /lsiopy/lib/python3.10/site-packages/flask_limiter/extension.py:333: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend.
  warnings.warn(
[2024-08-19 18:42:01,249]  INFO {apscheduler.scheduler:181} Scheduler started
[2024-08-19 18:42:01,250]  INFO {apscheduler.scheduler:895} Added job "delete temp" to job store "default"
[2024-08-19 18:42:01,250]  INFO {apscheduler.scheduler:895} Added job "end scheduled task" to job store "default"
[2024-08-19 18:42:01,250]  INFO {apscheduler.scheduler:895} Added job "immediately delete temp" to job store "default"
[2024-08-19 18:42:01,258]  INFO {apscheduler.executors.default:123} Running job "immediately delete temp (trigger: date[2024-08-19 18:42:01 UTC], next run at: 2024-08-19 18:42:01 UTC)" (scheduled at 2024-08-19 18:42:01.250310+00:00)
[2024-08-19 18:42:01,259]  INFO {apscheduler.scheduler:641} Removed job f5642e1836154b6d93f26ca257644f9f
[2024-08-19 18:42:01,263] DEBUG {cps.services.worker:91} Add Task for user: System - Clean up
[2024-08-19 18:42:01,264]  INFO {apscheduler.executors.default:144} Job "immediately delete temp (trigger: date[2024-08-19 18:42:01 UTC], next run at: 2024-08-19 18:42:01 UTC)" executed successfully
[2024-08-19 18:42:01,265] DEBUG {cps.tasks.clean:43} Deleted expired session_keys
[2024-08-19 18:42:01,754]  WARN {py.warnings:109} /lsiopy/lib/python3.10/site-packages/pypdf/_crypt_providers/_cryptography.py:32: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  from cryptography.hazmat.primitives.ciphers.algorithms import AES, ARC4
[2024-08-19 18:42:02,299]  INFO {cps.server:218} Starting Gevent server on [::]:8083
[2024-08-19 18:42:16,684] DEBUG {cps.updater:331} Stable version: {'version': '0.6.23'}
[2024-08-19 18:42:49,766] DEBUG {cps.updater:331} Stable version: {'version': '0.6.23'}

Screenshots Version: image

Specified mail addresses ((just examples, doesn't work with real addresses either) image

After click on "Save": image

Environment (please complete the following information):

Calibre-web Docker image: https://github.com/linuxserver/docker-calibre-web/releases Host: Debian 12.6 (stable)

Additional context Please see also https://github.com/janeczku/calibre-web/issues/3027#issuecomment-2297102538 @ocangelo: as you experience the same behaviour - could you tell us your environment? do you run it natively or in a docker as well?

ocangelo commented 3 months ago

i am running on docker as well from "ghcr.io/linuxserver/calibre-web", tested this on 0.6.23 and i have the exact same behavior that you described

OzzieIsaacs commented 3 months ago

I'll have a look at it

c4sti3l commented 3 months ago

i'm running on docker, also the same issue

OzzieIsaacs commented 3 months ago

Please check the newest nightly version

c4sti3l commented 3 months ago

Thank you very much, it works perfectly. It would be nice to have an option for which email a book should be sent to instead of always sending it to all.

ocangelo commented 3 months ago

Thank you very much, it works perfectly. It would be nice to have an option for which email a book should be sent to instead of always sending it to all.

+1 on this, I have a separate request for that feature here https://github.com/janeczku/calibre-web/issues/3027#issue-2206798283

orcofthedarkness commented 3 months ago

confirmed. works like a charm. Thank you very much

orcofthedarkness commented 3 months ago

apologize. Sorry! (thought, because I opened it, and its resolved, I could/should close it as well)