GithubHelp home page GithubHelp logo

ffftp / ffftp Goto Github PK

View Code? Open in Web Editor NEW
529.0 32.0 41.0 106.48 MB

FTPクライアントソフトウェアです。

License: BSD 2-Clause "Simplified" License

C 10.06% C++ 78.68% HTML 11.26%
cpp windows ftp

ffftp's People

Contributors

eltociear avatar itn3000 avatar kawasumi2019 avatar kurukuru-shisa avatar sayurin avatar skawamoto0 avatar umorigu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffftp's Issues

ANSIとUTF-8を比較している

ffftp/ras.cpp

Line 236 in cc99cc3

if (_mbscmp((const unsigned char*)RasConn[i].szEntryName, (const unsigned char*)Name) == 0) {

左側はRAS API ANSIバージョンが返したもの、右側は内部データなのでUTF-8化されている。

FTP側のファイル・フォルダが真っ白で出てこない

version3.3です。ホストの設定の暗号化タブで「FTPS(Explicit)で接続」にチェックが入っているとFTP側のファイルが真っ白になります。「暗号化なしで・・・」にチェックを入れると表示される。version3.2では問題なく表示されていた。

不正な証明書に対して警告が頻繁に表示される

#9 により、不正な証明書に対して警告が表示されるようになったが、警告を抑止するオプションが提供されていないので、アプリケーションを起動し直す度に警告される。

  • 起動中は一度許可すれば次からは警告されないので現状維持でよい。
  • 保護されていないのであれば暗号化する意味はないので、利用者は不正な証明書を使用するサイトに対しftps接続せず、ftp接続すればよい。その場合は警告されることもなくなる。
  • 設定項目の「暗号化なしで接続を許可」を「保護されていない接続を許可」に意味を変更する。この設定が有効な場合は不正な証明書に対して警告しない。

等の案があります。

Windows XP対応の再考

Visual C++ 2019からWindows XP向けコード生成が削除される。具体的には

  • Visual Studio 2015: Visual C++ 2015 + Windows SDK 7でのサポート
  • Visual Studio 2017: Visual C++ 2017 + Windows SDK 7でのサポート
  • Visual Studio 2019: Visual C++ 2015 + Windows SDK 7でのサポート

と退化する。このため、Visual C++ 2017向けに書かれたコードがVisual C++ 2015ではコンパイルが通らない。Visual Studio 2019へ移行する場合は自動的にWindows XPサポートを外す必要がある。

OpenSSL 1.1.1の対応予定について

OpenSSL 1.1.0 から 1.1.1へのアップデート予定や、
TLS1.3やSHA512などの追加サポート予定はありますか?

また少しなにかお手伝い出来れば、させて頂きたいのですが…。

IPv6対応の改善

IPv6対応としてSOCKETを扱う関数が~IPv4~IPv6と2バージョン用意されておりコードが冗長になっている。
SOCKETを適切に扱うことでこれらの関数を共通化させ、コード分岐を最小限に抑える。
なおDual-Stack SocketsはVista以降なので32bit版には使えず導入しない。64bit版のみ導入する可能性も微レ存。

ファイル名の半角カナから全角カナへの変換機能が動作していない

https://github.com/sayurin/ffftp/blob/987378aaeabd0f55183bc20a1c6b6aa2158b359d/remote.cpp#L1426

この辺り。

ファイルアップロード時、従来はConvSJIStoJIS内で半角カナから全角カナへ変換していた。
内部UTF-8化に伴い、ConvUTF8NtoSJISで半角カナから全角カナへ変換を行い、ConvSJIStoJISでは変換しない実装へ変更された。ところがここで導入されたConvUTF8NtoSJISには半角カナから全角カナへの変換機能が実装されていなかった。結果として、半角カナから全角カナへの変換は行われなくなってしまった。

なお、ファイルダウンロード時、ファイル名変換は行っていない。

COMをC++ interfaceに移行する

従来、C言語だったためにCOMはC interface #define CINTERFACE を使用していた。C++言語に移行したため、継承を用いたC++ interfaceに移行可能となっている。
WRL; Windows Runtime C++ Template Libraryを使用すると簡単に記述できるが、Windows 8 SDK以降が要求されるため、Windows XP向けにビルドできなくなる。
必要な部分だけ移植するか?

ミラーリングダウンロード中の不具合

まれなケースとは思いますが報告です。
複数人数で一つのサーバーにアクセスするケースです。

一人がミラーリングダウンロードのリストを取り、ダウンロードを始めました。数百のファイルがリストアップされたのでダウンロードにも時間もかかります。そして、その間に、別のユーザーがそのリスト中のあるファイルをダウンロード前に削除してしまいました。

すると、ミラーリングダウンロードしているFFFTPは、そのファイルを何度もダウンロードしようと試みるようです。特に最大限の接続数4で使っていて、そのどれもがその既に存在していないファイルを削除しようとしており、中止ボタンを押してもどうすることもできませんでした。ダウンロードウィンドウが一瞬消えてもすぐにまた復活して来るみたいな。で、常に4つ開いたままになる感じ。

リストアップされたファイルが実際に無いというケースは想定外かもしれませんが、現実には起きうる(というかすでに2回起きた)ことなので対処していただけるとありがたいです。リストアップされたからといって、ダウンロード時にそのファイルが存在している保証はないということですね。

あと、本体の受信中止ボタンを押してもうまくいかなかったり、反応無しになってしまって、強制終了するしかなくなったこともありました。関連性は分かりませんが、何となくですが、数の多さが関係しているような気もします。(←この件は明確にどういうふうだったか記憶がないのでスレッドは立てていません。もしかしたら上記の件と関連性がある(ファイル数が多い)かもと思って念のために書いておきました)

ftpライブラリの分離

ftpライブラリの分離
グローバル変数でガッツリ相互依存しているので、解きほぐす。

キャッシュ機能の削除

ディレクトリのリストは一旦ファイルに書き出されていて、それを再度読み直す実装になっている。当該ファイルを残しておく機能としてキャッシュ機能が実装されている。
しかし、FTPにおいてキャッシュ可否をサーバーが返すわけではないため、ランダムで古いデータを参照してしまうだけである。
それよりも、ファイルに書き出さず、オンメモリでディレクトリリストを処理した方がパフォーマンスが向上するはずである。そのため、キャッシュ機能を削除する。

パスワードを資格情報マネージャーに保存する

レジストリ・INIファイルに保存されるパスワードはマスターパスワードを鍵にして暗号化されている。マスターパスワードを設定していない場合は固定文字列が使われるため、実質的には可逆変換であり暗号化ではなくなる。
パスワードをコントロールパネル - 資格情報マネージャーに保存することで、パスワード管理をマスターパスワードに頼らずOSに委ねることができる。
問題点としては可搬性がなくなること。INI保存の場合は引き続きマスターパスワードを使うことになるか。

漢字コード変換のリファクタリング

既存の漢字コード変換はUTF-8変換が後付けで追加されているため、変換がややこしくなっている。また、ファイル名の変換はremote.cppに、ファイルコンテンツの変換はgetput.cppにそれぞれ実装されており分散している。

ミラーリングダウンロードのリスト取得中に止まる

FFFTP 3.5 を起動して最初のミラーリングダウンロードのリスト取得中(「処理内容表示へ進む」ボタン)

--(snip)--
>MLSD
150 Opening ASCII mode data connection for MLSD
ファイル一覧の取得を中止しました.
>CWD /

ここで止まってしまいました。ツールバーは、受信中止ボタン以外は全部グレーアウト。
いずれにせよ、もう止まってしまっていてどうしようもないので、他の選択肢も無いことだし受信中止ボタンを押したら、以下のように行が表示されていきました。特に、最初の CWDコマンドの数十行は、バッファに溜まっていたものが吐き出されたような感じで一瞬で一気に表示されました。

>CWD aaaaaaaaa/aaa
>CWD aaaaaaaaa/bbb
>CWD aaaaaaaaa/ccc
数十行継続
>CWD aaaaaaaaa/zzzz
>CWD bbbbbbb
>CWD cccccc
>CWD ddddddd
数十行継続
>CWD xxxxxxx
>CWD yyyyyyy
>CWD zzzzzzz

再接続します.

ここまでは受信中止ボタンを押した瞬間に一気に表示された。溜まっていたものが一気にフラッシュされた感じ。

FTP over Explicit SSL/TLS (FTPES)を使用します.
ホスト xxxxxxxxxxxxxxxxx  (aaa.bbb.ccc.ddd:21) に接続しています.
接続しました.
220 FTP Server ready.
>AUTH TLS
234 AUTH TLS successful
>PBSZ 0
200 PBSZ 0 successful
>PROT P
200 Protection set to Private
>USER zzzzzzzzzzzz
331 Password required for zzzzzzzzzzzz
>PASS [xxxxxx]
230 User zzzzzzzzzzzz logged in.
>FEAT
211-Features:
 MDTM
 MFMT
 TVFS
 AUTH TLS
 MFF modify;UNIX.group;UNIX.mode;
 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
 PBSZ
 PROT
 REST STREAM
 SIZE
211 End
>CWD /
250 CWD command successful
>XPWD
257 "/" is the current directory

再接続します.


再接続します.

FTP over Explicit SSL/TLS (FTPES)を使用します.
FTP over Explicit SSL/TLS (FTPES)を使用します.
ホスト xxxxxxxxxxxxxxxxx  (aaa.bbb.ccc.ddd:21) に接続しています.
ホスト xxxxxxxxxxxxxxxxx  (aaa.bbb.ccc.ddd:21) に接続しています.
>TYPE A
200 Type set to A
接続しました.
接続しました.
>PASV
220 FTP Server ready.
220 FTP Server ready.
>AUTH TLS
227 Entering Passive Mode (aaa,bbb,ccc,ddd,234,128).
>AUTH TLS
ダウンロードのためにホスト aaa.bbb.ccc.ddd (aaa.bbb.ccc.ddd:60032) に接続しています.
234 AUTH TLS successful
234 AUTH TLS successful
接続しました.
>MLSD
150 Opening ASCII mode data connection for MLSD
>PBSZ 0
>PBSZ 0
200 PBSZ 0 successful
200 PBSZ 0 successful
>PROT P
>PROT P
200 Protection set to Private
200 Protection set to Private
>USER zzzzzzzzzzzz
>USER zzzzzzzzzzzz
226 Transfer complete
ファイル一覧の取得は正常終了しました. (15892 Bytes)
331 Password required for zzzzzzzzzzzz
331 Password required for zzzzzzzzzzzz
>PASS [xxxxxx]
>PASS [xxxxxx]
230 User zzzzzzzzzzzz logged in.
230 User zzzzzzzzzzzz logged in.
>FEAT
>FEAT
211-Features:
211-Features:
 MDTM
 MDTM
 MFMT
 MFMT
 TVFS
 TVFS
 AUTH TLS
 AUTH TLS
 MFF modify;UNIX.group;UNIX.mode;
 MFF modify;UNIX.group;UNIX.mode;
 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
 PBSZ
 PBSZ
 PROT
 PROT
 REST STREAM
 REST STREAM
 SIZE
 SIZE
211 End
211 End
>TYPE A
200 Type set to A
>PASV
227 Entering Passive Mode (aaa,bbb,ccc,ddd,234,128).
ダウンロードのためにホスト aaa.bbb.ccc.ddd aaa.bbb.ccc.ddd:60032) に接続しています.
接続しました.
>MLSD
150 Opening ASCII mode data connection for MLSD
226 Transfer complete
ファイル一覧の取得は正常終了しました. (15892 Bytes)
>TYPE A
200 Type set to A
>PASV
227 Entering Passive Mode (aaa,bbb,ccc,dd,234,105).
ダウンロードのためにホスト aaa.bbb.ccc.ddd (aaa.bbb.ccc.ddd:60009) に接続しています.
接続しました.
>MLSD
150 Opening ASCII mode data connection for MLSD
226 Transfer complete
ファイル一覧の取得は正常終了しました. (15892 Bytes)

