42 lines
979 B
Markdown
42 lines
979 B
Markdown
|
tazblog CLI
|
||
|
===========
|
||
|
|
||
|
My blog stores its content in DNS, spread out over three types of `TXT` entries:
|
||
|
|
||
|
* `TXT _posts.blog.tazj.in.`: A sorted list of posts, serialised as a JSON list of
|
||
|
strings (e.g. `["1486830338", "1476807384"]`)
|
||
|
|
||
|
* `TXT _chunks.$postID.blog.tazj.in`: JSON chunks containing the blog post text
|
||
|
|
||
|
* `TXT _meta.$postID.blog.tazj.in`: JSON blob with blog post metadata
|
||
|
|
||
|
All JSON blobs are base64-encoded.
|
||
|
|
||
|
This CLI tool helps to update those records.
|
||
|
|
||
|
Each blog post data is a series of JSON-encoded structures which follow one of
|
||
|
these formats:
|
||
|
|
||
|
```
|
||
|
struct metadata {
|
||
|
chunks: int
|
||
|
title: string
|
||
|
date: date
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Where `chunks` describes the number of chunks following this format:
|
||
|
|
||
|
```
|
||
|
struct chunk {
|
||
|
c: int
|
||
|
t: string
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Writing a blog post to DNS means taking its text and metadata, chunking it up
|
||
|
and writing the chunks.
|
||
|
|
||
|
Reading a blog post means retrieving all data, reading the metadata and then
|
||
|
assembling the chunks in order.
|