Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Version 3.0.0-alpha.12 #1009

Merged
merged 532 commits into from
Aug 13, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
532 commits
Select commit Hold shift + click to select a range
9a1ce0e
Merge torrust/torrust-tracker#805: Update dependencies
josecelano Apr 19, 2024
b301596
chore:[#674] Tracker Checker: Ouput in JSON
hungfnt Apr 24, 2024
7de4fbc
format fix
hungfnt Apr 24, 2024
b27f002
remove unused dependencies
hungfnt Apr 24, 2024
92349d3
Merge torrust/torrust-tracker#810: chore:[#674] Tracker Checker: Oupu…
josecelano Apr 24, 2024
effca56
refactor: [#681] udp return errors instead of panicking
hungfnt Apr 25, 2024
90c7780
Merge torrust/torrust-tracker#814: Refactor UdpClient to return error…
josecelano May 2, 2024
895efe9
refactor: [#680] http return errors instead of panicking
hungfnt May 2, 2024
f64e8fb
Merge torrust/torrust-tracker#826: refactor: [#680] http return error…
josecelano May 2, 2024
7551857
chore(deps): update dependencies
josecelano May 6, 2024
2719d5e
Merge torrust/torrust-tracker#832: Update dependencies
josecelano May 6, 2024
801d913
chore(deps): bump aquatic_udp_protocol from 0.8.0 to 0.9.0
josecelano May 7, 2024
25ecdce
Merge torrust/torrust-tracker#837: Bump `aquatic_udp_protocol` from `…
josecelano May 7, 2024
be51d2f
chore(deps): bump ringbuf from 0.3.3 to 0.4.0
josecelano May 7, 2024
36a0b96
Merge torrust/torrust-tracker#839: Bump `ringbuf` from `0.3.3` to `0.…
josecelano May 7, 2024
62d4a20
chore(deps): update dependencies
josecelano May 7, 2024
5348669
Merge torrust/torrust-tracker#840: Update dependencies
josecelano May 7, 2024
e3143f7
feat: log aborted UDP requests
josecelano May 7, 2024
690d1d2
Merge torrust/torrust-tracker#841: feat: log aborted UDP requests
josecelano May 7, 2024
3dee03e
docs: udpate installation docs
josecelano May 7, 2024
a1408ad
Merge torrust/torrust-tracker#843: Update installation docs
josecelano May 7, 2024
cddc4de
chore(deps): bump rustc-demangle v0.1.23 -> v0.1.24
josecelano May 7, 2024
a0a51c8
Merge torrust/torrust-tracker#844: chore(deps): bump `rustc-demangle`…
josecelano May 8, 2024
6f02aeb
docs: fix profiling docs
josecelano May 8, 2024
218fbbe
Merge torrust/torrust-tracker#847: docs: fix profiling docs
josecelano May 8, 2024
9e01f7f
dev: fix udp ring-buffer not looping
da2ce7 May 7, 2024
31ab3a9
Merge torrust/torrust-tracker#846: dev: fix udp ring-buffer not looping
josecelano May 8, 2024
7da52b1
chore(deps): add dependency figment
josecelano Apr 22, 2024
f0e0721
test: remove broken example in rustdoc
josecelano Apr 22, 2024
157807c
chore(deps): enable figment features: env, toml, test
josecelano Apr 22, 2024
636e779
refactor: create new configuration v1 mod with figment
josecelano Apr 22, 2024
e7d344c
refactor: create new configuration v1 mod with figment
josecelano Apr 22, 2024
002fb30
refactor: reexport config versioned config types
josecelano May 8, 2024
265d89d
refactor: replace Config by Figment in Configuration implementation
josecelano May 8, 2024
5bd9494
chore: remove unused config dependenciy
josecelano May 8, 2024
146b77d
feat: enable overwrite Configuration values using env vars
josecelano May 8, 2024
632c8ba
refactor: move Configuration unit test to inner mods
josecelano May 8, 2024
b3a1442
refactor!: remove unused method in Configuration
josecelano May 8, 2024
caae725
feat: use double underscore to split config env var names
josecelano May 9, 2024
69d7939
refactor: implement Default for Configuration sections
josecelano May 9, 2024
b0c2f9f
docs: update env var name in toml config template files
josecelano May 9, 2024
43942ce
tests: add test for configuration with deprecated env var name
josecelano May 9, 2024
0252f30
feat: allow users not to provide config option with default values
josecelano May 9, 2024
a20c9d7
Merge torrust/torrust-tracker#808: Use `figment` for configuration
josecelano May 9, 2024
384e9f8
refactor: [#852] eenrich field types in HealthCheckApi config struct
josecelano May 9, 2024
1475ead
refactor: [#852] eenrich field types in UdpTracker config struct
josecelano May 10, 2024
fc191f7
refactor: [#852] enrich field types in HttpTracker config struct
josecelano May 10, 2024
a2e718b
chore(deps): add dependency camino
josecelano May 10, 2024
3997cfa
refactor: [#852] eenrich field types in TslConfig config struct
josecelano May 10, 2024
ceb3074
refactor: [#852] enrich field types in HttpApi config struct
josecelano May 10, 2024
7519ecc
refactor: [#852] enrich field types in Configuration struct
josecelano May 10, 2024
b545b33
refactor: [#852] extract Core configuration type
josecelano May 10, 2024
014ca38
Merge torrust/torrust-tracker#854: Refactor: enrich field types in co…
josecelano May 10, 2024
ae77ebc
refactor: tracker core service only needs the core config
josecelano May 10, 2024
3c78bba
Merge torrust/torrust-tracker#857: Refactor: tracker core service onl…
josecelano May 10, 2024
445bd53
feat: define only non-defaults in toml config templates
josecelano May 13, 2024
d9909a6
Merge torrust/torrust-tracker#858: Use only non-defaults in `toml` co…
josecelano May 14, 2024
cf1bfb1
chore(deps): update dependencies
josecelano May 14, 2024
92408bc
Merge torrust/torrust-tracker#859: Update dependencies
josecelano May 14, 2024
da6a21e
refactor: [#855] show toml file location in Figment errors
josecelano May 14, 2024
4de5e7d
refactor: move config env vars to configuration package
josecelano May 14, 2024
7938433
Merge torrust/torrust-tracker#860: Show `toml` file location in Figme…
josecelano May 14, 2024
ef15e0b
refactor: [#851] rename env vars
josecelano May 14, 2024
a4d2adf
feat!: remove deprecated env var
josecelano May 14, 2024
1ed2c74
Merge torrust/torrust-tracker#861: Rename environments variables
josecelano May 14, 2024
e1e1071
docs: update README
josecelano May 14, 2024
c0c107d
Merge torrust/torrust-tracker#862: Update README
josecelano May 14, 2024
80fc8d6
docs: udpate roadmap in README
josecelano May 14, 2024
8dc0520
Merge torrust/torrust-tracker#863: Fix Roadmap in README
josecelano May 14, 2024
dadc216
chore(deps): add cargo dependencies needed for axum timeouts
josecelano May 15, 2024
112b76d
fix: [#612] add timeout for time waiting for the first API requests
josecelano May 15, 2024
9e42a1a
feat: [#612] tower middleware to apply timeouts to requests
josecelano May 15, 2024
d0e66b7
Merge torrust/torrust-tracker#865: Add timeouts for Axum server in th…
josecelano May 15, 2024
23d5e5e
fix: [#613] add timeout for time waiting for the first HTTP tracker
josecelano May 15, 2024
67e6cf1
Merge torrust/torrust-tracker#866: Add timeout for time waiting for t…
josecelano May 15, 2024
23c52b1
Fix REAADME HTTP port
GGLinnk May 19, 2024
5478c3d
Merge torrust/torrust-tracker#874: Fix README HTTP port
josecelano May 20, 2024
9be9366
Fix and improved bootstrap jobs module test.
GGLinnk May 20, 2024
d4eaea9
Merge torrust/torrust-tracker#875: Fix and improved bootstrap jobs mo…
josecelano May 20, 2024
932e66e
feat: [#870] add privacy methods to the TrackerMode
josecelano May 17, 2024
74d8f79
feat: [#870] remove Copy trait from TrackerMode
josecelano May 17, 2024
0c9da2f
feat: [#870] implement traits Dispaly and FromStr for TrackerMode
josecelano May 17, 2024
b92401f
Merge torrust/torrust-tracker#871: Add privacy methods to the `Tracke…
josecelano May 21, 2024
9e71e71
chore(deps): update dependencies
josecelano May 31, 2024
a3df726
fix: clippy errors
josecelano May 31, 2024
a0a7056
Merge torrust/torrust-tracker#881: Update dependencies
josecelano May 31, 2024
4de7793
feat: [#670] new JSON serialization for connect and error aquatic res…
mario-nt May 20, 2024
625db48
refactor: [#670] new trait for printing responses in JSON format and …
mario-nt May 27, 2024
08e87ca
refactor: [#670] new print_response function from trait implemented
mario-nt May 27, 2024
74f4cb0
refactor: [#670] added error message for pint_response function
mario-nt May 27, 2024
5a529cc
refactor: [#670] new mod for responses logic and refactors to json s…
mario-nt Jun 3, 2024
32416ee
refactor: [#670] changed DTOs and variable names
mario-nt Jun 4, 2024
0157d96
refactor:[#670] fix clippy errors
mario-nt Jun 4, 2024
67ff5c4
Merge torrust/torrust-tracker#876: [#670] new JSON serialization for …
josecelano Jun 5, 2024
f5d843b
docs: add benchmarking to torrent repo README
josecelano Jun 10, 2024
8973b67
Merge torrust/torrust-tracker#886: docs: add benchmarking to torrent …
josecelano Jun 10, 2024
6e87d3e
chore(deps): update dependencies
josecelano Jun 10, 2024
613a1df
Merge torrust/torrust-tracker#887: Update dependencies
josecelano Jun 10, 2024
3ccc0e4
chore(deps): add cargo dependency tracing
josecelano Jun 10, 2024
6e06b2e
refactor: [#884] move from log to tracing crate
josecelano Jun 10, 2024
69f100a
refactor: [#884] move from log to tracing crate
josecelano Jun 10, 2024
7de2595
chore(deps): [#884] remove unused crate log
josecelano Jun 10, 2024
d6fd11a
test: [#884] add test for parsing array of services from app logs
josecelano Jun 10, 2024
ec88dbf
chore(deps): remove unused dependencies log and fern
josecelano Jun 10, 2024
dc171c1
Merge torrust/torrust-tracker#888: Move from `log` to `tracing` crate
josecelano Jun 10, 2024
c08de75
refactor: [#659] use clap and anyhow in E2E test runner
josecelano Jun 10, 2024
e50934e
Merge torrust/torrust-tracker#890: Use `clap` and `anyhow`crates in E…
josecelano Jun 10, 2024
f8a9976
docs: [#770] update benchmarking docs
josecelano Jun 12, 2024
a7ec479
Merge torrust/torrust-tracker#894: Update benchmarking docs
josecelano Jun 12, 2024
322b976
chore(deps): update dependencies
josecelano Jun 14, 2024
4832235
Merge torrust/torrust-tracker#895: Update dependencies
josecelano Jun 14, 2024
a88082a
fix: [#893] enable color in logs
josecelano Jun 14, 2024
a293373
chore(deps): add cargo dependency regex
josecelano Jun 14, 2024
eb928bc
fix: [#893] enable color for logs
josecelano Jun 14, 2024
a6054f1
Merge torrust/torrust-tracker#896: Enable colour in console output
josecelano Jun 14, 2024
3c715fb
fix: [#898] docker build error: failed to load bitcode of module crit…
josecelano Jun 17, 2024
aa8b787
Merge torrust/torrust-tracker#899: Fixes docker build error: `failed …
josecelano Jun 17, 2024
ef9461a
feat!: [#878] extract logging and core section in toml config files
josecelano Jun 17, 2024
77dd938
feat!: [#878] make log_level config value mandatory
josecelano Jun 17, 2024
2f94f6c
feat!: [#878] extract database section in core config section
josecelano Jun 17, 2024
edc706c
feat!: [#878] extract net section in core config section
josecelano Jun 17, 2024
fc046e0
feat!: [#878] extract announce_policy section in core config section
josecelano Jun 17, 2024
7b2f757
feat!: [#878] extract tracker_policy section in core config section
josecelano Jun 17, 2024
c5cc9fd
feat: [#878] extract tsl_config in toml config
josecelano Jun 17, 2024
50bef25
feat: remove ambiguous log entry
josecelano Jun 18, 2024
06ad5da
feat!: [#878] remove enabled fields in config
josecelano Jun 18, 2024
729739c
Merge torrust/torrust-tracker#897: Configuration overhaul: version 2 …
josecelano Jun 19, 2024
0bcca80
chore(deps): update dependencies
josecelano Jun 19, 2024
27933b9
Merge torrust/torrust-tracker#906: Update dependencies
josecelano Jun 19, 2024
84cc1a1
dev: use stream for udp requests
da2ce7 Jun 19, 2024
b7bcd96
Merge torrust/torrust-tracker#873: Implment Request Stream for UDP Tr…
josecelano Jun 25, 2024
9b3b75b
fix: log message
josecelano Jun 25, 2024
0e3678d
refactor: rename Socket to BoundSocket and fix format errors"
josecelano Jun 25, 2024
7ff0cd2
refactor: rename var
josecelano Jun 25, 2024
16ae4fd
refactor: rename vars and extract constructor
josecelano Jun 25, 2024
0388e1d
refactor: extract consts for logging targets
josecelano Jun 25, 2024
b4b4515
refactor: extract const for logging targets
josecelano Jun 25, 2024
a5e2baf
refactor: extract method
josecelano Jun 25, 2024
35b6c84
refactor: simplify UDP server receiver
josecelano Jun 25, 2024
61fb4b2
refactor: move active requests logic to ActiveRequest type
josecelano Jun 25, 2024
336e0e6
refactor: reorganize mod to extract new submods
josecelano Jun 25, 2024
c121bf2
refactor: rename UDP server types
josecelano Jun 25, 2024
89bb735
refactor: reorganize UDP server mod
josecelano Jun 25, 2024
f06976e
docs: update some UDP server comments
josecelano Jun 25, 2024
eb9f997
Merge torrust/torrust-tracker#913: Minor UDP server refactorings
josecelano Jun 25, 2024
2518c54
fix: [#917] clients output in JSON should not include logging
josecelano Jun 26, 2024
bb8b2ad
Merge torrust/torrust-tracker#919: Fix: clients output in JSON should…
josecelano Jun 26, 2024
3d567c8
ci: nightly build for coverage
da2ce7 Jun 28, 2024
3f61d04
Merge torrust/torrust-tracker#924: ci: nightly build for coverage
da2ce7 Jun 29, 2024
f0de8dd
ci: pre-build coverage test
da2ce7 Jun 29, 2024
5077fe3
Merge torrust/torrust-tracker#926: ci: pre-build coverage test
da2ce7 Jun 30, 2024
5f3957a
ci: coverage build with two jobs
da2ce7 Jun 30, 2024
f85bae8
Merge torrust/torrust-tracker#927: ci: coverage build with two jobs
da2ce7 Jun 30, 2024
16d4cb6
ci: coverage workflow add pre-build-test step
da2ce7 Jun 30, 2024
2187e6c
Merge torrust/torrust-tracker#928: ci: coverage workflow add pre-buil…
da2ce7 Jun 30, 2024
988f1c7
dev: add vscode 'code-workspace' to git ignore file
da2ce7 Jun 26, 2024
c202db7
dev: tracker client error enums
da2ce7 Jun 28, 2024
e339c38
Merge torrust/torrust-tracker#923: Client Work: Improve Error Enums a…
josecelano Jul 1, 2024
77c6954
chore(deps): update dependencies
josecelano Jul 1, 2024
d5a8468
Merge torrust/torrust-tracker#930: Update dependencies
josecelano Jul 1, 2024
daeb7cc
ci: coverage workflow pre-build fix
da2ce7 Jul 1, 2024
d4e3208
Merge torrust/torrust-tracker#931: ci: coverage workflow pre-build fix
da2ce7 Jul 1, 2024
6495a4c
docs: [#918] add comments to the UDP server
josecelano Jun 28, 2024
d1c2d15
fix: [#918] revision for UDP active reqeust buffer comments
da2ce7 Jun 28, 2024
5f1fdbd
Merge torrust/torrust-tracker#921: Add comments to the UDP server
josecelano Jul 1, 2024
2186809
refactor: [#932] sort config core section fields
josecelano Jul 1, 2024
f5d8dc6
refactor: [#932] WIP. Add new core config options: private and listed
josecelano Jul 1, 2024
ca31c83
feat: [#932] replace `mode` core config option with `private` and `li…
josecelano Jul 1, 2024
a5b9e14
refactor: inject the core config to the core tracker
josecelano Jul 1, 2024
5a16ea1
refactor: [#932] make all Tracker fields private
josecelano Jul 1, 2024
f61c7c3
docs: add commments to core::Tracker struct fields
josecelano Jul 1, 2024
b6b841d
chore: remove crate from ignore list in cargo machete
josecelano Jul 1, 2024
5aad462
Merge torrust/torrust-tracker#934: Config overhaul: split tracker mode
josecelano Jul 1, 2024
2969df3
refactor: [#939] change config version
josecelano Jul 1, 2024
632ad0d
refactor: use only latest config version in prod code
josecelano Jul 1, 2024
de8ed61
Merge torrust/torrust-tracker#940: Config overhaul: define current co…
josecelano Jul 1, 2024
e299792
feat: warn adming when no service is enabled in the configration
josecelano Jul 1, 2024
46c3263
feat: normalize log nessages
josecelano Jul 1, 2024
ddfbde3
feat: the configuration can be serialized as JSON
josecelano Jul 1, 2024
397ef0f
feat: log final config after processing all config sources
josecelano Jul 1, 2024
b66adcc
Merge torrust/torrust-tracker#941: Config overhaul: improve admin exp…
josecelano Jul 1, 2024
af61e20
feat: [#936] rename config value log_level to threshold
josecelano Jul 1, 2024
400c74b
Merge torrust/torrust-tracker#942: Config overhaul: rename `log_level…
josecelano Jul 1, 2024
e2dbb0b
chore(deps): update dependencies
josecelano Jul 1, 2024
4846c9f
chore: update workflow action build-push-action
josecelano Jul 1, 2024
ddd73ca
Merge torrust/torrust-tracker#946: Update dependencies
josecelano Jul 2, 2024
60c6876
feat: [#937] add version to configration file following semver.
josecelano Jul 2, 2024
1e891f1
Merge torrust/torrust-tracker#947: Config overhaul: add version and n…
josecelano Jul 2, 2024
16aa652
chore(deps): add url dependency
josecelano Jul 4, 2024
4673514
fix: [#948] mask secrets in logs
josecelano Jul 4, 2024
c747321
Merge torrust/torrust-tracker#951: Config overhaul: remove secrets wh…
josecelano Jul 4, 2024
9be9638
refactor: [#950] decouple database driver enum
josecelano Jul 5, 2024
954295a
refactor: [#950] move DatabaseDriver to databases mod
josecelano Jul 5, 2024
d970bb8
refactor: [#950] rename DatabaseDriver to Driver
josecelano Jul 5, 2024
9d72f51
feat: [#950] use lowercase for database driver values in configuration
josecelano Jul 5, 2024
ca348a8
chore: remove unused dependency
josecelano Jul 5, 2024
035d630
Merge torrust/torrust-tracker#953: Config overhaul: lowercase for `Da…
josecelano Jul 5, 2024
019cf9f
udp: processor for requests
da2ce7 Jul 8, 2024
f2629ce
Merge torrust/torrust-tracker#955: udp: processor for requests
da2ce7 Jul 13, 2024
64850af
dev: remove async trait dep
da2ce7 Jul 13, 2024
8ff668f
Merge torrust/torrust-tracker#959: dev: remove async trait dep
da2ce7 Jul 13, 2024
cafb9aa
chore: update deps
da2ce7 Jul 13, 2024
d3cb8d0
Merge torrust/torrust-tracker#960: chore: update deps
da2ce7 Jul 13, 2024
7f867d6
toml: use major versions
da2ce7 Jul 13, 2024
d2717ad
fixup: doc fixups
da2ce7 Jul 13, 2024
9791427
chore: update deps
da2ce7 Jul 13, 2024
2aef245
Merge torrust/torrust-tracker#962: use major version in toml files, a…
da2ce7 Jul 13, 2024
8cefad6
fix: [#933] uppercase for containerfile keywords
josecelano Jul 15, 2024
d3366c3
Merge torrust/torrust-tracker#963: Fix uppercase for containerfile ke…
josecelano Jul 15, 2024
82a8b43
chore(deps): update dependencies
josecelano Jul 29, 2024
a964659
Merge torrust/torrust-tracker#973: Update dependencies
josecelano Jul 29, 2024
09beb52
feat: [#974] new API endpoint to upload pre-existing keys
josecelano Jul 29, 2024
583b305
test: [#874] new key generation endpoint
josecelano Jul 30, 2024
04f50e4
docs: [#974] update add key endpoint doc
josecelano Jul 30, 2024
1f5de8c
Merge torrust/torrust-tracker#975: New API endpoint to upload pre-exi…
josecelano Jul 30, 2024
8d41d18
fix: [#976] do not allow invalid tracker keys
josecelano Jul 30, 2024
e81914b
refactor: [#976] concrete errors for parsing keys
josecelano Jul 30, 2024
1fdf3a8
Merge torrust/torrust-tracker#980: Do not allow invalid tracker keys
josecelano Jul 30, 2024
8d3fe72
chore(deps): [#979] add new cargo dep: serde_with
josecelano Jul 31, 2024
c5beff5
feat: [#979] permanent keys
josecelano Jul 31, 2024
680f642
Merge torrust/torrust-tracker#983: Overhaul tracker keys: allow perma…
josecelano Aug 1, 2024
e8e935c
feat: [#978] add a config option to disable cheking keys' expiration
josecelano Aug 1, 2024
d7dfc3b
feat: [#978] add semantic validation for configuration
josecelano Aug 1, 2024
e00feef
Merge torrust/torrust-tracker#988: Overhaul tracker keys: option to d…
josecelano Aug 1, 2024
8d58882
refactor: make method private
josecelano Aug 1, 2024
349692b
test: [#989] add more tests for keys
josecelano Aug 1, 2024
d47ff21
Merge torrust/torrust-tracker#990: Overhaul tracker keys: add more tests
josecelano Aug 1, 2024
287e484
feat!: [#958] improve metadata in config files
josecelano Aug 2, 2024
f95b16a
Merge torrust/torrust-tracker#991: Config overhaul: use an explicit s…
josecelano Aug 2, 2024
90ef14d
feat!: [#938] add mandatory config options
josecelano Aug 2, 2024
1ca90ad
Merge torrust/torrust-tracker#992: Config overhaul: make some fields …
josecelano Aug 2, 2024
7c62645
chore(deps): update dependencies
josecelano Aug 5, 2024
e40e75d
Merge torrust/torrust-tracker#995: Update dependencies
josecelano Aug 5, 2024
5939b9a
docs: update roadmap in README
josecelano Aug 5, 2024
0a04dde
Merge torrust/torrust-tracker#996: docs: update roadmap in README
josecelano Aug 5, 2024
222fa42
feat: disable TimeoutAcceptor when TSL is enabled
josecelano Jul 5, 2024
7ac1556
Merge torrust/torrust-tracker#954: Disable `TimeoutAcceptor` when TSL…
josecelano Aug 7, 2024
e563bfb
fix: benchmarking config template
josecelano Aug 8, 2024
bd5f4e8
Merge torrust/torrust-tracker#1001: fix: benchmarking config template
josecelano Aug 8, 2024
1766587
feat: [#1002] remove inactive peers always
josecelano Aug 8, 2024
3fbab31
refactor: [#1002] rename is_good fn to meets_retaining_policy
josecelano Aug 8, 2024
eaa86a7
Merge torrust/torrust-tracker#1003: Fix bug: the tracker should alway…
josecelano Aug 8, 2024
f5e38bb
feat!: [#1006] remove config deafults for secrets
josecelano Aug 12, 2024
6a707b9
fix: linter errors
josecelano Aug 12, 2024
f6bbcf5
Merge torrust/torrust-tracker#1007: Remove default configuration valu…
josecelano Aug 12, 2024
62ffffb
chore(deps): update dependencies
josecelano Aug 12, 2024
acb860f
Merge torrust/torrust-tracker#1008: Update dependencies
josecelano Aug 12, 2024
1455295
ci: [#1010] fix missing publishing packages
josecelano Aug 12, 2024
05b6cc8
Merge torrust/torrust-tracker#1011: Fix missing publishing packages
josecelano Aug 12, 2024
592c9cc
release: version 3.0.0-alpha.12
josecelano Aug 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/servers/udp/handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use crate::shared::bit_torrent::common::MAX_SCRAPE_TORRENTS;
/// - Delegating the request to the correct handler depending on the request type.
///
/// It will return an `Error` response if the request is invalid.
pub(crate) async fn handle_packet(udp_request: RawRequest, tracker: &Arc<Tracker>, addr: SocketAddr) -> Response {
pub(crate) async fn handle_packet(udp_request: RawRequest, tracker: &Tracker, local_addr: SocketAddr) -> Response {
debug!("Handling Packets: {udp_request:?}");

let start_time = Instant::now();
Expand All @@ -47,7 +47,7 @@ pub(crate) async fn handle_packet(udp_request: RawRequest, tracker: &Arc<Tracker
}
}) {
Ok(request) => {
log_request(&request, &request_id, &addr);
log_request(&request, &request_id, &local_addr);

let transaction_id = match &request {
Request::Connect(connect_request) => connect_request.transaction_id,
Expand All @@ -62,7 +62,7 @@ pub(crate) async fn handle_packet(udp_request: RawRequest, tracker: &Arc<Tracker

let latency = start_time.elapsed();

log_response(&response, &transaction_id, &request_id, &addr, latency);
log_response(&response, &transaction_id, &request_id, &local_addr, latency);

response
}
Expand Down
7 changes: 2 additions & 5 deletions src/servers/udp/server/bound_socket.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
use std::fmt::Debug;
use std::net::SocketAddr;
use std::ops::Deref;
use std::sync::Arc;

use url::Url;

use crate::servers::udp::UDP_TRACKER_LOG_TARGET;

/// Wrapper for Tokio [`UdpSocket`][`tokio::net::UdpSocket`] that is bound to a particular socket.
pub struct BoundSocket {
socket: Arc<tokio::net::UdpSocket>,
socket: tokio::net::UdpSocket,
}

impl BoundSocket {
Expand All @@ -30,9 +29,7 @@ impl BoundSocket {
let local_addr = format!("udp://{addr}");
tracing::debug!(target: UDP_TRACKER_LOG_TARGET, local_addr, "UdpSocket::new (bound)");

Ok(Self {
socket: Arc::new(socket),
})
Ok(Self { socket })
}

/// # Panics
Expand Down
65 changes: 5 additions & 60 deletions src/servers/udp/server/launcher.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
use std::io::Cursor;
use std::net::SocketAddr;
use std::sync::Arc;
use std::time::Duration;

use aquatic_udp_protocol::Response;
use derive_more::Constructor;
use futures_util::StreamExt;
use tokio::select;
use tokio::sync::oneshot;

use super::request_buffer::ActiveRequests;
use super::RawRequest;
use crate::bootstrap::jobs::Started;
use crate::core::Tracker;
use crate::servers::logging::STARTED_ON;
use crate::servers::registar::ServiceHealthCheckJob;
use crate::servers::signals::{shutdown_signal_with_message, Halted};
use crate::servers::udp::server::bound_socket::BoundSocket;
use crate::servers::udp::server::processor::Processor;
use crate::servers::udp::server::receiver::Receiver;
use crate::servers::udp::{handlers, UDP_TRACKER_LOG_TARGET};
use crate::servers::udp::UDP_TRACKER_LOG_TARGET;
use crate::shared::bit_torrent::tracker::udp::client::check;
use crate::shared::bit_torrent::tracker::udp::MAX_PACKET_SIZE;

/// A UDP server instance launcher.
#[derive(Constructor)]
Expand Down Expand Up @@ -109,6 +106,8 @@ impl Launcher {
let local_addr = format!("udp://{addr}");

loop {
let processor = Processor::new(receiver.socket.clone(), tracker.clone());

if let Some(req) = {
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, local_addr, "Udp::run_udp_server (wait for request)");
receiver.next().await
Expand Down Expand Up @@ -138,9 +137,7 @@ impl Launcher {
// are only adding and removing tasks without given them the
// chance to finish. However, the buffer is yielding before
// aborting one tasks, giving it the chance to finish.
let abort_handle: tokio::task::AbortHandle =
tokio::task::spawn(Launcher::process_request(req, tracker.clone(), receiver.bound_socket.clone()))
.abort_handle();
let abort_handle: tokio::task::AbortHandle = tokio::task::spawn(processor.process_request(req)).abort_handle();

if abort_handle.is_finished() {
continue;
Expand All @@ -156,56 +153,4 @@ impl Launcher {
}
}
}

async fn process_request(request: RawRequest, tracker: Arc<Tracker>, socket: Arc<BoundSocket>) {
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, request = %request.from, "Udp::process_request (receiving)");
Self::process_valid_request(tracker, socket, request).await;
}

async fn process_valid_request(tracker: Arc<Tracker>, socket: Arc<BoundSocket>, udp_request: RawRequest) {
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, "Udp::process_valid_request. Making Response to {udp_request:?}");
let from = udp_request.from;
let response = handlers::handle_packet(udp_request, &tracker.clone(), socket.address()).await;
Self::send_response(&socket.clone(), from, response).await;
}

async fn send_response(bound_socket: &Arc<BoundSocket>, to: SocketAddr, response: Response) {
let response_type = match &response {
Response::Connect(_) => "Connect".to_string(),
Response::AnnounceIpv4(_) => "AnnounceIpv4".to_string(),
Response::AnnounceIpv6(_) => "AnnounceIpv6".to_string(),
Response::Scrape(_) => "Scrape".to_string(),
Response::Error(e) => format!("Error: {e:?}"),
};

tracing::debug!(target: UDP_TRACKER_LOG_TARGET, target = ?to, response_type, "Udp::send_response (sending)");

let buffer = vec![0u8; MAX_PACKET_SIZE];
let mut cursor = Cursor::new(buffer);

match response.write_bytes(&mut cursor) {
Ok(()) => {
#[allow(clippy::cast_possible_truncation)]
let position = cursor.position() as usize;
let inner = cursor.get_ref();

tracing::debug!(target: UDP_TRACKER_LOG_TARGET, ?to, bytes_count = &inner[..position].len(), "Udp::send_response (sending...)" );
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, ?to, bytes_count = &inner[..position].len(), payload = ?&inner[..position], "Udp::send_response (sending...)");

Self::send_packet(bound_socket, &to, &inner[..position]).await;

tracing::trace!(target:UDP_TRACKER_LOG_TARGET, ?to, bytes_count = &inner[..position].len(), "Udp::send_response (sent)");
}
Err(e) => {
tracing::error!(target: UDP_TRACKER_LOG_TARGET, ?to, response_type, err = %e, "Udp::send_response (error)");
}
}
}

async fn send_packet(bound_socket: &Arc<BoundSocket>, remote_addr: &SocketAddr, payload: &[u8]) {
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, to = %remote_addr, ?payload, "Udp::send_response (sending)");

// doesn't matter if it reaches or not
drop(bound_socket.send_to(payload, remote_addr).await);
}
}
1 change: 1 addition & 0 deletions src/servers/udp/server/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use super::RawRequest;

pub mod bound_socket;
pub mod launcher;
pub mod processor;
pub mod receiver;
pub mod request_buffer;
pub mod spawner;
Expand Down
66 changes: 66 additions & 0 deletions src/servers/udp/server/processor.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
use std::io::Cursor;
use std::net::SocketAddr;
use std::sync::Arc;

use aquatic_udp_protocol::Response;

use super::bound_socket::BoundSocket;
use crate::core::Tracker;
use crate::servers::udp::{handlers, RawRequest, UDP_TRACKER_LOG_TARGET};

pub struct Processor {
socket: Arc<BoundSocket>,
tracker: Arc<Tracker>,
}

impl Processor {
pub fn new(socket: Arc<BoundSocket>, tracker: Arc<Tracker>) -> Self {
Self { socket, tracker }
}

pub async fn process_request(self, request: RawRequest) {
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, request = %request.from, "Udp::process_request (receiving)");

let from = request.from;
let response = handlers::handle_packet(request, &self.tracker, self.socket.address()).await;
self.send_response(from, response).await;
}

async fn send_response(self, to: SocketAddr, response: Response) {
let response_type = match &response {
Response::Connect(_) => "Connect".to_string(),
Response::AnnounceIpv4(_) => "AnnounceIpv4".to_string(),
Response::AnnounceIpv6(_) => "AnnounceIpv6".to_string(),
Response::Scrape(_) => "Scrape".to_string(),
Response::Error(e) => format!("Error: {e:?}"),
};

tracing::debug!(target: UDP_TRACKER_LOG_TARGET, target = ?to, response_type, "Udp::send_response (sending)");

let mut writer = Cursor::new(Vec::with_capacity(200));

match response.write_bytes(&mut writer) {
Ok(()) => {
let bytes_count = writer.get_ref().len();
let payload = writer.get_ref();

tracing::debug!(target: UDP_TRACKER_LOG_TARGET, ?to, bytes_count, "Udp::send_response (sending...)" );
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, ?to, bytes_count, ?payload, "Udp::send_response (sending...)");

self.send_packet(&to, payload).await;

tracing::trace!(target:UDP_TRACKER_LOG_TARGET, ?to, bytes_count, "Udp::send_response (sent)");
}
Err(e) => {
tracing::error!(target: UDP_TRACKER_LOG_TARGET, ?to, response_type, err = %e, "Udp::send_response (error)");
}
}
}

async fn send_packet(&self, remote_addr: &SocketAddr, payload: &[u8]) {
tracing::trace!(target: UDP_TRACKER_LOG_TARGET, to = %remote_addr, ?payload, "Udp::send_response (sending)");

// doesn't matter if it reaches or not
drop(self.socket.send_to(payload, remote_addr).await);
}
}
8 changes: 4 additions & 4 deletions src/servers/udp/server/receiver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,21 @@ use super::RawRequest;
use crate::shared::bit_torrent::tracker::udp::MAX_PACKET_SIZE;

pub struct Receiver {
pub bound_socket: Arc<BoundSocket>,
pub socket: Arc<BoundSocket>,
data: RefCell<[u8; MAX_PACKET_SIZE]>,
}

impl Receiver {
#[must_use]
pub fn new(bound_socket: Arc<BoundSocket>) -> Self {
Receiver {
bound_socket,
socket: bound_socket,
data: RefCell::new([0; MAX_PACKET_SIZE]),
}
}

pub fn bound_socket_address(&self) -> SocketAddr {
self.bound_socket.address()
self.socket.address()
}
}

Expand All @@ -36,7 +36,7 @@ impl Stream for Receiver {
let mut buf = *self.data.borrow_mut();
let mut buf = tokio::io::ReadBuf::new(&mut buf);

let Poll::Ready(ready) = self.bound_socket.poll_recv_from(cx, &mut buf) else {
let Poll::Ready(ready) = self.socket.poll_recv_from(cx, &mut buf) else {
return Poll::Pending;
};

Expand Down
12 changes: 0 additions & 12 deletions src/shared/bit_torrent/common.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
//! `BitTorrent` protocol primitive types
//!
//! [BEP 3. The `BitTorrent` Protocol Specification](https://www.bittorrent.org/beps/bep_0003.html)
use serde::{Deserialize, Serialize};

/// The maximum number of torrents that can be returned in an `scrape` response.
///
Expand All @@ -21,14 +20,3 @@ pub const MAX_SCRAPE_TORRENTS: u8 = 74;
/// See function to [`generate`](crate::core::auth::generate) the
/// [`ExpiringKeys`](crate::core::auth::ExpiringKey) for more information.
pub const AUTH_KEY_LENGTH: usize = 32;

#[repr(u32)]
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
enum Actions {
// todo: it seems this enum is not used anywhere. Values match the ones in
// aquatic_udp_protocol::request::Request::from_bytes.
Connect = 0,
Announce = 1,
Scrape = 2,
Error = 3,
}
Loading