途中で再接続の行が2行あり、その後も同じコマンドが2行ずつ続いているのも何か変な感じです。

最後の部分は、接続維持のためだと思いますが、この繰り返し。ポートだけが違いますが。

固有のものは適当なアルファベットで伏せました。

Which License will apply?

Is the "ffftp" with current repository will apply "Revised BSD License" or others?
It feel nice if the license is explicitly declared 👏

同じタイムスタンプなのにミラーリングダウンロードにリストアップされる

表題のままです。
v3.3およびv3.5です(win7なので3.4は起動不可)

ミラーリングダウンロードをしようと「処理内容表示へ進む」ボタンを押してリストを取ったのですが、明らかにローカルとサーバーで同じタイムスタンプなのにリストアップされているものが多数見つかりました。

さらに、そのリストのいくつかを手動でダウンロードし、再度リストを取ってもまたそれらのファイルがミラーリングダウンロードすべきファイルとしてリストアップされてきました。

なお、タイムスタンプの秒は表示させていません。日時は完全に同じです。不思議なのは、すべてではなく、限られた数であることです。サーバーには3000近くあるが、同タイムスタンプでリストされるのは数十とか多くて数百。だからと言って何もいいことはありませんが。。。

試しに、サーバーにあるファイルを全ダウンロードし直し、直後にミラーリングダウンロードリストを取っても同じようにいくつかがリストされてしまいます。

バグだと思うのですが、設定で回避できるなら教えて欲しいです。

ちなみに、この問題が起きるのは minibird です。
xserverではこの問題は起きていません。

たまにANSIバージョンAPIが使われている

従来はANSIバージョンを使っていた。しかし、内部コードUTF-8化により、API呼び出しの際Wide charに変換後、Unicodeバージョンを呼び出すようになった。
ところが一見すると文字列には関係のなさそうなAPIでも内部でANSI / Unicodeバージョンが用意されているものがあり、それらは従来通りANSIバージョンを呼び出すコードのまま残っている。

dumpbin /imports Debug\x86\ffftp.exe より

  • GetModuleHandleA
  • ExpandEnvironmentStringsA
  • GetDiskFreeSpaceExA
  • CreateEventA
  • CreateMutexA
  • LoadLibraryExA
  • EnumResourceNamesA
  • GetCommandLineA
  • PeekMessageA
  • PostMessageA
  • DispatchMessageA
  • LoadImageA
  • SystemParametersInfoA
  • TranslateAcceleratorA
  • LoadAcceleratorsA
  • GetMessageA
  • CreateDialogParamA
  • LoadCursorA
  • LoadBitmapA
  • CreateFontA
  • GetObjectA
  • RegQueryValueExA
  • RegDeleteKeyA
  • RegOpenKeyExA
  • ImageList_LoadImageA
  • CryptUIDlgViewCertificateA

