forked from mirrors/relay
Add -l option for dumping existing allow/block lists
This commit is contained in:
parent
1f87c0f913
commit
3b0e9fddc0
3 changed files with 29 additions and 0 deletions
|
@ -11,6 +11,9 @@ pub(crate) struct Args {
|
|||
|
||||
#[arg(short, long, help = "Undo allowing or blocking domains")]
|
||||
undo: bool,
|
||||
|
||||
#[arg(short, long, help = "List allowed and blocked domains")]
|
||||
list: bool,
|
||||
}
|
||||
|
||||
impl Args {
|
||||
|
@ -29,4 +32,8 @@ impl Args {
|
|||
pub(crate) fn undo(&self) -> bool {
|
||||
self.undo
|
||||
}
|
||||
|
||||
pub(crate) fn list(&self) -> bool {
|
||||
self.list
|
||||
}
|
||||
}
|
||||
|
|
12
src/db.rs
12
src/db.rs
|
@ -142,6 +142,14 @@ impl Inner {
|
|||
.map(|s| String::from_utf8_lossy(&s).to_string())
|
||||
}
|
||||
|
||||
fn allows(&self) -> impl DoubleEndedIterator<Item = String> {
|
||||
self.allowed_domains
|
||||
.iter()
|
||||
.values()
|
||||
.filter_map(|res| res.ok())
|
||||
.map(|s| String::from_utf8_lossy(&s).to_string())
|
||||
}
|
||||
|
||||
fn connected(&self) -> impl DoubleEndedIterator<Item = IriString> {
|
||||
self.connected_actor_ids
|
||||
.iter()
|
||||
|
@ -452,6 +460,10 @@ impl Db {
|
|||
self.unblock(|inner| Ok(inner.blocks().collect())).await
|
||||
}
|
||||
|
||||
pub(crate) async fn allows(&self) -> Result<Vec<String>, Error> {
|
||||
self.unblock(|inner| Ok(inner.allows().collect())).await
|
||||
}
|
||||
|
||||
pub(crate) async fn inboxes(&self) -> Result<Vec<IriString>, Error> {
|
||||
self.unblock(|inner| Ok(inner.connected_actors().map(|actor| actor.inbox).collect()))
|
||||
.await
|
||||
|
|
10
src/main.rs
10
src/main.rs
|
@ -101,6 +101,16 @@ async fn main() -> Result<(), anyhow::Error> {
|
|||
|
||||
let args = Args::new();
|
||||
|
||||
if args.list() {
|
||||
for domain in db.blocks().await? {
|
||||
println!("block {}", domain);
|
||||
}
|
||||
for domain in db.allows().await? {
|
||||
println!("allow {}", domain);
|
||||
}
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
if !args.blocks().is_empty() || !args.allowed().is_empty() {
|
||||
if args.undo() {
|
||||
db.remove_blocks(args.blocks().to_vec()).await?;
|
||||
|
|
Loading…
Reference in a new issue