EpgTimerWeb2で番組表・録画予約

EpgDataCap_Bon
© Pablo Garcia Saldaña.

昨日の記事のEDCB標準のウェブ機能を使うのは正直いろいろ面倒。ウェブサーバなんか動かしてないという人もいるだろうし、リバースプロキシ何それ?な人も。
そこで、もう少し簡単で見栄えもそれなりのEpgTimerWeb2を入れる。(他にもある筈だけど、とりあえずこれ。)

GitHubで目につくところにあるのはVisualStudio用のプロジェクトのソースで、VisualStudioなんか使ってないわという人は困る。でも、「リリース」ですぐに使えるファイルが貰えるようになっている。(日付.zipの名前のファイル)

インストール

ZIPファイルを展開して任意の場所に置く。EDCBのフォルダに入れる必要はない。と、いうかEDCBが稼働しているPCである必要もない。
展開したEpgTimerWeb2のフォルダの中のEpgTimerWeb2.exeを実行する。
コマンドプロンプトが開いて以下のような表示になる。(PINコードは桁数と数値がランダム)

Usage: EpgTimerWeb2.EXE [-cfg=EpgTimerWeb2.xml|-no-gzip]
設定ファイルがありません
Webサーバ起動中...
Webサーバ起動完了
初期設定を行います。
のURLに接続してください。http://localhost:8080
PINコード: 1234567890

この画面を残したままブラウザを開き、URL入力欄に http://localhost:8080 を入力。

EpgTimerWeb2 1
EpgTimerWeb2をEDCBと同じPCで動かすならEpgTimer Serverは初期値の127.0.0.1から変更しない。違うPCで実行するならEDCBが動いているPCのIPアドレスを指定。
EpgTimer ServerPortの値はEDCBのEpgTimerの「設定」「動作環境」「その他」の「ネットワーク接続を許可する」とその右隣の「ポート」の設定に合わせる。初期値はポート4510。
EpgTimer CallbackPortは基本的には初期値の4521から変更不要な筈。
WUI Usernameはウェブ用ログインID、任意の文字列を入力。
WUI Passwordはウェブ用ログインパスワード、任意の文字列を入力。使い回しではなくユニーク値で。
WUI PortはEpgTimerWeb2のウェブが使用するポート。初期値は8080で既にこの画面が表示できているなら8080から変更する必要はない筈だが、どうしても変更したいなら任意の数値で。ただし、netstat -anで状態(State)がLISTENINGになっているポートは避ける。
最後のPincodeには先のコマンドプロンプトの画面に表示されている「PINコード」の値を入力。
[Update config]を押す。

EpgTimerWeb2 2
ファイアウォールの設定変更を促す画面が表示される。
上の画像では「プライベート ネットワーク」(LAN)側にだけチェックを付けているが、出先(インターネット)からもアクセスする予定なら「パブリック ネットワーク」にもチェックを付ける。
[アクセスを許可する]を押す。
インストール完了。

PC起動時にEpgTimerWeb2.exeが実行されるようにタスクを追加するか、ショートカットを作って「スタートアップ」に入れるなどしておくのも忘れずに。

インターネットからも利用するならルーター或いはファイアウォールの設定も触る。家庭用ブロードバンドルーターなら「ポート開放」(ポートフォワーディング)辺りの項目かな。

EpgTimerWeb2ログイン

EpgTimerWeb2が稼働しているPCのブラウザなら http://localhost:8080 それ以外の端末のブラウザならhttp://(EpgTimerWeb2のPCのIPアドレス):8080

EpgTimerWeb2 3
ログイン画面が表示される。先の設定で指定したログインIDとパスワードを入力して「ログイン」ボタン。

EpgTimerWeb2 4
EpgTimerWeb2がEDCBと通信できていれば上の画像のような画面が表示される筈。前回のEDCB標準WebUIと違ってこちらは見栄えもまぁまぁ。
そして、こちらは最初から「地デジ」「BS」「CS」の全チャンネルが一画面に並ぶので右スクロールで全て見ることができる。チャンネル数が多いとそれが嫌な人もいるかもだけど。

EpgTimerWeb2 5
番組表の番組名をクリックするとこんなの(番組情報タブ選択)。

EpgTimerWeb2 6
録画予約一覧を見たところ。至極常識的。

EpgTimerWeb2 7
リアルタイムな更新を目指して作られただけあって、通知ログもリアルタイムで更新される。
上の画像は既に始まっている番組を録画予約したもの。予約と同時に録画が始まった(ことになっている)。

見た目はいい感じ。一応レスポンシブ対応、スマホの狭い縦画面だと一部表示が重なるのが惜しい(実質問題なし)。
最初から認証機能付きなのでそのままインターネット側に出すこともできる。ただし暗号化無しに目を瞑ればだけど。
WebSocket使っていてちょっといやらしい仕組みになっているのでこれにHTTPSのリバースプロキシを咬ますのは面倒、あるいは無理かも。(ログイン画面までは簡単だけどその後が・・)

関連記事:

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/にアクセスすると認証画面が表示される。
認証が通るとメニュー。

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

関連記事:

Up