shaがbig endianになっていない

余計なお世話かもしれませんが、軽くコードだけ眺めていたのですが、sha_memory()のエンディアンは大丈夫でしょうか?
逆になっていても動作はしますが、以前のバージョンで保存したマスターパスワード周りの設定を読めなくなるはずです

— 川本優 (@s_kawamoto) January 2, 2018

No more async regist space エラー

お久しぶりです。
ミラーリングダウンロードで大量(と言っても2000弱)をダウンロード中、No more async regist space というエラーが出てOKを押すとFFFTPが終了してしまいます。終了というか消えて無くなる感じ。オプション設定した後だったら保存できてるかどうかは不明。

Image of FFFTP error

ミラーリング自体は関係ないかもしれません。メモリは12GB積んであって、半分以上余裕がある状態なのでRAM不足とは考えにくいです。バッファ容量が足りないとか、よく分かりませんが、プログラムの中で制限値に達してしまっているように思います。
3.3と3.5で起きました。

ダイアログのC++クラス化

全てのダイアログについてウィンドウプロシージャが静的関数となっているため、ダイアログで使用するデータがグローバル変数とならざるを得ない。ダイアログがインスタンス化されれば関連データもメンバー変数に保持できるようになる。
GetWindowLongPtr(GWLP_USERDATA)を使用することでthisポインターが格納可能となる。
これら機能を備えたtemplate classを用意する。

V3.5 ノートンの誤検知と設定ファイルのインポートが出来ない

お世話になります。ご報告です

1:ノートンセキュリティの誤検知
v3.5-x**.zip をダウンロード&解凍。
ノートンセキュリティが
ffftp.exe
ja-JP/ffftp.exe.mui を削除してしまいます。 ノートン側の問題ですが、一応、ご報告。

2:設定をファイルから復元 できない
v3.5のzipファイルは、ノートンでダメでしたが、ffftp-v3.5-x64.msi は、インストールOK でした.zipが、
接続メニュー >設定 >「設定をファイルから復元」 で V3.4で保存した設定ファイル **.INIが読み込めません

内部UTF-8をやめる

