# frenring it's a webring with posts from frens! ``` $ frenring -n 4 -l 80 \ -s 'https://sdomi.pl/weblog/atom/' \ -s 'https://maia.crimew.gay/feed.xml' \ -s 'https://cadence.moe/blog/atom.xml?limit=1' \ -s 'https://drewdevault.com/blog/index.xml' ``` ```json [ { "title": "Making MDR-V6 wireless, the hard way", "link": "http://sakamoto.pl/weblog/16-making-mdrv6-wireless/", "summary": "Join me as I hack a pair of cool wired headphones to have a detachable cord alon…", "date": "2022-11-21T09:53:00Z", "source_link": "https://sdomi.pl/weblog/", "source_title": "sdomi's weblog" }, { "title": "#FuckStalkerware pt. 1 - the LetMeSpy hack", "link": "https://maia.crimew.gay/posts/fuckstalkerware-1/", "summary": "the intro to this series can be found here a few days ago, while i was starting …", "date": "2023-06-26T00:00:00Z", "source_link": "https://maia.crimew.gay/", "source_title": "maia blog" }, { "title": "Seriously, don't sign a CLA", "link": "https://drewdevault.com/2023/07/04/Dont-sign-a-CLA-2.html", "summary": "SourceGraph is making their product closed source, abandoning the Apache 2.0 lic…", "date": "2023-07-04T00:00:00Z", "source_link": "https://drewdevault.com/", "source_title": "Drew DeVault's blog" }, { "title": "How to log in to phpBB for scraping", "link": "https://cadence.moe/blog/2023-02-26-how-to-log-in-to-phpbb-for-scraping", "summary": "This post is all about logging in to phpBB through manually constructed requests…", "date": "2023-02-26T10:57:58.136Z", "source_link": "https://cadence.moe/blog", "source_title": "Cadence's Weblog" } ] ``` inspired by Drew DeVault's [openring](https://sr.ht/~sircmpwn/openring/). I mean this is basically a "rewrite it in rust" moment, because I didn't want to touch golang templates, or worse, golang. the main difference is that it outputs a JSON array rather than fill the data into a supplied golang template. in [Zola](https://www.getzola.org/), you can use the resulting JSON in a template with the [`load_data` built-in function](https://www.getzola.org/documentation/templates/overview/#load-data). this is the cli. the core functionality is a rust library - see the [core](core) directory or [`frenring-core` crate](https://crates.io/crates/frenring-core) ([lib.rs](https://lib.rs/crates/frenring-core)). security considerations: make sure the output you serve (such as html) is sanitized. xml parser is in use. paths to local filesystem are accepted as a source of a feed. remote http/https servers receive your ip address. http communication can be intercepted and altered by a third party. copyright (c) 2023 lauren n. liberda, usage allowed under `LGPL-3.0-only`, see [LICENSE](LICENSE) file.