みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker補助アプリケーション
アプリ名:ProcessMakerHL(プロセス メーカー エイチ エル) For Windows
というモノを作成しました。
BETAテスト中です。よろしければ、使ってやって下さい。(テストにご協力下さい。)
https://sites.google.com/site/processmakerhl/
簡易WEBサーバーです。
FileMakerのスクリプト「URLから挿入」を使用し、「cmd.exe」「powerShell」「PHP」「Node.je」などなどど実行し、戻り値の取得ができます。
また、他のPC、MacのFileMaker、iPhone、iPadのFileMaker Goから「ProcessMakerHL」が起動しているPCのFileMakerのスクリプトを実行することが出来ます。
Offline
いつも大変有意義なFMツールの開発・公開ありがとうございます。
早速、DLして動かしてみましたが、素晴らしいですネ。
・所でつまらない質問ですが、httppost:というサポート外のプロトコルが記された箇所があり、
アクセスに失敗するようですが、なにか意味があるのでしょうか?単にhttp:に直せば良いですか?
・それと、?と&のエスケープもしてあるURLと、してないURLとがあるようですが、その使い分けは?
Last edited by Hiro (2017-03-23 02:50:30)
Offline
さすが素晴らしいです。
ただ、サーバー上のexe叩き放題になるので、セキュリティ上は結構厳しいですね。
cmdやpowershellのように既知のターゲットに絞るか、
iniとかで許可するexeを指定させるかしないと、色々怒られそうです。
これ当然クライアントはFileMakerでなくても使えますが、
レスポンスコードは正しく返さないと、他の言語等からは使いにくそうです。
言語はC#でしょうか。
最近golangの巨大なexeばかり見ていたので、一瞬「12KiBでWebサーバ!?」となりました。
-
> ・所でつまらない質問ですが、httppost:というサポート外のプロトコルが記された箇所があり、
> アクセスに失敗するようですが、なにか意味があるのでしょうか?単にhttp:に直せば良いですか?
> ・それと、?と&のエスケープもしてあるURLと、してないURLとがあるようですが、その使い分けは?
横からです。httppostプロトコルはFileMakerからPOSTするための独自プロトコルで、ver.13から使えます。
エスケープはPowerShellに渡す箇所だけっぽく見えますが、確かにサーバー側でどうデコードされるのか分かりにくいです。
Offline
Hiroさん
早速ためしていただいてありがとうございます。
httppost:というサポート外のプロトコルが記された箇所があり...
FileMaker 13 から[URL から挿入] で利用できるプロトコルが追加されました。
[URL から挿入] は、http、https、httppost、httpspost、ftp、ftps、file プロトコルをサポートします。
http://www.filemaker.com/help/13/fmp/ja … tml#634666
?と&のエスケープもしてあるURLと、してないURLとがあるようですが、その使い分けは?
以下のような場合、
httppost://localhost:8081/?target=powershell
&Arguments=Start-Process 'fmp://$/ProcessMakerHL%3fscript=test%26$argu=テスト';
[Arguments]は、「Start-Process 'fmp://$/ProcessMakerHL%3fscript=test%26$argu=テスト';」コレを取得したいのですが、
コレだと、
httppost://localhost:8081/?target=powershell
&Arguments=Start-Process 'fmp://$/ProcessMakerHL?script=test&$argu=テスト';
[Arguments]が、「Start-Process 'fmp://$/ProcessMakerHL」こうなり正しく取得できないのです。
[Arguments]部分は、記述がややこしくなるので、BASE64での引数渡しも追加しようかと考えています。
Offline
ただ、サーバー上のexe叩き放題になるので、セキュリティ上は結構厳しいですね。
そうなんです。
「http://*:8081/」で実行した場合は、かなり危険なアプリになります。
今後は、APIトークン での認証を検討しています。(簡易認証になりますが(^^;))
言語はC#でしょうか。
C#です。
エスケープはPowerShellに渡す箇所だけっぽく見えますが、確かにサーバー側でどうデコードされるのか分かりにくいです。
できたてで公開したのですみません。(^^;)、BETA と言いながら、alpha版な感じです.....。
以下のような感じが、良いかな~と考えています。
URLから挿入[
"httppost://localhost:8081/?target=" & GetAsURLEncoded ( {target} ) & "&Arguments=" & GetAsURLEncoded ( {Arguments} )
]
レスポンスコードは正しく返さないと、他の言語等からは使いにくそうです。
「"text/plain;charset=utf-8"」現在固定です。今後も固定のままの可能性が.....。
各アプリからの標準出力の文字コードは、「&StandardOutputEncoding=UTF-8」で指定出来ます。
Offline
今後は、APIトークン での認証を検討しています。(簡易認証になりますが(^^;))
私はやや似たようなものをGoで書いてますが、大抵はWeb向けのブリッジとして使っていて、
実態はシングルバイナリのWeb APIみたいなものです。なのでWebのその先の漏洩とか負荷とかありえますが、そこ止まりです。
一方ProcessMakerHLはシェルへのブリッジなので、極端な話、試行錯誤してる間に指定ミスが原因で意図せぬファイル削除、とかもあり得るのが一番怖いです。
確かに無茶苦茶強力なんですけど、コマンド不慣れなFileMakerユーザーには、このガバガバっぷりは思わぬ事故を招きそうで…。
ブラックリスト式で操作を止めるのは大変でしょうし、かといってホワイトリストで絞ると魅力が。
トークン等で多少ハードル上げれば、全くシェルの分からないユーザーは減るかもしれませんが、慣れててもミスは有り得そうで。
FileMakerに手軽に外部の処理を渡せる良い仕組みなんですが、ほぼシェル直結というのがどうしても怖いです。
以下のような感じが、良いかな~と考えています。
URLから挿入[
"httppost://localhost:8081/?target=" & GetAsURLEncoded ( {target} ) & "&Arguments=" & GetAsURLEncoded ( {Arguments} )
]
この仕様なら楽で良いと思います。
「"text/plain;charset=utf-8"」現在固定です。今後も固定のままの可能性が.....。
各アプリからの標準出力の文字コードは、「&StandardOutputEncoding=UTF-8」で指定出来ます。
言葉足らずでした。MIMEやレスポンスコードはエンコーディングでなく、HTTPのステータスコードの方です。
現状常に200で返しているようなので、細かいのはともかく、500,400,300番代だけでも切り分けられれば、
アプリケーション側でデバッグやリトライが可能なので。
Offline
やはり、セキュリティーが気になりますよね.....。
>HTTPのステータスコードの方です。
あ~!こちらこそ知識不足で申し訳ないです。
おっしゃる通り「200」固定です。HTTPのステータスコードについては、ほぼ気にしてなくて「200」を返しとけばイイか! 程度に思ってました。
FileMakerでヘッダー情報取れないし.....。(^^;)
HTTPステータスコードは、今後調べてみます。
Offline
セキュリティーの問題が気になるので、サーバー部分を書き換え、管理者権限なしの起動でも外部から接続できるようにしました。
更に気になっていたVisualStudio For Macのお試しも兼ねて、Macで起動してみるとコードの書き換えは、一切なしでMac OS Xで動作しました。!!
中々強力なアプリになりそうです。
まあ、MacのFileMakerの場合は、AppleScriptを使えば戻り値を取得できますが、Winと共用のコードでより簡単にシェルを叩けます。
最新版は、近日公開します。
説明動画では、Bash、Mac版PowerShell、Node.js を実行しています。
また、IPhoneのFileMaker GoからMac のFileMakerのスクリプトを実行しています。
https://youtu.be/ne9E6gT1i2E
Offline
> 管理者権限なしの起動でも外部から接続できるようにしました。
これはむしろ、事故防止に権限落として起動した方が良い、って感じでしょうか。
-
HTTPのステータスコードの件は、仰るようにFileMakerは全部切り捨てるとこなんで、
さらに追加で外部ツールと連携する際は必要、ぐらいの感じです。
それにしてもMono、CUIとはいえ一切書き換え無しですか。
FMClipboardEditもC#だし、手入れして移植してみようかな。
Offline
>> 管理者権限なしの起動でも外部から接続できるようにしました。
>これはむしろ、事故防止に権限落として起動した方が良い、って感じでしょうか
そうですね。外部からの接続の時にやりたい放題だと、あまりにも危険かと。
管理者権限で使用したいときは、管理者権限で起動すればOKです。
>それにしてもMono、CUIとはいえ一切書き換え無しですか。
そうなんですよ。結構なオドロキきです。
アプリ名を変更したため、新しいトピックをたてました。
FileMaker補助アプリケーション|ProcessMakerTL / 初心者のFileMaker pro Q&A
https://fm-aid.com/bbs2/viewtopic.php?id=6178
Offline
Pages: 1
[ Generated in 0.023 seconds, 9 queries executed - Memory usage: 552.11 KiB (Peak: 573.02 KiB) ]