Skip to content
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
265 commits
Select commit Hold shift + click to select a range
5373493
chore(deps): update dependencies
josecelano Apr 8, 2024
af52045
Merge torrust/torrust-tracker#780: Update dependencies
josecelano Apr 8, 2024
78b46c4
chore(deps): add cargo dependency: dashmap
josecelano Apr 9, 2024
00ee9db
feat: [#565] new torrent repository implementation usind DashMap
josecelano Apr 9, 2024
1e76c17
chore: add dashmap cargo dep to cargp machete
josecelano Apr 9, 2024
4030fd1
fix: torrent repository tests. DashMap is not ordered
josecelano Apr 9, 2024
b5fb03b
Merge torrust/torrust-tracker#784: Performance optimization: create a…
josecelano Apr 9, 2024
aa4bfba
refactor: segregate command and query for announce request
josecelano Apr 12, 2024
24b82f3
Merge torrust/torrust-tracker#792: Refactor: segregate command and qu…
josecelano Apr 15, 2024
5fa01e7
chore(deps): update dependencies
josecelano Apr 15, 2024
52b7e3a
Merge torrust/torrust-tracker#793: Update dependencies
josecelano Apr 15, 2024
4a567cd
refactor: extract PeerList
josecelano Apr 15, 2024
922afda
refactor: rename field from peers to swarm
josecelano Apr 15, 2024
42f1b30
refactor: extract mod peer_list
josecelano Apr 15, 2024
40182b4
test: add tests for PeerList type
josecelano Apr 16, 2024
7664ec6
Merge torrust/torrust-tracker#797: Refactor: extract peer list in tor…
josecelano Apr 16, 2024
5750e2c
chore(deps): add dependency parking_lot
josecelano Apr 16, 2024
9258ac0
feat: new torrent repo implementation using parking_lot RwLock
josecelano Apr 16, 2024
0fa396c
chore(deps): add parking_lot to cargo machete
josecelano Apr 16, 2024
0058e72
feat: new torrent repo implementation using parking_lot Mutex
josecelano Apr 16, 2024
6271ce8
Merge torrust/torrust-tracker#800: Torrent repository with `parking_l…
josecelano Apr 16, 2024
87c9834
chore(deps): update dependencies
josecelano Apr 19, 2024
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
cdd544f
scratch
da2ce7 May 18, 2024
615eaf6
chore(deps): bump aquatic_udp_protocol from 0.8.0 to 0.9.0
josecelano May 7, 2024
ddfc1ee
docs: [#768] udpate profiling docs
josecelano Apr 1, 2024
f21bd14
chore: add new cargo dependency: crossbeam-skiplist
josecelano Apr 4, 2024
1c60987
feat: new torrent repository using crossbeam_skiplist::SkipMap
josecelano Apr 4, 2024
9a135db
chore: ignore crossbeam-skiplist crate in cargo-machete
josecelano Apr 5, 2024
d17c881
refactor: separate torrent repository trait from implementations
josecelano Apr 5, 2024
f06891a
test: add tests for new torrent repository using SkipMap
josecelano Apr 8, 2024
d8811dd
chore(deps): add cargo dependency: dashmap
josecelano Apr 9, 2024
5ef0d3f
feat: [#565] new torrent repository implementation usind DashMap
josecelano Apr 9, 2024
10bd7cc
chore: add dashmap cargo dep to cargp machete
josecelano Apr 9, 2024
8c080f1
fix: torrent repository tests. DashMap is not ordered
josecelano Apr 9, 2024
409c577
refactor: segregate command and query for announce request
josecelano Apr 12, 2024
e60c1eb
refactor: extract PeerList
josecelano Apr 15, 2024
57506ac
refactor: rename field from peers to swarm
josecelano Apr 15, 2024
ca0a7bb
refactor: extract mod peer_list
josecelano Apr 15, 2024
e5b3070
test: add tests for PeerList type
josecelano Apr 16, 2024
fae47b1
chore(deps): add dependency parking_lot
josecelano Apr 16, 2024
7c5083d
feat: new torrent repo implementation using parking_lot RwLock
josecelano Apr 16, 2024
96df6ad
chore(deps): add parking_lot to cargo machete
josecelano Apr 16, 2024
68c4fbb
feat: new torrent repo implementation using parking_lot Mutex
josecelano Apr 16, 2024
e32475e
remove unused dependencies
hungfnt Apr 24, 2024
b072e10
chore(deps): update dependencies
josecelano May 6, 2024
bf0ea2b
feat: log aborted UDP requests
josecelano May 7, 2024
68f8e99
docs: udpate installation docs
josecelano May 7, 2024
cb96ba7
docs: fix profiling docs
josecelano May 8, 2024
832051a
dev: fix udp ring-buffer not looping
da2ce7 May 7, 2024
68e0327
chore(deps): add dependency figment
josecelano Apr 22, 2024
9542727
test: remove broken example in rustdoc
josecelano Apr 22, 2024
32b4278
chore(deps): enable figment features: env, toml, test
josecelano Apr 22, 2024
5e70969
refactor: create new configuration v1 mod with figment
josecelano Apr 22, 2024
da4615a
refactor: reexport config versioned config types
josecelano May 8, 2024
2ef25f4
refactor: replace Config by Figment in Configuration implementation
josecelano May 8, 2024
867b583
chore: remove unused config dependenciy
josecelano May 8, 2024
35bf7ef
feat: enable overwrite Configuration values using env vars
josecelano May 8, 2024
3a33261
refactor: move Configuration unit test to inner mods
josecelano May 8, 2024
6baa7fd
refactor!: remove unused method in Configuration
josecelano May 8, 2024
a690bb2
feat: use double underscore to split config env var names
josecelano May 9, 2024
20b00c2
refactor: implement Default for Configuration sections
josecelano May 9, 2024
7fbb2e2
docs: update env var name in toml config template files
josecelano May 9, 2024
cbca1d5
tests: add test for configuration with deprecated env var name
josecelano May 9, 2024
571b98b
feat: allow users not to provide config option with default values
josecelano May 9, 2024
f3e5cb5
refactor: [#852] eenrich field types in HealthCheckApi config struct
josecelano May 9, 2024
c4abae4
refactor: [#852] eenrich field types in UdpTracker config struct
josecelano May 10, 2024
e7827ea
refactor: [#852] enrich field types in HttpTracker config struct
josecelano May 10, 2024
0327772
chore(deps): add dependency camino
josecelano May 10, 2024
14001f0
refactor: [#852] eenrich field types in TslConfig config struct
josecelano May 10, 2024
932c33b
refactor: [#852] enrich field types in HttpApi config struct
josecelano May 10, 2024
ca9208d
refactor: [#852] enrich field types in Configuration struct
josecelano May 10, 2024
f4304d6
refactor: [#852] extract Core configuration type
josecelano May 10, 2024
d58dc30
refactor: tracker core service only needs the core config
josecelano May 10, 2024
c6590ad
feat: define only non-defaults in toml config templates
josecelano May 13, 2024
0fe2488
chore(deps): update dependencies
josecelano May 14, 2024
636713e
refactor: [#855] show toml file location in Figment errors
josecelano May 14, 2024
243346d
refactor: move config env vars to configuration package
josecelano May 14, 2024
97312a9
refactor: [#851] rename env vars
josecelano May 14, 2024
e43b71f
feat!: remove deprecated env var
josecelano May 14, 2024
df10a19
docs: update README
josecelano May 14, 2024
66ca904
docs: udpate roadmap in README
josecelano May 14, 2024
7887319
chore(deps): add cargo dependencies needed for axum timeouts
josecelano May 15, 2024
4cf32aa
fix: [#612] add timeout for time waiting for the first API requests
josecelano May 15, 2024
c52d72b
feat: [#612] tower middleware to apply timeouts to requests
josecelano May 15, 2024
1f9012f
fix: [#613] add timeout for time waiting for the first HTTP tracker
josecelano May 15, 2024
4d59486
Fix REAADME HTTP port
GGLinnk May 19, 2024
f0e57c8
Fix and improved bootstrap jobs module test.
GGLinnk May 20, 2024
a743f01
feat: [#870] add privacy methods to the TrackerMode
josecelano May 17, 2024
a2e60c2
feat: [#870] remove Copy trait from TrackerMode
josecelano May 17, 2024
79bfb4a
feat: [#870] implement traits Dispaly and FromStr for TrackerMode
josecelano May 17, 2024
54c513f
chore(deps): update dependencies
josecelano May 31, 2024
6df2fed
fix: clippy errors
josecelano May 31, 2024
223da71
feat: [#670] new JSON serialization for connect and error aquatic res…
mario-nt May 20, 2024
cb6742c
refactor: [#670] new trait for printing responses in JSON format and …
mario-nt May 27, 2024
58516c5
refactor: [#670] new print_response function from trait implemented
mario-nt May 27, 2024
3c84732
refactor: [#670] added error message for pint_response function
mario-nt May 27, 2024
19a3c5e
refactor: [#670] new mod for responses logic and refactors to json s…
mario-nt Jun 3, 2024
5299b35
refactor: [#670] changed DTOs and variable names
mario-nt Jun 4, 2024
4b1bcd5
refactor:[#670] fix clippy errors
mario-nt Jun 4, 2024
c171a4a
docs: add benchmarking to torrent repo README
josecelano Jun 10, 2024
68d8344
chore(deps): add cargo dependency tracing
josecelano Jun 10, 2024
307801f
refactor: [#884] move from log to tracing crate
josecelano Jun 10, 2024
4e7b773
refactor: [#884] move from log to tracing crate
josecelano Jun 10, 2024
08233b0
test: [#884] add test for parsing array of services from app logs
josecelano Jun 10, 2024
95e0d13
chore(deps): remove unused dependencies log and fern
josecelano Jun 10, 2024
1816a38
refactor: [#659] use clap and anyhow in E2E test runner
josecelano Jun 10, 2024
b29efb1
docs: [#770] update benchmarking docs
josecelano Jun 12, 2024
3f2c696
fix: [#893] enable color in logs
josecelano Jun 14, 2024
555de77
chore(deps): add cargo dependency regex
josecelano Jun 14, 2024
dd10c9a
fix: [#893] enable color for logs
josecelano Jun 14, 2024
4f2e23b
fix: [#898] docker build error: failed to load bitcode of module crit…
josecelano Jun 17, 2024
73dec71
feat!: [#878] extract logging and core section in toml config files
josecelano Jun 17, 2024
37a09aa
feat!: [#878] make log_level config value mandatory
josecelano Jun 17, 2024
4a39d65
feat!: [#878] extract database section in core config section
josecelano Jun 17, 2024
36c7ed1
feat!: [#878] extract net section in core config section
josecelano Jun 17, 2024
063caf3
feat!: [#878] extract announce_policy section in core config section
josecelano Jun 17, 2024
2708f5d
feat!: [#878] extract tracker_policy section in core config section
josecelano Jun 17, 2024
6d07cf4
feat: [#878] extract tsl_config in toml config
josecelano Jun 17, 2024
855bd4f
feat!: [#878] remove enabled fields in config
josecelano Jun 18, 2024
27ee9aa
Merge branch 'dev_1' into develop
da2ce7 Jun 25, 2024
7e8f05b
dev: clients checker cleanup
da2ce7 Jun 26, 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
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,6 @@
"evenBetterToml.formatter.trailingNewline": true,
"evenBetterToml.formatter.reorderKeys": true,
"evenBetterToml.formatter.reorderArrays": true,
"rust-analyzer.showUnlinkedFileNotification": false,

}
12 changes: 0 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,14 @@ serde_bytes = "0"
serde_json = "1"
serde_repr = "0"
thiserror = "1"
tokio = { version = "1", features = ["macros", "net", "rt-multi-thread", "signal", "sync"] }
torrust-tracker-configuration = { version = "3.0.0-alpha.12-develop", path = "packages/configuration" }
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal", "sync"] }
torrust-tracker-clock = { version = "3.0.0-alpha.12-develop", path = "packages/clock" }
torrust-tracker-configuration = { version = "3.0.0-alpha.12-develop", path = "packages/configuration" }
torrust-tracker-contrib-bencode = { version = "3.0.0-alpha.12-develop", path = "contrib/bencode" }
torrust-tracker-located-error = { version = "3.0.0-alpha.12-develop", path = "packages/located-error" }
torrust-tracker-primitives = { version = "3.0.0-alpha.12-develop", path = "packages/primitives" }
torrust-tracker-torrent-repository = { version = "3.0.0-alpha.12-develop", path = "packages/torrent-repository" }
tower-http = { version = "0", features = ["compression-full", "cors", "propagate-header", "request-id", "trace"] }
trace = "0"
tracing = "0"
url = "2"
uuid = { version = "1", features = ["v4"] }
Expand All @@ -90,7 +89,7 @@ members = [
"packages/located-error",
"packages/primitives",
"packages/test-helpers",
"packages/torrent-repository"
"packages/torrent-repository",
]

[profile.dev]
Expand All @@ -105,4 +104,4 @@ opt-level = 3

[target.x86_64-unknown-linux-gnu]
linker = "/usr/bin/clang"
rustflags = ["-Clink-arg=-fuse-ld=lld", "-Clink-arg=-Wl,--no-rosegment"]
rustflags = ["-Clink-arg=-Wl,--no-rosegment", "-Clink-arg=-fuse-ld=lld"]
3 changes: 2 additions & 1 deletion cSpell.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"certbot",
"chrono",
"clippy",
"Cloneable",
"codecov",
"codegen",
"completei",
Expand Down Expand Up @@ -69,8 +70,8 @@
"infoschema",
"Intermodal",
"intervali",
"kcachegrind",
"Joakim",
"kcachegrind",
"keyout",
"lcov",
"leecher",
Expand Down
14 changes: 14 additions & 0 deletions packages/configuration/src/lib.rs
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @da2ce7 I think this mod is too big. I would create a mod for each service and only put things in the root mod that are common to all services.

Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ use std::collections::HashMap;
use std::net::IpAddr;
use std::str::FromStr;
use std::sync::Arc;
use std::time::Duration;
use std::{env, fs};

use config::{Config, ConfigError, File, FileFormat};
Expand All @@ -246,6 +247,19 @@ use torrust_tracker_primitives::{DatabaseDriver, TrackerMode};
/// The maximum number of returned peers for a torrent.
pub const TORRENT_PEERS_LIMIT: usize = 74;

/// Client Timeout
pub const CLIENT_TIMEOUT_DEFAULT: Duration = Duration::from_secs(5);

/// The maximum number of bytes in a UDP packet.
pub const MAX_PACKET_SIZE: usize = 1496;

/// The a free port is dynamically chosen by the operating system.
pub const PORT_ASSIGNED_BY_OS: u16 = 0;

/// A magic 64-bit integer constant defined in the protocol that is used to
/// identify the protocol.
pub const PROTOCOL_ID: i64 = 0x0417_2710_1980;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi @da2ce7 in this context I would rename the const to UDP_PROTOCOL_ID or move the const to a UDP mod.


#[derive(Copy, Clone, Debug, PartialEq, Constructor)]
pub struct TrackerPolicy {
pub remove_peerless_torrents: bool,
Expand Down
7 changes: 6 additions & 1 deletion packages/primitives/src/announce_event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,24 @@
//!
//! Distributed under Apache 2.0 license

use derive_more::Display;
use serde::{Deserialize, Serialize};

/// Announce events. Described on the
/// [BEP 3. The `BitTorrent` Protocol Specification](https://www.bittorrent.org/beps/bep_0003.html)
#[derive(Hash, Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
#[derive(Hash, Clone, Copy, Debug, Display, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub enum AnnounceEvent {
/// The peer has started downloading the torrent.
#[display(fmt = "started")]
Started,
/// The peer has ceased downloading the torrent.
#[display(fmt = "stopped")]
Stopped,
/// The peer has completed downloading the torrent.
#[display(fmt = "completed")]
Completed,
/// This is one of the announcements done at regular intervals.
#[display(fmt = "")]
None,
}

Expand Down
59 changes: 35 additions & 24 deletions packages/primitives/src/info_hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,18 @@ use std::panic::Location;

use thiserror::Error;

pub type ByteArray20 = [u8; 20];

/// `BitTorrent` Info Hash v1
#[derive(PartialEq, Eq, Hash, Clone, Copy, Default, Debug)]
pub struct InfoHash(pub [u8; 20]);
pub struct InfoHash(pub ByteArray20);

pub const INFO_HASH_BYTES_LEN: usize = 20;

impl InfoHash {
/// Create a new `InfoHash` from a byte slice.
///
/// # Panics
///
/// Will panic if byte slice does not contains the exact amount of bytes need for the `InfoHash`.
#[must_use]
pub fn from_bytes(bytes: &[u8]) -> Self {
assert_eq!(bytes.len(), INFO_HASH_BYTES_LEN);
let mut ret = Self([0u8; INFO_HASH_BYTES_LEN]);
ret.0.clone_from_slice(bytes);
ret
}

/// Returns the `InfoHash` internal byte array.
#[must_use]
pub fn bytes(&self) -> [u8; 20] {
pub fn bytes(&self) -> ByteArray20 {
self.0
}

Expand Down Expand Up @@ -57,14 +46,30 @@ impl std::fmt::Display for InfoHash {
}

impl std::str::FromStr for InfoHash {
type Err = binascii::ConvertError;
type Err = ConversionError;

fn from_str(s: &str) -> Result<Self, Self::Err> {
const INFO_HASH_CHAR_LEN: usize = INFO_HASH_BYTES_LEN * 2;
let mut i = Self([0u8; 20]);
if s.len() != 40 {
return Err(binascii::ConvertError::InvalidInputLength);

if s.len() < INFO_HASH_CHAR_LEN {
return Err(ConversionError::NotEnoughBytes {
location: Location::caller(),
message: format! {"got {} string, expected {}", s.len(), INFO_HASH_CHAR_LEN},
});
}
binascii::hex2bin(s.as_bytes(), &mut i.0)?;
if s.len() > INFO_HASH_CHAR_LEN {
return Err(ConversionError::TooManyBytes {
location: Location::caller(),
message: format! {"got {} string, expected {}", s.len(), INFO_HASH_CHAR_LEN},
});
}

binascii::hex2bin(s.as_bytes(), &mut i.0).map_err(|e| ConversionError::HexToBinError {
location: Location::caller(),
message: format! {"got {e:?} error"},
})?;

Ok(i)
}
}
Expand All @@ -89,15 +94,15 @@ impl std::convert::From<&DefaultHasher> for InfoHash {
}
}

impl std::convert::From<&i32> for InfoHash {
fn from(n: &i32) -> InfoHash {
impl std::convert::From<i32> for InfoHash {
fn from(n: i32) -> InfoHash {
let n = n.to_le_bytes();
InfoHash([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, n[0], n[1], n[2], n[3]])
}
}

impl std::convert::From<[u8; 20]> for InfoHash {
fn from(val: [u8; 20]) -> Self {
impl std::convert::From<ByteArray20> for InfoHash {
fn from(val: ByteArray20) -> Self {
InfoHash(val)
}
}
Expand All @@ -117,6 +122,12 @@ pub enum ConversionError {
location: &'static Location<'static>,
message: String,
},

#[error("hex to bin didn't parse: {message} {location}")]
HexToBinError {
location: &'static Location<'static>,
message: String,
},
}

impl TryFrom<Vec<u8>> for InfoHash {
Expand All @@ -135,7 +146,7 @@ impl TryFrom<Vec<u8>> for InfoHash {
message: format! {"got {} bytes, expected {}", bytes.len(), INFO_HASH_BYTES_LEN},
});
}
Ok(Self::from_bytes(&bytes))
Ok((*bytes).into())
}
}

Expand Down
7 changes: 4 additions & 3 deletions packages/primitives/src/peer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -392,13 +392,14 @@ pub mod fixture {

#[allow(dead_code)]
#[must_use]
pub fn build(self) -> Peer {
self.into()
pub fn with_event(mut self, event: AnnounceEvent) -> Self {
self.peer.event = event;
self
}

#[allow(dead_code)]
#[must_use]
pub fn into(self) -> Peer {
pub fn build(self) -> Peer {
self.peer
}
}
Expand Down
10 changes: 5 additions & 5 deletions packages/torrent-repository/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
description = "A library that provides a repository of torrents files and their peers."
keywords = ["torrents", "repository", "library"]
keywords = ["library", "repository", "torrents"]
name = "torrust-tracker-torrent-repository"
readme = "README.md"

Expand All @@ -17,15 +17,15 @@ version.workspace = true

[dependencies]
futures = "0.3.29"
tokio = { version = "1", features = ["macros", "net", "rt-multi-thread", "signal", "sync"] }
torrust-tracker-primitives = { version = "3.0.0-alpha.12-develop", path = "../primitives" }
torrust-tracker-configuration = { version = "3.0.0-alpha.12-develop", path = "../configuration" }
tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync"] }
torrust-tracker-clock = { version = "3.0.0-alpha.12-develop", path = "../clock" }
torrust-tracker-configuration = { version = "3.0.0-alpha.12-develop", path = "../configuration" }
torrust-tracker-primitives = { version = "3.0.0-alpha.12-develop", path = "../primitives" }

[dev-dependencies]
async-std = { version = "1", features = ["attributes", "tokio1"] }
criterion = { version = "0", features = ["async_tokio"] }
rstest = "0"
async-std = {version = "1", features = ["attributes", "tokio1"] }

[[bench]]
harness = false
Expand Down
2 changes: 1 addition & 1 deletion packages/torrent-repository/tests/repository/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ fn many_out_of_order() -> Entries {
let mut entry = EntrySingle::default();
entry.insert_or_update_peer(&a_started_peer(i));

entries.insert((InfoHash::from(&i), entry));
entries.insert((InfoHash::from(i), entry));
}

// we keep the random order from the hashed set for the vector.
Expand Down
24 changes: 13 additions & 11 deletions src/console/clients/checker/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ pub async fn run() -> Result<Vec<CheckResult>> {
console: console_printer,
};

Ok(service.run_checks().await)
service.run_checks().await
}

fn setup_logging(level: LevelFilter) {
Expand All @@ -78,15 +78,17 @@ fn setup_logging(level: LevelFilter) {
}

fn setup_config(args: Args) -> Result<Configuration> {
match (args.config_path, args.config_content) {
(Some(config_path), _) => load_config_from_file(&config_path),
(_, Some(config_content)) => parse_from_json(&config_content).context("invalid config format"),
_ => Err(anyhow::anyhow!("no configuration provided")),
// If a config is directly supplied, we use it.
if let Some(config) = args.config_content {
parse_from_json(&config).context("invalid config format")
}
// or we load it from a file...
else if let Some(path) = args.config_path {
let file_content = std::fs::read_to_string(path.clone()).with_context(|| format!("can't read config file {path:?}"))?;
parse_from_json(&file_content).context("invalid config format")
}
// but we cannot run without any config...
else {
Err(anyhow::anyhow!("no configuration provided"))
}
}

fn load_config_from_file(path: &PathBuf) -> Result<Configuration> {
let file_content = std::fs::read_to_string(path).with_context(|| format!("can't read config file {path:?}"))?;

parse_from_json(&file_content).context("invalid config format")
}
Loading