Class ProxyProfileSettings
The full bundle of settings one ProxyProfile applies to a ProxyServer as a single atomic assignment via Profile. Deliberately a plain data bundle, not a type with behavior: applying it is ProxyServer's job (see Profile's setter), so this type has no back-reference and no side effects of its own, per the plan's "Constraints on the policy layer" section.
Inherited Members
Namespace: Titanium.Web.Proxy.Options
Assembly: Titanium.Web.Proxy.dll
Syntax
public sealed class ProxyProfileSettings
Properties
| Edit this page View SourceBalanced
Balanced: today's shipped values, unchanged for existing traffic. Every resource
family is enforced (not observed) because Observe still allocates and would leave the OOM
paths live by default; TLS 1.2/1.3 only; no outbound destination blocking; no admission cap;
no deadlines beyond what already ships disabled today.
Certificate cache bounds are pinned explicitly here (rather than inherited implicitly from Default) so this profile's real-world memory behavior stays fixed even if the shared default's value is retuned later: 1024 in-memory entries (roughly 10 MB, comfortably above single-session desktop/dev browsing), unbounded on-disk entries (disk is cheap and a warm cache avoids repeat certificate generation across restarts for a trusted, single-user deployment).
Declaration
public static ProxyProfileSettings Balanced { get; }
Property Value
| Type | Description |
|---|---|
| ProxyProfileSettings |
BlockPrivateNetworkDestinations
Whether outbound connections to private/link-local/metadata addresses are blocked.
Declaration
public bool BlockPrivateNetworkDestinations { get; }
Property Value
| Type | Description |
|---|---|
| bool |
ClientHeaderTimeoutSeconds
Seconds to wait for a client to finish sending the request line and headers. 0 disables the deadline.
Declaration
public int ClientHeaderTimeoutSeconds { get; }
Property Value
| Type | Description |
|---|---|
| int |
IdleReadTimeoutSeconds
Seconds of idle time allowed while reading from the origin. 0 disables the deadline.
Declaration
public int IdleReadTimeoutSeconds { get; }
Property Value
| Type | Description |
|---|---|
| int |
IdleWriteTimeoutSeconds
Seconds of idle time allowed while writing to the origin. 0 disables the deadline.
Declaration
public int IdleWriteTimeoutSeconds { get; }
Property Value
| Type | Description |
|---|---|
| int |
LegacyCompatible
Opt-in for 4.x migrators: permits legacy TLS and relaxes the non-memory-bounding families to Observe. BodyBudget and DecompressionRatio stay enforced even here, since Observe cannot protect against exhaustion; framing remains enforce-only, as it always is, independent of any profile.
"Legacy TLS" here means TLS 1.0/1.1 in addition to 1.2/1.3: SSL 2.0/3.0 are not offered because modern .NET's SslStream no longer negotiates them regardless of what SslProtocols flags are requested.
Declaration
public static ProxyProfileSettings LegacyCompatible { get; }
Property Value
| Type | Description |
|---|---|
| ProxyProfileSettings |
MaxConcurrentClientConnections
Global admission cap applied to MaxConcurrentClientConnections. null disables the global admission gate, matching today's shipped default.
Declaration
public int? MaxConcurrentClientConnections { get; }
Property Value
| Type | Description |
|---|---|
| int? |
PolicyModes
Which resource-bound families are enforced, observed, or disabled.
Declaration
public ProxyPolicyModes PolicyModes { get; }
Property Value
| Type | Description |
|---|---|
| ProxyPolicyModes |
PublicFacing
Opt-in for deployments exposed to untrusted clients: Balanced plus outbound destination blocking and finite admission/deadline values, none of which are bounded by default under Balanced.
Certificate cache bounds are larger than Balanced in both dimensions: 4096 in-memory entries (~40 MB), since many concurrent untrusted clients legitimately touch far more distinct origins than one desktop session, and thrashing certificate generation under a too-small bound is itself a DoS vector. Unlike Balanced, the on-disk cache is also bounded (50,000 entries): untrusted clients can freely enumerate hostnames, and an unbounded on-disk cache would otherwise be a disk-exhaustion vector that Balanced's trusted, single-user assumption does not have to defend against.
Declaration
public static ProxyProfileSettings PublicFacing { get; }
Property Value
| Type | Description |
|---|---|
| ProxyProfileSettings |
RequestTimeoutSeconds
Total seconds allowed for a single request/response exchange after BeforeRequest returns. 0 disables the deadline.
Declaration
public int RequestTimeoutSeconds { get; }
Property Value
| Type | Description |
|---|---|
| int |
ResourceLimits
Header shape, body/decompression budgets, and concurrency/abuse-rate ceilings.
Declaration
public ProxyResourceLimits ResourceLimits { get; }
Property Value
| Type | Description |
|---|---|
| ProxyResourceLimits |
ResponseHeaderTimeoutSeconds
Seconds to wait for the origin to send response status line and headers. 0 disables the deadline.
Declaration
public int ResponseHeaderTimeoutSeconds { get; }
Property Value
| Type | Description |
|---|---|
| int |
SupportedSslProtocols
TLS protocol versions negotiated with clients and, unless overridden separately, origins.
Declaration
public SslProtocols SupportedSslProtocols { get; }
Property Value
| Type | Description |
|---|---|
| SslProtocols |
Methods
| Edit this page View SourceFor(ProxyProfile)
Returns the shipped bundle for profile.
Declaration
public static ProxyProfileSettings For(ProxyProfile profile)
Parameters
| Type | Name | Description |
|---|---|---|
| ProxyProfile | profile |
Returns
| Type | Description |
|---|---|
| ProxyProfileSettings |