├── .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 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /server_manager/images/check_green.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /server_manager/images/check_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 3 | 4 | Group 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------