EbrahimTahernejad / Tun2SocksKit

Tun2Socks Solution for Apple Devices
75 stars 45 forks source link

Tun2SocksKit

This repository is a wrapper and a build workflow for hev-socks5-tunnel

Original Developer (arror)

This code originally belonged to arror. I'm just maintaining and updating it.

If you appreciate this repo, give him a thanks.

Usage

You only need to import Tun2SocksKit

import Tun2SocksKit

Running Tun2SocksKit

Use a file URL to run it

let code = Socks5Tunnel.run(withConfig: .file(path: localConfigFileURL))

Or the contents of the config file as a string

let code = Socks5Tunnel.run(withConfig: .string(content: stringConfigContent))

You can run it non-blocking as well

Socks5Tunnel.run(withConfig: .string(content: stringConfigContent)) { code in
    // Do stuff with code
}

Stats

To get stats you need to call

let stats = Socks5Tunnel.stats

Both packet count and bytes transmitted/received are provided

print(stats.up.packets)
print(stats.up.bytes)
print(stats.down.packets)
print(stats.down.bytes)

Config

tunnel:
  mtu: 9000

socks5:
  port: 7890
  address: ::1
  udp: 'udp'

misc:
  task-stack-size: 20480
  connect-timeout: 5000
  read-write-timeout: 60000
  log-file: stderr
  log-level: debug
  limit-nofile: 65535