0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

curl のような wget のようなウェブクライアントの代替としてのStreamRelay.NET.exe

Last updated at Posted at 2018-05-16

-LocalInputUrlFile/-RemoteInputUrlFile/-LocalOutputUrlFile/-RemoteOutputUrlFile オプションを使う事で、入力源/出力源をネットワーク上の Webサーバなどにする事ができる


[Local|Remote][Input|Output]UrlFile オプション

ローカルと呼称されている側のストリームの入力源にしたい場合は、「-LocalInputURLFile [URL]」
リモートと呼称されている側のストリームの入力源にしたい場合は、「-RemoteInputFile [URL]」
ローカルと呼称されている側のストリームの出力源にしたい場合は、「-LocalOutputURLFile [URL]」
リモートと呼称されている側のストリームの出力源にしたい場合は、「-RemoteOutputFile [URL]」

を使えばよい。


アップロードの仕様

「-LocalOutputURLFile/-RemoteOutputFile」は、出力先をネットワーク上のサーバに指定できるのだが、StreamRelay.NET.exeの仕様上、ストリームを開けっ放しにする必要があり、ネットワーク上のサーバに対して、そういう事はどうなんだろう(とは思いつつhttp/ftpの既定は開けっ放しなんですけど)、、、という事で、データは一時的に溜め込んでから(バッファリング)、ストリームのCloseイベントで、書き出す(ネットワーク上のサーバにアップロード)ようにする事ができる

そのためのオプションが

  • tempFile
  • tempMem

である。


全体的なオプション

全体的に SSL/TLS に対応している(https/ftps/smtps)に対応しているので、以下のオプションは共通

  • CheckCert → サーバ側の証明書チェックを実施する
  • CertFile=クライアント証明書
  • CertPass=クライアント証明書のパスワード

http

System.Net.HttpWebRequest クラスを使っているだけ。

[URL] の書式は、

http[s]://user:pass@host:port/path?query#option&option...

という感じ

  • Upload(-[Local|Remote]OutputURLFile)は、WebDAV (のようなもの)が既定。
    • 既定のメソッドはPUT
    • ストリームデータはHTTPリクエスト・ボディ
    • 別途、header=translate:f を付けると完全にWebDAVになる
  • Download(-[Local|Remote]InputURLFile)は、普通の HTTPクライアント
    • 既定のメソッドはGET
    • POST=[ファイル名]で、POSTデータを送信する事も可能
    • ストリームデータはHTTPレスポンス・ボディ

以下はoption

  • header=name:value → HTTP ヘッダの名前と値を追加する
  • post=[postedFile] → ボディとなるファイル(ボディが必要なら、既定のメソッドはGET→POSTになる)
  • ProxyCredential=[user:pass] → Proxy の認証情報
  • Proxy=[host:port]
  • ProxyCredentialusedefaultCredential → Windowsの認証情報を転用する
  • UseDefaultCredential → Windowsの認証情報を転用する
  • UseDefaultProxy → Windowsのプロキシ設定を転用する
  • http10 → HTTP/1.0 を使う
  • http11 → HTTP/1.1 を使う
  • ContentType=[value] Content-Type 値を設定する
  • AutoRedirect System.Net.WebRequetオブジェクトのAutoRedirectの値をTrueにする
  • Method=[POST|GET|HEAD|OPTIONS|PUT|DELETE|TRACE] → HTTPメソッドを明示する(既定は「GET」だが、OutputURLFileの場合は「PUT」でボディがストリームデータとなる)
  • tempFile → アップロード時、一時ファイルをディスクに作成する
  • tempMem → アップロード時、一時ファイルを作成しない(メモリ[System.IO.MemoryStream]上に保持する)

WebDAVとしてアップロードする事も可能

例えば、

StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalInputFile a.txt -RemoteOutputURLFile http://user:pass@www.example.com/share/a.txt#header=translate:f

とすると、ローカルのa.txtをWebDAVサーバ http://www.example.com/share/ へアップロードする事ができる


ftp

System.Net.FtpWebRequest クラスを使っているだけ。

[URL] の書式は、

ftp[s]://user:pass@host:port/path#option&option...

という感じ

以下はoption

  • PASV → PASVモードで実施する
  • tempFile → アップロード時、一時ファイルをディスクに作成する
  • tempMem → アップロード時、一時ファイルを作成しない(メモリ[System.IO.MemoryStream]上に保持する)

mailto スキーム

System.Net.Mail.SmtpClient クラスを使っているだけ。

アップロード(LocalOutputFile/RemoteOutputFile)のみ

こちらの既定はバッファリング(サーバへの接続はデータが溜まってから)です。

データ(ストリームデータ)は、メール本文として送信されます。

[URL] の書式は、

mailto[s]:sendaddress?Option&Option...

という感じ

以下はoption

  • Server=[SmtpServerHost:port]
  • Subject=[Title]
  • fromAddress=[MailAddress]
    ここまでは必須

さらに

  • toAddress=[MailAddress]
  • ccAddress=[MailAddress]
  • bccAddress=[MailAddress]
  • Sender=[MailAddress]
  • ReplyTo=[MailAddress]
  • User=[SmtpAuthUser] → SMTP認証のユーザ名
  • Pass=[SmtpAuthPassword] → SMTP認証のパスワード
  • SSL → SMTPS を使う
  • DataCharset=[CharsetName] (default=Encoding.Default)
  • MailCharset=文字コード名 → 既定はiso-2022-jp
  • MailBodyCharset=文字コード名 → 既定はiso-2022-jp
  • MailSubjectCharset=文字コード名 → 既定はiso-2022-jp
  • NewStyle → UTF-8 の現代的スタイルで送信する

mailto スキームの制限


file スキーム

System.Net.FileWebRequest クラスを使っているだけ。

URL は
file:///ドライブ:/パス/ファイル名
な感じ。

ただ、絶対パスになるので、別途、-LocalOutputFile とか -RemoteOutputFile オプションに比べると、利点は特にない。


webGetter.jar

もっと高機能なものは別途、作った。↓

curl のような wget のような httping のようなウェブクライアント webGetter.jar


sendmail.net.exe

高機能かどうか分からんが、専用のコマンドを作った。

BlatJ.exeのようなsendmailのようなメール送信するCLIコマンド sendmail.net.exe


代理認証

SMTP認証を代替するStreamRelay.NET.exe


目次へ戻る

目次というか最初の一歩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?