Remove the requirement on ordering for domains

This commit is contained in:
Emi Simpson 2022-07-15 14:29:23 -04:00
parent 55bfdb19e3
commit 303389de14
Signed by: Emi
GPG Key ID: A12F2C2FFDC3D847
2 changed files with 7 additions and 4 deletions

View File

@ -49,8 +49,6 @@ queerings.gay
getonflop.xyz
```
One restriction: If one site is a substring of another, the shorter site must go first. For example, if you have `unix.pub` and `unix.pub/~user`, `unix.pub` MUST be higher in the list than `unix.pub/~user`
Now, run the Faery Ring binary (or docker image) with the `.txt` file you just created as the first argument, like this:
```bash

View File

@ -67,9 +67,14 @@ impl<'a> Route<'a> {
match self {
Self::PrevOrNext(this_domain, offset) => {
// The name of the domain at the index of the index of shortest matching
// domain from the list for which the requested domain is a substring,
// offset by the offset.
let destination = domains.iter()
.position(|d| d.as_str().starts_with(this_domain))
.map(|i| (i as isize + offset).rem_euclid(domains.len() as isize))
.enumerate()
.filter(|(_, d)| d.as_str().starts_with(this_domain))
.min_by_key(|(_, d)| d.len())
.map(|(i, _)| (i as isize + offset).rem_euclid(domains.len() as isize))
.map(|i| domains[i as usize]); // safe to unwrap: we just did a rem_euclid
if let Some(url) = destination {