Commit Graph

126 Commits

Author SHA1 Message Date
Saber
ad764648dd feature: display total size by tag or tracker of torrents on sidebar (#369)
Bug: #244
2021-07-14 16:28:15 +00:00
Jesse Chan
59a3fc74fd API: add a "dateActive" field to TorrentProperties
Last time the torrent is active, -1 means currently active, 0 means data unavailable
2021-05-26 22:19:40 +08:00
Jesse Chan
2b6ca5ff66 API: ditch inefficient "TRANSFER_SUMMARY_DIFF_CHANGE", always full update
TRANSFER_SUMMARY_DIFF_CHANGE is almost always full update:

```
[
{"op":"replace","path":"/downTotal","value":851320719382},
{"op":"replace","path":"/downRate","value":6139},
{"op":"replace","path":"/upTotal","value":1826972572184},
{"op":"replace","path":"/upRate","value":5480521}
]
```

which is generally less efficient than full object (TRANSFER_SUMMARY_FULL_UPDATE):

```
{
"upRate":5430724,
"upTotal":1827320521117,
"downRate":6062,
"downTotal":851321106383
}
```
2021-05-22 21:31:32 +08:00
Jesse Chan
abf99ba52b shared: schema: explicitly use "strictObject" 2021-05-20 23:17:53 +08:00
Jesse Chan
4e6d4136cb API: add a "dateFinished" field to TorrentProperties 2021-05-17 21:46:08 +08:00
Jesse Chan
7c992bc2f2 client: add support for Deluge 2021-05-17 07:05:36 +01:00
Jesse Chan
69a9c667a5 server: Deluge: create empty services 2021-05-17 07:05:36 +01:00
Jesse Chan
d84c8aacb8 client: add "Reannounce" action 2021-02-21 23:47:45 +08:00
Jesse Chan
00ab541701 API: torrents: add /reannounce 2021-02-21 23:47:45 +08:00
Jesse Chan
04a8573511 server: replace domain from URL RegEx with plain split, slice and join 2021-02-04 08:33:44 +08:00
Jesse Chan
6c858dfc0e config: move floodServerProxy to client DevServer script 2021-01-30 19:19:24 +08:00
Jesse Chan
5afa79b274 config.cli: migrate to TypeScript 2021-01-30 19:11:28 +08:00
Jesse Chan
1d1a478391 server: redirect to a portable link for /data endpoint 2021-01-28 17:17:25 +08:00
Jesse Chan
402a5b8a69 server: invalidate previous tokens when user changed 2021-01-26 09:06:41 +08:00
Jesse Chan
53c0b3f863 server: strictly validate auth token payload 2021-01-26 08:34:13 +08:00
Jesse Chan
f3ebdece95 server: use "/usr/share/flood/assets" as a location of assets 2021-01-19 10:40:08 +08:00
Jesse Chan
703978b1f3 server: qBittorrent, Transmission: normalize hash to upper case 2020-12-29 22:08:52 +08:00
Jesse Chan
4239ecf80e server: notificationService: replace callbacks with promises 2020-12-28 23:19:52 +08:00
Jesse Chan
a9e85ee7d7 client: add "Download .torrent" context menu item 2020-12-28 17:32:18 +08:00
Jesse Chan
5f0bb16a1c client: add "Initial Seeding" context menu item 2020-12-26 13:49:55 +08:00
Jesse Chan
26c9987355 server: support initial seeding (aka superseeding)
https://www.bittorrent.org/beps/bep_0016.html
2020-12-26 13:49:55 +08:00
Jesse Chan
c978d658cc client: add "Sequential" context menu item 2020-12-26 11:07:30 +08:00
Jesse Chan
61b6b61569 API: torrents: add "isSequential" torrent property 2020-12-26 11:07:30 +08:00
Jesse Chan
20fc3ac6a8 server: torrents: disallow comma in tag 2020-12-15 20:57:36 +08:00
Jesse Chan
559ecaa0d8 server: allow Flood not to serve static assets 2020-12-10 23:48:58 +08:00
Jesse Chan
00cbc6537c feature: generate magnet links 2020-12-01 23:05:47 +08:00
Jesse Chan
281f9317e1 feature: store tag-specific destination and use it as fallback 2020-11-17 21:34:42 +08:00
Jesse Chan
929141912a schema: api: torrents: add-urls: remove URL validation
"Add by URLs" also accepts local file path.
2020-11-17 00:33:14 +08:00
Jesse Chan
3b573e59e9 feature: allow to prefer single tag selection 2020-11-16 21:39:45 +08:00
Jesse Chan
1a878d5423 flood: rearrange, remove misc files and reformat 2020-11-15 23:03:47 +08:00
Jesse Chan
ca9890a69c schema: config: make floodServerProxy and ssl properties optional 2020-11-14 15:31:59 +08:00
Jesse Chan
ed98e210f4 server: schema validate configurations
Unfortunately there are still many people who prefer static config
file. As such, schema validate the configurations to ensure that
the failure happens loud and early when the config.js is broken.

Also enforces that the length of secret must be larger than 30 as
the JWT secret can be brute forced locally without interaction with
the server.

This ensures that we always have proper configurations and avoids
unnecessary and bad defensive programming practices.
2020-11-14 15:20:23 +08:00
Jesse Chan
9038177630 feature: store the last used "Add Torrents" tab
Bug: Flood-UI/flood#329
2020-11-14 00:28:53 +08:00
Jesse Chan
aeefd6954d server: allow fallback to default or last destination 2020-11-13 13:28:11 +08:00
Jesse Chan
80ffb24d8d API: torrents: schema validate add-urls and add-files endpoints
Those endpoints use extensive amount of user-provided properties
and will be frequently used by third party developers. With Node
15, unhandled promise rejections directly crash the server, as
such, it is safer to schema validate the request before processing
it.

This change also prepares the code paths for later change that adds
destination fallbacks.
2020-11-13 13:27:31 +08:00
Jesse Chan
8efad15d5b API: client: "throttle" means "Max"
There is no need for both. So use "Speed" for better clarity.

Also switch to B/s as that's more native for everything.
2020-11-08 23:45:51 +08:00
Jesse Chan
d592152967 API: client: remove [down/up]Throttle, clarify throttleGlobal[Down/Up]Max unit 2020-11-08 01:57:50 +08:00
Jesse Chan
7a146396b1 feature: support Transmission 2020-11-05 23:01:41 +08:00
Jesse Chan
8261d71eb5 API: torrents: remove unused props in TorrentPeer, TorrentTracker 2020-11-05 21:54:01 +08:00
Jesse Chan
448075a7d6 API: torrents: remove confusing baseDirectory, baseFilename and basePath props 2020-11-03 20:41:56 +08:00
Jesse Chan
29c6fbeb3b API: torrents: remove useless isMultiFile property
It is only used to determine whether to use .tar extension when
download is requested. However, server sent Content-Disposition
header which already tells the browser the filename and it is
more accurate.

As such, remove this useless property.
2020-11-03 18:15:00 +08:00
Jesse Chan
5e7e5f4cbf API: torrent: remove unused "paused" status 2020-11-02 19:42:23 +08:00
Jesse Chan
08a95253bc API: torrents: remove dhtStats, throttleMaxDownloadsDiv and throttleMaxUploadsDiv
No one knows what throttleMaxDownloadsDiv and throttleMaxUploadsDiv do. dhtStats
is not used. Let's remove them first to see how things go.
2020-11-01 22:55:32 +08:00
Jesse Chan
01dcf81b48 API: torrents: calculate the Duration object in frontend 2020-11-01 22:21:54 +08:00
Jesse Chan
790f8213ae API: torrents: remove unneccessary activelyDownloading and activelyUploading statuses 2020-11-01 22:11:31 +08:00
Jesse Chan
ccb410d2e5 config: switch to authMethod config for auth method selection 2020-10-31 20:48:55 +08:00
Jesse Chan
9e03d2a385 shared: schema: split enums from schemas
Otherwise zod will be included in client dependency graph and
increase the bundle size by 10kB unnecessarily.
2020-10-28 12:34:52 +08:00
Jesse Chan
6c41c764f1 API: auth: preload server configs along with /verify response
Get rid of last build-time config dependency and allows easier
switching of client modes.
2020-10-26 20:40:59 +08:00
Jesse Chan
306ff79182 API: auth: don't include token in JSON objects
Token is already sent by Set-Cookie. It is unneccessary and
insecure to include them in JSON response. Doing so also
introduce the token into Javascript VM which is not protected
as well as the httpOnly cookies.
2020-10-26 20:40:59 +08:00
Jesse Chan
6e866445ea EXPERIMENTAL: feature: support qBittorrent 2020-10-25 08:27:52 -05:00