EDCBのウェブ機能で番組表・録画予約

EpgTimer
© Sven Scheuermeier.

前回EDCBを設定してEpgTimerを使えるようにしたので少なくとも録画PCで番組表を見たり録画予約を行うことができるようになった。でも、いつも録画PCの近くに居るわけではないだろうから、録画PC以外でも録画PCで番組表を見たり録画予約したい(かも)。

EpgTimerのウェブ機能で番組表表示と録画予約を行う

これはLANでは手っ取り早いけどロケフリということなら少し手間。
EDCBのフォルダにあるEpgTimerSrv.iniをメモ帳やエディタで編集。

1
2
3
4
5
6
7
[SET]

中略

EnableHttpSrv=1
HttpPort=8000
[NO_SUSPEND]

[SET]セクション、つまり[SET] と [NO_SUSPEND]の間のどこかに EnableHttpSrv=1 と HttpPort=8000 の2行を追加する。8000の部分はLAN内でウェブサーバとして公開するポート番号なので他の使用中ポートと被らなければ好きな番号で。
また、[HTTP]セクションに番組表の見栄え関係の設定を書く。「EDCB EnableHttpSrv」のようなキーワードでググれば設定例が得られるのでそれを参考に。
設定項目名的に[HTTP]セクションのHttpCustEpgの値は1にしたいところだが、うちでは0にしておかないと番組表が表示されなくなるみたい。
HttpEpgPageColumnの値を大きくすると番組表の一画面に表示されるチャンネル数が増えるので横スクロールして一気に見ることができる。
この表示周りの設定はEpgTimerSrv.iniを上書き保存すれば有効になるのでその後にブラウザでページ再読込を行えばただちに反映される。EpgTimerSrvの再起動(またはサービスの再起動)は不要。

EDCBのWebUI1
EDCBが稼働しているPCのファイアウオールの設定でepgtimersrv.exeを許可しておかないとLAN内の他のPCからは閲覧・操作できない。
「スタートボタン」右クリック→「コントロールパネル」→「Windowsファイアウォール」→左上の「Windowsファイアウォールを介したアプリまたは機能を許可」。
右上の「設定の変更」を押す。
一覧にepgtimersrv.exeが表示されていないなら右下の「別のアプリの許可」を押してepgtimersrv.exeを追加。
epgtimersrv.exeの「プライベート」「パブリック」それぞれポリシーに応じて許可したいものにチェックを付ける。

表示方法

EDCBが稼働しているPCのブラウザであれば http://localhost:8000/
(EDCBが稼働しているPCのある)LAN内の端末のブラウザであれば http://EDCBが稼働しているPCのIPアドレス:8000/

EDCBのWebUI2
いきなりメニュー画面が表示される。

EDCBのWebUI3
番組表を表示した。EpgTimerSrv.iniの[HTTP]セクションを未変更だと真っ白。そして番組名しか表示されないので正直いまいち。

EDCBのWebUI4
番組を選択した画面。やっぱり見にくい。

EDCBのWebUI5
EpgTimerSrv.iniの[HTTP]セクションを編集したら一応番組表らしくはなった。(画像は縮小している)
でも、番組の説明は表示されないのでスッカスカ。

残念ながらEDCBのウェブ表示機能には認証も暗号化も無いのでそのままではインターネットに公開するわけにはいかない。
だから家のLANでは使えるけど出先からは番組表を見て録画予約できない。(VPN除く)
そこで、NginxやApacheなどのリバースプロキシを入れて認証を付け且つHTTPS化する。

Nginxの設定

 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
server {
    listen 80;
    listen [::]:80;
    server_name epg.example.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    listen [::]:443 ssl http2;
    server_name epg.example.com;

    ssl_certificate         /usr/local/etc/letsencrypt/live/epg.example.com/fullchain.pem;
    ssl_certificate_key     /usr/local/etc/letsencrypt/live/epg.example.com/privkey.pem;
    ssl_dhparam             /usr/local/etc/nginx/ssl/epg.example.com/dhparams.pem;
    ssl_protocols           TLSv1.2;
    ssl_ciphers             'ECDHE-RSA-AES128-GCM-SHA256';
    ssl_prefer_server_ciphers   on;

    access_log /var/log/epg.example.com_access.log;
    error_log  /var/log/peg.example.com_error.log notice;

    location / {
        auth_basic "Hoge Hoge";
        auth_basic_user_file /usr/local/etc/nginx/htpasswd;
        proxy_pass http://192.168.0.100:8000/;
    }
}

ポート80にアクセスして来たら443(HTTPS)にリダイレクトする。
SSLの証明書はLet's Encryptを利用。こういうのをやる人はモダンブラウザを使うだろうし不特定多数が使うわけではないからTLSは1.2だけ、暗号スイートはECDHE-RSA-AES128-GCM-SHA256決め打ちとする。(これで十分)
認証はBasic認証を使う。IDとパスワードは/usr/local/etc/nginx/htpasswdファイルとする。Nginxだと確かhtpasswdコマンドが使えないのでウェブの認証用パスワード作成ツールなどを使って生成したものを先の/usr/local/etc/nginx/htpasswdファイルに書き込む。
proxy_passはEDCBの動いているPCのIPアドレス(とポート番号)を指定する。上の例だと192.168.0.100:8000がそう。

これでhttps://epg.example.com/にアクセスすると認証画面が表示される。
認証が通るとメニュー。

ウェブによる番組表と録画予約はもう一つ投稿予定。

関連記事: