忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[1]  [1134]  [1133]  [1132]  [1131]  [1130]  [1129]  [1128
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

前回に引き続いているのはちょっとわかりませんが、第6回の記事です。

今回はタイトルの通り、v2023.11.0にて実装されたプラグイン配布のやり方についてです。

Misskeyのインスタンスを建てた話。①(Misskey紹介編)
Misskeyのインスタンスを建てた話。②(GCPでの建ち上げ編)
Misskeyのインスタンスを建てた話。③(OCIでの建ち上げ編)
Misskeyのインスタンスを建てた話。④(Webhookで対話bot作成編)
Misskeyのインスタンスを建てた話。⑤(Meilisearch導入編)

Misskeyにはプラグインという機能があります。説明略。ここ読んでね

これまでプラグインの導入には設定のプラグインに直接プラグインを記述する必要があり、

なんともギークな手法でしか使うことができない機能だったのですが、

v2023.11.0のアップデートにてAPIによる配布ができるようになりました。


ということで、今回の記事はこの配布方法について紹介します。

公式にもこのようなページがあるのですが、情報が派手に不足しているので補足も兼ねて、というところです。


まず、プラグインを作ります。

とりあえず既存の作成方法と同じようにプラグインを作って動くかどうか確認しましょう。

今回はこんな感じでノート全文にブラーのMFMを追加するプラグインを作成します。
/// @ 0.16.0
### {
	name: "blur"
	author: "curonet"
	version: 1
	description: "ノート全文にblurをかけます。"
}
Plugin:register_post_form_action("blur" @(form, update) {
	let updated_text = ["$[blur ",form.text,"]"].join()
	update("text", updated_text)
})
正常に動作することを確認したら、これを配布できるようにします。

まず最初に改行コードをLFに変換して、ソース全文をSHA-512でハッシュ化します。

ハッシュ化はこちらのサイトを使うことで簡単に行うことができますね。

終わったらそのハッシュ値をメモ帳にでもコピーしておいてください。後で使います。



次にAPIサーバを作成します。

まぁ色々作る方法はありますが、一番簡単なのはやはりGASだと思います。

GoogleDriveを開いて新規にGASを作成します。


そして、開いたGASに下記を記入して保存します。
function doGet(e) {
  return ContentService.createTextOutput(JSON.stringify({'type': 'plugin','data': '<ソース>'))
    .setMimeType(ContentService.MimeType.JSON);
}
<ソース>の箇所にはプラグインのソース全文を記載します。

ソース中の ' はエスケープし、改行は\nに置換してください。
※置換の際はハッシュ化した際のソースと改行の数まで正確に完全一致させてください。

そしてこれをAPIとして新規にデプロイします。

デプロイ手順はGASの仕様がコロコロ変わるせいで、書いてもあまり意味がないので割愛しますが、

APIか、なければwebアプリケーションでのデプロイで動くと思います。


デプロイしたらURLが発行されると思うので、これをコピーします。
この際にブラウザにURLをコピーしてAPIを叩き、正常に結果が返ってきていることを確認しておきましょう。



そして下記リンクを穴埋めして完成です。
https://{HOST}/install-extentions?url={API_URL}&hash={HASH}
{HOST}       →プラグインをインストールするMisskeyのホスト名
{API_URL} →GASから発行されたURL
{HASH}       →生成したハッシュ値

これで、このリンクを踏むとプラグインのインストールページに遷移することができます。


また、下記のような画面になった場合はハッシュ化したソースとGASに書いたソースが異なっているので、

ハッシュの再生成を行うなどして対応してください。
正しいデータが取得できませんでした 提供されたデータの整合性の確認に失敗しました。セキュリティ上、インストールは続行できません。サイト管理者にお問い合わせください

セキュリティ(プラグインの改竄防止)のためにハッシュによる比較を行っているので、

改行だろうがスペースだろうが、データ上1点でも違いがあれば弾かれるようになっています。

変換間違いやスペースの誤削除に注意してください。
※公式にハッシュ化する範囲についての記載が一切なかったので詰まったのですが、範囲はソースのみです。jsonファイル全体ではありません。


以上がMisskeyのプラグインのAPI経由での配布についてでした。

因みにですが、URLのホストの部分はプラグイン利用者が任意に入れるようにするのが主流のようです。


これでMisskeyのプラグインの文化がより広がりそうですね。

Googleアカウントがあれば誰でも可能な方法ですので、是非お試しあれ。


(^・ω・)ノ RadiumProduction at curonet

Comments
※コメントは内容確認後に手動で公開するようにしております。反映までしばらくお待ちください。
Your Name
Title
color
Comment
 

カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新CM
[05/09 ONE RoboCuper]
[05/07 HDD ほしいよー]
[04/21 ブラック3辛]
[12/26 bols-blue]
[06/08 ONE RoboCuper]
かうんた
カウンター カウンター
らじぷろ目次
らじぷろ検索機
プロフィール
HN:
Luz
性別:
男性

PR

忍者ブログ 2007-2021,Powered by Radium-Luz-Lα+-Rescatar in RadiumProduction [PR]


Related Posts Plugin for WordPress, Blogger...