UTF-8対応の際、char*がANSI(日本語ではShift-JIS)からUTF-8に変換された。そのためchar*を扱う標準ライブラリは一切呼び出すことができなくなった。そのための対策としてmbswrapper.cにてUTF-8 char*からwchar_t*に変換を行うラッパー関数を用意し、このラッパー関数が存在するライブラリ関数のみ呼び出し可能となっている。
ライブラリ関数呼び出しにこのような制限が存在すると機能拡張の足かせになるため、内部で保持する文字列をUTF-8 char*からwchar_t*に変更する。併せてstd::wstringへの変更も行っていく。

アップロードしたファイルのタイムスタンプが1年前になってしまう

海外在住者です。
日本のサーバーにアップロードするとある条件下で一時的にサーバー側のファイルのタイムスタンプが1年前になってしまう(1日以内に戻る)という現象が起きています。

たまに二人で作業することもあるためミラーリングは必須なのですが、上記現象ゆえに困っています。何とか解決方法があるならとてもありがたいです。
現在は、アップロードの時間を制限して、00:00~10:59だけにしています。11:00~23:59の間はアップロードしないように気を付けているような状況です。


https://osdn.net/projects/ffftp/forums/27005/39434/ から転載

ある条件下でサーバーにアップロードしたファイルのタイムスタンプがちょうど1年前になってしまいます。日付及び時刻は同じです。ただし、しばらくすると(9時間後?)、正常な年に戻ります。実はこの問題はかなり古いバージョン(10年以上前)にもあって、当時、作者にも問い合わせましたが、結局未解決のままでした。

ところが、昨日、FFFTPでは1年前(2017年)として表示されているのに、Filezillaというソフトで見てみるとちゃんと2018年と表示されているのを発見。つまり、やはり何か方法があるのかもしれないと思い、こちらで聞いてみることにしました。

ちなみに私はいま、ブラジルの GMT -4:00 の地域におります。つまり現在日本とは13時間差があります。こちらが遅れています。左右ペインの日時を合わせるためにホストのタイムゾーンはGMT +9:00 (日本)にしていますが、どういう設定にしてもこの特定条件下での1年ずれ現象に変化はないことは確認済です。

タイムスタンプが1年前になってしまうには条件があるようです。ちょっとややこしいですが説明してみます。

ファイルのタイムスタンプが送信日当日のもので、かつ、こちらの日付と日本(サーバー)の日付が1日ずれているときに上記の1年ズレの現象が起きるようです。日本の日付が変わったとき(つまり現地時間の午前11時)からこの現象が起きることを確認しています。たとえば、2018/04/20 10:59 というタイムスタンプのファイルを 11:01にアップロードすれば、2018/04/20 のままですが、タイムスタンプが 2018/04/20 11:00 のファイルは 2017/04/20 11:00 と表示されるようになります。

そして数時間後に本来の日時2018/04/20 11:01になるということです。この「数時間」が何時間かは未確認ですが、9時間という情報も見ました。なかなかちょうどの時間にPCの前にいられないので明確な時間はまだ分かっていません。

どんなふうになるかスクショ取りました。
ffftp 3

ちなみに、Filezillaでは全部正常に表示されているのですが、サーバー設定の「サーバのタイムゾーン オフセットの調整」はゼロのままです。ここを9時間とすると右ペイン(サーバー側)の時間が9時間プラスになってしまいます。

タイムスタンプが1年前だとミラーリングの時に都合が悪くて困っています。単に表示上だけでなく本当に1年前の日付として判断されてしまうのです。

漢字コードの推測がルートディレクトリでしか実行されていない

ファイル名の漢字コードの自動推測機能が存在するが、推測処理は接続直後のルートディレクトリでしか実行されておらず、一度確定すると変更されない。
しかし、ルートディレクトリにはデータファイル等が置かれていない可能性が高く、その場合に漢字コードの推測が行えない。

ASCII以外が出現するまで推測処理を保留する必要がある。

設定の改竄チェックが機能していない

全設定暗号化の際、設定の改竄チェックを行っている。しかし、チェックサム方式のため、リファクタリングで設定項目が削除されるとチェックサムが一致しない。かといってダミーで不要な設定項目を残していてはリファクタリングの意味がない。

そもそも暗号化下において設定を改竄できるということは暗号化鍵の入手に成功していることを意味している。であればチェックサムも同様に更新してしまえば改竄チェックを逃れられる。また、全設定暗号化は共通鍵方式のため、暗号化鍵で復号でき、パスワードなどの項目も読み取ることができてしまう。そのため、あえて設定を改竄する必要がないとも言える。

