2023-09-30 00:22:22 +09:00
gitlab ActivityPubのRust実装。
add: attachmentでもらった画像を保存する際に圧縮する様にしました fix: いろいろ
ないよ
cargo check
通過するのにEC2環境だと落ちるopenssl crate周りで落ちてたらOpenSSL 1.1.1系を要求されてる可能性がある。 Amazon Linux 2に入ってるOpenSSLは1.0.2系なので
sudo yum remove openssl-devel
sudo yum install openssl11 openssl11-devel
# これしないと古いビルドのopensslを参照し続ける
cargo clean
する。それでもダメそうなら
rpm -ql openssl11-devel | grep lib
rpm -ql openssl11-devel | grep include
# なんかそんな感じのフォルダを環境変数に突っ込む
export OPENSSL_LIB_DIR=/usr/lib64/
export OPENSSL_INCLUDE_DIR=/usr/include/openssl/
したらいけるんじゃないかな。お好みで環境変数の永続化等をする
ちゃんとトランザクションにcommit()してるか確認しろ(3敗)
証明書のchainがいい感じになってないと怒られる……っぽい? TLS周り詳しくないからよく知らなかった(アホ)んだけど、cert.pemでなくfullchain.pem使わんといかんっぽい。直したら動いた
Content-Type
をapplication/activity+json
にしないといけない。poemのJsonapplication/json
になるから自分でResponse組み立てる必要がある。
DBにpubkey/secretで置いてる実装が結構あっていいのかそれ……ってなってたけどhonkもそんな感じで組んでるしそれが普通なのかもしれない。一応table分けて設計変えやすいようにはしとこ……
F12押せ
{
"Host": ホスト名(相手のinboxの(n敗)),
"Date": 時間をhttp形式で,
"Digest": 後述,
"Content-Type": "application/activity+json",
"Signature": httpsig的な外部モジュールでよしなにする
}
16進数に変換してからbase64にかける。(なんで思いつかなかったんですか?)
普通にやってればミスらなさそう。普通にやらなかったので一日くらいかかったけど。
Mastodon側の気まぐれか分からないけどリクエストが飛ぶまでに時間かかる場合がある。こちらからフォローしたりしてサーバーが生きてることを示してあげると動き出すかもしれない
けっこー苦労した。
UNION ALLで二つのテーブル結合して~片方にない列はnullにして~ってやってたらTEXT型のカラムをDATETIMEと解釈してバグり散らかした。型強制null as "hoge?: String"
も仕事しなかった。最終的に型強制するsql文をselectの一番上に持っていったら解決した。存在しないカラムの型解決でバグるっぽいからとりあえずnull as
するときは順序も考えることにする
結論:いろいろクレート試したけどinferがよさそうだった。当初から使ってたtree_magic_miniはlibmagicに起因するwebpがapplication/octet-stream
に推論されるバグがあるっぽいので使用をやめた。inferはマジックナンバーから推定する(らしい)?し、わりと大半のファイル形式に対応してそうだったのでこっちを採用。正直ここにないやつはoctet-streamでも困らんやろの精神