work.log

元エンジニアの備忘録的ブログ

PerlのXMLRPC::Transport::HTTPを使ってPingサーバを建てる

投稿:2014-07-07 23:05  更新:

Perl で Ping サーバを建てるメモです。

ブログ等の更新通知に Ping サーバを設定している人は多いと思いますが、サーバを建てる人ってあまりいないと思います。

とりあえず、WordPress から更新通知を受け取りたいので Ping サーバを書いてみました。

コードのひな形はこれ!

#!/usr/bin/perl
 
use strict;
use warnings;
use XMLRPC::Transport::HTTP;
 
    XMLRPC::Transport::HTTP::CGI->dispatch_to('weblogUpdates')->handle;
    package weblogUpdates;
 
sub ping {
    my ($self, $name, $url) = @_;

=put
ここに何か処理
=cut

    return { flerror => XMLRPC::Data->type('boolean', 0),
             message => "Thanks for the ping" };
}

exit;

XMLRPC::Transport::HTTP を使うととても簡単。

この CGI を WordPress の Ping リストに追加して適当に記事を更新するとこんな XML が飛んできます。

<?xml version="1.0"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param><value><string>work.log</string></value></param>
<param><value><string>https://worklog.be/</string></value></param>
</params>
</methodCall>

package weblogUpdates; にクラス名を書いて、sub ping のようにメソッドを書いて使うんだとか何とか。

ping の仕様は決まってるので最低限これだけ書いとけば Ping サーバとしては機能するはず。

しかし、Ping ってもう少し情報を送ってるかと思ったら全然大した事してないんですね。