Armadilloフォーラム

system.cgiのソース

y_kudo_ncpl

2014年10月1日 11時43分

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

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

コメント

y.nakamura

2014年10月1日 12時04分

中村です。

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

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

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

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

--
なかむら

y_kudo_ncpl

2014年10月1日 13時09分

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

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

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

y_kudo_ncpl

2014年10月1日 12時16分

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

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

y_kudo_ncpl

2014年10月1日 14時17分

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

y_kudo_ncpl

2014年10月1日 14時43分

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

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

at_ohsawa

2014年10月1日 15時33分

大澤です。
> 任意のサイト(例えば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にイメージファイルを提供したいと
いうことでしょうか?

y_kudo_ncpl

2014年10月1日 16時11分

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

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

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

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

y.nakamura

2014年10月1日 15時38分

中村です。

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に与えればいい)ことになります。

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

--
なかむら

y_kudo_ncpl

2014年10月1日 16時19分

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

y.nakamura

2014年10月1日 16時51分

中村です。

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

--
なかむら

y_kudo_ncpl

2014年10月1日 17時48分

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

y_kudo_ncpl

2014年10月1日 17時48分

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