Armadilloフォーラム

system.cgiのソース

y_kudo_ncpl

2014年10月1日 11時43分

工藤@NCPLと申します。
お世話になります。

/home/www-data/admin/system.cgi
のソースはどこかにあるのでしょうか?
ちょっと探してみたのですが、探しどころ自体が良く分からず見つけられませんでした。
ご存知の方いらしたら教えてください。
よろしくお願い申し上げます。

コメント

中村です。

> /home/www-data/admin/system.cgi
> のソースはどこかにあるのでしょうか?

atmark-dist/user/at-cgiの下がそれだと思います。

> ちょっと探してみたのですが、探しどころ自体が良く分からず見つけられませんでした。

$ locate system.cgi
/<この部分は個人的なものなのでマスク>/atmark-dist/user/at-cgi/system.cgi

--
なかむら

ありがとうございます。
確認しました。

アットマークテクノ様の方で英語版用意なさっているとありがたいのですが(^^;

> 中村です。
>
> > /home/www-data/admin/system.cgi
> > のソースはどこかにあるのでしょうか?
>
> atmark-dist/user/at-cgiの下がそれだと思います。
>
> > ちょっと探してみたのですが、探しどころ自体が良く分からず見つけられませんでした。
>
> $ locate system.cgi
> /<この部分は個人的なものなのでマスク>/atmark-dist/user/at-cgi/system.cgi
>
> --
> なかむら
>

補足です。
 なぜソースを探しているかと言うと、
 どちらかと言うと仕向け先は海外が多いであろう装置にArmadillo440を積みます。
 そのFW更新他のメンテ手段をCGIで作り始めていたのですが
 改めて見てみたら良いのが既にあったので
 これを英語化してそのまま使えないか?と考えたためです。
 もしアットマークテクノ様のほうで英語版をお持ちで、それを配布していただけるならそれでもよいのですが。

> 工藤@NCPLと申します。
> お世話になります。
>
> /home/www-data/admin/system.cgi
> のソースはどこかにあるのでしょうか?
> ちょっと探してみたのですが、探しどころ自体が良く分からず見つけられませんでした。
> ご存知の方いらしたら教えてください。
> よろしくお願い申し上げます。

ついでにもう一つ、質問なのですが
Armadilloのsystem.cgiにアクセスしてFirmware からユーザーランドの更新を試みたのですが、
現状はこれは任意のサイト(例えばDropbox等で公開したファイル)からのダウンロードは
できるようになっていないという理解でよろしいでしょうか?
(Current firmware download locationのchangeのところでも、任意のサイトの設定は出来ないようですし)

すいません。質問を変えます。
system.cgiのFirmware更新でArmadilloと同じネットワーク上のPCのローカルファイルを指定することは出来るでしょうか?
同じネットワーク上のPC側にWebサーバ立ててそこにファイル置けば行けそうな感じはするのですが、
PC側は単にローカルファイルを指定すればよいようにしたいと思ってるのです。

やはりCGIをそれなりに作り直さないとだめなのかな。

大澤です。
> 任意のサイト(例えばDropbox等で公開したファイル)からのダウンロード
armadilloからアクセスできるhttpサーバーであれば、
Current firmware download locationのchange から任意のサイトのURLに変更できますよ。

ただし、Current firmware download locationで設定した階層に有るファイル名が
設定したパターンにマッチしないと "Get firmware option" を押しても候補を
選択できないようになっています。

参考までに、Armadillo-420だと下記のようになっているので、
ユーザーランドであれば romfs-a420- か romfs-a400- ではじまる
ファイルが無いと、候補すら表示されません。

[root@armadillo420-0 (ttymxc1) /etc/config]# cat at-admin
VERSION="1.0"
PRODUCT_NAME="Armadillo-420"
PRIMARY_IF="eth0"
FIRMWARE_URL="http://download.atmark-techno.com/armadillo-420/image/"
FIRMWARE_KERNEL_MATCH="linux-a420-, linux-a400-"
FIRMWARE_USERLAND_MATCH="romfs-a420-, romfs-a400-"

Armadilloの /etc/config/at-admin で指定しているファイル名のパターンを
運用に合ったものに書き換えてみてください。

余談ですが、 Current firmware download locationで変更できるサーバー
のURLも /etc/config/at-admin を読み書きしているだけなので、
量産する場合は、 Atmark Distのソースコード上の
/vendor/AtmarkTechno/Armadillo-440/etc/default/at-admin
(プロダクトディレクトリをコピーしている場合はArmadillo-440 を読み変えてください。)
を変えてしまえば、デフォルトの値を変更したイメージを作る事ができます。

>同じネットワーク上のPC側にWebサーバ立てて
ATDEであれば最初からでwebサーバーが起動しているので、
ATDEの /var/www 以下にファイルを配置する事で、同じネットワーク内の
Armadilloからat-cgiでイメージファイルを取得できます。

> PC側は単にローカルファイルを指定すればよいようにした
これは、http以外のプロトコルでArmadilloにイメージファイルを提供したいと
いうことでしょうか?

大澤様
 ありがとうございます。
 いくらか飲み込めてきました。

やりたいことは
 ・Armadillo(を搭載した装置)は外(Internet)にはつながってない
 ・装置を運用するネットワークにWebサーバがない
 環境で、PC側に特別な冶具(Webサーバ/FTPサーバ)を用意せずにイメージの更新その他のメンテをしたいということになります。

 実際の使い方としては、設置先のサービスマンに何らかの方法でイメージファイルを送り、
 メンテ用PCに置いたイメージファイルをArmadilloが取って(あるいはArmadilloに送って)
 更新掛けたいという感じです。

 実験的にはArmadilloへファイルをアップロードしてnetflashを実行する(だけの)HTMLとCGIを作って確認してるので
それでいけるかなとも思ってるのですが、
 せっかくいろんな機能が実装されてるsystem.cgiがあるのでそれが使えると何かと便利だなと言うところで触ってるところです。
 

中村です。

system.cgiのファームウェア取得先は、/etc/config/at-adminファイルの
記述を参照していたと思います。

system.cgiはファームウェア更新のときに外部プログラムとして
netflashコマンドを呼び出しています。(ソースをざっとみたところでは)
netflashはhttp以外にローカルファイルやftpなども扱うことができますが、
system.cgiから起動するときには、イメージファイルのURLが
"http://"で始まっているかどうかのチェックをしています(system.cgiの
ソースのsimple-cgi-app/simple-cgi-app-misc.cのcgi_is_valid_url())。
ですので、system.cgiを使ってファームウェアを更新するためには外部に
webサーバを用意してhttpでイメージファイルを公開するしかないです。

http以外の方法でファームウェアを取ってくるには、それなりに自分で
プログラム(cgiとか)を書かないとダメということになります。

以下は、system.cgiを使わずに独自に作る前提です。

パソコンのローカルファイルを・・・、とのことですが、パソコンがArmadilloに
対してどういう方法でそのファイルを公開するか?です。

パソコンでftpサーバを動かして、ftpでとってくるというような方法も
あるかとは思います。netflashはftp対応なようですので。
netflashに直接urlを渡すのではなくて事前に別プログラムで取ってくるなら、
tftpなんかでもできると思います。
webサーバよりは楽かもしれませんが、パソコン側でそれなりの用意を
しなければならないことに変わりはありません。

パソコン側に特別なソフトを入れないでファイルを公開するとなると、
Windowsのファイル共有でしょうね。
この場合は、ArmadilloにSAMBAクライアントを実装して、
パソコンの公開フォルダをマウントして、そこからとってくる(取って
こなくてもマウントしたパスをnetflashに与えればいい)ことになります。

タラタラとまとまりなく書いてしまいましたが、
ピント外れでしたら、ご容赦ください。

--
なかむら

中村様
 ありがとうございます。
 いくらか飲み込めてきました。
 
 やりたいことは大澤様宛ての返信に書かせていただいたのですが
 せっかく立派なsystem.cgiがあるのでこれを使えないかと思い色々と触ってみたというところです。
 
 system.cgiのソースを参考に検討してみます。

中村です。

「設置先のサービスマンに何らかの方法でイメージファイルを送り」というように
イメージファイルの受け渡しに人が介在していいのであれば、
USBメモリを使う方法はどうでしょうか?
人が簡単に近づけないよなところにArmadilloを設置すような場合は
この方法はダメですけど。

--
なかむら

ありがとうございます。
 ご指摘の通りUSBメモリも選択肢になりそうです。
(装置の構造上アクセスできないかな?と思って先程確認してきたら何とかアクセス出来そうでした。)
 検討してみます。

ありがとうございます。
 ご指摘の通りUSBメモリも選択肢になりそうです。
(装置の構造上アクセスできないかな?と思って先程確認してきたら何とかアクセス出来そうでした。)
 検討してみます。