SYMBOL INDEX (987 symbols across 127 files) FILE: android/app/src/main/java/net/obscura/vpnclientapp/client/ObscuraLibrary.java class ObscuraLibrary (line 8) | public class ObscuraLibrary { class FfiHandle (line 10) | @Keep method FfiHandle (line 12) | private FfiHandle() {} method load (line 15) | static FfiHandle load(Context context, String userAgent) { method initialize (line 23) | static native FfiHandle initialize(String configDir, String userAgent); method jsonFfi (line 25) | static native void jsonFfi(FfiHandle handle, String json, CompletableF... method setNetworkInterface (line 27) | static native void setNetworkInterface(FfiHandle handle, String name, ... method unsetNetworkInterface (line 28) | static native void unsetNetworkInterface(FfiHandle handle); method forwardLog (line 30) | static native void forwardLog(int level, String tag, String message, S... FILE: android/app/src/main/java/net/obscura/vpnclientapp/sharing/DebugArchiveFileProvider.java class DebugArchiveFileProvider (line 9) | public class DebugArchiveFileProvider extends FileProvider { method DebugArchiveFileProvider (line 10) | public DebugArchiveFileProvider() { FILE: bin/log-sleeps.py function fmt_time (line 11) | def fmt_time(timestamp): function is_sleep_log (line 14) | def is_sleep_log(log): FILE: bin/log-summary.py function format_log_time (line 40) | def format_log_time(log): function format_time (line 44) | def format_time(date): FILE: bin/log-text.py function format_time (line 49) | def format_time(date): function format_log (line 72) | def format_log(log): FILE: contrib/licenses.mjs function rpartition (line 3) | function rpartition(s, p) { constant LICENSES_NODE (line 14) | const LICENSES_NODE = JSON.parse(readFileSync(process.env.LICENSES_NODE)); constant LICENSES_RUST (line 15) | const LICENSES_RUST = JSON.parse(readFileSync(process.env.LICENSES_RUST)); function addLicense (line 25) | function addLicense(info) { function cmp (line 253) | function cmp(l, r) { FILE: obscura-ui/src/App.tsx type View (line 24) | interface View { function tryConnect (line 72) | async function tryConnect(exit: commands.ExitSelector) { function disconnectFromVpn (line 96) | async function disconnectFromVpn() { function notifyVpnError (line 103) | function notifyVpnError(errorEnum: string) { function handleNewStatus (line 118) | function handleNewStatus(newStatus: AppStatus) { function resetState (line 216) | function resetState() { function RenderView (line 329) | function RenderView({ view }: { view: View }) { FILE: obscura-ui/src/bridge/SystemProvider.tsx constant PLATFORM (line 3) | const PLATFORM = import.meta.env.OBS_WEB_PLATFORM as Platform; type Platform (line 6) | enum Platform { function systemName (line 12) | function systemName(): string { constant IS_HANDHELD_DEVICE (line 23) | const IS_HANDHELD_DEVICE = PLATFORM === Platform.iOS || constant CONNECT_REQUIRES_ONLINE (line 29) | const CONNECT_REQUIRES_ONLINE = PLATFORM === Platform.iOS || PLATFORM ==... function useSystemChecks (line 31) | function useSystemChecks() { function logReactError (line 40) | async function logReactError(error: Error, info: ErrorInfo) { FILE: obscura-ui/src/bridge/commands.ts function WKWebViewInvoke (line 13) | async function WKWebViewInvoke(command: string, args: Object) { function invoke (line 27) | async function invoke(command: string, args: Object = {}): Promise { function setApiHostAlternate (line 86) | async function setApiHostAlternate(host: string | null): Promise { function setSniRelay (line 90) | async function setSniRelay(host: string | null): Promise { function setStrictLeakPrevention (line 94) | async function setStrictLeakPrevention(enable: boolean): Promise { function setColorScheme (line 98) | async function setColorScheme(value: 'dark' | 'light' | 'auto'): Promise... type TunnelArgs (line 103) | interface TunnelArgs { type ExitSelectorId (line 107) | interface ExitSelectorId { type ExitSelectorCity (line 111) | interface ExitSelectorCity { type ExitSelectorCountry (line 116) | interface ExitSelectorCountry { type ExitSelector (line 121) | type ExitSelector = function connect (line 128) | async function connect(exit: ExitSelector): Promise { function disconnect (line 137) | async function disconnect(): Promise { function debuggingArchive (line 141) | async function debuggingArchive(userFeedback: string): Promise { function revealItemInDir (line 145) | function revealItemInDir(path: String) { function emailDebugArchive (line 149) | async function emailDebugArchive(path: String, subject: String, body: St... function shareDebugArchive (line 154) | async function shareDebugArchive(path: String): Promise { type Notice (line 158) | interface Notice { function registerAsLoginItem (line 164) | async function registerAsLoginItem(): Promise { function unregisterAsLoginItem (line 168) | async function unregisterAsLoginItem(): Promise { function developerResetUserDefaults (line 172) | async function developerResetUserDefaults(): Promise { function checkForUpdates (line 176) | async function checkForUpdates(): Promise { function installUpdate (line 180) | async function installUpdate(): Promise { type TrafficStats (line 184) | interface TrafficStats { function getTrafficStats (line 192) | async function getTrafficStats(): Promise { type CachedValue (line 196) | interface CachedValue { type ExitList (line 202) | interface ExitList { function getExitList (line 206) | async function getExitList(version?: string): Promise { function deleteAccount (line 220) | async function deleteAccount(): Promise { function getAccount (line 224) | async function getAccount(): Promise { function setInNewAccountFlow (line 229) | function setInNewAccountFlow(value: boolean) { function setPinnedExits (line 233) | function setPinnedExits(newPinnedExits: PinnedLocation[]) { function rotateWgKey (line 237) | function rotateWgKey() { function setAutoConnect (line 241) | function setAutoConnect(enable: boolean) { function setUseSystemDns (line 245) | function setUseSystemDns(enable: boolean) { function setFeatureFlag (line 249) | async function setFeatureFlag(flag: FeatureFlagKey, active: boolean) { function setDnsContentBlock (line 253) | async function setDnsContentBlock(value: DNSContentBlock): Promise { function getSubscriptionProductDisplay (line 257) | async function getSubscriptionProductDisplay(): Promise { function storeKitPurchaseSubscription (line 265) | async function storeKitPurchaseSubscription(): Promise { function storeKitRestorePurchases (line 269) | async function storeKitRestorePurchases(): Promise { function showOfferCodeRedemption (line 273) | async function showOfferCodeRedemption(): Promise { function resetOfferCodeRedemptionSuccess (line 277) | async function resetOfferCodeRedemptionSuccess(): Promise { function playPurchaseSubscription (line 283) | async function playPurchaseSubscription(): Promise { type UseCommandOptions (line 287) | interface UseCommandOptions { function useCommand (line 303) | function useCommand({ command, showNotificati... FILE: obscura-ui/src/common/KeyedSet.ts class KeyedSet (line 1) | class KeyedSet { method constructor (line 5) | constructor( method add (line 22) | add(v: V): V | undefined { method extend (line 34) | extend(values: Iterable) { method get (line 40) | get(v: L): V | undefined { method getKey (line 44) | getKey(k: K): V | undefined { method has (line 48) | has(v: L): boolean { method hasKey (line 52) | hasKey(k: K): boolean { method size (line 56) | get size(): number { method [Symbol.iterator] (line 15) | [Symbol.iterator](): Iterator { FILE: obscura-ui/src/common/accountUtils.ts constant INVERSE (line 27) | const INVERSE = [0, 4, 3, 2, 1, 5, 6, 7, 8, 9]; function rawChecksum (line 29) | function rawChecksum(digits: string): number { function checkDigit (line 39) | function checkDigit(digits: string): number { function validChecksum (line 43) | function validChecksum(digits: string): boolean { constant ACCOUNT_ID_LENGTH (line 47) | const ACCOUNT_ID_LENGTH = 19; constant MAX_ID (line 48) | const MAX_ID = 10n ** BigInt(ACCOUNT_ID_LENGTH); constant USER_ACCOUNT_NUMBER_LEN (line 49) | const USER_ACCOUNT_NUMBER_LEN = ACCOUNT_ID_LENGTH + 1; constant ACCOUNT_ID_DISPLAY_CHUNK_SIZE (line 50) | const ACCOUNT_ID_DISPLAY_CHUNK_SIZE = 4; constant ACCOUNT_ID_CHUNK_RE (line 51) | const ACCOUNT_ID_CHUNK_RE = new RegExp(`.{${ACCOUNT_ID_DISPLAY_CHUNK_SIZ... function generateAccountId (line 53) | function generateAccountId(): BigInt { function generateAccountNumber (line 65) | function generateAccountNumber(): AccountId { type AccountId (line 70) | interface AccountId { function accountIdToString (line 75) | function accountIdToString(id: AccountId): string { type ObscuraAccountErrorCode (line 79) | const enum ObscuraAccountErrorCode { class ObscuraAccountIdError (line 85) | class ObscuraAccountIdError extends Error { method constructor (line 88) | constructor(code: ObscuraAccountErrorCode, message: string) { method i18nKey (line 94) | i18nKey() { function parseAccountIdInt (line 100) | function parseAccountIdInt(id: string): AccountId { function parseAccountIdInput (line 113) | function parseAccountIdInput(input: string): AccountId { function normalizeAccountIdInput (line 117) | function normalizeAccountIdInput(id: string): string { function formatPartialAccountId (line 121) | function formatPartialAccountId(accountId: string): string { constant OBSCURA_WEBPAGE (line 129) | const OBSCURA_WEBPAGE = 'https://obscura.com'; constant CHECK_STATUS_WEBPAGE (line 130) | const CHECK_STATUS_WEBPAGE = `${OBSCURA_WEBPAGE}/check`; constant LEGAL_WEBPAGE (line 131) | const LEGAL_WEBPAGE = `${OBSCURA_WEBPAGE}/legal`; constant APP_ACCOUNT_TAB (line 132) | const APP_ACCOUNT_TAB = 'obscuravpn:///account'; constant APP_MANAGE_SUBSCRIPTION (line 134) | const APP_MANAGE_SUBSCRIPTION = `obscuravpn:///manage-subscription`; function payUrl (line 136) | function payUrl(accountId: AccountId): string { function subscriptionUrl (line 140) | function subscriptionUrl(accountId: AccountId): string { function tunnelsUrl (line 144) | function tunnelsUrl(accountId: AccountId): string { FILE: obscura-ui/src/common/api.ts type Exit (line 6) | interface Exit { function getContinent (line 17) | function getContinent(countryData: ICountryData): TContinentCode { function getCountry (line 22) | function getCountry(country_code: string): ICountryData { function getExitCountry (line 26) | function getExitCountry(exit: Exit): ICountryData { type AccountInfo (line 33) | interface AccountInfo { type TopUpInfo (line 43) | interface TopUpInfo { function hasCredit (line 47) | function hasCredit(accountInfo: AccountInfo | undefined): boolean { type SubscriptionInfo (line 52) | interface SubscriptionInfo { function hasActiveSubscription (line 60) | function hasActiveSubscription(account: AccountInfo): boolean { function isRenewing (line 72) | function isRenewing(account: AccountInfo): boolean { function paidUntil (line 79) | function paidUntil(account: AccountInfo): Date | null { function activeAppleSubscription (line 86) | function activeAppleSubscription(account: AccountInfo): boolean { function accountIsExpired (line 96) | function accountIsExpired(accountInfo: AccountInfo): boolean { type TimeRemaining (line 104) | interface TimeRemaining { function accountTimeRemaining (line 113) | function accountTimeRemaining(account: AccountInfo): TimeRemaining { type SubscriptionStatus (line 130) | const enum SubscriptionStatus { type AppleSubscriptionStatus (line 142) | const enum AppleSubscriptionStatus { type AppleSubscriptionInfo (line 150) | interface AppleSubscriptionInfo { function hasAppleSubscription (line 156) | function hasAppleSubscription(accountInfo: AccountInfo | undefined): boo... function useReRenderWhenExpired (line 165) | function useReRenderWhenExpired(account: AccountStatus | null) { FILE: obscura-ui/src/common/appContext.ts type NEVPNStatus (line 6) | enum NEVPNStatus { type UpdaterStatusType (line 15) | enum UpdaterStatusType { type AppcastSummary (line 23) | interface AppcastSummary { type UpdaterStatus (line 30) | interface UpdaterStatus { type OsStatus (line 37) | interface OsStatus { type SubscriptionProductModel (line 64) | interface SubscriptionProductModel { type TransportKind (line 72) | enum TransportKind { type VpnStatus (line 77) | interface VpnStatus { function getCityFromStatus (line 93) | function getCityFromStatus(status: VpnStatus): ExitSelectorCity | undefi... function getCityFromArgs (line 98) | function getCityFromArgs(exitSelector: ExitSelector | undefined): ExitSe... function getTunnelArgs (line 102) | function getTunnelArgs(status: VpnStatus): TunnelArgs | undefined { type PinnedLocation (line 106) | interface PinnedLocation { type AccountStatus (line 114) | interface AccountStatus { type KnownFeatureFlagKey (line 120) | enum KnownFeatureFlagKey { type FeatureFlagKey (line 127) | type FeatureFlagKey = KnownFeatureFlagKey | string; type FeatureFlagValue (line 129) | type FeatureFlagValue = boolean | null; function featureFlagEnabled (line 131) | function featureFlagEnabled(value: FeatureFlagValue | undefined): boolean { type DNSContentBlock (line 135) | interface DNSContentBlock { type AppStatus (line 144) | interface AppStatus { type IAppContext (line 160) | interface IAppContext { type ConnectionInProgress (line 179) | enum ConnectionInProgress { function useIsConnecting (line 191) | function useIsConnecting() { function useIsTransitioning (line 199) | function useIsTransitioning() { function isConnecting (line 208) | function isConnecting(connectionInProgress: ConnectionInProgress) { function connectionIsIdle (line 218) | function connectionIsIdle(connectionInProgress: ConnectionInProgress, vp... FILE: obscura-ui/src/common/debuggingArchiveHook.tsx type ArchiveState (line 10) | type ArchiveState = { inProgress: boolean, error?: Error }; function useDebuggingArchive (line 12) | function useDebuggingArchive(): (userFeedback: string) => Promise { FILE: obscura-ui/src/common/exitUtils.ts function getCountryFlag (line 6) | function getCountryFlag(countryCode: string): string { function getExitCountryFlag (line 16) | function getExitCountryFlag(exit: Exit): string { function exitsSortComparator (line 21) | function exitsSortComparator(left: Exit, right: Exit): number { function continentCmp (line 44) | function continentCmp(left: string, right: string): number { function exitLocation (line 48) | function exitLocation(exit: Exit): PinnedLocation { function exitCityEquals (line 57) | function exitCityEquals(left?: ExitSelectorCity, right?: ExitSelectorCit... FILE: obscura-ui/src/common/fmt.ts function fmt (line 1) | function fmt(lits: TemplateStringsArray, ...values: unknown[]): string { class InterpolatedError (line 39) | class InterpolatedError extends Error { method constructor (line 40) | constructor( function err (line 48) | function err(lits: TemplateStringsArray, ...values: unknown[]): Error { FILE: obscura-ui/src/common/links.ts constant EMAIL (line 1) | const EMAIL = 'support@obscura.net'; constant DISCORD_SERVER (line 2) | const DISCORD_SERVER = 'https://discord.gg/xsP2Fp7s6r'; constant MATRIX_SERVER (line 3) | const MATRIX_SERVER = 'https://matrix.to/#/!CznDYbvmUUGxsJaWuW:matrix.so... constant TWITTER (line 4) | const TWITTER = 'https://x.com/obscuravpn'; FILE: obscura-ui/src/common/localStorage.ts type LocalStorageKey (line 1) | enum LocalStorageKey { function getCustomApiUrls (line 5) | function getCustomApiUrls(): string[] { function setCustomApiUrls (line 10) | function setCustomApiUrls(customApiUrls: string[]): string | null { function localStorageGet (line 14) | function localStorageGet(key: LocalStorageKey): string | null { function localStorageSet (line 18) | function localStorageSet(key: LocalStorageKey, value: string): string | ... function localStorageRemove (line 24) | function localStorageRemove(key: LocalStorageKey): string | null { FILE: obscura-ui/src/common/notifIds.ts type NotificationId (line 1) | enum NotificationId { FILE: obscura-ui/src/common/useAsync.ts constant NEVER_LOADED (line 5) | const NEVER_LOADED = 0; type UseAsyncArgs (line 7) | interface UseAsyncArgs { type RefreshCallback (line 14) | type RefreshCallback = (value?: T, error?: unknown) => void; class UseAsyncState (line 16) | class UseAsyncState { method setValue (line 28) | setValue(version: number, value: T, callbacks?: RefreshCallback[]):... method setError (line 49) | setError(version: number, error: unknown, callbacks?: RefreshCallback<... type UseAsyncResult (line 70) | interface UseAsyncResult { function useAsync (line 108) | function useAsync({ FILE: obscura-ui/src/common/useExitList.ts type UseExitListArgs (line 5) | interface UseExitListArgs { type UseExitListResult (line 9) | interface UseExitListResult { constant EXIT_WATCHABLE (line 14) | const EXIT_WATCHABLE = makeWatchable(refreshExitList, getExitList); function useExitList (line 16) | function useExitList({ FILE: obscura-ui/src/common/useLoadable.ts type UseLoadableArgs (line 4) | interface UseLoadableArgs extends UseAsyncArgs { function useLoadable (line 8) | function useLoadable({ FILE: obscura-ui/src/common/useMailto.ts function useMailto (line 8) | function useMailto(osStatus: OsStatus) { FILE: obscura-ui/src/common/useSharedWatchable.ts type Versioned (line 4) | interface Versioned { type SharedWatchable (line 8) | interface SharedWatchable { function makeWatchable (line 19) | function makeWatchable( type UseWatchableResult (line 35) | interface UseWatchableResult { function useSharedWatchable (line 40) | function useSharedWatchable( FILE: obscura-ui/src/common/utils.ts constant HEADER_TITLE (line 8) | const HEADER_TITLE = 'Obscura VPN'; constant IS_DEVELOPMENT (line 9) | const IS_DEVELOPMENT = import.meta.env.MODE === 'development'; constant MIN_LOAD_MS (line 10) | const MIN_LOAD_MS = 400; function useCookie (line 12) | function useCookie(key: string, defaultValue: string, options: Cookies.C... function notify (line 25) | function notify(title: string, body?: string) { function sleep (line 29) | function sleep(ms: number) { function downloadFile (line 33) | function downloadFile(filename: string, content: BlobPart, contentType =... function isPromise (line 42) | function isPromise(v: unknown): v is PromiseLike { function arraysEqual (line 46) | function arraysEqual(a: T[], b: T[]) { function useLocalForage (line 63) | function useLocalForage(key: string, defaultValue: T) { function getLatestState (line 96) | function getLatestState(setter: Dispatch>) { function percentEncodeQuery (line 105) | function percentEncodeQuery(params: Record) { constant DEFAULT_ERROR_MSG (line 111) | const DEFAULT_ERROR_MSG = "An unexpected error has occurred."; function errMsg (line 113) | function errMsg(error: unknown): string { function normalizeError (line 121) | function normalizeError(error: unknown): Error { function multiRef (line 131) | function multiRef(...refs: ForwardedRef[]): RefCallback { function randomChoice (line 145) | function randomChoice(arr: T[]): T { function fmtTime (line 155) | function fmtTime(ms: number) { function zeroPad (line 163) | function zeroPad(num: number, width: number) { function usePrimaryColorResolved (line 167) | function usePrimaryColorResolved() { function normalizeString (line 173) | function normalizeString(str: string): string { function normalizedIncludes (line 183) | function normalizedIncludes(needle: string, haystack: string) { FILE: obscura-ui/src/components/AccountNumberSection.tsx function AccountNumberSection (line 13) | function AccountNumberSection({ accountId, logOut }: { accountId: Obscur... FILE: obscura-ui/src/components/AnimatedChevron.tsx function AnimatedChevron (line 3) | function AnimatedChevron({ rotated }: { rotated: Boolean }) { FILE: obscura-ui/src/components/BoltBadgeAuto.tsx function BoltBadgeAuto (line 3) | function BoltBadgeAuto({ height = '1.25em', fill = 'white' }) { FILE: obscura-ui/src/components/ButtonLink.tsx type ButtonLinkProps (line 5) | interface ButtonLinkProps extends PropsWithChildren { function ButtonLink (line 13) | function ButtonLink({ children, href, onClick, variant, inline = false, ... FILE: obscura-ui/src/components/CachedColorScheme.tsx function CachedColorScheme (line 12) | function CachedColorScheme({ children }: PropsWithChildren) { FILE: obscura-ui/src/components/ConfirmationDialog.tsx type ConfirmationDialogProps (line 7) | interface ConfirmationDialogProps extends PropsWithChildren { function ConfirmationDialog (line 18) | function ConfirmationDialog({ opened, onClose, drawerSize = 'xs', title,... type MobileDrawerProps (line 47) | type MobileDrawerProps = Omit void }) { function ManagePaymentsButton (line 400) | function ManagePaymentsButton({ mobile = false }: { mobile?: boolean }) { function MobileLogOut (line 421) | function MobileLogOut({ logOut }: { logOut: () => void }) { FILE: obscura-ui/src/views/ConnectionView.tsx constant BUTTON_WIDTH (line 47) | const BUTTON_WIDTH = 320; function Connection (line 49) | function Connection() { function PrimaryConnectButton (line 140) | function PrimaryConnectButton() { function ConnectionProgressBar (line 178) | function ConnectionProgressBar() { type PulsingProgressProps (line 250) | interface PulsingProgressProps extends ProgressRootProps { function usePulsingProgress (line 255) | function usePulsingProgress({ activated, bars = 2, w }: PulsingProgressP... constant DECO_CONNECTING_ARRAY (line 297) | const DECO_CONNECTING_ARRAY = { constant DEC_LAST_IDX (line 301) | const DEC_LAST_IDX = DECO_CONNECTING_ARRAY.light.length - 1; function Deco (line 303) | function Deco() { constant MASCOT_CONNECTING (line 346) | const MASCOT_CONNECTING = [ function Mascot (line 359) | function Mascot() { function LocationSelect (line 418) | function LocationSelect(): ReactNode { function LocationConnectTopCaption (line 567) | function LocationConnectTopCaption() { type LocationConnectRightButtonProps (line 579) | interface LocationConnectRightButtonProps { function LocationConnectRightButton (line 584) | function LocationConnectRightButton({ dropdownOpened, selectedCity }: Lo... type CityOptionsProps (line 612) | interface CityOptionsProps { type ItemRightSectionProps (line 619) | interface ItemRightSectionProps { function CityOptions (line 625) | function CityOptions({ locations, pinnedLocationSet, lastChosenExit, onE... FILE: obscura-ui/src/views/DeveloperView.tsx function DeveloperViewer (line 15) | function DeveloperViewer() { FILE: obscura-ui/src/views/HelpView.tsx function Help (line 11) | function Help() { FILE: obscura-ui/src/views/LocationView.tsx function LocationView (line 31) | function LocationView() { type LocationCarProps (line 210) | interface LocationCarProps { function LocationCard (line 219) | function LocationCard({ exit, connected, showLastChosen = false, onSelec... function NoExitServers (line 261) | function NoExitServers() { function VpnStatusCard (line 306) | function VpnStatusCard() { function CurrentSession (line 404) | function CurrentSession() { function ExitInfo (line 422) | function ExitInfo({ exitPubKey, connectedExit }: { exitPubKey: string, c... type ExitInfoProps (line 439) | interface ExitInfoProps { function ExitInfoCollapse (line 448) | function ExitInfoCollapse({ exitProviderId, exitPubKey, connectedExit, p... function ExitInfoDrawer (line 490) | function ExitInfoDrawer({ exitProviderId, exitPubKey, connectedExit, pro... type MatchesPublicKeyProp (line 523) | interface MatchesPublicKeyProp { function MatchesPublicKey (line 528) | function MatchesPublicKey({ exitProviderId, exitProviderURL }: MatchesPu... FILE: obscura-ui/src/views/LogInView.tsx type LogInProps (line 24) | interface LogInProps { constant COPY_ACCOUNT_WIDTH (line 29) | const COPY_ACCOUNT_WIDTH = IS_HANDHELD_DEVICE ? 300 : '24ch'; constant BACKGROUND_IMAGE (line 30) | const BACKGROUND_IMAGE = IS_HANDHELD_DEVICE ? DecoOrangeBottom : DecoOra... constant BACKGROUND_POSITION (line 31) | const BACKGROUND_POSITION = IS_HANDHELD_DEVICE ? 'bottom' : 'top'; constant TOP_SPACING (line 32) | const TOP_SPACING = IS_HANDHELD_DEVICE ? '16vh' : '28vh'; function LogIn (line 34) | function LogIn({ accountNumber, accountActive }: LogInProps) { constant SPINNING_DURATION (line 150) | const SPINNING_DURATION = 900; constant ANIMATION_HEIGHT (line 151) | const ANIMATION_HEIGHT = 20; type AccountGenerationProps (line 153) | interface AccountGenerationProps { function AccountGeneration (line 159) | function AccountGeneration({ generatedAccountId, accountActive, loading ... function AccountId (line 280) | function AccountId({ accountId }: { accountId: ObscuraAccount.AccountId ... function DigitsWheel (line 300) | function DigitsWheel({ digit }: { digit: string }) { type DigitProps (line 317) | interface DigitProps { function Digit (line 322) | function Digit({ mv, number }: DigitProps) { FILE: obscura-ui/src/views/Settings.tsx constant APPLE_PLATFORMS (line 17) | const APPLE_PLATFORMS = new Set([Platform.macOS, Platform.iOS]); constant IS_APPLE (line 18) | const IS_APPLE = APPLE_PLATFORMS.has(PLATFORM); constant CUSTOM_DNS_PLATFORMS_EXCLUDED (line 20) | const CUSTOM_DNS_PLATFORMS_EXCLUDED = new Set([Platform.Android]); constant CUSTOM_DNS_SUPPORTED (line 21) | const CUSTOM_DNS_SUPPORTED = !CUSTOM_DNS_PLATFORMS_EXCLUDED.has(PLATFORM); function Settings (line 23) | function Settings() { function DnsSettings (line 35) | function DnsSettings() { function GeneralSettings (line 79) | function GeneralSettings() { function NetworkSettings (line 137) | function NetworkSettings() { function ExperimentalSettings (line 172) | function ExperimentalSettings() { function AppearanceSettings (line 203) | function AppearanceSettings() { function StrictLeakPreventionSwitch (line 241) | function StrictLeakPreventionSwitch() { function FeatureFlagToggle (line 274) | function FeatureFlagToggle({ featureFlagKey }: { featureFlagKey: Feature... constant FEATURE_FLAG_CUSTOM_UI (line 304) | const FEATURE_FLAG_CUSTOM_UI: Partial PathBuf { FILE: rustlib/examples/connect.rs type Args (line 13) | struct Args { function main (line 23) | async fn main() -> Result<(), Box> { FILE: rustlib/examples/list-relay-rtts.rs type Args (line 11) | struct Args { function main (line 19) | async fn main() -> Result<(), Box> { FILE: rustlib/src/android/class_cache.rs type ClassCache (line 8) | pub struct ClassCache { method new (line 18) | pub fn new(env: &mut JNIEnv) -> anyhow::Result> { method ffi_handle (line 28) | pub fn ffi_handle(&self) -> &JClass<'static> { method error_code_exception (line 32) | pub fn error_code_exception(&self) -> &JClass<'static> { method vpn_service (line 36) | pub fn vpn_service(&self) -> &JClass<'static> { FILE: rustlib/src/android/ffi.rs type Global (line 22) | pub struct Global { function global_from_handle (line 34) | fn global_from_handle(_handle: &JObject) -> &'static Global { constant RUST_LOG_DIR_NAME (line 38) | const RUST_LOG_DIR_NAME: &str = "rust-log"; function JNI_OnLoad (line 42) | pub extern "C" fn JNI_OnLoad(_vm: *mut jni::sys::JavaVM, _reserved: *mut... function initialize (line 46) | fn initialize(env: &mut JNIEnv, j_config_dir: &JString, j_user_agent: &J... function Java_net_obscura_vpnclientapp_client_ObscuraLibrary_initialize (line 73) | pub extern "C" fn Java_net_obscura_vpnclientapp_client_ObscuraLibrary_in... function json_ffi (line 96) | fn json_ffi(global: &'static Global, env: &mut JNIEnv, j_json_cmd: &JStr... function Java_net_obscura_vpnclientapp_client_ObscuraLibrary_jsonFfi (line 130) | pub extern "C" fn Java_net_obscura_vpnclientapp_client_ObscuraLibrary_js... function set_network_interface (line 144) | fn set_network_interface(env: &mut JNIEnv, global: &'static Global, j_na... function Java_net_obscura_vpnclientapp_client_ObscuraLibrary_setNetworkInterface (line 156) | pub extern "C" fn Java_net_obscura_vpnclientapp_client_ObscuraLibrary_se... function Java_net_obscura_vpnclientapp_client_ObscuraLibrary_unsetNetworkInterface (line 171) | pub extern "C" fn Java_net_obscura_vpnclientapp_client_ObscuraLibrary_un... function forward_log (line 179) | fn forward_log( function Java_net_obscura_vpnclientapp_client_ObscuraLibrary_forwardLog (line 209) | pub extern "C" fn Java_net_obscura_vpnclientapp_client_ObscuraLibrary_fo... function call_set_network_config (line 223) | pub(super) async fn call_set_network_config(class_cache: Arc... FILE: rustlib/src/android/future.rs function signal_json_ffi_future (line 9) | pub fn signal_json_ffi_future( FILE: rustlib/src/android/os_impl.rs type AndroidOsImpl (line 9) | pub struct AndroidOsImpl { method new (line 17) | pub fn new(jvm: Arc, class_cache: Arc) -> Self { method set_network_interface (line 21) | pub fn set_network_interface(&self, network_interface: Option watch::Receiver> { method set_os_network_config (line 31) | async fn set_os_network_config(&self, network_config: OsNetworkConfig, t... method unset_os_network_config (line 56) | async fn unset_os_network_config(&self) -> Result<(), ()> { method packet_for_os (line 61) | fn packet_for_os(&self, packet: Bytes) { FILE: rustlib/src/android/tunnel.rs type Tun (line 9) | pub struct Tun { method spawn (line 15) | pub fn spawn(fd: OwnedFd, tunnel: QuicWgConnPacketSender) -> Result { function new (line 22) | pub fn new(env: &mut JNIEnv<'b>, obj: &'a JString<'a>, name: &str, messa... function from_nullable (line 54) | pub fn from_nullable(env: &mut JNIEnv<'b>, obj: &'a JString<'a>, name: &... function as_str (line 58) | pub fn as_str(&self) -> &str { function as_path (line 62) | pub fn as_path(&self) -> &Utf8Path { method drop (line 68) | fn drop(&mut self) { function fmt (line 77) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { FILE: rustlib/src/apple/ffi.rs function initialize_apple_system_logging (line 25) | pub extern "C" fn initialize_apple_system_logging(log_dir: FfiStr) -> *m... type Global (line 36) | pub struct Global { function initialize (line 49) | pub unsafe extern "C" fn initialize( type LogLevel (line 104) | pub enum LogLevel { function forward_log (line 113) | pub extern "C" fn forward_log(level: LogLevel, message: FfiStr, file_id:... function send_packet (line 131) | pub unsafe extern "C" fn send_packet(global: *const Global, packet: FfiB... function set_network_interface (line 146) | pub unsafe extern "C" fn set_network_interface(global: *const Global, in... function wake (line 165) | pub unsafe extern "C" fn wake(global: *const Global) { function json_ffi_cmd (line 175) | pub unsafe extern "C" fn json_ffi_cmd( FILE: rustlib/src/apple/os_impl.rs type SetNetworkConfigCb (line 13) | pub type SetNetworkConfigCb = function set_network_config_done (line 22) | pub extern "C" fn set_network_config_done(context: *mut c_void, success:... type AppleOsImpl (line 28) | pub struct AppleOsImpl { method new (line 36) | pub fn new(receive_cb: extern "C" fn(FfiBytes), set_network_config_cb:... method set_network_interface (line 45) | pub fn set_network_interface(&self, network_interface: Option watch::Receiver> { method set_os_network_config (line 59) | async fn set_os_network_config(&self, network_config: OsNetworkConfig, t... method unset_os_network_config (line 83) | async fn unset_os_network_config(&self) -> Result<(), ()> { method packet_for_os (line 88) | fn packet_for_os(&self, packet: Bytes) { FILE: rustlib/src/backoff.rs type Backoff (line 7) | pub struct Backoff { constant BACKGROUND (line 13) | pub const BACKGROUND: Self = Backoff { base: Duration::from_secs(1), m... method take (line 17) | pub fn take(&self, attempts: usize) -> BackoffIter { type BackoffIter (line 22) | pub struct BackoffIter { method wait (line 29) | pub async fn wait(&mut self) -> bool { type Item (line 41) | type Item = Duration; method next (line 43) | fn next(&mut self) -> Option { method size_hint (line 59) | fn size_hint(&self) -> (usize, Option) { FILE: rustlib/src/backoff_test.rs function test (line 6) | fn test() { FILE: rustlib/src/bin/obscura/add_operator.rs function run_add_operator (line 4) | pub async fn run_add_operator(users: Vec) -> ! { function add_operator_impl (line 8) | fn add_operator_impl(mut users: Vec) -> ! { FILE: rustlib/src/bin/obscura/client/client_error.rs type ClientError (line 4) | pub enum ClientError { method from (line 18) | fn from(error: ManagerCmdErrorCode) -> ClientError { FILE: rustlib/src/bin/obscura/client/ipc.rs function run_command (line 14) | pub async fn run_command(cmd: ManagerCmd) -> Result... function ipc_test (line 62) | pub async fn ipc_test(_: ClientIpcTestArgs) -> Result<(), ClientError> { function try_group_refresh_fix (line 71) | pub async fn try_group_refresh_fix() { function build_sg_exec_cmd (line 192) | fn build_sg_exec_cmd<'a>( FILE: rustlib/src/bin/obscura/client/mod.rs function run (line 14) | pub async fn run(global_args: GlobalArgs, cmd: ClientCommand) -> Result<... function status (line 30) | async fn status(args: ClientStatusArgs) -> Result<(), ClientError> { function login (line 58) | async fn login(args: ClientLoginArgs) -> Result<(), ClientError> { function go_to_target_state (line 68) | async fn go_to_target_state(target_state: Option) -> Result<... function vpn_status_summary (line 86) | fn vpn_status_summary(vpn_status: &VpnStatus) -> String { function account_info_summary (line 102) | fn account_info_summary(account_info: &AccountInfo) -> String { FILE: rustlib/src/bin/obscura/main.rs function get_data_dir (line 15) | fn get_data_dir() -> String { function get_data_dir (line 20) | fn get_data_dir() -> String { type ServiceArgs (line 31) | pub struct ServiceArgs { type ClientLoginArgs (line 40) | pub struct ClientLoginArgs { type ClientStartArgs (line 49) | pub struct ClientStartArgs {} type ClientStopArgs (line 52) | pub struct ClientStopArgs {} type ClientStatusArgs (line 55) | pub struct ClientStatusArgs { type ClientIpcTestArgs (line 65) | pub struct ClientIpcTestArgs {} type ClientCommand (line 68) | pub enum ClientCommand { type Command (line 77) | pub enum Command { type Cli (line 93) | pub struct Cli { type GlobalArgs (line 101) | pub struct GlobalArgs { function main (line 107) | async fn main() { function run_service (line 131) | async fn run_service(args: ServiceArgs) -> ! { function run_service (line 138) | async fn run_service(_args: ServiceArgs) -> ! { function run_client (line 144) | async fn run_client(global_args: GlobalArgs, args: ClientCommand) { function run_client (line 152) | async fn run_client(_global_args: GlobalArgs, _args: ClientCommand) { FILE: rustlib/src/bin/obscura/service/mod.rs function run (line 11) | pub async fn run(args: ServiceArgs) -> Result> { FILE: rustlib/src/bin/obscura/service/os/linux/dns/mod.rs type DnsManagerArg (line 7) | pub enum DnsManagerArg { type DnsManager (line 15) | pub enum DnsManager { function choose_dns_manager (line 21) | pub async fn choose_dns_manager(dns_manager_arg: DnsManagerArg) -> Resul... FILE: rustlib/src/bin/obscura/service/os/linux/dns/resolved.rs function zbus_connect (line 5) | async fn zbus_connect() -> Result bool { function set_dns (line 32) | pub async fn set_dns(tun: &NetworkInterface, dns: &[IpAddr]) -> Result<(... function reset_dns (line 54) | pub async fn reset_dns(tun: &NetworkInterface) -> Result<(), ()> { FILE: rustlib/src/bin/obscura/service/os/linux/ipc.rs constant SOCKET_PATH (line 9) | pub const SOCKET_PATH: &str = "/run/obscura.sock"; type ServiceIpc (line 11) | pub struct ServiceIpc { method new (line 16) | pub async fn new(_lock: &ServiceLock) -> Result (Vec, Box) + Send>) { method handle_stream (line 58) | async fn handle_stream(mut stream: UnixStream, sender: Sender<(Vec... FILE: rustlib/src/bin/obscura/service/os/linux/mod.rs type LinuxOsImpl (line 24) | pub struct LinuxOsImpl { method new (line 34) | pub async fn new(dns_manager_arg: DnsManagerArg) -> Result (ManagerCmd, Box Receiver> { method set_os_network_config (line 56) | async fn set_os_network_config(&self, network_config: OsNetworkConfig, t... method unset_os_network_config (line 82) | async fn unset_os_network_config(&self) -> Result<(), ()> { method packet_for_os (line 99) | fn packet_for_os(&self, packet: Bytes) { constant JSON_OTHER_ERROR (line 126) | const JSON_OTHER_ERROR: &str = r#"{"Err":"other"}"#; function test_other_error_json (line 129) | fn test_other_error_json() { FILE: rustlib/src/bin/obscura/service/os/linux/network_manager.rs constant MIN_VERSION (line 11) | const MIN_VERSION: Version = Version::new(1, 52, 1); type NetworkManager (line 19) | trait NetworkManager { method get_device_by_ip_iface (line 20) | fn get_device_by_ip_iface(&self, iface: &str) -> zbus::Result zbus::Result; type Device (line 27) | pub trait Device { method get_applied_connection (line 28) | fn get_applied_connection(&self, flags: u32) -> zbus::Result<(HashMap<... method reapply (line 29) | fn reapply(&self, connection: HashMap zbus::Result; function connect (line 35) | async fn connect() -> Result<(NetworkManagerProxy<'static>, Version), ()> { function device_proxy (line 51) | pub async fn device_proxy(self, interface: &NetworkInterface) -> Result<... function detect (line 73) | pub async fn detect() -> bool { function set_dns_and_routes (line 81) | pub async fn set_dns_and_routes(tun: &NetworkInterface, network_config: ... function reset_dns_and_routes (line 87) | pub async fn reset_dns_and_routes(tun: &NetworkInterface) -> Result<(), ... function apply_device_settings (line 94) | async fn apply_device_settings( function build_device_settings (line 124) | fn build_device_settings( function ipv4_to_u32 (line 212) | fn ipv4_to_u32(ip: Ipv4Addr) -> u32 { function route_to_dbus_hashmap (line 217) | fn route_to_dbus_hashmap(net: IpNetwork) -> Result Result { function add_routes (line 35) | pub async fn add_routes(tun: &NetworkInterface, routes: &[IpNetwork]) ->... function del_routes (line 46) | pub async fn del_routes(tun: &NetworkInterface, routes: &[IpNetwork]) ->... function build_route_messages (line 72) | fn build_route_messages(tun: &NetworkInterface, routes: &[IpNetwork]) ->... function watch_preferred_network_interface (line 85) | pub async fn watch_preferred_network_interface() -> Receiver ... type DefaultRoute (line 176) | struct DefaultRoute { FILE: rustlib/src/bin/obscura/service/os/linux/service_lock.rs constant LOCK_PATH (line 5) | const LOCK_PATH: &str = "/run/obscura.lock"; type ServiceLock (line 7) | pub struct ServiceLock { method new (line 12) | pub fn new() -> Result { FILE: rustlib/src/bin/obscura/service/os/linux/start_error.rs type LinuxServiceStartError (line 2) | pub enum LinuxServiceStartError { FILE: rustlib/src/bin/obscura/service/os/linux/tun.rs constant TUN_MIN_LOG_SILENCE (line 16) | const TUN_MIN_LOG_SILENCE: Duration = Duration::from_secs(5); constant TUN_NAME (line 17) | const TUN_NAME: &str = "obscuravpn"; type Tun (line 19) | pub struct Tun { method create (line 26) | pub async fn create() -> anyhow::Result { method interface (line 41) | pub fn interface(&self) -> NetworkInterface { method send (line 45) | pub fn send(&self, packet: Bytes) { method receive (line 56) | async fn receive(dev: &tun_rs::AsyncDevice, packet_buffer: &mut Packet... method set_config (line 81) | pub fn set_config(&self, mtu: u16, ipv4: Ipv4Addr, ipv6: Ipv6Network) ... method spawn_read_task (line 127) | pub fn spawn_read_task(&self, tunnel: QuicWgConnPacketSender) { FILE: rustlib/src/bin/obscura/service/os/mod.rs constant ROUTES (line 13) | pub const ROUTES: [IpNetwork; 4] = [ FILE: rustlib/src/bin/obscura/service/os/windows/adapters.rs constant WATCH_ERROR_BACKOFF (line 18) | const WATCH_ERROR_BACKOFF: Duration = Duration::from_secs(1); function watch_active_adapter (line 20) | pub fn watch_active_adapter() -> Receiver> { function watch_active_adapter_thread (line 26) | fn watch_active_adapter_thread(sender: &Sender>) { function watch_addr_changes (line 34) | fn watch_addr_changes(sender: &Sender>) { type PhysicalAdapter (line 98) | pub struct PhysicalAdapter { function find_active_physical_adapter (line 108) | pub fn find_active_physical_adapter() -> Result,... function get_active_physical_adapter (line 182) | fn get_active_physical_adapter() -> Result, ()> { function test_not_wsl_vethernet (line 204) | fn test_not_wsl_vethernet() { FILE: rustlib/src/bin/obscura/service/os/windows/gaa.rs type GAABufferInit (line 9) | pub struct GAABufferInit { method new (line 15) | pub fn new() -> Result, ()> { FILE: rustlib/src/bin/obscura/service/os/windows/iphelper.rs function add_routes (line 14) | pub fn add_routes(adapter: &wintun::Adapter) -> Result<(), ()> { function remove_routes (line 26) | pub fn remove_routes(adapter: &wintun::Adapter) -> Result<(), ()> { function build_forward_row (line 40) | fn build_forward_row(if_index: u32, dest: IpAddr, prefix_len: u8) -> MIB... function add_route (line 64) | fn add_route(if_index: u32, route: &IpNetwork) -> Result<(), ()> { function remove_route (line 85) | fn remove_route(if_index: u32, route: &IpNetwork) -> Result<(), ()> { function make_sockaddr_in (line 106) | fn make_sockaddr_in(addr: Ipv4Addr) -> SOCKADDR_IN { function make_sockaddr_in6 (line 114) | fn make_sockaddr_in6(addr: Ipv6Addr) -> SOCKADDR_IN6 { function family_name (line 122) | fn family_name(family: ADDRESS_FAMILY) -> &'static str { function set_metric (line 132) | fn set_metric(adapter: &wintun::Adapter, automatic: bool, metric: u32) -... function set_low_metric (line 188) | pub fn set_low_metric(adapter: &wintun::Adapter) -> Result<(), ()> { function reset_interface_metric (line 194) | pub fn reset_interface_metric(adapter: &wintun::Adapter) -> Result<(), (... function get_system_directory (line 200) | fn get_system_directory() -> std::path::PathBuf { function run_command (line 221) | async fn run_command(cmd: &mut tokio::process::Command, friendly_name: &... function set_ipv4_address (line 235) | pub async fn set_ipv4_address(adapter: &wintun::Adapter, ipv4: Ipv4Addr)... function set_ipv6_address (line 247) | pub async fn set_ipv6_address(adapter: &wintun::Adapter, ipv6: Ipv6Netwo... function set_mtu (line 258) | pub async fn set_mtu(adapter: &wintun::Adapter, mtu: u16) -> Result<(), ... function set_dns_servers (line 278) | pub async fn set_dns_servers(adapter: &wintun::Adapter, dns: &[IpAddr]) ... function set_interface_dns_settings (line 288) | fn set_interface_dns_settings(interface: windows::core::GUID, dns: &[IpA... function set_dns_servers_netsh (line 310) | async fn set_dns_servers_netsh(adapter: &wintun::Adapter, dns: &[IpAddr]... function flush_dns_cache (line 348) | pub async fn flush_dns_cache() -> Result<(), ()> { FILE: rustlib/src/bin/obscura/service/os/windows/mod.rs type WindowsOsImpl (line 20) | pub struct WindowsOsImpl { method new (line 27) | pub async fn new() -> Result { method next_manager_command (line 36) | pub async fn next_manager_command(&self) -> (ManagerCmd, Box Receiver> { method set_os_network_config (line 54) | async fn set_os_network_config(&self, network_config: OsNetworkConfig, t... method unset_os_network_config (line 64) | async fn unset_os_network_config(&self) -> Result<(), ()> { method packet_for_os (line 69) | fn packet_for_os(&self, packet: Bytes) { FILE: rustlib/src/bin/obscura/service/os/windows/nrpt.rs constant NRPT_RULE_GUID (line 5) | const NRPT_RULE_GUID: &str = "fb157da8-6578-4f53-81ea-0a9168e96c1f"; constant NRPT_COMMENT_VALUE (line 7) | const NRPT_COMMENT_VALUE: &str = "Redirect all DNS queries to nameserver... constant NRPT_DISPLAY_NAME_VALUE (line 8) | const NRPT_DISPLAY_NAME_VALUE: &str = "Obscura VPN Rule"; constant NRPT_RULES_PATH (line 10) | const NRPT_RULES_PATH: &str = r"SYSTEM\CurrentControlSet\Services\Dnscac... function get_rule_path (line 12) | fn get_rule_path() -> String { function set_nrpt_value (line 16) | fn set_nrpt_value(key: &RegKey, name: &str, value: &impl ToRegValue) -> ... function create_rule (line 22) | pub fn create_rule(name_servers: &[IpAddr]) -> Result<(), ()> { function delete_rules (line 59) | pub fn delete_rules() -> Result { function test_rule_path (line 77) | fn test_rule_path() { FILE: rustlib/src/bin/obscura/service/os/windows/start_error.rs type WindowsServiceStartError (line 4) | pub enum WindowsServiceStartError { FILE: rustlib/src/bin/obscura/service/os/windows/tun.rs constant WINTUN_DLL_SHA256 (line 22) | const WINTUN_DLL_SHA256: &str = env!("WINTUN_DLL_SHA256"); constant TUN_MIN_LOG_SILENCE (line 24) | const TUN_MIN_LOG_SILENCE: Duration = Duration::from_secs(5); constant TUN_NAME (line 28) | const TUN_NAME: &str = "ObscuraVPN"; type Tun (line 30) | pub struct Tun { method create (line 37) | pub async fn create() -> Result { method send (line 61) | pub fn send(&self, packet: Bytes) { method put_packet_in_buffer (line 92) | fn put_packet_in_buffer(packet: wintun::Packet, buffer: &mut [u8]) -> ... method receive (line 120) | async fn receive(session: &Arc, packet_buffer: &mut P... method set_config (line 164) | pub async fn set_config(&self, mtu: u16, ipv4: Ipv4Addr, ipv6: Ipv6Net... method spawn_read_task (line 187) | pub fn spawn_read_task(&self, tunnel: QuicWgConnPacketSender) { method shutdown (line 199) | pub async fn shutdown(&self) -> Result<(), ()> { function verify_and_load_wintun (line 212) | fn verify_and_load_wintun() -> Result { FILE: rustlib/src/cached_value.rs type CachedValue (line 9) | pub struct CachedValue { FILE: rustlib/src/client_state.rs type ClientStateHandle (line 50) | pub struct ClientStateHandle(Arc>); method borrow (line 155) | pub fn borrow(&self) -> tokio::sync::watch::Ref<'_, ClientState> { method subscribe (line 159) | pub fn subscribe(&self) -> Receiver { method change_config (line 163) | fn change_config(&self, f: impl FnOnce(&mut Config)) { method change (line 171) | fn change(&self, f: impl FnOnce(&mut ClientState) -> T) -> T { method set_account_id (line 180) | pub fn set_account_id(&self, account_id_and_auth_token: Option<(Accoun... method get_exit_list (line 217) | pub fn get_exit_list(&self) -> Option>> { method set_pinned_exits (line 221) | pub fn set_pinned_exits(&self, pinned_locations: Vec) { method set_feature_flag (line 227) | pub fn set_feature_flag(&self, flag: &str, active: bool) { method set_tunnel_target_state (line 233) | pub fn set_tunnel_target_state(&self, tunnel_args: Option,... method set_api_host_alternate (line 244) | pub fn set_api_host_alternate(&self, value: Option) { method set_sni_relay (line 259) | pub fn set_sni_relay(&self, value: Option) { method set_in_new_account_flow (line 271) | pub fn set_in_new_account_flow(&self, value: bool) { method set_api_url (line 277) | pub fn set_api_url(&self, url: Option) { method set_dns_content_block (line 287) | pub fn set_dns_content_block(&self, value: DnsContentBlock) { method set_network_interface (line 291) | pub fn set_network_interface(&self, network_interface: Option Result<(), ApiError> { method select_relay (line 499) | pub async fn select_relay(&self, network_interface: Option<&NetworkInt... method make_api_client (line 574) | pub fn make_api_client(&self, account_id: AccountId) -> Result Result, ApiError> { method cache_auth_token (line 596) | fn cache_auth_token(&self) { method api_request (line 605) | pub async fn api_request(&self, cmd: C) -> Result(&self, cmd: C, etag: Optio... method base_url (line 619) | pub fn base_url(&self) -> String { method user_agent (line 623) | pub fn user_agent(&self) -> String { method maybe_update_exits (line 627) | pub async fn maybe_update_exits(&self, freshness: Duration) -> Result<... method update_account_info (line 657) | pub fn update_account_info(&self, account_info: &AccountInfo) { method rotate_wireguard_key_if_required (line 665) | pub fn rotate_wireguard_key_if_required(&self) { method register_cached_wireguard_key_if_new (line 674) | pub async fn register_cached_wireguard_key_if_new(&self) -> Result<(),... method rotate_wg_key (line 708) | pub fn rotate_wg_key(&self) { method get_debug_info (line 716) | pub async fn get_debug_info(&self) -> DebugInfo { method update_dns_cache (line 761) | pub fn update_dns_cache(&self, name: &str, addrs: &[SocketAddr]) { type ClientState (line 52) | pub struct ClientState { method new (line 79) | pub fn new( method target_state (line 105) | pub fn target_state(&self) -> TargetState { method config (line 117) | pub fn config(&self) -> &Config { method base_url (line 121) | pub fn base_url(&self) -> String { method make_api_client (line 125) | fn make_api_client(&self, account_id: AccountId) -> Result bool { type WeakClientStateHandle (line 769) | pub struct WeakClientStateHandle(Weak>); method upgrade (line 772) | pub fn upgrade(&self) -> Option { FILE: rustlib/src/config/cached.rs type ConfigCached (line 10) | pub struct ConfigCached { function new (line 17) | pub fn new(value: T, version: Version) -> Self { function etag (line 21) | pub fn etag(&self) -> Option<&[u8]> { function staleness (line 28) | pub fn staleness(&self) -> Duration { function version (line 32) | pub fn version(&self) -> &[u8] { method eq (line 41) | fn eq(&self, other: &Self) -> bool { type Version (line 49) | pub enum Version { method artificial (line 55) | pub fn artificial() -> Self { FILE: rustlib/src/config/dns_cache.rs type DnsCache (line 7) | pub struct DnsCache { method get (line 12) | pub fn get(&self, name: &str) -> Vec { method set (line 16) | pub fn set(&mut self, name: &str, addr: &[SocketAddr]) { method default (line 22) | fn default() -> Self { FILE: rustlib/src/config/feature_flags.rs type FeatureFlags (line 11) | pub struct FeatureFlags { constant KEYS (line 25) | pub const KEYS: &'static [&'static str] = FeatureFlagKey::VARIANTS; method set (line 27) | pub fn set(&mut self, flag: &str, active: bool) { method change (line 31) | fn change(&mut self, flag: &str, value: Option) { type FeatureFlagKey (line 47) | pub enum FeatureFlagKey { function check_flag_list (line 59) | fn check_flag_list() { FILE: rustlib/src/config/mod.rs type ConfigHandle (line 13) | pub struct ConfigHandle { method new (line 20) | pub fn new(config_dir: PathBuf, keychain_wg_sk: Option<&[u8]>) -> Resu... method change (line 25) | pub fn change(&mut self, f: impl FnOnce(&mut Config) -> T) -> T { method check_persisted (line 40) | pub fn check_persisted(&self) -> Result<(), ConfigDirty> { type Target (line 46) | type Target = Config; method deref (line 48) | fn deref(&self) -> &Self::Target { FILE: rustlib/src/config/persistence.rs constant CONFIG_FILE (line 29) | pub(super) const CONFIG_FILE: &str = "config.json"; type ConfigSaveError (line 32) | pub enum ConfigSaveError { type ConfigLoadError (line 46) | pub enum ConfigLoadError { function try_load (line 55) | fn try_load(path: &Path) -> Result, ConfigLoadError> { function load (line 75) | pub fn load(config_dir: &Path, keychain_wg_sk: Option<&[u8]>) -> Result<... function save (line 135) | pub fn save(config_dir: &Path, config: &Config) -> Result<(), ConfigSave... type Config (line 228) | pub struct Config { method migrate (line 285) | pub fn migrate(&mut self) { type ConfigDebug (line 296) | pub struct ConfigDebug { method from (line 319) | fn from(config: Config) -> Self { type PinnedLocation (line 373) | pub struct PinnedLocation { type WireGuardKeyCache (line 383) | pub struct WireGuardKeyCache { method fmt (line 415) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method try_set_secret_key_from_keychain (line 437) | pub fn try_set_secret_key_from_keychain(&mut self, keychain_secret_key... method ensure_key_pair (line 470) | fn ensure_key_pair(&mut self, set_keychain_wg_sk: Option<&KeychainSetS... method use_key_pair (line 491) | pub fn use_key_pair(&mut self, set_keychain_wg_sk: Option<&KeychainSet... method rotate_now (line 497) | pub fn rotate_now(&mut self, set_keychain_wg_sk: Option<&KeychainSetSe... method rotate_now_internal (line 500) | fn rotate_now_internal(&mut self, set_keychain_wg_sk: Option<&Keychain... method rotate_if_required (line 526) | pub fn rotate_if_required(&mut self, set_keychain_wg_sk: Option<&Keych... method need_registration (line 534) | pub fn need_registration(&mut self, set_keychain_wg_sk: Option<&Keycha... method registered (line 542) | pub fn registered(&mut self, registered_public_key: PublicKey, removed... type WireGuardKeyCacheKeyPair (line 397) | pub enum WireGuardKeyCacheKeyPair { type KeychainSetSecretKeyFn (line 412) | pub type KeychainSetSecretKeyFn = Box bool) + Sync... FILE: rustlib/src/config/persistence_test.rs function random_config (line 23) | fn random_config() -> Config { function load_no_config (line 34) | fn load_no_config() { function load_config (line 40) | fn load_config() { function load_invalid_json (line 51) | fn load_invalid_json() { function load_empty (line 80) | fn load_empty() { function load_no_permission (line 100) | fn load_no_permission() { function test_ignore_invalid_fields (line 120) | fn test_ignore_invalid_fields() { FILE: rustlib/src/constants.rs constant DEFAULT_API_DOMAIN (line 6) | pub const DEFAULT_API_DOMAIN: &str = "v1.api.prod.obscura.net"; constant DEFAULT_API_URL (line 7) | pub const DEFAULT_API_URL: &str = formatcp!("https://{DEFAULT_API_DOMAIN... constant DNS_CACHE_SEED (line 8) | pub const DNS_CACHE_SEED: &[(&str, &[SocketAddr])] = &[(DEFAULT_API_DOMA... constant DEFAULT_API_BACKUP_DOMAIN (line 10) | pub const DEFAULT_API_BACKUP_DOMAIN: &str = "crimsonlance.net"; constant DEFAULT_RELAY_SNI (line 11) | pub const DEFAULT_RELAY_SNI: &str = "example.com"; FILE: rustlib/src/debug_archive/builder.rs type DebugArchiveBuilder (line 9) | pub struct DebugArchiveBuilder { method new (line 14) | pub fn new() -> anyhow::Result { method write_error (line 31) | fn write_error(&mut self, name: &str, error: impl Debug + Display) { method add (line 38) | fn add(&mut self, name: &str, f: impl FnOnce(&mut Zipper) -> anyhow::R... method add_bytes (line 44) | pub fn add_bytes(&mut self, name: &str, ext: &str, data: &[u8]) { method add_txt (line 48) | pub fn add_txt(&mut self, name: &str, text: &str) { method add_json (line 53) | pub fn add_json(&mut self, name: &str, value: &impl Serialize) { method add_path (line 59) | pub fn add_path(&mut self, name: &str, ext: Option<&str>, path: &Utf8P... method add_cmd (line 69) | pub fn add_cmd(&mut self, name: &str, ext: &str, mut cmd: diva::Comman... method finish (line 83) | pub fn finish(self) -> anyhow::Result { FILE: rustlib/src/debug_archive/dns.rs type DnsTask (line 9) | pub struct DnsTask { function debug_dns (line 13) | pub async fn debug_dns(host_port: &'static str) -> DebugTask { FILE: rustlib/src/debug_archive/http.rs type HttpTask (line 15) | pub struct HttpTask { function debug_http (line 24) | pub async fn debug_http(url: &'static str, dns: Option, sni: bo... type FixedResolver (line 76) | struct FixedResolver(Vec); method resolve (line 79) | fn resolve(&self, _: reqwest::dns::Name) -> Resolving { FILE: rustlib/src/debug_archive/info.rs type DebugInfo (line 9) | pub struct DebugInfo { FILE: rustlib/src/debug_archive/mod.rs function create_debug_archive (line 12) | pub fn create_debug_archive(user_feedback: Option<&str>, debug_info: Deb... FILE: rustlib/src/debug_archive/task.rs constant TASK_TIMEOUT (line 9) | const TASK_TIMEOUT: Duration = Duration::from_secs(60); type DebugTask (line 12) | pub struct DebugTask { type TaskResult (line 18) | pub enum TaskResult { function get (line 26) | pub fn get(&self) -> Option<&T> { function run_debug_task (line 34) | pub async fn run_debug_task(task: impl Future(error: JoinError) -> DebugTask { FILE: rustlib/src/debug_archive/zipper.rs type Zipper (line 10) | pub struct Zipper { method new (line 19) | pub fn new(dst_parent: &Utf8Path, name: String) -> anyhow::Result { method root (line 33) | fn root(&self) -> &Utf8Path { method create_dir (line 40) | pub fn create_dir(&mut self, dst: impl AsRef) -> anyhow::Res... method write_file (line 48) | pub fn write_file(&mut self, dst: impl AsRef, data: &[u8]) -... method copy_from_fs (line 63) | pub fn copy_from_fs(&mut self, src: &Utf8Path, dst: &Utf8Path) -> anyh... method finish (line 96) | pub fn finish(self) -> anyhow::Result { FILE: rustlib/src/dns.rs type DnsResolver (line 8) | pub struct DnsResolver { method new (line 13) | pub fn new(client_state: WeakClientStateHandle) -> Arc { method resolve (line 19) | fn resolve(&self, name: Name) -> Resolving { function resolve_and_cache (line 43) | async fn resolve_and_cache(client_state: WeakClientStateHandle, name: St... FILE: rustlib/src/errors.rs type ConnectErrorCode (line 25) | pub enum ConnectErrorCode { method as_static_str (line 38) | pub fn as_static_str(&self) -> &'static str { method from (line 44) | fn from(err: &TunnelConnectError) -> Self { type TunnelConnectError (line 95) | pub enum TunnelConnectError { type ApiError (line 123) | pub enum ApiError { method api_error_kind (line 148) | pub fn api_error_kind(&self) -> Option<&obscuravpn_api::cmd::ApiErrorK... type ConfigDirtyOrApiError (line 131) | pub enum ConfigDirtyOrApiError { type ConfigDirty (line 139) | pub struct ConfigDirty; method fmt (line 142) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { type RelaySelectionError (line 157) | pub enum RelaySelectionError { type ErrorAt (line 167) | pub struct ErrorAt { function from (line 173) | fn from(error: T) -> Self { FILE: rustlib/src/exit_selection.rs type ExitSelector (line 11) | pub enum ExitSelector { method matches (line 26) | pub fn matches(&self, candidate: &OneExit) -> bool { method default (line 37) | fn default() -> Self { type ExitSelectionState (line 43) | pub struct ExitSelectionState { method select_next_exit (line 51) | pub fn select_next_exit<'a>(&mut self, selector: &ExitSelector, exits:... method rank (line 74) | fn rank(candidate: &OneExit, relay_city_code: &CityCode, relay_preferr... method exclude (line 81) | fn exclude(&self, candidate: &OneExit) -> bool { FILE: rustlib/src/ffi_helpers.rs type FfiBytes (line 6) | pub struct FfiBytes<'a> { function as_slice (line 13) | pub fn as_slice(&self) -> &'a [u8] { function to_vec (line 25) | pub fn to_vec(&self) -> Vec { function from (line 31) | fn from(b: &'a T) -> Self { type FfiBytesExt (line 37) | pub trait FfiBytesExt { method ffi (line 38) | fn ffi(&self) -> FfiBytes<'_>; method ffi (line 42) | fn ffi(&self) -> FfiBytes<'_> { type FfiStr (line 48) | pub struct FfiStr<'a> { function as_str (line 53) | pub fn as_str(&self) -> &'a str { function fmt (line 59) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function from (line 65) | fn from(s: &'a T) -> Self { type FfiStrExt (line 71) | pub trait FfiStrExt { method ffi_str (line 72) | fn ffi_str(&self) -> FfiStr<'_>; method ffi_str (line 76) | fn ffi_str(&self) -> FfiStr<'_> { FILE: rustlib/src/liveness.rs constant MAX_ALLOWED_LOST_PROBES (line 9) | const MAX_ALLOWED_LOST_PROBES: usize = 4; constant MAX_ALLOWED_LOST_PROBES_AFTER_SLEEP (line 10) | const MAX_ALLOWED_LOST_PROBES_AFTER_SLEEP: usize = 1; constant BUSY_PING_PERIOD (line 11) | const BUSY_PING_PERIOD: Duration = Duration::from_secs(1); constant IDLE_PING_PERIOD (line 12) | const IDLE_PING_PERIOD: Duration = Duration::from_secs(55); constant MIN_PROBE_LOST_PERIOD (line 20) | const MIN_PROBE_LOST_PERIOD: Duration = Duration::from_secs(1); constant MAX_PROBE_LOST_PERIOD (line 21) | const MAX_PROBE_LOST_PERIOD: Duration = Duration::from_secs(30); constant SLOW_PONG_WINDOW (line 22) | const SLOW_PONG_WINDOW: u32 = 100; constant PROBE_PREFIX (line 25) | const PROBE_PREFIX: &[u8; 32] = b"obs-ping\x75\xf8\xb9\x47\x4b\xe1\x61\x... type LivenessChecker (line 27) | pub struct LivenessChecker { method new (line 46) | pub fn new(mtu: u16, client_ip: Ipv4Addr, ping_target_ip: Ipv4Addr) ->... method probe_lost_period (line 60) | fn probe_lost_period(&self) -> Duration { method lost_probe_count_and_time_of_next_loss (line 69) | fn lost_probe_count_and_time_of_next_loss(&self, now: Instant) -> (usi... method sent_traffic (line 82) | pub fn sent_traffic(&mut self) -> Option> { method wake (line 95) | pub fn wake(&mut self) -> Vec { method poll (line 105) | pub fn poll(&mut self) -> LivenessCheckerPoll { method process_potential_probe_response (line 161) | pub fn process_potential_probe_response(&mut self, packet: &[u8]) -> O... method update_slowest_pongs_list (line 216) | fn update_slowest_pongs_list(&mut self, id_seq: u32, rtt: Duration) { method send_ping (line 230) | fn send_ping(&mut self, now: Instant) -> Vec { type SentPing (line 39) | struct SentPing { type LivenessCheckerPoll (line 257) | pub enum LivenessCheckerPoll { type ReceivedPong (line 263) | struct ReceivedPong { function test_probe_packet_size (line 273) | fn test_probe_packet_size() { FILE: rustlib/src/logging.rs type LogPersistence (line 13) | pub struct LogPersistence { method log_dir (line 19) | pub fn log_dir(&self) -> &Utf8Path { function build_log_roller (line 25) | fn build_log_roller(log_dir: &Utf8Path) -> anyhow::Result<(NonBlocking, ... function build_log_roller (line 50) | fn build_log_roller(log_dir: &Utf8Path) -> anyhow::Result<(NonBlocking, ... function filter (line 55) | fn filter() -> EnvFilter { function init (line 59) | pub fn init(base_layer: impl Layer + Send + Sync, persistence_... FILE: rustlib/src/manager.rs type Manager (line 32) | pub struct Manager { method new (line 147) | pub fn new( method maybe_update_exits (line 166) | pub async fn maybe_update_exits(&self, freshness: Duration) -> Result<... method subscribe (line 170) | pub fn subscribe(&self) -> Receiver { method traffic_stats (line 174) | pub fn traffic_stats(&self) -> ManagerTrafficStats { method login (line 178) | pub async fn login(&self, account_id: AccountId, validate: bool) -> Re... method logout (line 201) | pub fn logout(&self) -> Result<(), ConfigDirty> { method set_api_url (line 205) | pub fn set_api_url(&self, value: Option) { method api_request (line 209) | pub async fn api_request(&self, cmd: C) -> Result Result Result { method propagate_updates_to_status_task (line 227) | async fn propagate_updates_to_status_task(this: Arc, _: ()) { method wireguard_key_registraction_task (line 254) | async fn wireguard_key_registraction_task(this: Arc, _: ()) { method preferred_network_interface_task (line 283) | pub async fn preferred_network_interface_task(this: Arc, mut net... method create_debug_archive (line 294) | pub async fn create_debug_archive(&self, user_feedback: Option<&str>) ... method get_debug_info (line 301) | pub async fn get_debug_info(&self) -> DebugInfo { method wake (line 305) | pub fn wake(&self) { method get_exit_list (line 311) | pub async fn get_exit_list(&self, known_version: Option>) -> R... method run_on_client_state (line 330) | pub fn run_on_client_state(&self, f: impl FnOnce(&ClientStateHandle)) ... type Status (line 42) | pub struct Status { method new (line 60) | fn new(version: Uuid, vpn_status: VpnStatus, client_state: &ClientStat... type VpnStatus (line 97) | pub enum VpnStatus { method from_tunnel_state (line 121) | fn from_tunnel_state(tunnel_state: &TunnelState) -> Self { type TunnelArgs (line 116) | pub struct TunnelArgs { type ManagerTrafficStats (line 338) | pub struct ManagerTrafficStats { FILE: rustlib/src/manager_cmd.rs type ManagerCmdErrorCode (line 38) | pub enum ManagerCmdErrorCode { method as_static_str (line 50) | pub fn as_static_str(&self) -> &'static str { method from (line 56) | fn from(error: &ConfigDirty) -> Self { method from (line 63) | fn from(error: &ConfigDirtyOrApiError) -> Self { method from (line 73) | fn from(error: &ApiError) -> Self { type ManagerCmd (line 113) | pub enum ManagerCmd { method from_json (line 210) | pub fn from_json(json_cmd: &[u8]) -> Result { method run (line 235) | pub async fn run(self, manager: &Manager) -> Result Self { function map_result (line 201) | fn map_result(result: Result) -> Result) -> io::Resu... constant SIOCGIFMTU (line 46) | const SIOCGIFMTU: libc::Ioctl = libc::SIOCGIFMTU as libc::Ioctl; constant SIOCGIFMTU (line 49) | const SIOCGIFMTU: libc::c_ulong = 3223349555; function interface_mtu (line 52) | pub fn interface_mtu(interface: &NetworkInterface) -> anyhow::Result { function interface_mtu (line 76) | pub fn interface_mtu(interface: &NetworkInterface) -> anyhow::Result { function new_quic (line 80) | pub fn new_quic(udp: std::net::UdpSocket, mtu: Option, force_small_... FILE: rustlib/src/network_config.rs constant MULLVAD_EXIT_PROVIDER_NAME (line 8) | const MULLVAD_EXIT_PROVIDER_NAME: &str = "Mullvad VPN"; type TunnelNetworkConfig (line 11) | pub struct TunnelNetworkConfig { method new (line 19) | pub fn new(tunnel_config: &ObfuscatedTunnelConfig, mtu: u16) -> Result... method dummy (line 36) | fn dummy() -> Self { type NetworkConfigError (line 47) | pub enum NetworkConfigError { type DnsConfig (line 57) | pub enum DnsConfig { type DnsContentBlock (line 65) | pub struct DnsContentBlock { method mullvad_dns_ip (line 75) | fn mullvad_dns_ip(self) -> Option { type OsNetworkConfig (line 93) | pub struct OsNetworkConfig { method new (line 102) | pub fn new( method dummy (line 126) | pub fn dummy(dns_content_block: DnsContentBlock, use_system_dns: bool)... FILE: rustlib/src/os/os_trait.rs type Os (line 6) | pub trait Os: Sync + Send + 'static { method network_interface (line 8) | fn network_interface(&self) -> tokio::sync::watch::Receiver impl Future Option<&mut [u8]> { method commit (line 15) | pub fn commit(&mut self, size: u16) { method take_iter (line 20) | pub fn take_iter(&mut self) -> PacketBufferIter<'_> { method default (line 29) | fn default() -> Self { type PacketBufferIter (line 39) | pub struct PacketBufferIter<'a> { type Item (line 45) | type Item = &'a [u8]; method next (line 47) | fn next(&mut self) -> Option { method size_hint (line 55) | fn size_hint(&self) -> (usize, Option) { FILE: rustlib/src/positive_u31.rs type PositiveU31 (line 9) | pub struct PositiveU31 { type Error (line 14) | type Error = TryFromIntError; method try_from (line 15) | fn try_from(value: u32) -> Result { function from (line 22) | fn from(value: PositiveU31) -> Self { function from (line 28) | fn from(value: PositiveU31) -> Self { method from (line 34) | fn from(value: PositiveU31) -> Self { method from (line 40) | fn from(value: PositiveU31) -> Self { FILE: rustlib/src/quicwg.rs constant WG_FIRST_HANDSHAKE_RESENDS (line 41) | const WG_FIRST_HANDSHAKE_RESENDS: usize = 25; constant WG_FIRST_HANDSHAKE_TIMEOUT (line 42) | const WG_FIRST_HANDSHAKE_TIMEOUT: Duration = Duration::from_millis(100); constant QUIC_IDLE_TIMEOUT (line 45) | pub const QUIC_IDLE_TIMEOUT: Duration = Duration::from_secs(60); constant QUIC_STEP_TIMEOUT (line 47) | const QUIC_STEP_TIMEOUT: Duration = Duration::from_secs(30); constant WG_TIMER_TICK (line 52) | const WG_TIMER_TICK: Duration = Duration::from_secs(1); constant TUNNEL_MTU (line 53) | pub const TUNNEL_MTU: u16 = 1280; constant DEFAULT_UDP_PAYLOAD_SIZE (line 56) | pub const DEFAULT_UDP_PAYLOAD_SIZE: u16 = 1350; constant IPV4_UDP_OVERHEAD (line 58) | pub const IPV4_UDP_OVERHEAD: u16 = 20 + 8; constant LIVENESS_MTU (line 60) | const LIVENESS_MTU: u16 = 100; constant WG_FRAGMENT_BUFFER_LEN (line 69) | const WG_FRAGMENT_BUFFER_LEN: NonZeroU32 = NonZeroU32::new(10_000).unwra... constant WG_FRAGMENT_MAX_SIZE (line 75) | const WG_FRAGMENT_MAX_SIZE: u16 = 1540; type QuicWgReceiveError (line 78) | pub enum QuicWgReceiveError { type QuicWgConnectError (line 86) | pub enum QuicWgConnectError { type QuicWgRelayHandshakeError (line 100) | pub enum QuicWgRelayHandshakeError { type RelayErrorResponse (line 119) | pub struct RelayErrorResponse { method new (line 129) | pub fn new(error_code: NonZeroU32, message: &[u8]) -> Self { type UnexpectedOpCode (line 126) | pub struct UnexpectedOpCode(RelayOpCode); type QuicWgWireguardHandshakeError (line 135) | pub enum QuicWgWireguardHandshakeError { type QuicWgConn (line 146) | pub struct QuicWgConn { method connect (line 215) | pub async fn connect( method build_first_wg_handshake_init (line 257) | fn build_first_wg_handshake_init(wg: &mut Tunn) -> Result) -> Control... method send (line 344) | fn send<'a>(&self, packets: impl Iterator) { method wake (line 358) | pub fn wake(&self) { method send_single_packet (line 364) | fn send_single_packet(&self, wg_state: &mut WgState, packet: &[u8]) { method receive (line 386) | pub async fn receive(&self) -> Result { method traffic_stats (line 471) | pub fn traffic_stats(&self) -> QuicWgTrafficStats { method exit_public_key (line 475) | pub fn exit_public_key(&self) -> PublicKey { method client_public_key (line 479) | pub fn client_public_key(&self) -> PublicKey { method transport (line 483) | pub fn transport(&self) -> TransportKind { type QuicWgTrafficStats (line 157) | pub struct QuicWgTrafficStats { type WgState (line 164) | struct WgState { type TickStats (line 177) | struct TickStats { type TransportKind (line 194) | pub enum TransportKind { type QuicWgConnPacketSender (line 200) | pub struct QuicWgConnPacketSender(Weak); method new (line 203) | pub fn new(conn: Option<&Arc>) -> Self { method send (line 207) | pub fn send<'a>(&self, packets: impl Iterator) { type QuicWgConnHandshaking (line 491) | pub struct QuicWgConnHandshaking { method start_quic (line 498) | pub async fn start_quic( method start_tcp_tls (line 528) | pub async fn start_tcp_tls( method exchange_protocol_identifiers (line 553) | async fn exchange_protocol_identifiers(&mut self) -> Result<(), QuicWg... method measure_rtt (line 585) | pub async fn measure_rtt(&mut self) -> Result Result Result<(), QuicWgRelayHandshakeError> { method abandon (line 623) | pub async fn abandon(mut self) { method rustls_config (line 640) | fn rustls_config(relay_cert: CertificateDer<'static>) -> Result) -> Result Result<(), QuicWgRelayHandshakeErr... method recv_ok_resp_no_timeout (line 704) | async fn recv_ok_resp_no_timeout(&mut self) -> Result<(), QuicWgRelayH... method send_op (line 739) | async fn send_op(&mut self, op: RelayOpCode, arg: &[u8]) -> Result<(),... method send_op_no_timeout (line 747) | async fn send_op_no_timeout(&mut self, op: RelayOpCode, arg: &[u8]) ->... method transport_kind (line 757) | pub fn transport_kind(self) -> TransportKind { type Transport (line 765) | enum Transport { method into_wg_send_recv (line 775) | fn into_wg_send_recv(self) -> (WgSender, WgReceiver, Option<(quinn::Se... type WgSender (line 845) | enum WgSender { method max_wg_message_size (line 851) | fn max_wg_message_size(&self) -> Option { method send_wg_message (line 858) | fn send_wg_message(&self, wg_message: Bytes) { type WgReceiver (line 879) | enum WgReceiver { method new_tcp_tls (line 889) | fn new_tcp_tls(traffic_state: watch::Sender, relay_rea... method receive_wg_message (line 897) | async fn receive_wg_message(&self) -> io::Result { type WgTrafficState (line 924) | struct WgTrafficState { function send_message (line 929) | async fn send_message(transport: &mut T, code: Me... function recv_skip (line 938) | async fn recv_skip(transport: &mut T, mut n: usize... function recv_message (line 950) | async fn recv_message(transport: &mut T) -> Result... function recv_fixed (line 971) | async fn recv_fixed(transport: &mu... type VerifyVpnServerCert (line 978) | struct VerifyVpnServerCert { method verify_server_cert (line 984) | fn verify_server_cert( method verify_tls12_signature (line 997) | fn verify_tls12_signature( method verify_tls13_signature (line 1005) | fn verify_tls13_signature( method supported_verify_schemes (line 1014) | fn supported_verify_schemes(&self) -> Vec { FILE: rustlib/src/relay_selection.rs function race_relay_handshakes (line 11) | pub fn race_relay_handshakes( FILE: rustlib/src/serde_safe.rs type TryParse (line 3) | pub enum TryParse { function deserialize (line 8) | pub fn deserialize<'de, T: Default + serde::Deserialize<'de>, D: serde::... FILE: rustlib/src/tokio.rs type AbortOnDrop (line 1) | pub struct AbortOnDrop(pub tokio::task::AbortHandle); method spawn (line 4) | pub fn spawn + Send + 'static>(f: F) -> Self { method from (line 16) | fn from(handle: tokio::task::AbortHandle) -> Self { method from (line 22) | fn from(handle: tokio::task::JoinHandle<()>) -> Self { method drop (line 10) | fn drop(&mut self) { FILE: rustlib/src/tunnel_state.rs type TargetState (line 24) | pub struct TargetState { type TunnelState (line 32) | pub enum TunnelState { method new (line 57) | pub fn new(client_state: ClientStateHandle, os_impl: Arc) -> ... method traffic_stats (line 63) | pub fn traffic_stats(&self) -> ManagerTrafficStats { method set_disconnected (line 83) | fn set_disconnected(&mut self) { method set_connecting (line 87) | fn set_connecting(&mut self, new_args: &TunnelArgs, network_interface:... method set_connected (line 102) | fn set_connected( method set_connect_error (line 122) | fn set_connect_error(&mut self, error: TunnelConnectError) { method get_conn (line 133) | pub fn get_conn(&self) -> Option> { method get_connected (line 141) | fn get_connected(&self) -> Option { method matches_target (line 151) | fn matches_target(&self, target_tunnel_args: Option<&TunnelArgs>, targ... method maintain (line 161) | async fn maintain(tunnel_state: Sender, client_state: Cli... type Connected (line 53) | type Connected = (Arc, TunnelNetworkConfig, OneExit, OneRelay); function poll_until_change (line 309) | async fn poll_until_change(watch: &mut Receiver, target_...