├── .nvmrc
├── AGENTS.md
├── GEMINI.md
├── .java-version
├── .eslintignore
├── client
├── AGENTS.md
├── GEMINI.md
├── electron
│ ├── AGENTS.md
│ ├── GEMINI.md
│ ├── linux_proxy_controller
│ │ ├── .gitignore
│ │ ├── dist
│ │ │ ├── OutlineProxyController
│ │ │ └── outline_proxy_controller.service
│ │ └── OutlineProxyControllerConfig.h.in
│ ├── icons
│ │ ├── mac
│ │ │ └── icon.icns
│ │ ├── png
│ │ │ ├── 16x16.png
│ │ │ ├── 24x24.png
│ │ │ ├── 32x32.png
│ │ │ ├── 48x48.png
│ │ │ ├── 64x64.png
│ │ │ ├── 128x128.png
│ │ │ ├── 256x256.png
│ │ │ ├── 512x512.png
│ │ │ └── 1024x1024.png
│ │ └── win
│ │ │ └── icon.ico
│ ├── tsconfig.json
│ └── windows
│ │ ├── digicert-usb-config
│ │ ├── eToken-macos.cfg
│ │ └── eToken-windows.cfg
│ │ ├── smartdnsblock
│ │ ├── bin
│ │ │ └── smartdnsblock.exe
│ │ └── smartdnsblock
│ │ │ ├── smartdnsblock.user
│ │ │ └── smartdnsblock.filters
│ │ └── OutlineService
│ │ └── OutlineService
│ │ ├── bin
│ │ ├── OutlineService.exe
│ │ └── Release
│ │ │ └── OutlineService.exe.config
│ │ ├── packages.config
│ │ └── App.config
├── go
│ └── outline
│ │ ├── config
│ │ ├── AGENTS.md
│ │ └── GEMINI.md
│ │ ├── useragent
│ │ ├── goos.go
│ │ ├── goos_maccatalyst.go
│ │ └── useragent.go
│ │ ├── vpn
│ │ └── vpn_others.go
│ │ ├── dnsintercept
│ │ └── helpers.go
│ │ ├── electron
│ │ └── dialer_others.go
│ │ ├── tun2socks
│ │ └── init_mobile.go
│ │ └── vpn_others.go
├── src
│ └── cordova
│ │ ├── apple
│ │ ├── AGENTS.md
│ │ ├── GEMINI.md
│ │ ├── xcode
│ │ │ ├── Outline
│ │ │ │ ├── Classes
│ │ │ │ │ ├── AppKitBridge
│ │ │ │ │ │ ├── Resources
│ │ │ │ │ │ │ ├── Assets.xcassets
│ │ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ │ ├── status_bar_button_image.imageset
│ │ │ │ │ │ │ │ │ ├── outline-black-off-2x.png
│ │ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ │ └── status_bar_button_image_connected.imageset
│ │ │ │ │ │ │ │ │ ├── outline-black-on-2x.png
│ │ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── Strings
│ │ │ │ │ │ │ │ ├── ja.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ko.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sq.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── zh-Hans.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── zh-Hant.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── am.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── he.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── kk.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── km.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── af.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ar.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ca.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── en.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── hy.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── is.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── it.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── mn.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── pl.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── pt-PT.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── tr.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── vi.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── az.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── bs.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── cs.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── el.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── en-GB.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── es.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── et.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── fa.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── fi.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── fil.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── hr.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── lo.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── no.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── pt-BR.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ru.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sk.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sl.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sv.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sw.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ta.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── es-419.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── fr.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── hi.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── id.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── lt.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── mr.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ms.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ro.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sr.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── th.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── uk.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── da.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── de.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── hu.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ka.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── mk.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── sr-Latn.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── ur.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── bn.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── my.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── si.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── bg.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── nl.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ ├── lv.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ │ │ └── ne.lproj
│ │ │ │ │ │ │ │ └── Localizable.strings
│ │ │ │ │ │ └── AppKitIntegration.h
│ │ │ │ │ └── AppDelegate+Outline.h
│ │ │ │ └── Outline.entitlements
│ │ │ ├── AppIcon.icon
│ │ │ │ ├── Assets
│ │ │ │ │ └── icon-1024.png
│ │ │ │ └── icon.json
│ │ │ ├── OutlineLauncher
│ │ │ │ └── OutlineLauncher.entitlements
│ │ │ └── PrivacyInfo.xcprivacy
│ │ ├── OutlineAppleLib
│ │ │ ├── README.md
│ │ │ ├── .gitignore
│ │ │ └── Sources
│ │ │ │ └── OutlineCatalystApp
│ │ │ │ └── NSObject+Outline.swift
│ │ ├── client.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── swiftpm
│ │ │ │ └── Package.resolved
│ │ └── OutlineLib
│ │ │ └── VpnExtension
│ │ │ ├── VpnExtension.entitlements
│ │ │ ├── Sources
│ │ │ └── VpnExtension-Bridging-Header.h
│ │ │ └── Info.plist
│ │ ├── android
│ │ ├── AGENTS.md
│ │ ├── GEMINI.md
│ │ └── OutlineAndroidLib
│ │ │ ├── outline
│ │ │ ├── .gitignore
│ │ │ ├── consumer-rules.pro
│ │ │ ├── src
│ │ │ │ └── main
│ │ │ │ │ ├── aidl
│ │ │ │ │ └── org
│ │ │ │ │ │ └── outline
│ │ │ │ │ │ ├── TunnelConfig.aidl
│ │ │ │ │ │ └── DetailedJsonError.aidl
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ └── proguard-rules.pro
│ │ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ ├── gradle-wrapper-shared-8.13.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── .gitignore
│ │ │ └── build.gradle
│ │ └── plugin
│ │ ├── android
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── small_icon.png
│ │ │ ├── values-ko
│ │ │ └── strings.xml
│ │ │ ├── values-zh-rCN
│ │ │ └── strings.xml
│ │ │ ├── values-ja
│ │ │ └── strings.xml
│ │ │ ├── values-zh-rTW
│ │ │ └── strings.xml
│ │ │ ├── values-fr
│ │ │ └── strings.xml
│ │ │ ├── values-is
│ │ │ └── strings.xml
│ │ │ ├── values-af
│ │ │ └── strings.xml
│ │ │ ├── values-ar
│ │ │ └── strings.xml
│ │ │ ├── values-az
│ │ │ └── strings.xml
│ │ │ ├── values-en-rGB
│ │ │ └── strings.xml
│ │ │ ├── values-en
│ │ │ └── strings.xml
│ │ │ ├── values-fa
│ │ │ └── strings.xml
│ │ │ ├── values-he
│ │ │ └── strings.xml
│ │ │ ├── values-ro
│ │ │ └── strings.xml
│ │ │ ├── values-sq
│ │ │ └── strings.xml
│ │ │ ├── values-sv
│ │ │ └── strings.xml
│ │ │ ├── values-am
│ │ │ └── strings.xml
│ │ │ ├── values-bs
│ │ │ └── strings.xml
│ │ │ ├── values-el
│ │ │ └── strings.xml
│ │ │ ├── values-hy
│ │ │ └── strings.xml
│ │ │ ├── values-my
│ │ │ └── strings.xml
│ │ │ ├── values-no
│ │ │ └── strings.xml
│ │ │ ├── values-pl
│ │ │ └── strings.xml
│ │ │ ├── values-pt-rBR
│ │ │ └── strings.xml
│ │ │ ├── values-ru
│ │ │ └── strings.xml
│ │ │ ├── values-uk
│ │ │ └── strings.xml
│ │ │ ├── values-ur
│ │ │ └── strings.xml
│ │ │ ├── values-vi
│ │ │ └── strings.xml
│ │ │ ├── values-da
│ │ │ └── strings.xml
│ │ │ ├── values-et
│ │ │ └── strings.xml
│ │ │ ├── values-fi
│ │ │ └── strings.xml
│ │ │ ├── values-hu
│ │ │ └── strings.xml
│ │ │ ├── values-id
│ │ │ └── strings.xml
│ │ │ ├── values-it
│ │ │ └── strings.xml
│ │ │ ├── values-lo
│ │ │ └── strings.xml
│ │ │ ├── values-mk
│ │ │ └── strings.xml
│ │ │ ├── values-mn
│ │ │ └── strings.xml
│ │ │ ├── values-nl
│ │ │ └── strings.xml
│ │ │ ├── values-si
│ │ │ └── strings.xml
│ │ │ ├── values-sk
│ │ │ └── strings.xml
│ │ │ ├── values-sw
│ │ │ └── strings.xml
│ │ │ ├── values-tr
│ │ │ └── strings.xml
│ │ │ ├── values-bn
│ │ │ └── strings.xml
│ │ │ ├── values-cs
│ │ │ └── strings.xml
│ │ │ └── values-es
│ │ │ └── strings.xml
│ │ ├── package.json
│ │ └── apple
│ │ └── src
│ │ └── macos
│ │ └── Outline-Bridging-Header.h
├── web
│ ├── favicon.ico
│ ├── assets
│ │ ├── circle.png
│ │ ├── logo-nav.png
│ │ ├── brand-logo.png
│ │ ├── privacy-lock.png
│ │ ├── brand-logo-dark.png
│ │ ├── material_icons.woff2
│ │ ├── outline-client-logo.png
│ │ └── jigsaw_sans_medium.woff2
│ ├── tsconfig.json
│ ├── views
│ │ └── licenses_view
│ │ │ ├── licenses
│ │ │ └── README.md
│ │ │ └── stories.ts
│ ├── types
│ │ ├── shims.d.ts
│ │ ├── clipboard.d.ts
│ │ └── webintents.d.ts
│ ├── index_electron.html
│ └── app
│ │ └── vpn_installer.ts
├── resources
│ ├── electron
│ │ └── icon.png
│ ├── tray
│ │ ├── connected.png
│ │ └── disconnected.png
│ ├── icons
│ │ ├── ios
│ │ │ ├── Icon-29.png
│ │ │ ├── Icon-50.png
│ │ │ ├── Icon-57.png
│ │ │ ├── Icon-72.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-20@2x.png
│ │ │ ├── Icon-20@3x.png
│ │ │ ├── Icon-29@1x.png
│ │ │ ├── Icon-29@2x.png
│ │ │ ├── Icon-29@3x.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-50@1x.png
│ │ │ ├── Icon-50@2x.png
│ │ │ ├── Icon-57@1x.png
│ │ │ ├── Icon-57@2x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-72@1x.png
│ │ │ ├── Icon-72@2x.png
│ │ │ ├── Icon-76@1x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-512@2x.png
│ │ │ └── Icon-83.5@2x.png
│ │ ├── osx
│ │ │ ├── icon-16.png
│ │ │ ├── icon-32.png
│ │ │ ├── icon-64.png
│ │ │ ├── icon-1024.png
│ │ │ ├── icon-128.png
│ │ │ ├── icon-256.png
│ │ │ └── icon-512.png
│ │ └── android
│ │ │ ├── icon_hdpi.png
│ │ │ ├── icon_mdpi.png
│ │ │ ├── icon_xhdpi.png
│ │ │ ├── icon_xxhdpi.png
│ │ │ └── icon_xxxhdpi.png
│ └── splashscreen
│ │ ├── android
│ │ └── splash_screen_icon_xxxhdpi.png
│ │ └── ios
│ │ └── splashscreen@2x~universal~anyany.png
├── .gitignore
├── tsconfig.json
├── build
│ ├── make_replacements.mjs
│ └── get_webpack_build_mode.mjs
└── Taskfile.yml
├── server_manager
├── AGENTS.md
├── GEMINI.md
├── electron
│ ├── tsconfig.json
│ ├── icons
│ │ ├── mac
│ │ │ └── icon.icns
│ │ ├── png
│ │ │ ├── 16x16.png
│ │ │ ├── 24x24.png
│ │ │ ├── 32x32.png
│ │ │ ├── 48x48.png
│ │ │ ├── 64x64.png
│ │ │ ├── 128x128.png
│ │ │ ├── 256x256.png
│ │ │ ├── 512x512.png
│ │ │ └── 1024x1024.png
│ │ └── win
│ │ │ └── icon.ico
│ ├── windows
│ │ └── digicert-usb-config
│ │ │ ├── eToken-macos.cfg
│ │ │ └── eToken-windows.cfg
│ ├── release
│ │ └── macos.entitlements
│ ├── start.action.sh
│ └── electron_builder.json
├── images
│ ├── metrics.png
│ ├── key-tip-2x.png
│ ├── tos-icon.png
│ ├── github-icon.png
│ ├── reddit-icon.png
│ ├── server-icon.png
│ ├── aws-thumbnail-1.png
│ ├── aws-thumbnail-2.png
│ ├── connect-tip-2x.png
│ ├── connected_large.png
│ ├── flags
│ │ └── unknown.png
│ ├── gcp-thumbnail-1.png
│ ├── gcp-thumbnail-2.png
│ ├── launcher-icon.png
│ ├── Material-Icons.woff2
│ ├── gcp-screenshot-1.png
│ ├── gcp-screenshot-2.png
│ ├── aws-lightsail-setup.png
│ ├── manager-about-logo2x.png
│ ├── manager-profile-2x.png
│ ├── server-icon-selected.png
│ ├── server-unreachable.png
│ ├── aws-lightsail-thumbnail.png
│ ├── gcp-create-instance-screenshot.png
│ ├── gcp-create-instance-thumbnail.png
│ ├── gcp-create-project-screenshot.png
│ ├── gcp-create-project-thumbnail.png
│ ├── check_blue.svg
│ ├── check_green.svg
│ ├── check_white.svg
│ ├── check_orange.svg
│ ├── ic_done_white_24dp.svg
│ ├── check_blue_rtl.svg
│ ├── check_green_rtl.svg
│ ├── check_orange_rtl.svg
│ └── check_white_rtl.svg
├── www
│ ├── ui_components
│ │ └── licenses
│ │ │ └── db-ip_license.txt
│ ├── test.action.sh
│ ├── start.action.sh
│ ├── views
│ │ └── server_view
│ │ │ ├── icon_tooltip
│ │ │ └── stories.ts
│ │ │ └── access_key_data_table
│ │ │ └── access_key_status
│ │ │ └── stories.ts
│ └── fetcher.spec.ts
├── tsconfig.json
├── types
│ ├── jsonic.d.ts
│ └── electron-to-chromium.d.ts
├── model
│ └── survey.ts
├── browser.webpack.js
├── electron_renderer.webpack.js
└── test.action.sh
├── third_party
├── jsign
│ ├── .gitignore
│ └── METADATA
├── tap-windows6
│ ├── .gitattributes
│ ├── MSCV-VSClass3.cer
│ ├── installer
│ │ ├── icon.ico
│ │ ├── ShellLink.dll
│ │ └── install-whirl.bmp
│ ├── bin
│ │ ├── amd64
│ │ │ ├── tap0901.cat
│ │ │ ├── tap0901.sys
│ │ │ └── tapinstall.exe
│ │ └── i386
│ │ │ ├── tap0901.cat
│ │ │ ├── tap0901.sys
│ │ │ └── tapinstall.exe
│ ├── .gitignore
│ ├── src
│ │ ├── MAKEFILE
│ │ └── config.h.in
│ ├── METADATA
│ ├── version.m4
│ ├── paths.py
│ ├── .appveyor.yml
│ └── CONTRIBUTING.rst
├── newtonsoft
│ ├── Newtonsoft.Json.dll
│ ├── METADATA
│ └── LICENSE
└── sentry-android
│ └── METADATA
├── docs
├── invitation-instructions.md
├── resources
│ ├── logo_client.png
│ ├── logo_manager.png
│ ├── invitation_instructions_001.png
│ ├── invitation_instructions_002.png
│ └── invitation_instructions_003.png
└── life_of_a_packet.md
├── .npmrc
├── .prettierignore
├── .vscode
├── extensions.json
└── settings.json
├── .gitignore
├── .github
└── CODEOWNERS
├── .gitattributes
├── .browserslistrc
├── infrastructure
├── tsconfig.json
├── package.json
├── sleep.ts
├── test.action.sh
├── build
│ └── get_root_dir.mjs
├── sentry.spec.ts
├── hex_encoding.ts
└── custom_error.ts
├── .prettierrc.js
├── codecov.yml
├── tools.go
└── .storybook
├── preview-head.html
└── preview.js
/.nvmrc:
--------------------------------------------------------------------------------
1 | 22
2 |
--------------------------------------------------------------------------------
/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/.java-version:
--------------------------------------------------------------------------------
1 | 11
2 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /output
2 |
--------------------------------------------------------------------------------
/client/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/client/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/server_manager/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/server_manager/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/client/electron/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/client/electron/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/third_party/jsign/.gitignore:
--------------------------------------------------------------------------------
1 | *.jar
2 |
--------------------------------------------------------------------------------
/client/go/outline/config/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/client/go/outline/config/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/client/src/cordova/apple/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/client/src/cordova/apple/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/client/src/cordova/android/AGENTS.md:
--------------------------------------------------------------------------------
1 | README.md
--------------------------------------------------------------------------------
/client/src/cordova/android/GEMINI.md:
--------------------------------------------------------------------------------
1 | AGENTS.md
--------------------------------------------------------------------------------
/third_party/tap-windows6/.gitattributes:
--------------------------------------------------------------------------------
1 | *.yml text=auto
2 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/outline/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/outline/consumer-rules.pro:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/electron/linux_proxy_controller/.gitignore:
--------------------------------------------------------------------------------
1 | OutlineProxyControllerConfig.h
2 |
--------------------------------------------------------------------------------
/docs/invitation-instructions.md:
--------------------------------------------------------------------------------
1 | Moved to [`invitation_instructions.md`](./invitation_instructions.md).
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | ;enforces that the user is `npm install`ing with the correct node version
2 | engine-strict=true
3 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | .github/
2 | apple/
3 | docs/
4 | resources/
5 | third_party/
6 | tools/
7 | node_modules/
8 |
--------------------------------------------------------------------------------
/client/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/favicon.ico
--------------------------------------------------------------------------------
/server_manager/electron/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compileOnSave": true
4 | }
5 |
--------------------------------------------------------------------------------
/client/web/assets/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/circle.png
--------------------------------------------------------------------------------
/client/web/assets/logo-nav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/logo-nav.png
--------------------------------------------------------------------------------
/docs/resources/logo_client.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/docs/resources/logo_client.png
--------------------------------------------------------------------------------
/docs/resources/logo_manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/docs/resources/logo_manager.png
--------------------------------------------------------------------------------
/client/web/assets/brand-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/brand-logo.png
--------------------------------------------------------------------------------
/server_manager/images/metrics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/metrics.png
--------------------------------------------------------------------------------
/client/electron/icons/mac/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/mac/icon.icns
--------------------------------------------------------------------------------
/client/electron/icons/png/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/16x16.png
--------------------------------------------------------------------------------
/client/electron/icons/png/24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/24x24.png
--------------------------------------------------------------------------------
/client/electron/icons/png/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/32x32.png
--------------------------------------------------------------------------------
/client/electron/icons/png/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/48x48.png
--------------------------------------------------------------------------------
/client/electron/icons/png/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/64x64.png
--------------------------------------------------------------------------------
/client/electron/icons/win/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/win/icon.ico
--------------------------------------------------------------------------------
/client/resources/electron/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/electron/icon.png
--------------------------------------------------------------------------------
/client/resources/tray/connected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/tray/connected.png
--------------------------------------------------------------------------------
/client/web/assets/privacy-lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/privacy-lock.png
--------------------------------------------------------------------------------
/server_manager/images/key-tip-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/key-tip-2x.png
--------------------------------------------------------------------------------
/server_manager/images/tos-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/tos-icon.png
--------------------------------------------------------------------------------
/client/electron/icons/png/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/128x128.png
--------------------------------------------------------------------------------
/client/electron/icons/png/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/256x256.png
--------------------------------------------------------------------------------
/client/electron/icons/png/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/512x512.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-29.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-50.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-57.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-72.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-76.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-16.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-32.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-64.png
--------------------------------------------------------------------------------
/client/resources/tray/disconnected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/tray/disconnected.png
--------------------------------------------------------------------------------
/client/web/assets/brand-logo-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/brand-logo-dark.png
--------------------------------------------------------------------------------
/client/web/assets/material_icons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/material_icons.woff2
--------------------------------------------------------------------------------
/server_manager/images/github-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/github-icon.png
--------------------------------------------------------------------------------
/server_manager/images/reddit-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/reddit-icon.png
--------------------------------------------------------------------------------
/server_manager/images/server-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/server-icon.png
--------------------------------------------------------------------------------
/client/electron/icons/png/1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/icons/png/1024x1024.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-20@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-20@3x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-29@1x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-29@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-29@3x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-40@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-40@3x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-50@1x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-50@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-57@1x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-57@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-60@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-60@3x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-72@1x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-72@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-76@1x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-76@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-1024.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-128.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-256.png
--------------------------------------------------------------------------------
/client/resources/icons/osx/icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/osx/icon-512.png
--------------------------------------------------------------------------------
/client/web/assets/outline-client-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/outline-client-logo.png
--------------------------------------------------------------------------------
/server_manager/images/aws-thumbnail-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/aws-thumbnail-1.png
--------------------------------------------------------------------------------
/server_manager/images/aws-thumbnail-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/aws-thumbnail-2.png
--------------------------------------------------------------------------------
/server_manager/images/connect-tip-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/connect-tip-2x.png
--------------------------------------------------------------------------------
/server_manager/images/connected_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/connected_large.png
--------------------------------------------------------------------------------
/server_manager/images/flags/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/flags/unknown.png
--------------------------------------------------------------------------------
/server_manager/images/gcp-thumbnail-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-thumbnail-1.png
--------------------------------------------------------------------------------
/server_manager/images/gcp-thumbnail-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-thumbnail-2.png
--------------------------------------------------------------------------------
/server_manager/images/launcher-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/launcher-icon.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-512@2x.png
--------------------------------------------------------------------------------
/client/resources/icons/ios/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/ios/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/client/web/assets/jigsaw_sans_medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/web/assets/jigsaw_sans_medium.woff2
--------------------------------------------------------------------------------
/server_manager/electron/icons/mac/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/mac/icon.icns
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/16x16.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/24x24.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/32x32.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/48x48.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/64x64.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/win/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/win/icon.ico
--------------------------------------------------------------------------------
/server_manager/images/Material-Icons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/Material-Icons.woff2
--------------------------------------------------------------------------------
/server_manager/images/gcp-screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-screenshot-1.png
--------------------------------------------------------------------------------
/server_manager/images/gcp-screenshot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-screenshot-2.png
--------------------------------------------------------------------------------
/third_party/newtonsoft/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/newtonsoft/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/third_party/tap-windows6/MSCV-VSClass3.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/MSCV-VSClass3.cer
--------------------------------------------------------------------------------
/third_party/tap-windows6/installer/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/installer/icon.ico
--------------------------------------------------------------------------------
/client/resources/icons/android/icon_hdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/android/icon_hdpi.png
--------------------------------------------------------------------------------
/client/resources/icons/android/icon_mdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/android/icon_mdpi.png
--------------------------------------------------------------------------------
/client/resources/icons/android/icon_xhdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/android/icon_xhdpi.png
--------------------------------------------------------------------------------
/client/resources/icons/android/icon_xxhdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/android/icon_xxhdpi.png
--------------------------------------------------------------------------------
/docs/resources/invitation_instructions_001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/docs/resources/invitation_instructions_001.png
--------------------------------------------------------------------------------
/docs/resources/invitation_instructions_002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/docs/resources/invitation_instructions_002.png
--------------------------------------------------------------------------------
/docs/resources/invitation_instructions_003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/docs/resources/invitation_instructions_003.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/128x128.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/256x256.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/512x512.png
--------------------------------------------------------------------------------
/server_manager/images/aws-lightsail-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/aws-lightsail-setup.png
--------------------------------------------------------------------------------
/server_manager/images/manager-about-logo2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/manager-about-logo2x.png
--------------------------------------------------------------------------------
/server_manager/images/manager-profile-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/manager-profile-2x.png
--------------------------------------------------------------------------------
/server_manager/images/server-icon-selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/server-icon-selected.png
--------------------------------------------------------------------------------
/server_manager/images/server-unreachable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/server-unreachable.png
--------------------------------------------------------------------------------
/third_party/tap-windows6/bin/amd64/tap0901.cat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/bin/amd64/tap0901.cat
--------------------------------------------------------------------------------
/third_party/tap-windows6/bin/amd64/tap0901.sys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/bin/amd64/tap0901.sys
--------------------------------------------------------------------------------
/third_party/tap-windows6/bin/i386/tap0901.cat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/bin/i386/tap0901.cat
--------------------------------------------------------------------------------
/third_party/tap-windows6/bin/i386/tap0901.sys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/bin/i386/tap0901.sys
--------------------------------------------------------------------------------
/client/electron/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../web/tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../output/electron"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/client/resources/icons/android/icon_xxxhdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/icons/android/icon_xxxhdpi.png
--------------------------------------------------------------------------------
/server_manager/electron/icons/png/1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/electron/icons/png/1024x1024.png
--------------------------------------------------------------------------------
/third_party/tap-windows6/bin/i386/tapinstall.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/bin/i386/tapinstall.exe
--------------------------------------------------------------------------------
/third_party/tap-windows6/installer/ShellLink.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/installer/ShellLink.dll
--------------------------------------------------------------------------------
/server_manager/images/aws-lightsail-thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/aws-lightsail-thumbnail.png
--------------------------------------------------------------------------------
/third_party/tap-windows6/bin/amd64/tapinstall.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/bin/amd64/tapinstall.exe
--------------------------------------------------------------------------------
/third_party/tap-windows6/installer/install-whirl.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/third_party/tap-windows6/installer/install-whirl.bmp
--------------------------------------------------------------------------------
/server_manager/images/gcp-create-instance-screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-create-instance-screenshot.png
--------------------------------------------------------------------------------
/server_manager/images/gcp-create-instance-thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-create-instance-thumbnail.png
--------------------------------------------------------------------------------
/server_manager/images/gcp-create-project-screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-create-project-screenshot.png
--------------------------------------------------------------------------------
/server_manager/images/gcp-create-project-thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/server_manager/images/gcp-create-project-thumbnail.png
--------------------------------------------------------------------------------
/client/electron/windows/digicert-usb-config/eToken-macos.cfg:
--------------------------------------------------------------------------------
1 | name=eToken
2 | description=SunPKCS11 via Digicert SafeNet Authentication Client
3 | library=/usr/local/lib/libeToken.dylib
4 |
--------------------------------------------------------------------------------
/client/electron/windows/smartdnsblock/bin/smartdnsblock.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/windows/smartdnsblock/bin/smartdnsblock.exe
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/drawable/small_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/src/cordova/plugin/android/res/drawable/small_icon.png
--------------------------------------------------------------------------------
/client/electron/windows/digicert-usb-config/eToken-windows.cfg:
--------------------------------------------------------------------------------
1 | name=eToken
2 | description=SunPKCS11 via Digicert SafeNet Authentication Client
3 | library=c:\WINDOWS\system32\eTPKCS11.dll
4 |
--------------------------------------------------------------------------------
/client/electron/linux_proxy_controller/dist/OutlineProxyController:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/linux_proxy_controller/dist/OutlineProxyController
--------------------------------------------------------------------------------
/client/src/cordova/apple/OutlineAppleLib/README.md:
--------------------------------------------------------------------------------
1 | # OutlineAppleLib
2 |
3 | This package provides all Outline Apple logic, including the Outline Tun2socks
4 | framework, as a Swift Package.
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/AppIcon.icon/Assets/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/src/cordova/apple/xcode/AppIcon.icon/Assets/icon-1024.png
--------------------------------------------------------------------------------
/server_manager/electron/windows/digicert-usb-config/eToken-macos.cfg:
--------------------------------------------------------------------------------
1 | name=eToken
2 | description=SunPKCS11 via Digicert SafeNet Authentication Client
3 | library=/usr/local/lib/libeTPkcs11.dylib
4 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/.gitignore:
--------------------------------------------------------------------------------
1 | dist/**
2 | *.pyc
3 | *.tar.gz
4 | src/config.h
5 | src/SOURCES
6 | src/build*.log
7 | src/obj*
8 | src/i386
9 | src/amd64
10 | tap-windows-*.exe
11 |
--------------------------------------------------------------------------------
/client/resources/splashscreen/android/splash_screen_icon_xxxhdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/splashscreen/android/splash_screen_icon_xxxhdpi.png
--------------------------------------------------------------------------------
/server_manager/electron/windows/digicert-usb-config/eToken-windows.cfg:
--------------------------------------------------------------------------------
1 | name=eToken
2 | description=SunPKCS11 via Digicert SafeNet Authentication Client
3 | library=c:\WINDOWS\system32\eTPKCS11.dll
4 |
--------------------------------------------------------------------------------
/client/resources/splashscreen/ios/splashscreen@2x~universal~anyany.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/resources/splashscreen/ios/splashscreen@2x~universal~anyany.png
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "dbaeumer.vscode-eslint",
4 | "runem.lit-plugin"
5 | ],
6 | "unwantedRecommendations": [
7 | "esbenp.prettier-vscode"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/client/electron/windows/OutlineService/OutlineService/bin/OutlineService.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/electron/windows/OutlineService/OutlineService/bin/OutlineService.exe
--------------------------------------------------------------------------------
/client/electron/windows/OutlineService/OutlineService/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "開く";
2 | "quit" = "終了";
3 | "disconnect_button_label" = "接続を切断";
4 | "connect_button_label" = "接続";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "열기";
2 | "quit" = "종료";
3 | "disconnect_button_label" = "연결 해제";
4 | "connect_button_label" = "연결";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sq.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Hap";
2 | "quit" = "Dil";
3 | "disconnect_button_label" = "Shkëput";
4 | "connect_button_label" = "Lidh";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "打开";
2 | "quit" = "退出";
3 | "disconnect_button_label" = "断开连接";
4 | "connect_button_label" = "连接";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "開啟";
2 | "quit" = "退出";
3 | "disconnect_button_label" = "中斷連線";
4 | "connect_button_label" = "連線";
5 |
--------------------------------------------------------------------------------
/client/electron/windows/smartdnsblock/smartdnsblock/smartdnsblock.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/am.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "ክፈት";
2 | "quit" = "ጨርስ";
3 | "disconnect_button_label" = "የእርስዎ ግብረመልስ";
4 | "connect_button_label" = "አገናኝ";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/he.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "פתיחה";
2 | "quit" = "יציאה";
3 | "disconnect_button_label" = "ניתוק";
4 | "connect_button_label" = "חיבור";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/kk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Ашу";
2 | "quit" = "Шығу";
3 | "disconnect_button_label" = "Ажырату";
4 | "connect_button_label" = "Жалғау";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/km.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "បើក";
2 | "quit" = "ចាកចេញ";
3 | "disconnect_button_label" = "ផ្តាច់";
4 | "connect_button_label" = "ភ្ជាប់";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper-shared-8.13.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper-shared-8.13.jar
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/af.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Oop";
2 | "quit" = "Verlaat";
3 | "disconnect_button_label" = "Ontkoppel";
4 | "connect_button_label" = "Koppel";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ar.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "فتح";
2 | "quit" = "إنهاء";
3 | "disconnect_button_label" = "قطع الاتصال";
4 | "connect_button_label" = "اتصال";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ca.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Obre";
2 | "quit" = "Surt";
3 | "disconnect_button_label" = "Desconnecta";
4 | "connect_button_label" = "Connecta";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Open";
2 | "quit" = "Quit";
3 | "disconnect_button_label" = "Disconnect";
4 | "connect_button_label" = "Connect";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/hy.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Բացել";
2 | "quit" = "Փակել";
3 | "disconnect_button_label" = "Անջատել";
4 | "connect_button_label" = "Միանալ";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/is.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Opna";
2 | "quit" = "Hætta";
3 | "disconnect_button_label" = "Aftengja";
4 | "connect_button_label" = "Tengja";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/it.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Apri";
2 | "quit" = "Esci";
3 | "disconnect_button_label" = "Disconnetti";
4 | "connect_button_label" = "Connetti";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/mn.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Нээх";
2 | "quit" = "Гарах";
3 | "disconnect_button_label" = "Салгах";
4 | "connect_button_label" = "Холбогдох";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/pl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Otwórz";
2 | "quit" = "Zamknij";
3 | "disconnect_button_label" = "Odłącz";
4 | "connect_button_label" = "Połącz";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Abrir";
2 | "quit" = "Sair";
3 | "disconnect_button_label" = "Desligar";
4 | "connect_button_label" = "Ligar";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/tr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Aç";
2 | "quit" = "Çık";
3 | "disconnect_button_label" = "Bağlantıyı kes";
4 | "connect_button_label" = "Bağlan";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/vi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Mở";
2 | "quit" = "Thoát";
3 | "disconnect_button_label" = "Ngắt kết nối";
4 | "connect_button_label" = "Kết nối";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/az.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Açın";
2 | "quit" = "Çıxın";
3 | "disconnect_button_label" = "Bağlantını kəsin";
4 | "connect_button_label" = "Qoşulun";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/bs.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Otvori";
2 | "quit" = "Napusti";
3 | "disconnect_button_label" = "Prekini vezu";
4 | "connect_button_label" = "Poveži";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/cs.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Otevřít";
2 | "quit" = "Zavřít";
3 | "disconnect_button_label" = "Odpojit";
4 | "connect_button_label" = "Připojit";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/el.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Άνοιγμα";
2 | "quit" = "Έξοδος";
3 | "disconnect_button_label" = "Αποσύνδεση";
4 | "connect_button_label" = "Σύνδεση";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Open";
2 | "quit" = "Exit";
3 | "disconnect_button_label" = "Disconnect";
4 | "connect_button_label" = "Connect";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/es.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Abrir";
2 | "quit" = "Cerrar";
3 | "disconnect_button_label" = "Desconectar";
4 | "connect_button_label" = "Conectar";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/et.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Ava";
2 | "quit" = "Välju";
3 | "disconnect_button_label" = "Katkesta ühendus";
4 | "connect_button_label" = "Ühenda";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/fa.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "باز کردن";
2 | "quit" = "خروج";
3 | "disconnect_button_label" = "قطع اتصال";
4 | "connect_button_label" = "متصل کردن";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/fi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Avaa";
2 | "quit" = "Sulje";
3 | "disconnect_button_label" = "Katkaise yhteys";
4 | "connect_button_label" = "Yhdistä";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/fil.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Buksan";
2 | "quit" = "Umalis";
3 | "disconnect_button_label" = "Idiskonekta";
4 | "connect_button_label" = "Ikonekta";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/hr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Otvori";
2 | "quit" = "Zatvori";
3 | "disconnect_button_label" = "Prekini vezu";
4 | "connect_button_label" = "Poveži";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/lo.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "ເປີດ";
2 | "quit" = "ປິດ";
3 | "disconnect_button_label" = "ຕັດການເຊື່ອມຕໍ່";
4 | "connect_button_label" = "ເຊື່ອມຕໍ່";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/no.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Åpne";
2 | "quit" = "Avslutt";
3 | "disconnect_button_label" = "Koble fra";
4 | "connect_button_label" = "Koble til";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Abrir";
2 | "quit" = "Sair";
3 | "disconnect_button_label" = "Desconectar";
4 | "connect_button_label" = "Conectar";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Открыть";
2 | "quit" = "Выйти";
3 | "disconnect_button_label" = "Отключить";
4 | "connect_button_label" = "Подключить";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Otvoriť";
2 | "quit" = "Ukončiť";
3 | "disconnect_button_label" = "Odpojiť";
4 | "connect_button_label" = "Pripojiť";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Odpri";
2 | "quit" = "Zapri";
3 | "disconnect_button_label" = "Prekini povezavo";
4 | "connect_button_label" = "Poveži";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sv.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Öppna";
2 | "quit" = "Avsluta";
3 | "disconnect_button_label" = "Koppla från";
4 | "connect_button_label" = "Anslut";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sw.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Fungua";
2 | "quit" = "Funga";
3 | "disconnect_button_label" = "Tenganisha";
4 | "connect_button_label" = "Unganisha";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ta.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "திற";
2 | "quit" = "வெளியேறு";
3 | "disconnect_button_label" = "இணைப்பைத் துண்டி";
4 | "connect_button_label" = "இணை";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Abrir";
2 | "quit" = "Salir";
3 | "disconnect_button_label" = "Desconectar";
4 | "connect_button_label" = "Conectar";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/fr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Ouvrir";
2 | "quit" = "Quitter";
3 | "disconnect_button_label" = "Déconnecter";
4 | "connect_button_label" = "Connecter";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/hi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "खोलें";
2 | "quit" = "छोड़ें";
3 | "disconnect_button_label" = "डिसकनेक्ट करें";
4 | "connect_button_label" = "कनेक्ट करें";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/id.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Buka";
2 | "quit" = "Tutup";
3 | "disconnect_button_label" = "Berhenti hubungkan";
4 | "connect_button_label" = "Sambungkan";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/lt.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Atidaryti";
2 | "quit" = "Išeiti";
3 | "disconnect_button_label" = "Atsijungti";
4 | "connect_button_label" = "Prisijungti";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/mr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "उघडा";
2 | "quit" = "बाहेर पडा";
3 | "disconnect_button_label" = "डिस्कनेक्ट करा";
4 | "connect_button_label" = "कनेक्ट करा";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ms.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Buka";
2 | "quit" = "Keluar";
3 | "disconnect_button_label" = "Putuskan sambungan";
4 | "connect_button_label" = "Sambung";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ro.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Deschideți";
2 | "quit" = "Ieșiți";
3 | "disconnect_button_label" = "Deconectați";
4 | "connect_button_label" = "Conectați";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Отвори";
2 | "quit" = "Затвори";
3 | "disconnect_button_label" = "Прекини везу";
4 | "connect_button_label" = "Повежи се";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/th.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "เปิด";
2 | "quit" = "ปิด";
3 | "disconnect_button_label" = "ยกเลิกการเชื่อมต่อ";
4 | "connect_button_label" = "เชื่อมต่อ";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/uk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Відкрити";
2 | "quit" = "Вийти";
3 | "disconnect_button_label" = "Відключити";
4 | "connect_button_label" = "Підключити";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/da.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Åbn";
2 | "quit" = "Luk";
3 | "disconnect_button_label" = "Afbryd forbindelsen";
4 | "connect_button_label" = "Opret forbindelse";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/de.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Öffnen";
2 | "quit" = "Beenden";
3 | "disconnect_button_label" = "Verbindung trennen";
4 | "connect_button_label" = "Verbinden";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/hu.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Megnyitás";
2 | "quit" = "Kilépés";
3 | "disconnect_button_label" = "Leválasztás";
4 | "connect_button_label" = "Csatlakozás";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ka.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "ღიაა";
2 | "quit" = "გასვლა";
3 | "disconnect_button_label" = "კავშირის გაწყვეტა";
4 | "connect_button_label" = "დაკავშირება";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/mk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Отвори";
2 | "quit" = "Излези";
3 | "disconnect_button_label" = "Прекини ја врската";
4 | "connect_button_label" = "Поврзување";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Otvori";
2 | "quit" = "Zatvori";
3 | "disconnect_button_label" = "Prekini vezu";
4 | "connect_button_label" = "Poveži se";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ur.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "کھولیں";
2 | "quit" = "بند کریں";
3 | "disconnect_button_label" = "غیر منسلک کریں";
4 | "connect_button_label" = "منسلک کریں";
5 |
--------------------------------------------------------------------------------
/server_manager/www/ui_components/licenses/db-ip_license.txt:
--------------------------------------------------------------------------------
1 | ------
2 |
3 | IP Geolocation by DB-IP (https://db-ip.com)
4 |
5 | This database is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/)
--------------------------------------------------------------------------------
/client/electron/windows/OutlineService/OutlineService/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/bn.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "খুলুন";
2 | "quit" = "বেরিয়ে আসুন";
3 | "disconnect_button_label" = "ডিসকানেক্ট করুন";
4 | "connect_button_label" = "কানেক্ট করুন";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/my.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "ဖွင့်ရန်";
2 | "quit" = "ထွက်ရန်";
3 | "disconnect_button_label" = "ချိတ်ဆက်မှု ဖြုတ်ရန်";
4 | "connect_button_label" = "ချိတ်ဆက်ရန်";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/si.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "විවෘතයි";
2 | "quit" = "ඉවත් වන්න";
3 | "disconnect_button_label" = "විසන්ධි කරන්න";
4 | "connect_button_label" = "සම්බන්ධ කරන්න";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cordova-plugin-outline",
3 | "version": "0.0.0",
4 | "cordova": {
5 | "id": "cordova-plugin-outline",
6 | "platforms": [
7 | "android",
8 | "ios"
9 | ]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/bg.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Отваряне";
2 | "quit" = "Излизане";
3 | "disconnect_button_label" = "Прекратяване на връзката";
4 | "connect_button_label" = "Свързване";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/nl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Openen";
2 | "quit" = "Sluiten";
3 | "disconnect_button_label" = "Verbinding verbreken";
4 | "connect_button_label" = "Verbinding maken";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/client.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/lv.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "Atvērt";
2 | "quit" = "Aizvērt";
3 | "disconnect_button_label" = "Pārtraukt savienojumu";
4 | "connect_button_label" = "Izveidot savienojumu";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Strings/ne.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "tray_open_window" = "खोल्नुहोस्";
2 | "quit" = "बाहिरिनुहोस्";
3 | "disconnect_button_label" = "डिस्कनेक्ट गर्नुहोस्";
4 | "connect_button_label" = "कनेक्ट गर्नुहोस्";
5 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/OutlineAppleLib/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.build
3 | /Packages
4 | /*.xcodeproj
5 | /*.xcframework
6 | xcuserdata/
7 | DerivedData/
8 | .swiftpm/config/registries.json
9 | .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
10 | .netrc
11 | Package.resolved
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .idea
3 | .task
4 | .vs/
5 | *.DS_Store
6 | *.env
7 | *.pdb
8 | *.sw?
9 | /server_manager/node_modules
10 | /server_manager/install_scripts/do_install_script.ts
11 | /server_manager/install_scripts/gcp_install_script.ts
12 | /output
13 | /build
14 |
15 | *storybook.log
16 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/src/MAKEFILE:
--------------------------------------------------------------------------------
1 | #
2 | # DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
3 | # file to this component. This file merely indirects to the real make file
4 | # that is shared by all the driver components of the Windows NT DDK
5 | #
6 |
7 | !INCLUDE $(NTMAKEENV)\makefile.def
8 |
9 |
--------------------------------------------------------------------------------
/client/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /output
3 | /platforms
4 | /plugins
5 | /third_party/Potatso/Pods
6 | /www
7 | coverage
8 | info.txt
9 | keystore.p12
10 | obj/
11 | Outline.apk
12 | Outline.apks
13 | packages/
14 | toc.pb
15 | tools/smartdnsblock/bin/*
16 | !tools/smartdnsblock/bin/*.exe
17 | universal.apk
18 | xcuserdata/
19 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Apr 25 20:35:36 EDT 2025
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/client.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/client.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/outline-black-off-2x.png
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 | local.properties
16 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OutlineFoundation/outline-apps/HEAD/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/outline-black-on-2x.png
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @Jigsaw-Code/outline-dev
2 |
3 | /client/go/ @Jigsaw-Code/outline-networking-owners
4 | /client/src/cordova/plugin/ @Jigsaw-Code/outline-networking-owners
5 | /third_party/ @Jigsaw-Code/outline-networking-owners
6 |
7 | /client/web/model/ @fortuna
8 | /server_manager/model/ @fortuna
9 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 |
3 | # Windows Batch Script
4 | *.bat eol=crlf
5 |
6 | # NSIS Installation Script
7 | *.nsh eol=crlf
8 |
9 | # Tap Driver Installation Script
10 | third_party/tap-windows6/bin/**/*.inf eol=crlf
11 | third_party/tap-windows6/bin/**/*.h eol=crlf
12 |
13 | # Allow the build folders to be searched by GitHub's T file search
14 | build/** linguist-generated=false
15 |
--------------------------------------------------------------------------------
/client/web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../www",
5 | "lib": [
6 | "es2022",
7 | "dom",
8 | "dom.iterable"
9 | ],
10 | "paths": {
11 | // without this, import 'electron' resolves to ./client/electron/index.ts
12 | "electron": [
13 | "./node_modules/electron/index.js"
14 | ]
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/third_party/sentry-android/METADATA:
--------------------------------------------------------------------------------
1 | name: "sentry-android"
2 | description: "Crash and error reporting framework. Sentry SDK for Android."
3 |
4 | third_party {
5 | url {
6 | type: HOMEPAGE
7 | value: "https://sentry.io"
8 | }
9 | url {
10 | type: GIT
11 | value: "https://github.com/getsentry/sentry-android/"
12 | }
13 | version: "2.0.2"
14 | last_upgrade_date { year: 2020 month: 03 day: 04 }
15 | }
16 |
--------------------------------------------------------------------------------
/third_party/newtonsoft/METADATA:
--------------------------------------------------------------------------------
1 | name: "Newtonsoft.Json"
2 | description:
3 | "Json.NET is a high-performance JSON framework for .NET."
4 |
5 | third_party {
6 | url {
7 | type: HOMEPAGE
8 | value: "https://www.newtonsoft.com/json"
9 | }
10 | url {
11 | type: GIT
12 | value: "https://github.com/JamesNK/Newtonsoft.Json"
13 | }
14 | version: "11.0.0"
15 | last_upgrade_date { year: 2018 month: 6 day: 26 }
16 | }
17 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "eslint.run": "onSave",
3 | "eslint.validate": ["javascript", "typescript"],
4 | "files.insertFinalNewline": true,
5 | "[go]": {
6 | "editor.formatOnSave": true
7 | },
8 | "[javascript]": {
9 | "editor.codeActionsOnSave": {
10 | "source.fixAll.eslint": "always"
11 | },
12 | },
13 | "[typescript]": {
14 | "editor.codeActionsOnSave": {
15 | "source.fixAll.eslint": "always"
16 | },
17 | },
18 | }
19 |
--------------------------------------------------------------------------------
/client/web/views/licenses_view/licenses/README.md:
--------------------------------------------------------------------------------
1 | # HOWTO re-generate `licenses.txt`
2 |
3 | ## Steps
4 |
5 | - `cd` to the root of your clone of this repo.
6 | - Ensure `node_modules` is up to date by running `npm ci`.
7 | - `npx generate-license-file --input package.json --output client/web/views/licenses_view/licenses/licenses.txt`
8 | - `./client/web/views/licenses_view/licenses/third_party.sh >> ./client/web/views/licenses_view/licenses/licenses.txt`
9 |
10 | Done!
11 |
--------------------------------------------------------------------------------
/third_party/jsign/METADATA:
--------------------------------------------------------------------------------
1 | name: "Jsign"
2 | description:
3 | "Java implementation of Microsoft Authenticode for signing Windows "
4 | "executable files, installers and scripts."
5 |
6 | third_party {
7 | url {
8 | type: HOMEPAGE
9 | value: "https://ebourg.github.io/jsign/"
10 | }
11 | url {
12 | type: GIT
13 | value: "https://github.com/ebourg/jsign"
14 | }
15 | version: "4.2"
16 | last_upgrade_date { year: 2022 month: 10 day: 6 }
17 | }
18 |
--------------------------------------------------------------------------------
/.browserslistrc:
--------------------------------------------------------------------------------
1 | # browserslist only has data for latest chrome android: https://github.com/Fyrd/caniuse/issues/2413#issuecomment-206673558
2 | android >= 127
3 |
4 | # We use Electron v19.1.
5 | # This is the version of Chrome it requires:
6 | chrome >= 102
7 |
8 | # This is the iOS deployment target specified in the config.xml:
9 | ios >= 15.5
10 |
11 | # Our MacOS project specifies 10.14 as the build target.
12 | # This is the corresponding Safari version:
13 | safari >= 14
14 |
--------------------------------------------------------------------------------
/infrastructure/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "experimentalDecorators": true,
4 | "target": "es2022",
5 | "module": "commonjs",
6 | "noImplicitAny": true,
7 | "noImplicitThis": true,
8 | "rootDir": ".",
9 | "outDir": "./dist",
10 | "declaration": true,
11 | "esModuleInterop": true,
12 | "forceConsistentCasingInFileNames": true,
13 | "strict": true,
14 | "skipLibCheck": true
15 | },
16 | "include": ["*.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/docs/life_of_a_packet.md:
--------------------------------------------------------------------------------
1 | # Life of a Packet
2 |
3 | ```mermaid
4 | flowchart LR
5 | A(Apps) <--> S(Socket)
6 | subgraph Operating System
7 | S <--> R(Routing Table)
8 | end
9 | R <-- Outline OFF --> IF(Network Interface)
10 | IF <--> INET(((Internet)))
11 | R <-- Outline ON --> TUN(Tun Device)
12 | TUN <--> T2S(Tun2sockets)
13 | subgraph Outline Client
14 | T2S <--> SC(Shadowsocks Client)
15 | end
16 | SC <--> IF
17 | click TUN "https://en.wikipedia.org/wiki/TUN/TAP" _blank
18 | ```
19 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "outline-black-off-2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/Resources/Assets.xcassets/status_bar_button_image_connected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "outline-black-on-2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/OutlineLauncher/OutlineLauncher.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.networking.networkextension
6 |
7 | packet-tunnel-provider
8 |
9 | com.apple.security.app-sandbox
10 |
11 | com.apple.security.files.user-selected.read-only
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/server_manager/electron/release/macos.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.cs.allow-unsigned-executable-memory
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.network.client
10 |
11 | com.apple.security.network.server
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyAccessedAPITypes
6 |
7 |
8 | NSPrivacyAccessedAPIType
9 | NSPrivacyAccessedAPICategoryUserDefaults
10 | NSPrivacyAccessedAPITypeReasons
11 |
12 | 1C8F.1
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/METADATA:
--------------------------------------------------------------------------------
1 | name: "tap-windows6"
2 | description:
3 | "Provides a TAP driver on Windows. In conjunction with tun2socks this "
4 | "allows Shadowsocks to act as a VPN for the whole system. From the OpenVPN "
5 | "project."
6 |
7 | third_party {
8 | url {
9 | type: HOMEPAGE
10 | value: "https://openvpn.net/index.php/download/community-downloads.html"
11 | }
12 | url {
13 | type: GIT
14 | value: "https://github.com/OpenVPN/tap-windows6"
15 | }
16 | version: "9.21.2"
17 | last_upgrade_date { year: 2018 month: 5 day: 7 }
18 | }
--------------------------------------------------------------------------------
/third_party/tap-windows6/src/config.h.in:
--------------------------------------------------------------------------------
1 | #define PRODUCT_NAME "@PRODUCT_NAME@"
2 | #define PRODUCT_VERSION "@PRODUCT_VERSION@"
3 | #define PRODUCT_VERSION_RESOURCE @PRODUCT_VERSION_RESOURCE@
4 | #define PRODUCT_TAP_WIN_COMPONENT_ID "@PRODUCT_TAP_WIN_COMPONENT_ID@"
5 | #define PRODUCT_TAP_WIN_MAJOR @PRODUCT_TAP_WIN_MAJOR@
6 | #define PRODUCT_TAP_WIN_MINOR @PRODUCT_TAP_WIN_MINOR@
7 | #define PRODUCT_TAP_WIN_PROVIDER "@PRODUCT_TAP_WIN_PROVIDER@"
8 | #define PRODUCT_TAP_WIN_DEVICE_DESCRIPTION "@PRODUCT_TAP_WIN_DEVICE_DESCRIPTION@"
9 | #define PRODUCT_TAP_WIN_RELDATE "@PRODUCT_TAP_WIN_RELDATE@"
10 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Outline.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.networking.networkextension
6 |
7 | packet-tunnel-provider
8 |
9 | com.apple.security.app-sandbox
10 |
11 | com.apple.security.application-groups
12 |
13 | group.org.getoutline.client
14 |
15 | com.apple.security.network.client
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/infrastructure/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@outline/infrastructure",
3 | "version": "0.0.0-debug",
4 | "private": true,
5 | "description": "Shared infrastructure code.",
6 | "scripts": {
7 | "clean": "rm -rf node_modules"
8 | },
9 | "devDependencies": {
10 | "@types/jasmine": "^5.1.4",
11 | "@types/node-forge": "^1.3.11",
12 | "https-browserify": "^1.0.0",
13 | "intl-messageformat": "^10.5.11",
14 | "jasmine": "^5.1.0",
15 | "stream-http": "^3.2.0",
16 | "typescript": "^5.4.5"
17 | },
18 | "dependencies": {
19 | "chalk": "^5.3.0",
20 | "node-fetch": "^3.3.2",
21 | "node-forge": "^1.3.1",
22 | "ws": "^8.18.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/client/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowJs": true,
4 | "baseUrl": "./",
5 | "esModuleInterop": true,
6 | "experimentalDecorators": true,
7 | "module": "commonjs",
8 | "moduleResolution": "node",
9 | "noImplicitAny": true,
10 | "noImplicitThis": true,
11 | "outDir": "build",
12 | "removeComments": false,
13 | "resolveJsonModule": true,
14 | "rootDir": "../",
15 | "skipLibCheck": true,
16 | "target": "es2017",
17 | "lib": [
18 | "es2022"
19 | ]
20 | },
21 | "exclude": [
22 | "*.cjs",
23 | "*.js",
24 | "*.mjs"
25 | ],
26 | "include": [
27 | "electron",
28 | "go",
29 | "src",
30 | "web"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/version.m4:
--------------------------------------------------------------------------------
1 | dnl define the TAP version
2 | define([PRODUCT_NAME], [TAP-Windows])
3 | define([PRODUCT_PUBLISHER], [OpenVPN Technologies, Inc.])
4 | define([PRODUCT_VERSION], [9.22.1])
5 | define([PRODUCT_VERSION_RESOURCE], [9,0,0,22])
6 | define([PRODUCT_TAP_WIN_COMPONENT_ID], [tap0901])
7 | define([PRODUCT_TAP_WIN_MAJOR], [9])
8 | define([PRODUCT_TAP_WIN_MINOR], [22])
9 | define([PRODUCT_TAP_WIN_REVISION], [1])
10 | define([PRODUCT_TAP_WIN_BUILD], [601])
11 | define([PRODUCT_TAP_WIN_PROVIDER], [TAP-Windows Provider V9])
12 | define([PRODUCT_TAP_WIN_CHARACTERISTICS], [0x81])
13 | define([PRODUCT_TAP_WIN_DEVICE_DESCRIPTION], [TAP-Windows Adapter V9])
14 | define([PRODUCT_TAP_WIN_RELDATE], [04/15/2018])
15 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/OutlineLib/VpnExtension/VpnExtension.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.networking.networkextension
6 |
7 | packet-tunnel-provider
8 |
9 | com.apple.security.app-sandbox
10 |
11 | com.apple.security.application-groups
12 |
13 | group.org.getoutline.client
14 |
15 | com.apple.security.network.client
16 |
17 | com.apple.security.network.server
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2024 The Outline Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | module.exports = {
18 | ...require('gts/.prettierrc.json')
19 | }
20 |
--------------------------------------------------------------------------------
/server_manager/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "removeComments": false,
4 | "noImplicitAny": true,
5 | "noImplicitThis": true,
6 | "module": "commonjs",
7 | "moduleResolution": "Node",
8 | "sourceMap": true,
9 | "experimentalDecorators": true,
10 | "allowJs": true,
11 | "resolveJsonModule": true,
12 | "noUnusedLocals": true,
13 | "skipLibCheck": true,
14 | "target": "es2021",
15 | "lib": ["dom", "es2022"]
16 | },
17 | "rootDir": ".",
18 | "include": ["**/*.ts"],
19 | "exclude": [
20 | "node_modules",
21 | // FIXME: these tests fail with a runtime error because app.ts depends on
22 | // polymer, which targets the browser and uses ES6 imports.
23 | "www/app.spec.ts"
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/paths.py:
--------------------------------------------------------------------------------
1 | # Copyright 2024 The Outline Authors
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # Windows 7 DDK
16 | DDK = "C:\\winddk\\7600.16385.1"
17 | NSIS = "C:\\Program Files (x86)\\NSIS"
18 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/.appveyor.yml:
--------------------------------------------------------------------------------
1 | # Copyright 2024 The Outline Authors
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | version: 1.0.{build}
16 | build_script:
17 | - cmd: python buildtap.py -b
18 | artifacts:
19 | - path: '*'
20 |
--------------------------------------------------------------------------------
/infrastructure/sleep.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2020 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | export function sleep(ms: number): Promise {
16 | return new Promise(resolve => setTimeout(resolve, ms));
17 | }
18 |
--------------------------------------------------------------------------------
/client/go/outline/useragent/goos.go:
--------------------------------------------------------------------------------
1 | // Copyright 2025 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build !maccatalyst
16 |
17 | package useragent
18 |
19 | import "runtime"
20 |
21 | const fixedGOOS = runtime.GOOS
22 |
--------------------------------------------------------------------------------
/server_manager/www/test.action.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | #
3 | # Copyright 2020 The Outline Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | set -e
18 |
19 | npm run action server_manager/www/build_install_script
20 | karma start "${ROOT_DIR}/server_manager/www/karma.conf.js"
21 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/OutlineLib/VpnExtension/Sources/VpnExtension-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | // Copyright 2024 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //
16 | // Use this file to import your target's public headers that you would like to expose to Swift.
17 | //
18 |
19 |
--------------------------------------------------------------------------------
/server_manager/types/jsonic.d.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | // Typings for:
16 | // https://www.npmjs.com/package/jsonic
17 |
18 | declare module 'jsonic' {
19 | function parse(s: string): {};
20 | namespace parse {}
21 | export = parse;
22 | }
23 |
--------------------------------------------------------------------------------
/client/go/outline/vpn/vpn_others.go:
--------------------------------------------------------------------------------
1 | // Copyright 2024 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build !linux
16 |
17 | package vpn
18 |
19 | func newPlatformVPNConn(conf *Config) (_ platformVPNConn, err error) {
20 | panic("VPN connection not supported on non-Linux OS")
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/TunnelConfig.aidl:
--------------------------------------------------------------------------------
1 | // Copyright 2020 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package org.outline;
16 |
17 | parcelable TunnelConfig {
18 | String id;
19 | String name;
20 | String transportConfig;
21 | }
22 |
--------------------------------------------------------------------------------
/server_manager/images/check_blue.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/server_manager/images/check_green.svg:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/server_manager/images/check_white.svg:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/server_manager/types/electron-to-chromium.d.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2021 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | // Typings for:
16 | // https://www.npmjs.com/package/electron-to-chromium
17 |
18 | declare module 'electron-to-chromium' {
19 | export function electronToChromium(s: string): string;
20 | }
21 |
--------------------------------------------------------------------------------
/server_manager/images/check_orange.svg:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/client/go/outline/dnsintercept/helpers.go:
--------------------------------------------------------------------------------
1 | // Copyright 2025 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package dnsintercept
16 |
17 | import "net/netip"
18 |
19 | func isEquivalentAddrPort(addr1, addr2 netip.AddrPort) bool {
20 | return addr1.Addr().Unmap() == addr2.Addr().Unmap() && addr1.Port() == addr2.Port()
21 | }
22 |
--------------------------------------------------------------------------------
/client/web/views/licenses_view/stories.ts:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2024 The Outline Authors
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 | http://www.apache.org/licenses/LICENSE-2.0
7 | Unless required by applicable law or agreed to in writing, software
8 | distributed under the License is distributed on an "AS IS" BASIS,
9 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 | See the License for the specific language governing permissions and
11 | limitations under the License.
12 | */
13 |
14 | import {html} from 'lit';
15 |
16 | import './index';
17 |
18 | export default {
19 | title: 'Client/Licenses View',
20 | component: 'licenses-view',
21 | };
22 |
23 | export const Example = () => html``;
24 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/apple/src/macos/Outline-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #ifndef Outline_Bridging_Header_h
16 | #define Outline_Bridging_Header_h
17 |
18 | #import
19 | #import
20 |
21 |
22 | #endif /* Outline_Bridging_Header_h */
23 |
--------------------------------------------------------------------------------
/server_manager/www/start.action.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Copyright 2018 The Outline Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | set -eu
18 |
19 | rm -rf "${BUILD_DIR}/server_manager/www"
20 |
21 | node infrastructure/build/run_action.mjs server_manager/www/build_install_script
22 |
23 | webpack-dev-server --config=server_manager/browser.webpack.js --open
24 |
--------------------------------------------------------------------------------
/client/electron/windows/OutlineService/OutlineService/bin/Release/OutlineService.exe.config:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | # Copyright 2024 The Outline Authors
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # Validate any changes to this file with:
16 | # curl -X POST --data-binary @codecov.yml https://codecov.io/validate
17 |
18 | coverage:
19 | status:
20 | project:
21 | default:
22 | informational: true
23 | patch:
24 | default:
25 | informational: true
26 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppDelegate+Outline.h:
--------------------------------------------------------------------------------
1 | // Copyright 2023 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #ifndef AppDelegate_Outline_h
16 | #define AppDelegate_Outline_h
17 |
18 | #import "AppDelegate.h"
19 |
20 | @interface AppDelegate (Outline)
21 | @end
22 |
23 | #endif /* AppDelegate_Outline_h */
24 |
25 |
--------------------------------------------------------------------------------
/client/build/make_replacements.mjs:
--------------------------------------------------------------------------------
1 | // Copyright 2024 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import replace from 'replace-in-file';
16 |
17 | export async function makeReplacements(replacements) {
18 | let results = [];
19 |
20 | for (const replacement of replacements) {
21 | results = [...results, ...(await replace(replacement))];
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/AppIcon.icon/icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "fill" : {
3 | "solid" : "display-p3:0.09412,0.21570,0.16077,1.00000"
4 | },
5 | "groups" : [
6 | {
7 | "layers" : [
8 | {
9 | "fill" : "automatic",
10 | "glass" : true,
11 | "hidden" : false,
12 | "image-name" : "icon-1024.png",
13 | "name" : "icon-1024",
14 | "position" : {
15 | "scale" : 1.4,
16 | "translation-in-points" : [
17 | 0,
18 | 0
19 | ]
20 | }
21 | }
22 | ],
23 | "shadow" : {
24 | "kind" : "neutral",
25 | "opacity" : 0.5
26 | },
27 | "translucency" : {
28 | "enabled" : true,
29 | "value" : 0.5
30 | }
31 | }
32 | ],
33 | "supported-platforms" : {
34 | "circles" : [
35 | "watchOS"
36 | ],
37 | "squares" : "shared"
38 | }
39 | }
--------------------------------------------------------------------------------
/server_manager/electron/start.action.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | #
3 | # Copyright 2018 The Outline Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | node infrastructure/build/run_action.mjs server_manager/electron/build "$@"
18 |
19 | cd "${BUILD_DIR}/server_manager/electron/static"
20 |
21 | OUTLINE_DEBUG='true' \
22 | SB_METRICS_URL='https://dev.metrics.getoutline.org' \
23 | electron .
24 |
--------------------------------------------------------------------------------
/server_manager/model/survey.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2020 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | export interface Surveys {
16 | // Displays a survey when a server default data limit is set.
17 | presentDataLimitsEnabledSurvey(): Promise;
18 | // Displays a survey when a server default data limit is removed.
19 | presentDataLimitsDisabledSurvey(): Promise;
20 | }
21 |
--------------------------------------------------------------------------------
/client/go/outline/useragent/goos_maccatalyst.go:
--------------------------------------------------------------------------------
1 | // Copyright 2025 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build maccatalyst
16 |
17 | package useragent
18 |
19 | // Fixes GOOS for when using maccatalyst because it's set to "ios".
20 | // See https://github.com/golang/mobile/blob/f12310a0cfd915e168e0cced7198eb3cd73aba76/cmd/gomobile/env.go#L73
21 | const fixedGOOS = "darwin"
22 |
--------------------------------------------------------------------------------
/client/web/types/shims.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2024 The Outline Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | declare module '*.png' {
18 | const value: string;
19 | export = value;
20 | }
21 |
22 | declare module '*.svg' {
23 | const value: string;
24 | export = value;
25 | }
26 |
27 | declare module '*.txt?raw' {
28 | const content: string;
29 | export default content;
30 | }
31 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/build.gradle:
--------------------------------------------------------------------------------
1 | // Copyright 2025 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
16 | plugins {
17 | // This version number must be kept in sync with AGP_VERSION in cordova-android.
18 | id 'com.android.library' version '8.7.3' apply false
19 | }
20 |
--------------------------------------------------------------------------------
/client/go/outline/electron/dialer_others.go:
--------------------------------------------------------------------------------
1 | // Copyright 2025 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build !windows
16 |
17 | package main
18 |
19 | import (
20 | "errors"
21 |
22 | "golang.getoutline.org/sdk/transport"
23 | )
24 |
25 | func newBaseDialersWithAdapter(nicIdx int) (transport.StreamDialer, transport.PacketDialer, error) {
26 | return nil, nil, errors.ErrUnsupported
27 | }
28 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/outline/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | # Make sure R8 won't remove any Outline classes.
24 | -keep class org.outline.** { *; }
25 |
--------------------------------------------------------------------------------
/infrastructure/test.action.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | #
3 | # Copyright 2024 The Outline Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | set -e
18 |
19 | readonly TEST_DIR="${BUILD_DIR}/js/infrastructure/"
20 | rm -rf "${TEST_DIR}"
21 |
22 | # Use commonjs modules, jasmine runs in node.
23 | tsc -p "${ROOT_DIR}/infrastructure" --outDir "${TEST_DIR}" --module commonjs
24 | jasmine "output/build/js/**/*.spec.js"
25 |
26 | rm -rf "${TEST_DIR}"
27 |
--------------------------------------------------------------------------------
/server_manager/www/views/server_view/icon_tooltip/stories.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2025 The Outline Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import {html} from 'lit';
18 | import '.';
19 |
20 | export default {
21 | title: 'Manager/Server View/Icon Tooltip',
22 | component: 'icon-tooltip',
23 | };
24 |
25 | export const Example = () => html`
26 |
27 | `;
28 |
--------------------------------------------------------------------------------
/infrastructure/build/get_root_dir.mjs:
--------------------------------------------------------------------------------
1 | // Copyright 2022 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import path from 'path';
16 | import url from 'url';
17 |
18 | // WARNING: if you move this file, you MUST update this file path
19 | const ROOT_DIR = path.resolve(
20 | path.dirname(url.fileURLToPath(import.meta.url)),
21 | '..',
22 | '..'
23 | );
24 |
25 | export function getRootDir() {
26 | return ROOT_DIR;
27 | }
28 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/OutlineAppleLib/Sources/OutlineCatalystApp/NSObject+Outline.swift:
--------------------------------------------------------------------------------
1 | // Copyright 2023 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import Foundation
16 |
17 | @objc
18 | public enum ConnectionStatus: Int {
19 | case unknown
20 | case connected
21 | case disconnected
22 | }
23 |
24 | public extension NSObject {
25 | @objc func _AppKitBridge_setConnectionStatus(_: ConnectionStatus) {}
26 | }
27 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/xcode/Outline/Classes/AppKitBridge/AppKitIntegration.h:
--------------------------------------------------------------------------------
1 | // Copyright 2023 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | //! Project version number for AppKitIntegration.
18 | FOUNDATION_EXPORT double AppKitIntegrationVersionNumber;
19 |
20 | //! Project version string for AppKitIntegration.
21 | FOUNDATION_EXPORT const unsigned char AppKitIntegrationVersionString[];
22 |
--------------------------------------------------------------------------------
/client/web/types/clipboard.d.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | type SuccessCallback = (text: string) => void;
16 | type FailureCallback = (error: Error) => void;
17 |
18 | interface CordovaPlugins {
19 | clipboard: {
20 | copy(text: string, onSuccess: SuccessCallback, onFailure: FailureCallback): void;
21 | paste(onSuccess: SuccessCallback, onFailure: FailureCallback): void;
22 | };
23 | }
24 |
--------------------------------------------------------------------------------
/client/web/types/webintents.d.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | interface WebIntent {
16 | getUri(callback: (url: string) => void): void;
17 | onNewIntent(callback: (url: string) => void): void;
18 | }
19 |
20 | interface Window {
21 | webintent: WebIntent;
22 |
23 | // cordova-ios calls a global function with this signature to handle URLs.
24 | handleOpenURL: (url: string) => void;
25 | }
26 |
--------------------------------------------------------------------------------
/server_manager/images/ic_done_white_24dp.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/client/electron/linux_proxy_controller/OutlineProxyControllerConfig.h.in:
--------------------------------------------------------------------------------
1 | /**
2 | * @file OutlineProxyControllerConfig.h.in
3 | * @author The Outline Authors
4 | * @brief CMake properties that can be used in C++ code
5 | *
6 | * @copyright Copyright (c) 2022 The Outline Authors
7 | *
8 | * Licensed under the Apache License, Version 2.0 (the "License");
9 | * you may not use this file except in compliance with the License.
10 | * You may obtain a copy of the License at
11 | *
12 | * http://www.apache.org/licenses/LICENSE-2.0
13 | *
14 | * Unless required by applicable law or agreed to in writing, software
15 | * distributed under the License is distributed on an "AS IS" BASIS,
16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | * See the License for the specific language governing permissions and
18 | * limitations under the License.
19 | */
20 |
21 | #pragma once
22 |
23 | #define OUTLINEVPN_NAME "@PROJECT_NAME@"
24 | #define OUTLINEVPN_VERSION "@PROJECT_VERSION@"
25 |
--------------------------------------------------------------------------------
/client/electron/linux_proxy_controller/dist/outline_proxy_controller.service:
--------------------------------------------------------------------------------
1 | # Copyright 2018 The Outline Authors
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | [Unit]
16 | Description=Outline Proxy Routing Controller
17 | Wants=network.target
18 | After=network.target
19 |
20 | [Service]
21 | Type=simple
22 | ExecStart=/usr/local/sbin/OutlineProxyController --socket-filename=/var/run/outline_controller --owning-user-id=-1
23 |
24 | [Install]
25 | WantedBy=multi-user.target
26 |
--------------------------------------------------------------------------------
/third_party/tap-windows6/CONTRIBUTING.rst:
--------------------------------------------------------------------------------
1 | Contributing to tap-windows6
2 | ============================
3 |
4 | To contribute to tap-windows6 please send your patches to openvpn-devel mailing
5 | list:
6 |
7 | - https://lists.sourceforge.net/lists/listinfo/openvpn-devel
8 |
9 | The subject line should look like this:
10 |
11 | [PATCH: tap-windows6] summary of the patch
12 |
13 | To avoid merging issues patches should be created with git-format-patch or sent
14 | using git-send-email. The easiest way to add the subject line prefix is to use
15 | this option:
16 |
17 | --subject-prefix='PATCH: tap-windows6'
18 |
19 | Patches that do not modify the actual driver code can be sent as GitHub pull
20 | requests. Try to split large patches into small, atomic pieces to make reviews
21 | and merging easier.
22 |
23 | If you want quick feedback on a patch, you can visit the #openvpn-devel channel
24 | on Freenode. Note that you need to be logged in to join the channel:
25 |
26 | - http://freenode.net/faq.shtml#nicksetup
27 |
--------------------------------------------------------------------------------
/tools.go:
--------------------------------------------------------------------------------
1 | // Copyright 2019 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build tools
16 | // +build tools
17 |
18 | // See https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module
19 | // and https://github.com/go-modules-by-example/index/blob/master/010_tools/README.md
20 |
21 | package tools
22 |
23 | import (
24 | _ "golang.org/x/mobile/cmd/gobind"
25 | _ "golang.org/x/mobile/cmd/gomobile"
26 | )
27 |
--------------------------------------------------------------------------------
/client/go/outline/useragent/useragent.go:
--------------------------------------------------------------------------------
1 | // Copyright 2025 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package useragent
16 |
17 | import (
18 | "fmt"
19 | "runtime"
20 | )
21 |
22 | func GetOutlineUserAgent() string {
23 | platform := fixedGOOS
24 | if platform == "darwin" {
25 | platform = "macos"
26 | }
27 | // TODO: Add Outline Client version.
28 | return fmt.Sprintf("Outline (%s; %s; %s)", platform, runtime.GOARCH, runtime.Version())
29 | }
30 |
--------------------------------------------------------------------------------
/server_manager/www/fetcher.spec.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2022 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import {makePathApiClient} from './fetcher';
16 |
17 | describe('makePathApiClient', () => {
18 | const api = makePathApiClient('https://api.github.com/repos/Jigsaw-Code/');
19 |
20 | it('GET', async () => {
21 | const response = await api.request<{name: string}>('outline-server');
22 | expect(response.name).toEqual('outline-server');
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/client.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "cocoalumberjack",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/CocoaLumberjack/CocoaLumberjack",
7 | "state" : {
8 | "revision" : "4b8714a7fb84d42393314ce897127b3939885ec3",
9 | "version" : "3.8.5"
10 | }
11 | },
12 | {
13 | "identity" : "sentry-cocoa",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/getsentry/sentry-cocoa",
16 | "state" : {
17 | "revision" : "7fc7ca43967e2980d8691a8e017c118a84133aac",
18 | "version" : "8.26.0"
19 | }
20 | },
21 | {
22 | "identity" : "swift-log",
23 | "kind" : "remoteSourceControl",
24 | "location" : "https://github.com/apple/swift-log.git",
25 | "state" : {
26 | "revision" : "32e8d724467f8fe623624570367e3d50c5638e46",
27 | "version" : "1.5.2"
28 | }
29 | }
30 | ],
31 | "version" : 2
32 | }
33 |
--------------------------------------------------------------------------------
/server_manager/browser.webpack.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-var-requires */
2 | // Copyright 2020 The Outline Authors
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | // Webpack config to run the Outline Manager on the browser.
17 |
18 | const path = require('path');
19 |
20 | const {makeConfig} = require('./base.webpack.js');
21 |
22 | module.exports = makeConfig({
23 | main: path.resolve(__dirname, './www/browser_main.ts'),
24 | target: 'web',
25 | defaultMode: 'development',
26 | });
27 |
--------------------------------------------------------------------------------
/infrastructure/sentry.spec.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2020 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import * as sentry from './sentry';
16 |
17 | describe('getSentryApiUrl', () => {
18 | it('returns the right URL', () => {
19 | const url = sentry.getSentryApiUrl(
20 | 'https://_key_@_org_.ingest.sentry.io/_project_'
21 | );
22 | expect(url).toEqual(
23 | 'https://_org_.ingest.sentry.io/api/_project_/store/?sentry_version=7&sentry_key=_key_'
24 | );
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/client/web/index_electron.html:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 | Outline
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/server_manager/electron_renderer.webpack.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-var-requires */
2 | // Copyright 2020 The Outline Authors
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | // Webpack config to run the Outline Manager on the browser.
17 |
18 | const path = require('path');
19 |
20 | const {makeConfig} = require('./base.webpack.js');
21 |
22 | module.exports = makeConfig({
23 | main: path.resolve(__dirname, './www/main.ts'),
24 | target: 'electron-renderer',
25 | defaultMode: 'production',
26 | });
27 |
--------------------------------------------------------------------------------
/client/Taskfile.yml:
--------------------------------------------------------------------------------
1 | # Copyright 2025 The Outline Authors
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | version: '3'
16 |
17 | requires:
18 | vars: [OUTPUT_DIR]
19 |
20 | tasks:
21 | android:configure:
22 | desc: Auto-configures the environment for Android development
23 | vars:
24 | DOTENV: '{{joinPath .OUTPUT_DIR "android" ".env"}}'
25 | generates:
26 | - '{{.DOTENV}}'
27 | cmds:
28 | - mkdir -p '{{dir .DOTENV}}'
29 | - '{{joinPath .TASKFILE_DIR "build" "configure_android.sh"}} > "{{.DOTENV}}"'
30 |
--------------------------------------------------------------------------------
/server_manager/images/check_blue_rtl.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/server_manager/images/check_green_rtl.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/server_manager/images/check_orange_rtl.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/server_manager/images/check_white_rtl.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/client/electron/windows/smartdnsblock/smartdnsblock/smartdnsblock.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/infrastructure/hex_encoding.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | export function hexToString(hexString: string) {
16 | const bytes: string[] = [];
17 | if (hexString.length % 2 !== 0) {
18 | throw new Error('hexString has odd length, ignoring: ' + hexString);
19 | }
20 | for (let i = 0; i < hexString.length; i += 2) {
21 | const hexByte = hexString.slice(i, i + 2);
22 | bytes.push(String.fromCharCode(parseInt(hexByte, 16)));
23 | }
24 | return bytes.join('');
25 | }
26 |
--------------------------------------------------------------------------------
/server_manager/electron/electron_builder.json:
--------------------------------------------------------------------------------
1 | {
2 | "asarUnpack": ["server_manager/www/images"],
3 | "artifactName": "Outline-Manager.${ext}",
4 | "linux": {
5 | "icon": "icons/png",
6 | "category": "Network",
7 | "target": [
8 | {
9 | "target": "AppImage",
10 | "arch": ["x64"]
11 | }
12 | ]
13 | },
14 | "win": {
15 | "icon": "icons/win/icon.ico",
16 | "sign": "server_manager/electron/windows/electron_builder_signing_plugin.cjs",
17 | "signingHashAlgorithms": ["sha256"],
18 | "target": [
19 | {
20 | "target": "nsis",
21 | "arch": "ia32"
22 | }
23 | ]
24 | },
25 | "mac": {
26 | "hardenedRuntime": true,
27 | "entitlements": "server_manager/electron/release/macos.entitlements",
28 | "entitlementsInherit": "server_manager/electron/release/macos.entitlements",
29 | "icon": "icons/mac/icon.icns",
30 | "target": [
31 | {
32 | "target": "default",
33 | "arch": "universal"
34 | }
35 | ],
36 | "notarize": {
37 | "teamId": "QT8Z3Q9V3A"
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/third_party/newtonsoft/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2007 James Newton-King
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/client/web/app/vpn_installer.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2022 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | /**
16 | * Helper class to install VPN services to the OS.
17 | */
18 | export interface VpnInstaller {
19 | /**
20 | * Setup the underlying outline VPN services.
21 | */
22 | installVpn(): Promise;
23 | }
24 |
25 | /**
26 | * An VPN installer which does nothing to the OS.
27 | */
28 | export class NoOpVpnInstaller implements VpnInstaller {
29 | installVpn(): Promise {
30 | return Promise.resolve();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/infrastructure/custom_error.ts:
--------------------------------------------------------------------------------
1 | // Copyright 2022 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | export class CustomError extends Error {
16 | constructor(message?: string, options?: {cause?: Error}) {
17 | // ref:
18 | // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
19 | super(message, options); // 'Error' breaks prototype chain here
20 | Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain
21 | this.name = new.target.name;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/.storybook/preview-head.html:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/client/go/outline/tun2socks/init_mobile.go:
--------------------------------------------------------------------------------
1 | // Copyright 2019 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build android || darwin
16 |
17 | package tun2socks
18 |
19 | import "runtime/debug"
20 |
21 | // TODO: convert this to an explicit API call
22 | // TODO: revisit to investigate other options
23 | func init() {
24 | // Apple VPN extensions have a memory limit of 50MB.
25 | // Conserve memory by setting GC frequency a small percent
26 | // to not let the memory grow too much before the GC runs.
27 | debug.SetGCPercent(10)
28 | }
29 |
--------------------------------------------------------------------------------
/client/src/cordova/apple/OutlineLib/VpnExtension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | VpnExtension
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | XPC!
19 | ITSAppUsesNonExemptEncryption
20 |
21 | NSExtension
22 |
23 | NSExtensionPointIdentifier
24 | com.apple.networkextension.packet-tunnel
25 | NSExtensionPrincipalClass
26 | PacketTunnelProvider
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/server_manager/www/views/server_view/access_key_data_table/access_key_status/stories.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2025 The Outline Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import './index';
18 |
19 | export default {
20 | title: 'Manager/Server View/Access Key Data Table/Access Key Status',
21 | component: 'access-key-status',
22 | argTypes: {
23 | key: {control: 'object'},
24 | },
25 | };
26 |
27 | export const Example = {
28 | args: {
29 | key: {
30 | name: 'Key#1',
31 | connected: true,
32 | },
33 | },
34 | };
35 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-ko/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | 연결됨
23 | 다시 연결하는 중...
24 | Outline 서버
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | 已连接
23 | 正在重新连接…
24 | Outline 服务器
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | 接続しました
23 | 再接続しています...
24 | Outline サーバー
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | 已連線
23 | 正在重新連線...
24 | Outline 伺服器
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Connecté
23 | Reconnexion…
24 | Serveur Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-is/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Tengt
23 | Tengist aftur...
24 | Outline-þjónn
25 |
--------------------------------------------------------------------------------
/.storybook/preview.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2024 The Outline Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import '@material/web/all.js';
18 |
19 | /** @type { import('@storybook/web-components').Preview } */
20 | const preview = {
21 | parameters: {
22 | controls: {
23 | matchers: {
24 | color: /(background|color)$/i,
25 | date: /Date$/i,
26 | },
27 | },
28 | darkMode: {
29 | stylePreview: true,
30 | darkClass: 'dark',
31 | classTarget: 'html',
32 | },
33 | },
34 | };
35 |
36 | export default preview;
37 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/outline/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-af/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Gekoppel
23 | Herkoppel tans …
24 | Outline-bediener
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-ar/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | متصل
23 | جارٍ إعادة الاتصال...
24 | خادم Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-az/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Qoşuldu
23 | Yenidən qoşulur...
24 | Outline Serveri
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-en-rGB/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Connected
23 | Reconnecting…
24 | Outline server
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-en/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Connected
23 | Reconnecting...
24 | Outline Server
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-fa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | وصل شدید
23 | درحال اتصال مجدد...
24 | سرور Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-he/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | מחובר
23 | החיבור מחדש מתבצע...
24 | שרת Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-ro/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Conectat
23 | Se reconectează...
24 | Server Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-sq/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Lidhur
23 | Po rilidhet...
24 | Serveri i Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-sv/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Ansluten
23 | Återansluter …
24 | Outline-server
25 |
--------------------------------------------------------------------------------
/client/go/outline/vpn_others.go:
--------------------------------------------------------------------------------
1 | // Copyright 2024 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //go:build !linux
16 |
17 | package outline
18 |
19 | import (
20 | "errors"
21 | )
22 |
23 | type vpnAPI struct{}
24 |
25 | func getSingletonVPNAPI() *vpnAPI {
26 | return nil
27 | }
28 |
29 | func (api *vpnAPI) Establish(configStr string) (err error) {
30 | return errors.ErrUnsupported
31 | }
32 |
33 | func (api *vpnAPI) Close() error {
34 | return errors.ErrUnsupported
35 | }
36 |
37 | func setVPNStateChangeListener(_ string) error { return errors.ErrUnsupported }
38 |
--------------------------------------------------------------------------------
/client/src/cordova/android/OutlineAndroidLib/outline/src/main/aidl/org/outline/DetailedJsonError.aidl:
--------------------------------------------------------------------------------
1 | // Copyright 2024 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package org.outline;
16 |
17 | /*
18 | * This class represents a structured error from the Android VPN service.
19 | * The code field is a string that can be used to determine the error category in Java.
20 | * The errorJson contains a JSON string of the error details that can be passed back to TypeScript.
21 | */
22 | parcelable DetailedJsonError {
23 | String code;
24 | String errorJson;
25 | }
26 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-am/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | ተገናኝቷል
23 | ዳግም በማገናኘት ላይ...
24 | Outline (አውትላይን) አገልጋይ
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-bs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Povezano
23 | Ponovno povezivanje...
24 | Outline server
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-el/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Συνδεδεμένος
23 | Επανασύνδεση…
24 | Διακομιστής Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-hy/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Միացված է
23 | Կապի վերահաստատում…
24 | Outline-ի սերվեր
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-my/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | ချိတ်ဆက်ထားသည်
23 | ပြန်ချိတ်ဆက်နေသည်…
24 | Outline ဆာဗာ
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-no/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Tilkoblet
23 | Kobler til på nytt …
24 | Outline-tjener
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Połączono
23 | Łączę się ponownie...
24 | Serwer Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-pt-rBR/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Conectado
23 | Reconectando…
24 | Servidor do Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-ru/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Подключен
23 | Повторное подключение…
24 | Сервер Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-uk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Підключено
23 | Повторне підключення…
24 | Сервер Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-ur/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | منسلک ہے
23 | دوبارہ منسلک ہو رہا ہے…
24 | Outline سرور
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-vi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Đã kết nối
23 | Đang kết nối lại...
24 | Máy chủ Outline
25 |
--------------------------------------------------------------------------------
/server_manager/test.action.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | #
3 | # Copyright 2018 The Outline Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | set -e
18 |
19 | readonly TEST_DIR="${BUILD_DIR}/js/server_manager/"
20 | rm -rf "${TEST_DIR}"
21 |
22 | npm run action server_manager/www/build_install_script
23 |
24 | # Use commonjs modules, jasmine runs in node.
25 | tsc -p "${ROOT_DIR}/server_manager" --outDir "${TEST_DIR}" --module commonjs
26 | jasmine "output/build/js/**/*.spec.js" "!output/build/js/server_manager/www/**/*"
27 |
28 | npm run action server_manager/www/test
29 |
30 | rm -rf "${TEST_DIR}"
31 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-da/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Forbundet
23 | Genopretter forbindelsen...
24 | Outline-server
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-et/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Ühendatud
23 | Uuesti ühendamine …...
24 | Outline\'i server
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-fi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Yhdistetty
23 | Yhdistetään uudelleen…
24 | Outline-palvelin
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-hu/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Csatlakoztatva
23 | Újracsatlakozás...
24 | Outline-szerver
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-id/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Terhubung
23 | Menghubungkan kembali...
24 | Server Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-it/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Connesso
23 | Riconnessione in corso...
24 | Server Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-lo/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | ເຊື່ອມຕໍ່ແລ້ວ
23 | ກຳລັງເຊື່ອມຕໍ່ໃໝ່...
24 | ເຊີບເວີ Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-mk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Поврзано
23 | Повторно се поврзува…
24 | Сервер на Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-mn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Холбогдсон
23 | Дахин холбогдож байна...
24 | Outline сервер
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-nl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Verbonden
23 | Opnieuw verbinding maken...
24 | Outline-server
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-si/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | සම්බන්ධයි
23 | යළි සම්බන්ධ කෙරේ...
24 | Outline සේවාදායකය
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-sk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Pripojené
23 | Znova sa pripája…
24 | Server služby Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-sw/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Imeunganishwa
23 | Inaunganisha upya...
24 | Seva ya Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-tr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Bağlanıldı
23 | Yeniden bağlanılıyor...
24 | Outline Sunucusu
25 |
--------------------------------------------------------------------------------
/client/build/get_webpack_build_mode.mjs:
--------------------------------------------------------------------------------
1 | // Copyright 2022 The Outline Authors
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | /*
16 | Inputs:
17 | => buildMode: the outline build mode
18 |
19 | Outputs:
20 | => the appropriate webpack mode for this type of build
21 | */
22 | export function getWebpackBuildMode(buildMode) {
23 | switch (buildMode) {
24 | case 'debug':
25 | return 'development';
26 | case 'release':
27 | return 'production';
28 | default:
29 | throw new TypeError('get_webpack_mode requires a buildMode argument of debug or release');
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-bn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | কানেক্ট করা আছে
23 | আবার কানেক্ট করা হচ্ছে...
24 | Outline সার্ভার
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-cs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Připojeno
23 | Nové připojování...
24 | Server aplikace Outline
25 |
--------------------------------------------------------------------------------
/client/src/cordova/plugin/android/res/values-es/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Outline
20 | @string/app_name
21 | @string/launcher_name
22 | Conectado
23 | Volviendo a conectar...
24 | Servidor de Outline
25 |
--------------------------------------------------------------------------------