というわけで改竄チェックに意義を感じないため、機能削除する。

接続時に「保護されていません」というダイアログが出る

@honeylover さんより
ミニバードおよびエックスサーバーを使っています。暗号化タブで、FTPS (Explicit)で接続するようにしています。

FFFTP v3.2およびtest4までで、接続時に「保護されていません」というダイアログが出ます。接続するにはYesを選択する以外無いのですが、接続後ステータスバーに「保護されていません」と表示されます。
それで、その部分をダブルクリックすると証明書が表示されるのですが、証明のパスというタブの下部にある【証明書の状態】には「この証明書は問題ありません。」と書かれています。

パスを全部たどって、証明書を表示させてもすべて問題なしということになっています。私が使っているエックスサーバーでは合計3個の証明書になりますが、すべて問題なしです。
これは、本当に証明書が不正で保護されない接続になってしまっているのでしょうか?

また別ソフトを挙げてしまって申し訳ないですが、Filezillaで接続すると、ステータスバーに閉じた南京錠アイコンがあってそこにカーソルを置くと「接続は暗号化されています。詳細はアイコンをクリックしてください」と出て、クリックすると独自表示の証明書情報が表示され、認証パスの0から2までのうちのどれかを選んで表示させることができますが、どれを見ても何かエラーとか不正みたいな表示は出ていません。もっとも、FFFTPからの表示と違って、問題が無いという表示もありません。

あと、FFFTP osdn版 v2.0 では、証明書は表示できませんが、タイトルバーに「暗号化されています」と表示されています。sayurinさんの投稿からは、保護と暗号化は別件と読めるのですが、つまり、暗号化されていると表示されているからと言って保護されているとは限らないということになるのでしょうか?

名前に半角スペースの入っているファイルをFTPでアップロードすると、そのアップロードを試みたファイル自体は成功した上で 半角スペースまでの何かをアップロードしようとして失敗する

名前に半角スペースの入っているファイルをFFFTP ver.3.00 で FTPにて アップロードすると、ファイルをアップロードした上で、スペース迄のパスを元に何等かのものをアップロードしようと試みて タイトル:「FFFTP: エラー」で「*がアップロードできませんでした。」(*にはスペースまでのファイルパスが入る)とテキスト及び選択肢として「後で上書き」「後でリジューム」「アップロードしない」のラジオのついた エラーダイアログが表示される。

ファイル・アップロードで必ずエラーダイアログが表示される

エラーを表示しているダイアログの各ボタンをクリックすると以下の動作となる
・「OK」をクリックすると、再度同じエラーダイアログが表示される
・「以降全て」をクリックすると、エラーダイアログを自動的に表示し続ける無限ループに入る
・「全て中止」をクリックすると、エラーダイアログが消えると同時に、ファイルのアップロードが完了する

証明書を表示する

#2 で不正な証明書への対応が不十分なことが判明した。

  • 接続時(特にパスワード送信前)に証明書を受け入れるか確認(ConfirmSSLCertificate周り)
    • 証明書表示ボタンを用意する
  • ステータスバーに 保護されています / 保護されていません を表示する
    • クリック(or ダブルクリック)で証明書を表示する
  • タイトルバーの暗号化状態表示は削除する

そのためにコントロール接続に対して証明書を保持させる。

非同期I/Oを導入する

現状、利用されているノンブロッキングI/Oでは必要量のデータが読み取れるまで何度も呼び出しを繰り返す必要があり、ロジックが複雑になっている。もしくは面倒な場面ではブロッキングI/Oになっている。

そこで非同期I/Oに切り替え、必要量のデータが読み込めた時点で処理を再開できるようにする。C#言語のasync / awaitに似たco_awaitを使用する。

OSDN版との差分の吸収

OSDN版の1.99a-updateブランチからforkしたが、その後、2.00まで開発がすすめられた。その間の修正・更新を取り込む必要がある。
github版ではVC++2017へ移行したことによりプロジェクトファイルが別形式になっている他、C++へ移行したことによりソースコードファイル名も変更されている。それに対しOSDN版は2.00にてソースツリーの構造が変更されている。つまり双方でファイル名が変更されているため単純なmergeは困難な模様。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.