為了與其它聯邦軟體以及自身聯合,Plume使用各種協議:
- ActivityPub,作為主要的聯邦協議。
- WebFinger,用來輕鬆找尋其他使用者和部落格。
- HTTP Signatures,用來驗證活動。
- NodeInfo,這不是聯邦本身的一部份,但這提供了每個實例的一些元數據。
目前,以下幾個方面是能與聯邦互通的:
- 使用者檔案
- 部落格
- 文章
- 註釋
- 讚
- 轉發
而這些部分沒有與聯邦互通,但將來可能會有:
- 媒體相簿
- 站點元數據
WebFinger
WebFinger用來發現遠程設定文件 當你打開一個陌生使用者頁面時 (/@/username@instance.tld),Plume 將向另一個站點發送 WebFinger 請求,在標準/.well-known/webfinger 端點。 Plume 將忽略 /.well-known/host-meta端點,這通常可用於定義另一個 WebFinger 端點,並始終使用標準 URL。
Plume 使用 webfinger crate 來提供
WebFinger 資訊並獲取它們。
HTTP Signatures
Plume 檢查每個傳入的 Activity 是否已使用actor的金鑰對進行簽名。
為此,它使用Signature HTTP header。 有關 header 產生方法的更多細節請參考 HTTP Signatures 規範.
Digest header 也應該存在並用於產生簽名,所以我們也可以驗證請求的主體。
NodeInfo
Plume 在/nodeinfo URL上使用 NodeInfo 公開站點的元數據。
輸出範例
{
"version": "2.0",
"software": {
"name": "Plume",
"version": "0.2.0"
},
"protocols": ["activitypub"],
"services": {
"inbound": [],
"outbound": []
},
"openRegistrations": true,
"usage": {
"users": {
"total": 42
},
"localPosts": 7878,
"localComments": 1312
},
"metadata": {}
}
ActivityPub
每個使用者在/@/username/inbox都有一個人收件夾,每個站點都有一個共享的收件夾位於/inbox。
如果可用,Plume 將使用共享收件夾來傳送活動。
項目表示
Note代表評論Article是文章Person是給使用者Group是給部落格
支持的活動
Plume 0.2.0 支持以下活動類型。
同意
同意關注請求
這收到時將被忽略,因為 Plume 認為跟隨請求是在任何情況下立即獲得批准,然而,這將在未來改變。
當收到 關注 活動,Plume 將對此做出回應。
actor是接受請求的使用者IDobject是Followobject being accepted.
宣布
轉發文章,不適用於其它對象。
讓使用者 (actor) 轉發文章 (object).
actor是轉發文章的使用者的IDobject是要轉發的文章的ID。
建立
建立一個新文章或評論
如果 object 是 Article:
object.attibutedTo是一個包含作者和部落格 ID 的清單 其中發表了這篇文章。 如果未指定部落格 ID,則文章將被拒絕。actor對應於點擊使用者的 “發布” 按鈕,並且通常應該是attributedTo中的作者之一。object.name是文章標題。object.content是包含文章HTML的字句內容object.creationDate是本文首次發表的日期object.source是一個Source目標, 其內容是 Markdown 來源本文object.tag是一個清單,它的元素如下- 一個
Hashtag目標,用於文章標籤(文章末尾顯示的全局標籤和文章本身的主題標籤此時兩者之間沒有區別)。 - 一個
Mention目標, 對此提到的每一位作者文章
- 一個
如果 object 是 Article:
object.content是呈現評論的 HTML 原始碼object.inReplyTo是支線上的一個評論 ID,或者如果沒有以前的評論,則評論發文。object.spoilerText是要顯示在評論位置的字句,除非讀者明確表達他們想要看到實際內容的意願(即 Mastodon 中的內容警告)object.tag是一個Mention清單,對應被提及的使用者。
刪除
刪除首先使用 Create 活動建立的目標。
object 是一個Tombstone,以及 object.id 是要刪除的對象的 ID(或者文章 ID 或註釋 ID)
關注
收到後,actor 將添加到目標的關注者列表中。
Plume 會立即接受這些活動(請參閱同意)。
對於部落格,除了發回 同意 之外,他們實際上不會做任何其他事情活動:關注部落格尚未實現。
actor是 Actor 或Person對象的 ID。 它代表新的追隨者object是目標使用者或部落格ID
讚
可以用來幫文章按讚
actor是喜歡文章的使用者IDobject是被點讚的文章ID
更新
更新文章
object是Article目標. 除了id之外,它沒有必填字段。 僅有的當前字段將被更新object.id是正在更新的文章IDobject.title是文章新標題。object.content是文章更新後的 HTML。object.subtitle是更新文章副標題。object.source是一個Source目標,它的content屬性是更新後的文章的 markdown。
復原
取消之前的操作(點讚、轉發或關注)。
object是Announce,Follow或Liketo undo.