TODO
HTTP
- On the fly conversion from GMI to HTML for http .gmi becomes .htm
- Find a good CSS
- Add favicon.ico
Filesystem
- Move out path analysis from sendFile to be used also by writeFile
- Write feed on card and use a redirect to serve the static file
- Sort files from card for feeds or listing
Auto generated pages
- Virtual page for file listing with file details (size, date). Use /ls? root
- Show free space on filesystem in /status page.
- Bookmark pages from lists
- Convert gopher.map to gemini markup if viewed using gemini protocol. Or fallback to gopher.map if it exists.
- Server maintenance mode (error 41). Use a specific URL to enable/disable.
- Buffer output to 512B for some pages
- Show client IP in /status
Authentication
Add syslog client support
Status led
GemLog
- Multiple directories for multiple gemlogs. How to identify?
- /gemlog/new to create a new gemlog entry, the file is date based; a new post on the same day appends to existing file
- Feed (/gemlog/feed.gmi)
- Blog page (/gemlog) with 'n' entries, showing only the title and first paragraph (see tinylog format https://codeberg.org/bacardi55/gemini-tinylog-rfc)
- Uses titan for posting
One liners (/wall or /write) with /new for new line. See BBS. Uses Gemini query for posting.
Services
- Notification? ntfy?
- dweet.io?
- Jokes? See icanhasdadjokes
- Weather?
- Scripting? CGI? What language?
DONE
- Create a cpio file with all card content
- Mime type shrink the vector after filling (shrink_to_fit)
- Sleeping
- MDNS use first part from hostname or separate config file.
- add default app/oct-stream mime type if not found
- Function to send the header with pseudo error code parameter. Returns the real error code. There should be an array with three variants for each pseudo codeĀ
- Disable Gemini protocol if no certificate or key
- gemini headers for all errors
- return file lenght
- Return the error code for the log, along with file size
- Card detection, check more SS/CS
- Specify TZ in a file from card.
- Log requests (Serial) using Apache log format
- Add support for not activating MDNS (stealth).
- Default host (for gopher?) specified on card.
- Auto generated pages: Status
- Auto index if no index.gmi found: .noidx, header, find first header of GMI files and use as text @
- Feeds in RSS or Gemini format, use template tags to be replaced with generated list of links
- Auto gophermap for gopher (read title from GMI to generate links)
- Files on card, directory "/gemini"
- Certificates on card, if not, generateĀ (collect entropy from analog, time, etc)
- WiFi configuration on card, multiple networks to try
- DuckDNS suport, name, key and URL on card (to support others too) https://github.com/ayushsharma82/EasyDDNS
- UPNP support to redirect port automatically https://github.com/ofekp/TinyUPnP
- Titan protocol support (limited to special URL).
- Add history support, like dokuwiki. Before writing the file, copy the existing one to a history directory, with filename changed to date-time.
- Titan token on card.
- Fix query in spartan
- Crashes in gopher
- Use one main config file
- Lowercase pathinfo
- Move the file copy routine outside
- Use subdomain for sensitive operations
- Trim strings for config file
- Gopher redirect (no trailing slash for dirs)
- Client identity.
- Two secure servers on two different ports?
- Validate client certificate, see the links
* Do not enable the secondary server if no CA.
- Add support for LittleFS
at compile time.
- Status is /status.
- Use cache for authenticated server, too. One cache should be enough.
- Add a flag in log for authenticated requests.
- Return not authenticated error if trying to access private resources.
- fortunes. Analyse the fortune program. Maybe we can implement one line fortunes
Rejected
- Wiki engine
- noDelay makes it worse
- Alternating servers with timeout for certificated one?
- Configurabile directory which switches on and off the engine
- Check admin host string for dots. if no nods, prepend to hostname