# wanghongenpin/proxypin architecture

> Architecture diagram of the GitHub repository wanghongenpin/proxypin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wanghongenpin/proxypin
- Repository: https://github.com/wanghongenpin/proxypin

## Overview

ProxyPin is a Flutter-based, cross-platform HTTP(S) traffic capture and inspection app. Its principal runtime path is a device VPN capturing packets, translating them into per-flow connections, and forwarding traffic through socket services; the README also documents filtering, rewriting, scripting, mapping, decryption, blocking, search, and history. The supplied tree and excerpts chiefly expose Android and iOS VPN plumbing, not the Flutter inspection UI or those feature implementations, so the graph focuses on evidenced packet-forwarding stages and notes that limit.

Main entry points: [`ios/ProxyPin/vpn/ConnectionHandler.swift`](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/ConnectionHandler.swift) (iOS packet handler), [`ios/ProxyPin/vpn/socket/SocketIOService.swift`](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/socket/SocketIOService.swift) (iOS socket service), [`android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt`](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt) (Android flow manager), [`android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt`](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt) (Android VPN bridge)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["VPN platform entry"]
  node_android_plugin["Android VPN bridge"]
  node_android_service["Android VPN service<br/>[ProxyVpnService.kt]"]
  node_ios_vpn["iOS tunnel provider"]
end

subgraph group_packet["Packet processing"]
  node_ios_handler["iOS packet handler"]
  node_ios_packet["Packet formats"]
  node_ios_util["Packet utilities<br/>[PacketUtil.swift]"]
end

subgraph group_connection["Flow management"]
  node_android_manager["Android flow manager"]
  node_android_flow["Android flow state<br/>[Connection.kt]"]
  node_ios_manager["iOS flow manager"]
  node_ios_flow["iOS flow state<br/>[Connection.swift]"]
end

subgraph group_io["Network I/O"]
  node_android_io["Android socket service"]
  node_android_writer["Client packet writer"]
  node_ios_io["iOS socket service"]
  node_ios_writer["iOS packet writer"]
end

node_user(("App user"))

node_user -->|"starts VPN"| node_android_plugin
node_android_plugin -->|"starts service"| node_android_service
node_android_service -->|"manages flows"| node_android_manager
node_android_manager -->|"creates flows"| node_android_flow
node_android_io -->|"writes packets"| node_android_writer
node_android_manager -->|"looks up flows"| node_android_flow
node_ios_vpn -.->|"dispatches packets"| node_ios_handler
node_ios_handler -->|"manages flows"| node_ios_manager
node_ios_manager -->|"creates flows"| node_ios_flow
node_ios_handler -->|"builds packets"| node_ios_packet
node_ios_handler -->|"uses utilities"| node_ios_util
node_ios_io -->|"reads flow state"| node_ios_flow
node_ios_io -->|"builds responses"| node_ios_packet
node_ios_io -.->|"writes packets"| node_ios_writer

