API

ZabbixでJWT/トークンを用いたAPIサーバーの監視を行う

ZabbixのWebシナリオ、Web監視の機能でトークンを使ったAPIサーバーの監視方法を 覚書として。 runscopeとかSaaSはあるものの月1万円近くかかるので 大した規模でないAPIサーバーならZabbixでオススメしたい。   トークンを取得するのにユーザー認証が必要なので変数に登録しておく。     Response bodyにトークンが入っているので変数の部分で正規表現をして変数にぶち込む。 regex:の後ろが正規表現が使えるようになる。 この画像の例だと [crayon-5b4efd8758a93510330229/] がボディに入っていて、 {token}にはexasllSKJasKBA_-a.asdaZZZokが入ってくる。 ここで使える正規表現はPOSIX     最初のステップで変数に入れたtokenという変数はここでも使える。 SaaSも良いけど、小規模でいいならZabbixも便利ですよ。 Zabbix嫌いな人多すぎる。

【PHP】LINE Messaging APIで田村ゆかりさんの公式サイト更新通知BOTを作りなおした #yukarin

従来のLINE BOT APIが廃止予定ということで 新たに発表されたLINE Messaging APIに移行しました。   作ったものはこんな感じ普通です。 LINE Messaging API は管理画面から背景色とかアカウント設定できる項目はめっちゃ増えてて LINE BOT APIよりは個性的なものが作れそう(^o^) 田村ゆかりさんに興味がある人、待ってます\(^o^)/     LINE Messaging API 誰でも手軽に叩けるAPIです。 BOTも作成できるし、管理画面も用意されてて分かりやすい。 無料で作成するBOTはユーザーの発言に対しての返信はできる(REPLY_MESSAGE) が BOTから直接メッセージを送信(PUSH_MESSAGE)するのは月2万ぐらいかかる。 しかし友達登録上限50人という制限付きBOTでは REPLY_MESSAGE & PUSH_MESSAGE どちらも使える。 従来のLINE BOT APIと変わったことはそんなことなくて 移行難易度はそんなに高くないと思います。   Webhookの設定 今回実装にあたって少しだけハマったところは Webhookの設定で、CloudflareのSSL機能を使ったサーバーを指定すると Webhookが飛んでこないという仕様だった。 LINE BOT APIでは使えたんですけどね、いずれか使えるようにはなりそう。 ちなみにLet’s Encryptでは可能です。     実装 今回もPHPです。 特に理由はありません。楽だからです。   callback [crayon-5b4efd8758dfc655178277/] [crayon-5b4efd8758e08083743128/]   LINEからのアクセスかどうかは従来のLINE BOT APIと同じで [crayon-5b4efd8758e0d600872005/] こんな感じで署名の確認ができる。     Push(BOTからユーザーへメッセージ送信) [crayon-5b4efd8758e10855802402/] [crayon-5b4efd8758e15666121503/] LINEにリクエストを投げるときはCHANNEL_ACCESS_TOKENをヘッダーに載せるだけ。 LINE DeveloperからサーバーのIPをホワイトリストに登録する必要はあります。 今回の話に関係はないですけどGoutte便利だし何より速い。   メッセージを送信する関数は [crayon-5b4efd8758e18295061742/] 特筆することなし!     戯言 Webhookに関してはイベント内容がJSON見れば一発で分かるようになったので楽でした。 LINE BOT APIでは type 1 が友達追加時で~ type3 がユーザーからのメッセージとかで 分かりにくかった。 あとはドキュメントも日本語が用意されて、各言語のSDKも用意されているので 比較的容易に移行(作成)できました。 ソースコードはこちら rluisr/yukari-line-botA – github

LINE Messaging APIのWebhookにCloudflareのSSLを使ってるサーバーを指定すると機能しなくなる

LINE BOT APIがもうすぐ、新たに「LINE Messaging API」というのになるらしく 従来のLINE BOT APIは無くなるらしいです。 結論だけ言うと CloudflareのSSL機能を使ってるサーバーだとWebhook時のリクエスが飛んできません 理由は分かりませんがとりあえず Let’s Encrypt 使いました。

no image

LINE BOT API 実は友達追加時にもCallbackされてた & 署名確認をしよう。

前回こんな記事を書きました。 田村ゆかりさん公式サイトの通知を LINE BOT API で作ってみた。 #yukarin この記事では友達追加をしてもらった際にメッセージを送ってもらって mid(ユーザーID)を保存するという処理だったのですが、友人が 「友達追加時にもCallbackされるからメッセージ送らなくてもmid保存できるよ」と教えてもらいました。   試しに中身を覗いてみた [crayon-5b4efd87590f3950514969/] 注目するのは “opType”: 4 です。 友達追加時は 4 ブロック時は 8 が返ってきます。 LINE Developers にも記載されてました…。   友達追加時に、midを保存。 ブロック時にmidを削除といったことが可能ですね。 ということでPHPで友達追加時に相手のmidを保存するコードは以下に。 [crayon-5b4efd8759100911272668/] この一々保存するの面倒なので一斉送信できるAPIを公開してくだしゃい   ふとコードを書き直してる時にセキュリティやばくね?ってなって思ってた時に署名とかこないの?って思ったら署名乗ってくるみたいですね…。 Qiitaとか9割方、署名確認してないです。   LINEからのアクセスか検証する LINEからのアクセスの場合、ヘッダーに X-LINE-CHANNELSIGNATURE があり これをbase64デコードしたもの + LINEきたらjsonの内容を LINE BUSINESS CENTER で確認できる ChannelSecret をキーとしたHMAC方式SHA256アルゴリズムのハッシュ値が 合致すればOKということです。 [crayon-5b4efd8759104318348611/]   ちなみに nginx だとPHPの getallheaders 関数が使えないので [crayon-5b4efd8759107429889892/] よく見るこんなのを使います。

田村ゆかりさん公式サイトの通知を LINE BOT API で作ってみた。 #yukarin

LINE BOT が先着1万人に配られるということで乗ってみた。 今日も相変わらずPHP 今回は 田村ゆかりさんの公式サイトが更新される度にLINE BOT APIを通して通知するといったものを作った。   登録の仕方 左記QRコードで友達追加をして、1度メッセージを送信すると登録が完了になります。 なんで1度メッセージを送信する必要性があるのかは後で説明しまうす。     雑書 [crayon-5b4efd8759291649479407/] LINE BOT APIの登録の仕方はQiitaの方が詳しく説明されてるので割愛します。 このファイルは最初の登録のときにしか使いません。 何でだか知らないけど登録者全員にメッセージを送るAPIもないし、登録者全員のID(mid)を取得するAPIも今のところないので 1度メッセージを送ってもらって、ファイルに保存するといった方法を取りました。他にいい方法あったら教えて下さい…。   [crayon-5b4efd875929a812727429/] 本当は1つのファイルに纏めたくて、引数有無で条件分岐してたけど不格好になっちゃうし見栄えが悪かったので別々にしました。 midがまとめられたファイルを配列に入れてforeachで回してますが、 「mid,mid,mid」みたいな感じで一斉送信できるらしいです。 で、でも改行を”,”で置換して文末の”,”を削除して~って流れよりforeachの方が楽な気がします。最初から「mid,mid,mid」みたいな感じで保存すればいいだけなんですけどね。 更新されると以下のようなメッセージが届きます。   新しくAPIが追加されることを願います。 ちなみにスクレイピングに関しては運営に承認済みです^ー^

Zabbix 3.0rc1 を使ってAPIを試してみたゾ!

Zabbix 3.0rc1 がちょっと前にリリースされた。 個人でもバイト先でも使ってるのでちょっとかじっとこうと思った。 新機能 です! といっても色々と2.4からの変更は大きいです。 Webインターフェイスの自動アップデートなんかもあったりします。 APIはもちろん、予測機能とかいった意味分からないのもあります。 軽く使ってみた。     Zabbix のダウンロードページ見たら色んなのがあった。 今回はProxmoxに入れるのでqcowを選んだ。   これがデフォルトのBlueテーマ UIがだいぶ良い意味で変わってます。 項目とかが変わったわけではないので2.4からでも困ることはなさそう。   もう1つはBlackテーマ 色の使い方がとてもしゅき♡   軽くAPIも触ってみた [crayon-5b4efd8759417561866383/] [crayon-5b4efd8759428945833732/] リクエスト先が “http://hogepi/zabbix/api_jsonrpc.php” これでPOSTするとauthkeyが返ってくるのでこれを使って色々するらしい。   [crayon-5b4efd875942b595002239/] [crayon-5b4efd875942d629824724/] 監視対象のホスト名とIPが返ってくる。 APIを使えば何か便利なことができるんだろうか…。何も思いつかない…。 とここまで書いててあれなんですけど、APIって Zabbix 2.x からできたんだな…。 恥ずかしい…。新機能だと思ってた…。

PHPでwhoisをJSONで返すAPI「whoisAPI」を作った

暑い なんで作ったかというとgithubに慣れるためなんて言えない。 whois API って地味に提供してるサービスはあるのですがフリーだと500reqまでだとか使い勝手が悪かった。   使い方 サーバードキュメントルートに設置してくれればいいです。 [bash] whoisAPI ├── api.php ├── count.txt └── get.php [/bash]   受け取り側はPOSTなので投げるときもPOSTでお願いします。 [crayon-5b4efd8759563934660356/]   こんな感じにJSONで返ってきます。 [crayon-5b4efd875956f425259104/] 投げたIP、descr、国名、IPの範囲が返ってきます。 リクエスト先は http://xzy.pw/whoisAPI/api.php githubにも置いておきます whoisAPI