テキストファイルはRemote Text Editorで開くことができます。Remote Text EditorはHTMLのプレビュー機能を持ちます。
サーバのセキュリティについて
AS Runner CGIを用いると,AppleScriptで行うことのできるすべての作業をインターネット経由でサーバに対して命令することができます。そのため,AS Runner CGIの利用にあたっては,Webサーバソフトウエアの側でRealmなどの機能を使用して,ゲストがCGIにアクセスできないようにするなどの対策を施すべきです。アクセス制限のかけ方についてはお手元のWebサーバの取り扱い説明書をご覧下さい。
危険なAppleScriptの例としては,システムを終了させるもの,ファイルを書き換えるものなどが考えられます。
AS Runner CGIは,コンパイル済みAppleScriptの配信を行うCGI機能は有効にしたまま,遠隔制御に関するCGIを無効にすることができます。パッケージに同梱される設定アシスタントのサーバモードを確認して下さい。
on returnName()
return \"Sample Plug-in\"
end returnName
on returnVer()
return 1.0
end returnVer
on returnInfo()
return \"Plug-in sample for AppleScript Runner CGI ver.1.6 or later.\"
end returnInfo
on returnCR()
return \"\"
end returnCR
property msg : false
on run http_search_args --http_search_argsまたはpost_argsのみが渡されます
if msg is false then --ユーザー側で実行される
display dialog msg
else --CGIで実行される
if http_search_args is me then
return "<FORM method=\"get\" action=\"<!--CGI item=File-->$sample\" enctype=\"text/plain;charset='Shift_JIS'\">
<INPUT NAME=\"request\" TYPE=Text>
<INPUT NAME=\"button\" TYPE=Submit VALUE=\"Get\">
</FORM>"
else
set AppleScript's text item delimiters to "&"
set http_search_args to text items of http_search_args
repeat with i in http_search_args
set AppleScript's text item delimiters to "="
if text item 1 of i is "request" then set msg to decodeURLStr(text item 2 of i)
end repeat
return me --自分自身をエージェントとして返します
end if
end if
end run
このCGIに出荷時から組み込まれているCGI機能のほとんどはプラグインで実現されており,プラグインを専用のCGI Plug-insフォルダから取り除くことで機能を制限することができます。ただし,付属のネットワークインストーラは不足している自動的にプラグインを補うようになっていますので,CGI Plug-insフォルダをカスタマイズする際にはネットワークインストーラの実行後にCGI Plug-insフォルダの内容を再確認して下さい。
プラグインは通常のコンパイル済みスクリプトの他,DataCompObjフォーマットのコンパイル済みスクリプトも使用できます。DataCompObjフォーマットのコンパイル済みスクリプトは AS Compilerによって作成することができます。プラグインのファイルタイプは任意です。
結果の表示および保存
実行したAppleScriptの結果は,できる限りテキストに変換されてHTMLとしてブラウザの画面に表示されます。しかし,スクリプトを実行した結果がレコードやスクリプトなどのテキストに変換できないデータの場合には Data Component Objectを用いてバイナリデータとして返されます。これを逆に利用して,テキスト(バイナリデータ)や整数などの任意のデータを再利用可能なバイナリデータとして受け取る方法があります。それは,
return {theResult:theResult}
などのように,結果をレコードで返すようにスクリプトを入力することです。これにより,「結果」は必ず Data Component Objectフォーマットで返されるようになります。MIMEタイプには application/data-component-object が指定されますので,ブラウザの機能を利用して保存したり指定したアプリケーションで開くことが可能です。保存したデータは Data Component Objectを利用してAppleScriptで開くことが可能です。結果としてスクリプトオブジェクトが返された場合,MIMEタイプとして application/x-AppleScriptというMIMEタイプで返されます。これをヘルパーの設定によりクライアント側のAS Runnerで実行されるようにしておくと,サーバとクライアントの間でAppleScriptによる連携を行うことができます。