Skip to content

feat: Port Forwarding自動設定機能を追加#8

Merged
rymizuki merged 2 commits intomainfrom
feature/port-suggestion
Jan 21, 2026
Merged

feat: Port Forwarding自動設定機能を追加#8
rymizuki merged 2 commits intomainfrom
feature/port-suggestion

Conversation

@rymizuki
Copy link
Copy Markdown
Contributor

@rymizuki rymizuki commented Jan 21, 2026

目的

アプリ起動時にPort Forwardingを自動設定し、ユーザーが毎回手動でpnpm pf:enableを実行する手間を省く。

変更内容

概要

アプリ起動時に80→8080、443→8443のPort Forwardingルールを自動で設定する機能を追加。既に設定済みの場合はスキップし、毎回パスワードを要求しないようにした。

追加

  • src/main/port-forward-manager.ts - Port Forwarding管理クラス
    • checkRules(): 現在のpfctl設定を確認
    • enable(): osascriptでパスワードダイアログを表示してルールを設定
    • ensurePortForwarding(): 既存ルールを確認し、必要な場合のみ設定

変更

  • src/main/index.ts - アプリ起動時にPort Forwarding設定を実行

影響範囲

直接影響

  • アプリ起動時の動作(Port Forwarding設定の自動実行)

間接影響

  • 初回起動時またはルールが解除された後の起動時にmacOSのパスワードダイアログが表示される

テスト

手動テスト(ユースケース)

ユースケース 操作手順 期待結果
初回起動 Port Forwardingルールが未設定の状態でアプリを起動 パスワードダイアログが表示され、入力後にルールが設定される
2回目以降の起動 Port Forwardingルールが設定済みの状態でアプリを起動 パスワードダイアログは表示されず、そのまま起動する
ユーザーキャンセル パスワードダイアログでキャンセルをクリック エラーログが出力されるがアプリは起動する

🤖 Generated with Claude Code

Greptile Summary

アプリ起動時に80→8080、443→8443のPort Forwardingルールを自動設定する機能を追加。既存ルールがある場合はスキップし、未設定時のみosascriptでパスワードダイアログを表示してpfctlルールを設定する。

  • PortForwardManagerクラスを追加し、pfctlルールの確認・設定を管理
  • checkRules()で現在のルールを非特権で確認(sudo -nでフォールバック付き)
  • enable()でosascriptによる権限昇格とルール設定
  • ensurePortForwarding()で既存ルール確認後、必要時のみ設定実行
  • アプリ起動時(app.on('ready'))に自動実行し、エラーはログ出力のみで起動を妨げない
  • index.tsの冗長な三項演算子を削除

実装は堅牢で、ポート値のバリデーション、エラーハンドリング、ユーザーキャンセル処理が適切に行われている。

Confidence Score: 5/5

  • このPRは安全にマージ可能です
  • 実装は明確で堅牢。ポート値のバリデーション、適切なエラーハンドリング、ユーザーキャンセル処理、非対話的なルール確認など、セキュリティとUXの両面で適切に設計されている。shellコマンド構築も検証済み整数値のみを使用しインジェクションリスクなし。
  • 特に注意が必要なファイルはありません

Important Files Changed

Filename Overview
src/main/port-forward-manager.ts Port Forwarding管理クラスを追加。pfctlルールの確認、osascriptによる権限昇格付きルール設定、既存ルール確認機能を実装
src/main/index.ts アプリ起動時にPort Forwarding自動設定を追加。冗長な三項演算子を削除

Sequence Diagram

sequenceDiagram
    participant App as Electronアプリ
    participant PFM as PortForwardManager
    participant System as macOS pfctl
    participant User as ユーザー

    App->>App: app.on('ready')起動
    App->>PFM: new PortForwardManager(config)
    App->>PFM: ensurePortForwarding()
    PFM->>PFM: checkRules()
    PFM->>System: sudo -n pfctl -sr (非対話)
    alt sudo成功
        System-->>PFM: 現在のルール一覧
    else sudo失敗
        PFM->>System: pfctl -sr (非特権)
        System-->>PFM: 現在のルール一覧
    end
    PFM->>PFM: ルールが存在するか確認
    alt ルール既存
        PFM-->>App: 設定済み、スキップ
    else ルール未設定
        PFM->>PFM: enable()
        PFM->>System: osascript with administrator privileges
        System->>User: パスワードダイアログ表示
        alt ユーザーが認証
            User-->>System: パスワード入力
            System->>System: pfctlルール設定
            System-->>PFM: 成功
            PFM-->>App: Port Forwarding有効化完了
        else ユーザーがキャンセル
            User-->>System: キャンセル
            System-->>PFM: User canceled エラー
            PFM-->>App: エラー (catchでログ出力)
        end
    end
    App->>App: プロキシサーバー起動
Loading

rymizuki and others added 2 commits January 21, 2026 13:26
アプリ起動時に80→8080、443→8443のPort Forwardingルールを
自動で設定する機能を追加。

- PortForwardManagerクラスを新規作成
- 起動時に既存のルールを確認し、未設定の場合のみ設定
- osascriptでmacOSネイティブのパスワードダイアログを表示
- ユーザーがキャンセルした場合は適切にハンドリング

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
init()でloadConfig()をloadHosts()より先に呼び出すように変更。
これにより、ホスト一覧のレンダリング時にcurrentConfigが設定済みとなり、
カスタムドメインが正しく表示される。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rymizuki rymizuki merged commit 93272ed into main Jan 21, 2026
4 checks passed
@rymizuki rymizuki deleted the feature/port-suggestion branch January 21, 2026 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant