Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3,967 changes: 3,493 additions & 474 deletions PyFlow/network_api/connect_tcp.py

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions PyFlow/transfer_web/web_backend/server_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@


def _transfer_rows(progress):
"""JSON rows for one progress store (``fid -> [transferred, total, speed, name]``).
"""JSON rows for one progress store (``fid -> [transferred, total, speed, path, peer]``).

Returns:
list[dict]: One row per running transfer, ordered by file name.
Expand All @@ -223,7 +223,7 @@ def _transfer_rows(progress):
rows.append(
{
"fid": fid,
"name": entry[3],
"name": os.path.basename(str(entry[3])),
"transferred": entry[0],
"total": entry[1],
"speed": entry[2],
Expand Down
4 changes: 2 additions & 2 deletions PyFlow/transfer_web/web_front/client_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@


def _transfer_rows(progress):
"""JSON rows for one progress store (``fid -> [transferred, total, speed, name]``).
"""JSON rows for one progress store (``fid -> [transferred, total, speed, path, peer]``).

Returns:
list[dict]: One row per running transfer, ordered by file name.
Expand All @@ -271,7 +271,7 @@
rows.append(
{
"fid": fid,
"name": entry[3],
"name": os.path.basename(str(entry[3])),
"transferred": entry[0],
"total": entry[1],
"speed": entry[2],
Expand Down Expand Up @@ -1523,9 +1523,9 @@
except _ServerRequestError as e:
return jsonify({"ok": False, "error": str(e)}), e.status
# ``folder`` names the arrival folder of the started download.
return jsonify(
{"ok": True, "folder": self._ftp_arrival_folder(destination), **result}
)

Check failure on line 1528 in PyFlow/transfer_web/web_front/client_backend.py

View workflow job for this annotation

GitHub Actions / Lint

ruff (unformatted)

PyFlow/transfer_web/web_front/client_backend.py:1526:28: unformatted: File would be reformatted

@app.get("/api/extensions_ui")
def api_get_extensions_ui():
Expand Down
28 changes: 14 additions & 14 deletions docs/readme_translations/README.ja.md

Large diffs are not rendered by default.

17 changes: 1 addition & 16 deletions docs/readme_translations/readme_cache.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
{
"ja": {
"0eb95fb6244c03f1": "クイックスタート",
"116adade1d54e0ca": "登録、パスワード変更、コードベースのクライアントログインは電子メールで検証されます。管理者はスタートアップ構成ページに送信メールボックス(ホスト、ポート、アカウント、認証コード、送信者、暗号化)を入力し、設定は`PyFlow/transfer_web/.Flow_Web/email_config.json`に保存される前に実際のSMTPサーバーと照合され、検証メールサービスが開始されます。コードは5分間有効です。1分に1つのコードがリクエストされる場合があります。 送信ボタンは分をカウントします。作業メールボックスがなければ、誰もパスワードを登録またはリセットすることはできません。シードされた管理者はログインしてパスワードを設定することができます。",
"222aca9c2290d0f4": "`docs/reBuild.sh`で翻訳( gettextの抽出、新しい文字列の機械翻訳、`.mo`のコンパイル)を再構築します。スクリプトはそのインタプリタで`source/batch_translate_po.py`を呼び出すため、`pyproject.toml`(`sphinx`、`sphinx-intl`、`polib`、`deep-translator`)と`PATH`の`python3.14`実行可能ファイルからのドキュメント/翻訳依存関係が必要です。`docs/_build/html/<lang>`の下で言語ごとに1つのHTMLツリーを書き込みます。ドキュメントを読む`docs/readthedocs_build.sh`は、既存のカタログのみをコンパイルし、単一のHTMLツリーを構築するプレビルドステップとして実行されます rTD出力ディレクトリ。",
"26be11fbb2a6b1cf": "1. Cライブラリをコンパイルする",
"296e9947aeba6e74": "そのサーバーに接続するクライアントを起動します(および独自のローカルアドレス/ポートをバインドします)。",
"2a3ac1c088714b60": "[uv](https://docs.astral.sh/uv/)の場合(プロジェクトは`pyproject.toml`+`uv.lock`を使用) :",
"2cfbfcc1bdd1a9d8": "Webツールは、非ライブラリ使用のためにブラウザUIにTCPプロトコルをラップします(`uv sync`によってインストールされたFlaskが必要です)。パッケージランチャーから起動するか、次の手順に従います。",
"2ee60128eabd4038": "`libcrypto_api`が構築されていない場合、暗号化されたチャネルテスト(`test/unit/network_api/test_crypto_rsa.py`、`test/integration/network_api/test_crypto_tcp.py`)は自動的にスキップされます。他のすべては関係なく実行されます。CIは、UbuntuとWindowsの両方でPython 3.10-3.14でスイートを実行します。また、フリースレッド(非GIL ) 3.14ビルドも渡します。",
"380da53a148feb9a": "またはpipを使用する場合:",
"4bb8b69b871e43da": "PIP 25.1以降",
"4dfe35e71d438989": "サーバー/クライアント設定のプロンプトを表示し、`setup.json`を書き込み、インスタンスを起動します。",
Expand All @@ -17,44 +14,32 @@
"5dfdb914c67f3556": "ソース配布のみがPyPIに公開されるため、Cライブラリはパッケージをインストールするマシン上でコンパイルされます。Windowsでは、`pip install`の前にコンパイラとOpenSSL開発ファイルがあることを意味します。",
"66f3c45a53db9029": "パッケージをインストールすると、次のようにパッケージがコンパイルされます。`setup.py` OpenSSLに対して`crypto_api` Cライブラリを構築し、`PyFlow/_crypto_api.*.so`( Windows上では`.pyd`)としてインストールします。これは、`rsa_crypto.py`が実行時にロードするものです。",
"6957f86f4b40424f": "2. Python環境を設定する",
"6a063ec9b7d79401": "サーバーページには、`\"ftp\"`共有もあります(管理者のみ)。これはFTPプロトコルではありません。サーバーホストの1つのフォルダを参照し、プロトコル自身の`/file`および`/file_folder`転送を介して、チェックされたエントリをクライアントに渡します。共有フォルダーはスタートアップ構成(`web.ftp_root`/`setup_server.json`)に保持されているため、再起動すると引き続き提供されます。クライアントのブラウズダイアログには、オプションの**Download to**フォルダーがあります。エントリはクライアントホスト上にあり、 フィールドが空のままの場合、デフォルトの転送フォルダ(`PyFlow/network_api/received_files`)。",
"6ab3bdd8c7c69a57": "インタラクティブランチャー",
"6b407e2eca82d930": "**TCPサーバー/クライアント** —単一の制御チャネル(`PyFlow/network_api/connect_tcp.py`)を介したメッセージ交換、カスタムコマンド、ファイル転送、コマンド拡張API、およびポート割り当て。",
"6ea74252cf2b653f": "`is_extend_command`に関係なく、後で起動するたびにロードされるように、拡張プロトコルファイルを登録(または登録解除)します。",
"6f1f0154a2809ff0": "<https://slproweb.com/products/Win32OpenSSL.html> —デフォルト(非「Light」)インストーラーには開発ファイルが含まれていますが、「Light」には含まれていません。ビルドが探している`C:\\Program Files\\OpenSSL`に着陸します。他の場所にある場合、`OPENSSL_ROOT_DIR`は検索を上書きします。",
"77124d1b6f02f562": "サーバーのWebアドレスの訪問者は、**ログイン**、**登録**および**パスワード変更**ボタンを使用して、白いランディングページ(クライアントが接続するアドレス)を取得します。スタートアップコンフィギュレーションページ、ステータスページ、およびその背後にあるWeb APIにはセッションが必要です。アカウントはSQLiteデータベース`PyFlow/transfer_web/.Flow_Web/flow_web.db`に存在します:ユーザー名、メールアドレス、PBKDF 2 - SHA 256パスワードレコード、および他のユーザーが検索する一意の8文字のユーザーID。最初の実行は、 administrator `admin`/`admin`(レガシー`users.json`は一度インポートされ、名前が変更されます)。その正確なペアがまだ使用されている間、ログインすると、サーバーがパブリックネットワークに公開される前に、**ユーザー名とパスワードを変更するための目立つ警告がポップアップ表示されます**、またはそれに到達できる誰でも管理できます。管理者は、ユーザー(`Users`サイドバーにあり、ユーザーIDが一覧表示されます)を管理し、スタートアップ構成を変更したり、ロード/拡張したりできるのは管理者のみです。 拡張プロトコル。通常のユーザーは、メッセージ/ファイル/フォルダを送信するステータスページを取得します。`/api/server_info`は、Webクライアントが接続する前にクエリを実行するため、公開されたままになります。",
"78f10a67b868ee69": "**マルチインスタンスランチャー** — `python -m PyFlow`(`PyFlow/flow_setup.py`がサポートするパッケージエントリポイント)は、CLI、インタラクティブプロンプト、または`setup.json`構成ファイルから1つ以上のサーバー/クライアントインスタンスを開始します。",
"7a1f95aab4eb9cbf": "事前に書かれた`setup.json`はランチャーによって表彰されます:",
"7d9927114f94d93c": "PyFlowは、拡張可能なインターフェースやその他の機能とともに、メッセージ、ファイル、フォルダを転送するAPIとWebアプリを提供する、高度なネットワークプロトコルです。",
"86d07f053a0a41d2": "**暗号化されたTCPチャネル** — TOFU ( trust - on - first - use )ピアキーレジストリ、セッションナンス、リプレイに対するシーケンス番号、再交換ストームに対するサーキットブレーカーを使用したRSA - OAEPメッセージ暗号化。[docs/Crypto](docs/source/Crypto/Crypto.rst)およびTCP APIドキュメントの暗号化されたチャネルセクションを参照してください。",
"903f313bdbcb8186": "Python 3.10以降",
"9181fcfff28e4f52": "代わりにCMakeを使用してCライブラリを構築することは、CテストスイートとCコンシューマーにのみ必要です。`build/libcrypto_api.so`(または`.dylib`/`.dll`)を生成し、`rsa_crypto.py`も自動的に位置を特定します。",
"98ba72345416b0ee": "プログラマティックな使用",
"9c4af945c3bfee1d": "**Webツール** — `PyFlow/transfer_web/`は、図書館以外で使用するためにブラウザUIでTCPプロトコルをラップします。`setup_server.py`スタートアップコンフィギュレーションページ(`.Flow_Web/setup_server.json`に保存され、`setup.json`と同じ形状)を開き、ステータスページとクライアント対応APIを提供します。`setup_client.py`アドレスでサーバーに接続し、両方のページで接続されたインスタンス、メッセージ/ファイル/フォルダ送信(他のクライアントへの転送付き)、および拡張機能の読み込みのサイドバーを提供します。Flaskに裏打ちされています。",
"a0482cf5c31f1877": "チェックアウトから、同じビルドが`uv sync`/`pip install -e .`の一部として実行されます。",
"b27fedac51ace626": "`127.0.0.1:12345`でサーバーのリッスンを開始します:",
"b342508398702cc7": "Webツール(ブラウザUI )",
"b7e3c7f0ae358cc5": "<https://visualstudio.microsoft.com/visual-cpp-build-tools/>.コンパイラは自動的に検索されます。それがなければ、Microsoft独自の「Microsoft Visual C ++ 14.0以降が必要です」というメッセージでpipが停止します。",
"bdd254b65baac169": "構築",
"bf815b2c3a78cd2a": "登録は`add_extension.py`までに`PyFlow/added_extensions.json`に保存され、起動ごとに再読み込みされます。",
"c011d6097bfbc8e9": "ライセンス",
"c205924de0fe636c": "ドキュメンテーション",
"c54d35312880df3d": "CMake 3.16以降( CテストスイートとCコンシューマーのみ)",
"cd74053c54816e47": "アーキテクチャー",
"d06073c8df04b9a9": "スフィンクスのソースは`docs/source/`(`ja`/`ko`/`ru`/`zh_CN`/`zh_TW`カタログが`docs/source/locale/`の英語のソース)にあり、`docs/`はビルドラッパーを保持しています。次のものを使用してHTMLドキュメントを作成します。",
"d16d1eb3b458495f": "Cコンパイラ( Linux/macOSではgcc/clang、WindowsではMSVC )",
"d6b8aa778277200d": "Pythonレイヤーは、標準ライブラリとFlask (`transfer_web` Webツールでのみ使用)で実行されます。Cライブラリは、`ctypes`を介して実行時にロードされます。",
"d6cc7771583e4255": "`setup.json`",
"d83c5085aa03fdd8": "Win 64インストーラーからのOpenSSL",
"d9a6d9fec370c44b": "または直接:",
"e0cdd07f6a270b82": "要件",
"e466cf2d8e1916e6": "コマンドラインランチャー",
"e6ffa70bfd2677b1": "OpenSSL 1.1.1以降( Debian/Ubuntuの`libssl-dev`などの開発ヘッダー)",
"e806a291cfc3e61f": "テスト",
"ea3562f6d72e0251": "以下の例では、UVユーザーに`uv run`を使用しています。代わりにpipを使用してインストールした場合は、`uv run`プレフィックスをドロップして`python -m`を直接使用します。",
"eff58621a9dcab0a": "Visual Studio **ビルドツール** (C ++ワークロード、\"MSVC v 143\"およびWindows SDK):",
"f2883f13ca34236f": "デフォルトでは、両端は暗号化されたチャネル(`is_enable_encrypto=True`)を有効にします。キーは解析可能な場合は`~/.ssh/id_rsa`から来ます。そうでなければ、RSA -2048ペアが`PyFlow/network_api/.Flow/pvt_key/`に生成され、ピアキーが交換され、すべての接続でTOFUチェックされます(`PyFlow/network_api/.Flow/pub_key/pub_key.json`)。`is_custom_keys`と完全なハンドシェイクについては、TCP APIドキュメントを参照してください。",
"fefd6a69b9ee37bf": "最初に実行すると、サーバーランチャーは、デフォルトですべての`TCP_Server_Base`パラメーターを表示するスタートアップコンフィギュレーションページを開きます。保存された構成は`PyFlow/transfer_web/.Flow_Web/setup_server.json`(`setup.json`と同じ形状)にあります。TCPサーバーが起動すると、サーバーのWebバックエンドはステータスページを提供し、クライアント側のAPI (`/api/server_info`はTCPアドレス/ポートを返します)を提供します。クライアントランチャーは、サーバーアドレス(`http`/`https`ドメインまたはベアIP )を要求し、サーバーのWebバックエンドを介して接続します。次に、 アカウントにログインし(ユーザー名/メールアドレス、アカウントパスワード、およびアカウントアドレスに郵送された確認コード—両方の要素が必要です)、パスワードとセッショントークンを`PyFlow/transfer_web/.Flow_Web/client_login.json`に保存するため、**ログアウト**がそのファイルを削除するまで、すべてのリロードがクライアントを再度ログインさせます。両方のページには、接続されたインスタンスとメッセージ/ファイル/フォルダ送信のサイドバーが表示されます(クライアントからクライアントへの送信はサーバーを介して転送されます)。Webクライアントは、 取引先責任者であるアカウント。連絡先は、**連絡先**ボタン(ユーザーID、ユーザー名、またはメールアドレスで検索)で追加されます。相手側は、**リクエスト**リストでリクエストに応答し、両方のアカウントが互いに承認した後にのみ、連絡先がサイドバーに表示されます。拡張プロトコルは、クライアントページとサーバーページの管理者によって読み込まれます。ウェブツールは、残りの状態を同じ`.Flow_Web/`ディレクトリに保持します:`setup_client.json`(最後に クライアント起動構成)、`client_last_server.json`(接続ページによって提供される最後のサーバーアドレス)、`client_extensions_ui.json`/`server_extensions_ui.json`(拡張UI状態)、および`uploads/`ステージングディレクトリ。"
"eff58621a9dcab0a": "Visual Studio **ビルドツール** (C ++ワークロード、\"MSVC v 143\"およびWindows SDK):"
},
"ko": {
"0eb95fb6244c03f1": "빠른 시작",
Expand Down
Loading
Loading