💾 Archived View for vectorprime.deszaras.xyz › passages › 2021-04-24_Doppio_update.gmi captured on 2021-12-05 at 23:47:19. Gemini links have been rewritten to link to archived content
View Raw
More Information
⬅️ Previous capture (2021-12-04)
-=-=-=-=-=-=-
Doppio update
2021-04-24
I've been slowly working on my Doppio Gemini server implementation throughout the beginning of the year. Here's some of what's new with it.
Doppio
On the publicity front, I submitted a link for the server to the awesome-gemini list. I've been running the server for a few months for this capsule and, although there's not much traffic, it seems to be holding up. I'd be happy for others to really kick its tires.
awesome-gemini
I took a look at how to raise the visibility of this capsule as well - not so much for vanity, but just to make sure that if I ever say anything useful or helpful here, it'll be found. I saw that CAPCOM, the foremost feed aggregator for Geminispace, lets you submit your Atom feed URL, and guess what I hadn't been maintaining?
CAPCOM
Rather than take the easy way out and hand-write a feed file, I took the opportunity to enhance Doppio to generate it for me. I was already maintaining a gemlog index according to the Gemini feed specification, so now Doppio can take a file like that and dynamically build its corresponding Atom feed.
Subscribing to Gemini pages
With that new feature in place, I submitted my gemlog to CAPCOM. Let the hordes of admirers thunder in.
Anyway. Other cool stuff I've added to Doppio over the past few months:
- "Secure domains", which are directories that require authentication to get into. Doppio used to have "secure directories" but they'd let any authenticated user in. A secure domain includes a truststore, so that only authenticated callers who are authorized by that truststore can get in.
- Favicon support. Hah! It was fun and easy to do. I wrote about this already.
- A control port, which is a separate server port where Doppio listens for commands. The only command right now is to shut down, which is worth it, because it lets the server exit in an orderly fashion. I might add a reload command so that the server will re-read its configuration.
- Access log fixes. I was a bit lazy in how access log lines were formatted, so I went and fixed them up so they fully adhere to the Apache Common Log format. It's a common standard with oodles of support in log analysis systems.
- Optional charset detection. This is a little weird so it's not on by default. The idea is that the entire Gemini file is read in and there's an educated guess on how it's encoded. I have no idea how accurate it is, as I just pulled in a third party library, but it's based on Mozilla's work so it's probably good?
I have a few plans for what's next, too.
- Reloadable server configuration, which I mentioned above.
- Switching the server configuration from Java properties to something better, either JSON or YAML. This will require pulling in another dependency, which I am trying to avoid, but I think it'll be worthwhile.
- Packaging Doppio in a Docker image. I get the impression from the Gemini mailing list that there's not a lot of Java experience in the community. It will be way easier to onboard with Doppio by pulling a Docker image than by installing a JRE.
- Updates for however the Gemini spec evolves in the next few months, of course. I'm content to sit back and let Sean Conner and others hash the details out, and just implement what they think up. I'm not particularly interested in getting involved with the process, I have enough of similar work in my day job.