Skip to content

Latest commit

 

History

History
72 lines (51 loc) · 2.18 KB

File metadata and controls

72 lines (51 loc) · 2.18 KB

TigerStripes VPN

A native macOS menu bar app to connect and disconnect your SSTP VPN with one click.

Features

  • Lives in your menu bar — no Dock icon
  • Vector tiger face icon with opacity reflecting connection state
  • Saves VPN address and username; password stored securely in Keychain
  • Auto-reconnect on timeout (up to 5 retries with exponential backoff)
  • Live log viewer built in
  • Status dot: green (connected), yellow (connecting), red (error), gray (disconnected)

Requirements

  • macOS 13 Ventura or later
  • Xcode 15 or later
  • sstpc installed via Homebrew:
    brew install sstp-client
    

Build & Run

open "TigerStripes VPN.xcodeproj"

Press ⌘R to build and run. The app appears in your menu bar.

Distribution

Product → Archive → Distribute App → Copy App

Zip TigerStripesVPN.app and share it. Recipients should right-click → Open on first launch to bypass Gatekeeper (one-time step, no Apple account required on their end).

For fully notarized distribution (no Gatekeeper warning at all), a paid Apple Developer Program membership and a Developer ID Application certificate are required.

sudo without a password prompt

sstpc requires root. Add a passwordless sudo rule so the app never prompts for a password:

sudo visudo

Add this line at the bottom (replace YOUR_USERNAME with the output of whoami):

YOUR_USERNAME ALL=(ALL) NOPASSWD: /opt/homebrew/sbin/sstpc

Project structure

TigerStripes VPN.xcodeproj
Sources/TigerStripesVPN/
    App.swift              — @main entry point, MenuBarExtra setup
    ContentView.swift      — popover UI (credentials, connect button, log)
    VPNManager.swift       — sstpc process management, auto-reconnect, Keychain
    MenuBarIcon.swift      — vector tiger face drawn with CoreGraphics
Resources/
    Assets.xcassets/       — app icon and accent colour
    Info.plist
TigerStripes VPN.entitlements

Notes

  • LSUIElement = true — no Dock icon, menu bar only
  • Credentials persist across launches: server + username in UserDefaults, password in Keychain
  • To quit: right-click the menu bar icon and use the system menu, or add a Quit button to ContentView