50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
---
|
|
title: "Bunbun"
|
|
subtitle: "Cross-browser search commands"
|
|
path: "bunbun"
|
|
date: 2020-01-01
|
|
lang: "rust"
|
|
tags: []
|
|
---
|
|
|
|
[Bunbun][1] is a search delegation service and my first project in Rust. It's a
|
|
implementation of [bunny1][bunny1] that offers a simple config file as well as
|
|
an extensible plugin system.
|
|
|
|
An interesting note about the project is that [I've submitted a patch][hotwatch]
|
|
to an library to fix a bug where the file descriptor for watching the config
|
|
file would get stale.
|
|
|
|
For me, it solves a lot of problems I have, particularly in the sense that it
|
|
lets me write shortcuts that I know will always work, instead of relying on
|
|
browsers to remember for me.
|
|
|
|
Yes, existing solutions exist, such as DuckDuckGo's [bang!][ddg-bangs] as well
|
|
as FireFox's shortcuts, but I believe this has a niche particularly for
|
|
self-hosted or enterprise environments. As it allows for plugins to run, it can
|
|
offer a uniform experience for employees or users to access common resources.
|
|
|
|
Honestly, this idea didn't sell me at first, but after using a similar variant
|
|
at my past work, I was completely dependent on it in only 12 weeks.
|
|
|
|
I've been living on this project for months now, so I can guarantee that it
|
|
works. From a privacy and security perspective, I find it to be satisfactory for
|
|
my needs:
|
|
1. It only logs to `stdout` with the option to completely disable logging.
|
|
2. It's built in Rust without any `unsafe` usage, which guarantees that my code
|
|
should be sound.
|
|
3. It uses `actix`, a well respected HTTP server library that is relatively
|
|
receptive of security concerns.
|
|
4. Its plugin system is as private and secure as the host it's running on, and
|
|
fails safe on improperly defined inputs.
|
|
5. It has meaningful tests!
|
|
|
|
_Caveat emptor_[^1], of course. You should audit the code yourself, but I'm
|
|
happy with the work I've made (and always receptive of feedback).
|
|
|
|
[1]: https://github.com/edward-shen/bunbun
|
|
[bunny1]: http://www.bunny1.org/
|
|
[hotwatch]: https://github.com/francesca64/hotwatch/pull/4
|
|
[ddg-bangs]: https://duckduckgo.com/bang
|
|
|
|
[^1]: https://en.wikipedia.org/wiki/Caveat_emptor |