QNAP の FileStation を HTTP API で使う ことはじめ
• 目的 •
QNAP の FileStaion へ HTTP API 経由でアクセスする。

• QNAP とは •
本筋とは異なるのでざっくりと、、
Fog Computing なマシン。 Fog とは 霧。
クラウドの機能を手元に持ってきて使いやすくしたもの。
クラウドの機能を使って実現したいけど、機密情報が、、個人情報が、、データ容量代が高い、、 そういった場合の救世主。
ブラウザ上のGUIボタン操作で、ぽちぽちと、、VM できる。Docker も使える。VPNも使える。リモートワークに便利。Node-RED サーバーをQNAP上にたてて、VPNで繋がりあって圧倒的なスピードでの共同開発など、いつもお世話になってます。

• 前提条件 •
( QNAP QTS File Station API v4.1 )
まず、QNAP (サーバー側) で API アクセスを許可する設定をしなくてOKか?
デフォルト設定では API アクセス許可している模様。
ただし、セキュリティID - sid を取得 しなければ HTTP API で FileStation へアクセスできない。
○ アクセストークンを取得するには?
1. GUI で QTS へログインしているユーザーで API アクセス権限がある設定ならば、そのユーザーで セキュリティID - sid を取得できる。取得するには、まず、そのユーザーのパスワードをエンコードし、その文字列を取得する。
javaScript 動作環境なら、簡単にエンコードできる。( 例: nodejs )
成功すれば、"authPassed": 1 を含む以下、リターンがくる。
{
"status": 1,
"sid": "ここに目的となるsid文字列がくる",
"servername": "TVS-682など 型番 ",
"username": " ログインユーザー名 ",
"admingroup": *,
"supportACL": 1,
"enableACL": 0,
"dateFormat": 1,
"timeFormat": 24,
"genericModel": 0,
"2sv_type": 0,
"need_2sv": 0,
"send_mail_status": 0,
"authSid": "ここに目的となるsid文字列がくる",
"lost_phone": 0,
"emergency_try_count": *****,
"emergency_try_limit": 5,
"security_question_no": *,
"security_question_text": "***",
"cuid": "********************************",
"authPassed": 1,
"version": "5.1.0",
"build": "20180830"
}
以上より、QNAP FileStation の HTTP API 利用が開始できる。
( QNAP Virtualization Station 内の VM からは 取得できなかった。仮想のゲストから仮想ホストの重要なデータにアクセスできないようになっている可能性あり。 )
お試しに ・・・

以下 GETリクエスト で QNAP の Multimedia フォルダ のリストを取得できた。
• Get Folder List メソッド •
GET http://IPアドレス:8080/cgi-bin/filemanager/utilRequest.cgi?func=get_tree&sid=先ほど取得したsid&node=Multimedia
[
{
"id": "Multimedia/@Recently-Snapshot",
"cls": "7",
"text": "@Recently-Snapshot",
"no_setup": 0,
"draggable": 1,
"iconCls": "folder",
"max_item_limit": ***,
"real_total": 2
},
{
"id": "Multimedia/@Recycle",
"cls": "7",
"text": "@Recycle",
"no_setup": 0,
"draggable": 1,
"iconCls": "folder",
"max_item_limit": ***,
"real_total": 2
}
],