簡単に紹介して欲しいですか? 上のビデオをご覧ください!
昨年、私は Pafera ファイルサーバー これは Rust で書かれたコンソール アプリで、デバイス用の Web ベースのファイル マネージャーを実行します。これにより、Web ブラウザーを備えたデバイスであれば、写真や柴犬アイコンを披露できる便利なスライド ショー機能を使用して、簡単にファイルを共有できます。つまり、パーティーに行って、200 人の友人全員が自分の携帯電話で自分の時間とペースで最近の休暇の写真を閲覧できるということです。
その後、友人やインターネット上の見知らぬ人からさまざまな提案や使用パターンが寄せられ、私はさらに多くの機能を追加し始めました。今では、ディレクトリ ツリー全体の rsync、メディア ファイルのトランスコード、ネイティブ オペレーティング システム アプリでのファイルのオープン、デバイス間でのファイルの自動同期が可能になりました。
しかし、コンソール アプリであるため、すべてのデバイスに対応するユニバーサル ソリューションとなることを妨げる大きな問題が常に 1 つありました。
コンソール アプリは iOS では実行できないため、Pafera ファイル サーバーを iPhone や iPad で実行することはできません...
今まで。
モンテネグロがクリスマス休暇中だったため、私は暇な時間があったので、携帯電話から簡単にサーバーを閲覧できるマルチプラットフォーム コンパニオン アプリを Flutter/Dart で書いてみました。こうすれば、技術にあまり詳しくない友人でもボタンを 2 つ押すだけでサーバーに接続できます。
途中で、Dart を使って iOS デバイス上で独自の Web サーバーを実行できることに気付き、私はこう思いました...
やあ!代わりに Dart でファイル サーバーを実装してみませんか!
2週間後、アプリがリリースされました。
現在、パフォーマンスは Rust バージョンに比べてひどく遅くなっています。Rust サーバーは 1 秒あたり約 40,000 件のリクエストを処理できます...
Dart バージョンでは約 400 しか処理できませんが....
しかし、重要なのはそれが機能することです...
iPhoneにもインストールできます!
最近のバージョンの Flutter の PDFx ライブラリのバグにより、ボタンが醜い黒い線として表示されるようになったため、すべてのボタンにきれいなアイコンを使用することをやめなければなりませんでした。
ただし、基本的な操作は同じです。
全員が同じ WiFi ネットワークまたは携帯電話のホットスポットに接続したら、アプリ アイコンをクリックし、共有するフォルダーを選択して、「サーバーを開始」をタップします。
次に、QR コード ボタンをクリックし、友達にスキャンしてもらいます。友達は自分の携帯電話でフォルダーを自由に閲覧でき、さらにあなたの携帯電話から自分の携帯電話に直接映画をストリーミングすることもできます。
友達がノートパソコンやデスクトップ コンピューターを使用している場合でも、問題ありません。友達のデバイスで QR コードの上に表示されている URL を入力するだけで、友達もまったく同じ操作を実行できます。
iOS や Android で実行していない場合でも問題ありません。Flutter アプリは OSX、Windows、Linux で問題なく動作するため、同じ機能が得られます。また、アプリが使用できるようにシステムに rsync、FFMpeg、ImageMagick をインストールすれば、さらに多くの機能が得られます。
単純なファイル共有以外にも高度な機能が多数あるので、ここで簡単に概要を説明します。
ホスト名は、他のデバイスが「他のサーバーを検索」をクリックしたときに表示されるものです。複数のデバイスを同時に共有している場合、ホスト名を使用して、デバイスをすばやく区別できます。
フォルダーは、実際に共有しているファイルシステム フォルダーです。Documents/shared のデフォルトとして [ドキュメント フォルダーを使用] をクリックするか、[フォルダーを選択] をクリックして別のフォルダーを選択できます。iOS がスリープから復帰したときにアプリの設定を適切に更新しない場合は、[ドキュメント フォルダーを使用] をクリックする必要がある場合もあります。
「現在の IP を使用」は、デバイスの現在の WiFi IP を自動的に検出します。「ドキュメント フォルダを使用」と同様に、iOS がアプリを適切に更新せず、以前の WiFi ネットワークの IP をまだ使用している場合、これを使用します。
「すべてのインターフェースで共有」はパブリックIPを0.0.0.0に設定します。つまり、 みんな 接続しているすべてのデバイスからサーバーを見ることができます。複数の接続があるデスクトップでは便利ですが、公共の場所で使用する場合は注意してください。
「共有を開始」をクリックすると、サーバーが実行され、管理用のホームページが開きます。もう一度クリックすると、サーバーが停止し、ファイルが安全に保たれます。
「最後の設定を読み込む」と「現在の設定を保存する」は、その名の通りです。設定は、コンソール Rust バージョンと同様に Documents/paferafileserver.cfg に保存されます。
さまざまなパスワード オプションは、さまざまなユーザーにさまざまなレベルのアクセス権限を与えるために用意されています。
通常、サーバーに接続するだけで誰でもファイルを見ることができますが、これらの下にある「プライベートファイルを有効にする」にチェックを入れると、読み取りパスワードがないと誰もファイルを見ることができなくなります。
書き込みパスワードは、ファイルのアップロード、移動、コピー、削除に使用されます。このパスワードがなければ、他のユーザーはファイルを表示すること以外、システムに対して何も行うことができません。
シェルパスワードはモバイルアプリでは役に立ちませんが、デスクトップオペレーティングシステムやAndroidのTermuxでは非常に便利です。任意のシステムコマンドを実行できるため、非常に強力であると同時に非常に危険です。この機能はデフォルトで無効になっており、シェルパスワードを入力する必要があります。 そして 使用するには、下の「シェルコマンドを有効にする」をチェックしてください。
さまざまな有効化と無効化のオプションにより、他の人がシステムに対して実行できる操作を選択できます。 たとえ すでに正しいパスワードが設定されています。これらは他のすべてのオプションよりも優先されるため、ファイルのコピーを無効にすると、誰も(あなた自身も含め)ファイルをコピーできなくなります。
特別なオプション「SSH キーチェックを無効にする」は、さまざまなデバイス間でファイルを同期しながら常に移動している私のような人向けです。通常、SSH は、IP アドレスが変更されたシステムに接続するときに、そのシステムの ID がすでにわかっている場合でも、確認を求めます。このオプションを使用すると、コンソールに移動して SSH 接続を確認することなく、異なるネットワーク上のファイルを自動的に同期できます。自分で制御していないネットワークでは、注意して使用してください。
Termux やデスクトップ環境で実行する場合とは異なり、iOS および Android アプリはシェル、rsync、ImageMagick、FFMpeg にアクセスできないため、高度な同期機能とトランスコーディング機能はすべて無効になっています。
モバイル オペレーティング システムはいつでもバックグラウンド アプリを終了できるため、時間指定の自動タスクも無効になります。
これらすべての側面には回避策がありますが、これらの機能を統合するために必要な時間は、現時点では私の意図を超えています。誰かが私にお金を払って追加することに興味があれば、どうなるか見てみましょう。😁
私の他のプロジェクトと同様に、ソースコードはCodebergでホストされており、 ここで見つかりました .
コンパイル済みのバイナリの場合は、 リリースディレクトリをここで参照してください ...
または、以下のリンクをクリックしてください。
Apple の署名要件により、iOS および OSX ユーザーは、アプリが App Store で利用可能になるまで待つか、ソース コードをダウンロードしてデバイス用に独自のバージョンをコンパイルする必要があります。
これは新しいリリースなので、さまざまなシステムで多くのバグや異常な動作が発生することは間違いありません。このアプリのベータ テストをご希望の場合は、デバイスとオペレーティング システムのバージョンを記載したメールをお送りください。TestFlight でセットアップいたします。
Flutter アプリの配布は、実際には Rust バージョンよりもはるかに複雑です。Rust バージョンでは、実行ファイルを 1 つアップロードするだけですべてが完了します。そのため、Apple がアプリをチェックして iOS App Store への掲載を許可するまでに 3 週間かかることをご理解ください。EU の規則に従って Apple がサードパーティ アプリを許可するよう義務付けられると、物事ははるかに簡単になるはずです。
いつものように、このアプリが皆さんのお役に立てば幸いです。また、ご自身の目的に合わせてカスタマイズしたい場合は、いつでも技術コンサルタントとして対応いたします。どうぞお楽しみください!
著者について |
|
![]() |
Jim は 90 年代に IBM PS/2 を入手して以来、プログラミングを続けています。現在でも、彼は HTML と SQL を手作業で記述することを好み、仕事の効率性と正確性を重視しています。 |