click node_android_plugin "https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt"
click node_android_service "https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/ProxyVpnService.kt"
click node_ios_vpn "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/PacketTunnelProvider.swift"
click node_ios_handler "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/ConnectionHandler.swift"
click node_ios_packet "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/transport/protocol/TCPPacketFactory.swift"
click node_ios_util "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/utils/PacketUtil.swift"
click node_android_manager "https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt"
click node_android_flow "https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/Connection.kt"
click node_ios_manager "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/ConnectionManager.swift"
click node_ios_flow "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/Connection.swift"
click node_android_io "https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/socket/SocketNIODataService.java"
click node_android_writer "https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/socket/ClientPacketWriter.kt"
click node_ios_io "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/socket/SocketIOService.swift"
click node_ios_writer "https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/socket/ClientPacketWriter.swift"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_android_plugin,node_android_service,node_ios_vpn,node_user toneBlue
class node_ios_handler,node_ios_packet,node_ios_util toneAmber
class node_android_manager,node_android_flow,node_ios_manager,node_ios_flow toneMint
class node_android_io,node_android_writer,node_ios_io,node_ios_writer toneRose
```

## Components

### VPN platform entry

- [Android VPN bridge](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt): `android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt`
- [Android VPN service](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/ProxyVpnService.kt): `android/app/src/main/kotlin/com/network/proxy/ProxyVpnService.kt`
- [iOS tunnel provider](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/PacketTunnelProvider.swift): `ios/ProxyPin/PacketTunnelProvider.swift`

### Packet processing

- [iOS packet handler](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/ConnectionHandler.swift): `ios/ProxyPin/vpn/ConnectionHandler.swift`
- [Packet formats](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/transport/protocol/TCPPacketFactory.swift): `ios/ProxyPin/vpn/transport/protocol/TCPPacketFactory.swift`
- [Packet utilities](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/utils/PacketUtil.swift): `ios/ProxyPin/vpn/utils/PacketUtil.swift`

### Flow management

- [Android flow manager](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt): `android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt`
- [Android flow state](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/Connection.kt): `android/app/src/main/kotlin/com/network/proxy/vpn/Connection.kt`
- [iOS flow manager](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/ConnectionManager.swift): `ios/ProxyPin/vpn/ConnectionManager.swift`
- [iOS flow state](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/Connection.swift): `ios/ProxyPin/vpn/Connection.swift`

### Network I/O

- [Android socket service](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/socket/SocketNIODataService.java): `android/app/src/main/kotlin/com/network/proxy/vpn/socket/SocketNIODataService.java`
- [Client packet writer](https://github.com/wanghongenpin/proxypin/blob/main/android/app/src/main/kotlin/com/network/proxy/vpn/socket/ClientPacketWriter.kt): `android/app/src/main/kotlin/com/network/proxy/vpn/socket/ClientPacketWriter.kt`
- [iOS socket service](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/socket/SocketIOService.swift): `ios/ProxyPin/vpn/socket/SocketIOService.swift`
- [iOS packet writer](https://github.com/wanghongenpin/proxypin/blob/main/ios/ProxyPin/vpn/socket/ClientPacketWriter.swift): `ios/ProxyPin/vpn/socket/ClientPacketWriter.swift`

### Other components

- **App user**

## Connections

- App user → Android VPN bridge: starts VPN (evidence: `android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt`)
- Android VPN bridge → Android VPN service: starts service (evidence: `android/app/src/main/kotlin/com/network/proxy/plugin/VpnServicePlugin.kt`)
- Android VPN service → Android flow manager: manages flows (evidence: `android/app/src/main/kotlin/com/network/proxy/ProxyVpnService.kt`)
- Android flow manager → Android flow state: creates flows (evidence: `android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt`)
- Android socket service → Client packet writer: writes packets (evidence: `android/app/src/main/kotlin/com/network/proxy/vpn/socket/SocketNIODataService.java`)
- Android flow manager → Android flow state: looks up flows (evidence: `android/app/src/main/kotlin/com/network/proxy/vpn/ConnectionManager.kt`)
- iOS tunnel provider → iOS packet handler: dispatches packets
- iOS packet handler → iOS flow manager: manages flows (evidence: `ios/ProxyPin/vpn/ConnectionHandler.swift`)
- iOS flow manager → iOS flow state: creates flows (evidence: `ios/ProxyPin/vpn/ConnectionManager.swift`)
- iOS packet handler → Packet formats: builds packets (evidence: `ios/ProxyPin/vpn/ConnectionHandler.swift`)
- iOS packet handler → Packet utilities: uses utilities (evidence: `ios/ProxyPin/vpn/ConnectionHandler.swift`)
- iOS socket service → iOS flow state: reads flow state (evidence: `ios/ProxyPin/vpn/socket/SocketIOService.swift`)
- iOS socket service → Packet formats: builds responses (evidence: `ios/ProxyPin/vpn/socket/SocketIOService.swift`)
- iOS socket service → iOS packet writer: writes packets
