LinebotAPIのためにPHPでざっくりforward proxy

LinebotでLet’s Encrypt使えると思ったら・・・

使えなくて通信こない・・・
せっかく作ったけど、インフラ考えるのめんどくさい。

SSL必要なのはわかるけれど、、、
何も考えたくない。。。と思ったのでぐぐると
HerokuでSSLが無料で使えるようだ・・・

LINE BOT をとりあえずタダで Heroku で動かす

とりあえずこの通りやったら、SSL経由でherokuにアクセスがくる。
(クレジットカードだけ登録しないとaddon追加できまてん)

API叩くだけだし、proxyっぽいことしたいねんけど、、、

無料でSSL通信できたけど、
何も考えずにリクエスト流したいって思ったので軽く調べると。。。

普段PHP書くのでPHPで調べたんですが、
目的のものが見つけれなくて
あってもcomposerの依存バージョンが古くて入らないとか
herokuのPHPmoduleバージョン云々がめんどくさいので、

とりあえずLINEBotの動作確認したいから雑にproxyさせてみた。
目的満たすだけなので、JSONで飛んでくるやつを目的にしてます。

cURLがオーバーヘッドも少なくて優秀なので
(今回そんな気にすることもないけれど)

require('../vendor/autoload.php');

// 本番ではちゃんとSSL通しましょう
$request_url            = 'フォワードさせたいURL(HTTPでもいい)';

// JSONデータはそのまま流す
$json_string            = file_get_contents('php://input');
$result_array           = json_decode($json_string, TRUE);

// くっついてるヘッダ情報もってくる(検証してない)
$headers = '';
foreach ($_SERVER as $name => $value)
{
    if (substr($name, 0, 5) == 'HTTP_')
    {
        $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
    }
} 

$curl                   = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER       , FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST       , FALSE);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT       , 30);
curl_setopt($curl, CURLOPT_TIMEOUT              , 30);
curl_setopt($curl, CURLOPT_RETURNTRANSFER       , 1);
curl_setopt($curl, CURLOPT_HTTPHEADER           , $headers);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION       , TRUE);
// 複数コネクションを貼りたい場合はこうする(いつも入れてるコードで今回は関係ない)
curl_setopt($curl, CURLOPT_FORBID_REUSE         , TRUE);
curl_setopt($curl, CURLOPT_FRESH_CONNECT        , TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST       , FALSE);

curl_setopt($curl, CURLOPT_POST                 , TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS           , $json_string);
curl_setopt($curl, CURLOPT_URL                  , $request_url);

$response_data          = curl_exec($curl);
$response_info          = curl_getinfo($curl);
curl_close($curl);

echo $response_data;

とりあえずこれでできた。
deployしてURLでforwardするだけ。

おうむ返しとかのプログラムはQiitaで拾えるので拾ってみましょう。

LINEのAPI自体はresponseみないので、
リクエストだけちゃんとしてれば大丈夫でした。

  • このエントリーをはてなブックマークに追加