@viaalink/caddy-api-client 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/caddy/index.d.ts +4 -4
- package/dist/{caddy-http-DLxwstYo.d.ts → caddy-http-jhg7B7CZ.d.ts} +1 -1
- package/dist/{caddy-http.zod-Cx-dcFkE.d.ts → caddy-http.zod-T9FvybMd.d.ts} +1 -1
- package/dist/caddy-types.d.ts +2 -2
- package/dist/{client-Bf2QoSWQ.d.ts → client-ZQl_qNE7.d.ts} +3 -3
- package/dist/{index-BmimANG7.d.ts → index-BPmcxCVk.d.ts} +4 -4
- package/dist/{index-BijF7qR9.d.ts → index-CwQ-g5nn.d.ts} +1 -1
- package/dist/{index-Q5Jc47QL.d.ts → index-P1KJwTOK.d.ts} +2 -2
- package/dist/index.d.ts +7 -7
- package/dist/index.js +1 -1
- package/dist/mitm/index.d.ts +4 -4
- package/dist/plugins/caddy-dns/index.d.ts +1 -1
- package/dist/plugins/caddy-security/index.d.ts +2 -2
- package/dist/plugins/index.d.ts +3 -3
- package/dist/{types-DIjkvykh.d.ts → types-CccPerBC.d.ts} +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# @viaalink/caddy-api-client
|
|
2
2
|
|
|
3
3
|
TypeScript client for Caddy Admin API with MITMproxy integration.
|
|
4
|
-
Maintained by [Viaalink](https://
|
|
4
|
+
Maintained by [Viaalink](https://viaalink.com).
|
|
5
|
+
|
|
6
|
+
> Formerly `@accelerated-software-development/caddy-api-client`. Same API: replace the
|
|
7
|
+
> package name in your `package.json` and imports; subpaths stay the same. The old name is
|
|
8
|
+
> deprecated and its last version (0.10.1) only re-exports this package.
|
|
5
9
|
|
|
6
10
|
Package pages:
|
|
7
11
|
|
package/dist/caddy/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { C as CaddyClientOptions,
|
|
1
|
+
export { e as CaddyClient, f as CaddyClientOptionsSchema, k as CaddyRouteSchema, t as HealthCheckRouteOptionsSchema, v as HostRouteOptionsSchema, L as LoadBalancerRouteOptionsSchema, O as PathRouteOptionsSchema, X as ServiceRouteOptionsSchema } from '../client-ZQl_qNE7.js';
|
|
2
|
+
export { A as ACME_DNS_PROVIDER_MODULE_MAP, a as AcmeDnsPolicyOptions, b as AutomaticHttpsConfigOptions, B as BasicAuthRouteOptions, C as CaddyAdapter, d as CertificateManager, e as CertificateWithMetadata, E as ErrorRouteOptions, f as ExpirationCheckResult, F as FileServerRouteOptions, H as HTTP1_ALPN_PROTOCOLS, g as HTTP2_ALPN_PROTOCOLS, h as HTTP_ALPN_PROTOCOLS, i as HealthRouteOptions, I as IframeProxyRouteOptions, j as InternalFallbackPoliciesOptions, k as InternalIssuerJson, L as LoadBalancerRouteOptions, l as LoadConfigOptions, M as MODERN_CIPHER_SUITES, m as MapHandlerOptions, R as RECOMMENDED_CURVES, n as ROUTE_PRIORITIES, o as RequestBodyHandlerOptions, p as RewriteRouteOptions, q as RotateCertificateOptions, r as RotationResult, S as ServiceRouteOptions, T as TLS_1_2_CIPHER_SUITES, s as TLS_1_3_CIPHER_SUITES, t as TemplatesRouteOptions, u as TlsConnectionPolicyOptions, v as TracingHandlerOptions, V as VarsHandlerOptions, W as WebSocketProxyRouteOptions, w as addDomainWithAutoTls, x as addDomainWithTls, y as applyLocalCaInstallTrust, z as buildAcmeDnsPolicy, D as buildAutomaticHttpsConfig, G as buildAutomationPoliciesWithInternalFallback, J as buildBasicAuthHandler, K as buildCompatibleTlsPolicy, N as buildCompressionHandler, O as buildDnsRebindingBypassHandler, P as buildErrorRoute, Q as buildFileServerRoute, U as buildHealthCheckRoute, X as buildHostRoute, Y as buildIframeHeadersHandler, Z as buildIframePermissiveHandler, _ as buildIframeProxyRoute, $ as buildIngressTagHeadersHandler, a0 as buildLoadBalancerRoute, a1 as buildMapHandler, a2 as buildMitmproxyRoute, a3 as buildMitmproxyRoutePair, a4 as buildMitmproxyWebSocketRoute, a5 as buildMitmproxyWebUiRoute, a6 as buildModernTlsPolicy, a7 as buildPathRoute, a8 as buildProjectIdHeadersHandler, a9 as buildRedirectRoute, aa as buildRequestBodyHandler, ab as buildReverseProxyHandler, ac as buildRewriteHandler, ad as buildSecurityHeadersHandler, ae as buildServiceRoutes, af as buildTemplatesRoute, ag as buildTlsConnectionPolicy, ah as buildTracingHandler, ai as buildVarsHandler, aj as buildWebSocketProxyRoute, ak as buildWwwRedirect, al as calculateRoutePriority, am as collectExternalHostsFromRoutes, an as createBasicAuthAccount, ao as createBasicAuthAccounts, ap as createBasicAuthRoute, aq as createCertificateManager, ar as createHealthRoute, as as createLoadBalancerRoute, at as createRedirectRoute, au as createRewriteRoute, av as createServiceRoute, aw as deleteDomain, ax as detectAdapter, az as filterAcmeManagedFromSkip, aC as getDomainConfig, aD as hashPassword, aE as hashPasswordWithCaddy, aF as hostMatchesPattern, aG as insertRouteRelative, aJ as listDomains, aK as loadCaddyfile, aL as loadConfig, aN as removeOldCertificates, aO as resolveAcmeDnsProviderModule, aP as rotateCertificate, aQ as sortRoutes, aS as updateDomain, aT as validateRouteOrdering, aU as verifyPassword } from '../index-BPmcxCVk.js';
|
|
3
|
+
export { C as CaddyClientOptions, e as CaddyRoute, f as CaddyRouteHandler, g as CaddyRouteMatcher, n as HealthCheckRouteOptions, o as HostRouteOptions, P as PathRouteOptions, $ as TlsConnectionPolicy } from '../types-CccPerBC.js';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../caddy-http-
|
|
5
|
+
import '../caddy-http-jhg7B7CZ.js';
|
|
@@ -2732,4 +2732,4 @@ interface StaticResponse {
|
|
|
2732
2732
|
abort?: boolean;
|
|
2733
2733
|
}
|
|
2734
2734
|
|
|
2735
|
-
export { type
|
|
2735
|
+
export { type Logging as $, type ACMEIssuer as A, type BaseLog as B, type CertCacheOptions as C, type CustomCertSelectionPolicy as D, type CustomLog as E, type DNSChallengeConfig as F, DefaultLoggerName as G, type Destructor as H, type DiscardWriter as I, type Duration as J, type Event as K, ExitCodeFailedQuit as L, ExitCodeFailedStartup as M, ExitCodeForceQuit as N, ExitCodeSuccess as O, type FileSystems as P, type FolderLoader as Q, type HTTPChallengeConfig as R, type Handler as S, type HandlerError as T, type IdentityConfig as U, ImportPath as V, type InternalIssuer as W, type Invoke as X, type ListenerFunc as Y, type ListenerWrapper as Z, type LogSampling as _, type APIError as a, type MatchClientIP as a0, type MatchExpression as a1, type MatchHeader as a2, type MatchHeaderRE as a3, type MatchHost as a4, type MatchMethod as a5, type MatchNot as a6, type MatchPath as a7, type MatchPathRE as a8, type MatchProtocol as a9, type Server as aA, type ServerLogConfig as aB, type SessionTicketService as aC, type SinkLog as aD, type StaticError as aE, type StaticResponse as aF, type StderrWriter as aG, type StdoutWriter as aH, type StorageConverter as aI, type StorageLoader as aJ, type TLS as aK, type TLSALPNChallengeConfig as aL, type UsagePool as aM, type Validator as aN, type WriterOpener as aO, type ZeroSSLIssuer as aP, type MatchQuery as aa, type MatchRemoteIP as ab, type MatchRemoteIP$1 as ac, type MatchServerName as ad, type MatcherSet as ae, type MatcherSets as af, type MiddlewareHandler as ag, type Module as ah, type ModuleID as ai, type ModuleInfo as aj, type ModuleMap as ak, type NetworkAddress as al, type PacketConnWrapper as am, type Provisioner as an, type ProxyFuncProducer as ao, type RawMatcherSets as ap, type RemoteAdmin as aq, type ReplacementFunc as ar, type Replacer as as, ReplacerCtxKey as at, type ReplacerFunc as au, type RequestMatcher as av, type RequestMatcherWithError as aw, type ResponseHandler as ax, type Route as ay, type RouteList as az, type AdminAccess as b, type AdminConfig as c, type AdminHandler as d, type AdminHandlerFunc as e, type AdminPermissions as f, type AdminRoute as g, type AdminRouter as h, type App$1 as i, type App as j, type AutoHTTPSConfig as k, type AutomationConfig as l, type AutomationPolicy as m, type CertificateLoader as n, type ChainPreference as o, type CleanerUpper as p, type ClientAuthentication as q, type CloudEvent as r, type Config as s, type ConfigLoader as t, type ConfigSettings as u, type ConfiguresFormatterDefault as v, type ConnectionPolicy as w, type Constructor as x, type Context as y, type CtxKey as z };
|
|
@@ -2240,4 +2240,4 @@ declare const appSchema: z.ZodObject<{
|
|
|
2240
2240
|
} | undefined> | undefined;
|
|
2241
2241
|
}>;
|
|
2242
2242
|
|
|
2243
|
-
export {
|
|
2243
|
+
export { remoteAdminSchema as $, identityConfigSchema as A, invokeSchema as B, listenerFuncSchema as C, listenerWrapperSchema as D, logSamplingSchema as E, loggingSchema as F, matchClientIpSchema as G, matchExpressionSchema as H, matchHeaderReSchema as I, matchHeaderSchema as J, matchHostSchema as K, matchMethodSchema as L, matchNotSchema as M, matchPathReSchema as N, matchPathSchema as O, matchProtocolSchema as P, matchQuerySchema as Q, matchRemoteIpSchema as R, matchTlsSchema as S, moduleIdSchema as T, moduleInfoSchema as U, moduleMapSchema as V, moduleSchema as W, networkAddressSchema as X, packetConnWrapperSchema as Y, provisionerSchema as Z, proxyFuncProducerSchema as _, adminAccessSchema as a, replacementFuncSchema as a0, replacerFuncSchema as a1, replacerSchema as a2, responseHandlerSchema as a3, routeListSchema as a4, routeSchema as a5, serverLogConfigSchema as a6, serverSchema as a7, sinkLogSchema as a8, staticErrorSchema as a9, staticResponseSchema as aa, stderrWriterSchema as ab, stdoutWriterSchema as ac, storageConverterSchema as ad, usagePoolSchema as ae, validatorSchema as af, writerOpenerSchema as ag, adminConfigSchema as b, adminHandlerFuncSchema as c, adminHandlerSchema as d, adminPermissionsSchema as e, adminRouteSchema as f, adminRouterSchema as g, apiErrorSchema as h, appSchema$1 as i, appSchema as j, autoHttpsConfigSchema as k, baseLogSchema as l, cleanerUpperSchema as m, cloudEventSchema as n, configLoaderSchema as o, configSchema as p, configSettingsSchema as q, configuresFormatterDefaultSchema as r, constructorSchema as s, contextSchema as t, ctxKeySchema as u, customLogSchema as v, destructorSchema as w, discardWriterSchema as x, durationSchema as y, fileSystemsSchema as z };
|
package/dist/caddy-types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { A as ACMEIssuer, a as APIError, b as AdminAccess, c as AdminConfig, d as AdminHandler, e as AdminHandlerFunc, f as AdminPermissions, g as AdminRoute, h as AdminRouter, i as App, k as AutoHTTPSConfig, l as AutomationConfig, m as AutomationPolicy, B as BaseLog, C as CertCacheOptions, n as CertificateLoader, o as ChainPreference, p as CleanerUpper, q as ClientAuthentication, r as CloudEvent, s as Config, t as ConfigLoader, u as ConfigSettings, v as ConfiguresFormatterDefault, w as ConnectionPolicy, x as Constructor, y as Context, z as CtxKey, D as CustomCertSelectionPolicy, E as CustomLog, F as DNSChallengeConfig, G as DefaultLoggerName, H as Destructor, I as DiscardWriter, J as Duration, K as Event, L as ExitCodeFailedQuit, M as ExitCodeFailedStartup, N as ExitCodeForceQuit, O as ExitCodeSuccess, P as FileSystems, Q as FolderLoader, R as HTTPChallengeConfig, S as Handler, T as HandlerError, j as HttpApp, ab as HttpMatchRemoteIP, U as IdentityConfig, V as ImportPath, W as InternalIssuer, X as Invoke, Y as ListenerFunc, Z as ListenerWrapper, _ as LogSampling, $ as Logging, a0 as MatchClientIP, a1 as MatchExpression, a2 as MatchHeader, a3 as MatchHeaderRE, a4 as MatchHost, a5 as MatchMethod, a6 as MatchNot, a7 as MatchPath, a8 as MatchPathRE, a9 as MatchProtocol, aa as MatchQuery, ad as MatchServerName, ae as MatcherSet, af as MatcherSets, ag as MiddlewareHandler, ah as Module, ai as ModuleID, aj as ModuleInfo, ak as ModuleMap, al as NetworkAddress, am as PacketConnWrapper, an as Provisioner, ao as ProxyFuncProducer, ap as RawMatcherSets, aq as RemoteAdmin, ar as ReplacementFunc, as as Replacer, at as ReplacerCtxKey, au as ReplacerFunc, av as RequestMatcher, aw as RequestMatcherWithError, ax as ResponseHandler, ay as Route, az as RouteList, aA as Server, aB as ServerLogConfig, aC as SessionTicketService, aD as SinkLog, aE as StaticError, aF as StaticResponse, aG as StderrWriter, aH as StdoutWriter, aI as StorageConverter, aJ as StorageLoader, aK as TLS, aL as TLSALPNChallengeConfig, ac as TlsMatchRemoteIP, aM as UsagePool, aN as Validator, aO as WriterOpener, aP as ZeroSSLIssuer } from './caddy-http-jhg7B7CZ.js';
|
|
2
|
+
export { a as adminAccessSchema, b as adminConfigSchema, c as adminHandlerFuncSchema, d as adminHandlerSchema, e as adminPermissionsSchema, f as adminRouteSchema, g as adminRouterSchema, h as apiErrorSchema, i as appSchema, k as autoHttpsConfigSchema, l as baseLogSchema, m as cleanerUpperSchema, n as cloudEventSchema, o as configLoaderSchema, p as configSchema, q as configSettingsSchema, r as configuresFormatterDefaultSchema, s as constructorSchema, t as contextSchema, u as ctxKeySchema, v as customLogSchema, w as destructorSchema, x as discardWriterSchema, y as durationSchema, z as fileSystemsSchema, j as httpAppSchema, R as httpMatchRemoteIpSchema, S as httpMatchTlsSchema, A as identityConfigSchema, B as invokeSchema, C as listenerFuncSchema, D as listenerWrapperSchema, E as logSamplingSchema, F as loggingSchema, G as matchClientIpSchema, H as matchExpressionSchema, I as matchHeaderReSchema, J as matchHeaderSchema, K as matchHostSchema, L as matchMethodSchema, M as matchNotSchema, N as matchPathReSchema, O as matchPathSchema, P as matchProtocolSchema, Q as matchQuerySchema, T as moduleIdSchema, U as moduleInfoSchema, V as moduleMapSchema, W as moduleSchema, X as networkAddressSchema, Y as packetConnWrapperSchema, Z as provisionerSchema, _ as proxyFuncProducerSchema, $ as remoteAdminSchema, a0 as replacementFuncSchema, a1 as replacerFuncSchema, a2 as replacerSchema, a3 as responseHandlerSchema, a4 as routeListSchema, a5 as routeSchema, a6 as serverLogConfigSchema, a7 as serverSchema, a8 as sinkLogSchema, a9 as staticErrorSchema, aa as staticResponseSchema, ab as stderrWriterSchema, ac as stdoutWriterSchema, ad as storageConverterSchema, ae as usagePoolSchema, af as validatorSchema, ag as writerOpenerSchema } from './caddy-http.zod-T9FvybMd.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
5
|
declare const chainPreferenceSchema: z.ZodObject<{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { C as CaddyClientOptions,
|
|
3
|
-
import {
|
|
2
|
+
import { C as CaddyClientOptions, e as CaddyRoute, a2 as UpstreamStatus } from './types-CccPerBC.js';
|
|
3
|
+
import { s as Config, aA as Server } from './caddy-http-jhg7B7CZ.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Zod schemas for runtime validation
|
|
@@ -6709,4 +6709,4 @@ declare class CaddyClient {
|
|
|
6709
6709
|
applyConfig(config: Config | (Config & Record<string, unknown>)): Promise<void>;
|
|
6710
6710
|
}
|
|
6711
6711
|
|
|
6712
|
-
export {
|
|
6712
|
+
export { TlsIssuerSchema as $, ActiveHealthChecksSchema as A, BasicAuthOptionsSchema as B, CaddyAdapterSchema as C, DeleteDomainOptionsSchema as D, EncodeHandlerSchema as E, FileServerHandlerSchema as F, MatchHeaderSchema as G, HeaderRegexpSchema as H, InterceptHandlerSchema as I, MatchQuerySchema as J, KnownCaddyHandlerSchema as K, LoadBalancerRouteOptionsSchema as L, MapHandlerSchema as M, MitmwebOptionsSchema as N, PathRouteOptionsSchema as O, PassiveHealthChecksSchema as P, PushHandlerSchema as Q, RedirectModeSchema as R, RedirectStatusCodeSchema as S, RequestBodyHandlerSchema as T, ReverseProxyHandlerSchema as U, RewriteHandlerSchema as V, SecurityHeadersSchema as W, ServiceRouteOptionsSchema as X, StaticResponseHandlerSchema as Y, SubrouteHandlerSchema as Z, TemplatesHandlerSchema as _, AdaptOptionsSchema as a, TracingHandlerSchema as a0, UpdateDomainOptionsSchema as a1, UpstreamSchema as a2, UpstreamStatusArraySchema as a3, UpstreamStatusSchema as a4, VarsHandlerSchema as a5, validate as a6, AddDomainWithAutoTlsOptionsSchema as b, AddDomainWithTlsOptionsSchema as c, AuthenticationHandlerSchema as d, CaddyClient as e, CaddyClientOptionsSchema as f, CaddyDurationSchema as g, CaddyHandlerSchema as h, CaddyRouteHandlerSchema as i, CaddyRouteMatcherSchema as j, CaddyRouteSchema as k, CopyResponseHandlerSchema as l, CopyResponseHeadersHandlerSchema as m, DialAddressSchema as n, DomainSchema as o, ErrorHandlerSchema as p, ExtendedRouteMatcherSchema as q, FrameOptionsSchema as r, HeadersHandlerSchema as s, HealthCheckRouteOptionsSchema as t, HealthChecksSchema as u, HostRouteOptionsSchema as v, HttpMethodSchema as w, InvokeHandlerSchema as x, LoadBalancingSchema as y, LogAppendHandlerSchema as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { e as CaddyClient } from './client-ZQl_qNE7.js';
|
|
2
|
+
import { B as BasicAuthOptions, f as CaddyRouteHandler, e as CaddyRoute, n as HealthCheckRouteOptions, o as HostRouteOptions, s as LoadBalancerRouteOptions$1, P as PathRouteOptions, j as DialAddress, W as SecurityHeaders, X as ServiceRouteOptions$1, A as AddDomainWithAutoTlsOptions, l as DomainConfig, a as AddDomainWithTlsOptions, D as DeleteDomainOptions, k as Domain, a1 as UpdateDomainOptions, $ as TlsConnectionPolicy } from './types-CccPerBC.js';
|
|
3
|
+
import { s as Config, W as InternalIssuer, k as AutoHTTPSConfig, m as AutomationPolicy } from './caddy-http-jhg7B7CZ.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Route builder functions for Caddy
|
|
@@ -1917,4 +1917,4 @@ declare function createBasicAuthAccounts(users: {
|
|
|
1917
1917
|
password: string;
|
|
1918
1918
|
}[]>;
|
|
1919
1919
|
|
|
1920
|
-
export {
|
|
1920
|
+
export { buildIngressTagHeadersHandler as $, ACME_DNS_PROVIDER_MODULE_MAP as A, type BasicAuthRouteOptions as B, type CaddyAdapter as C, buildAutomaticHttpsConfig as D, type ErrorRouteOptions as E, type FileServerRouteOptions as F, buildAutomationPoliciesWithInternalFallback as G, HTTP1_ALPN_PROTOCOLS as H, type IframeProxyRouteOptions as I, buildBasicAuthHandler as J, buildCompatibleTlsPolicy as K, type LoadBalancerRouteOptions as L, MODERN_CIPHER_SUITES as M, buildCompressionHandler as N, buildDnsRebindingBypassHandler as O, buildErrorRoute as P, buildFileServerRoute as Q, RECOMMENDED_CURVES as R, type ServiceRouteOptions as S, TLS_1_2_CIPHER_SUITES as T, buildHealthCheckRoute as U, type VarsHandlerOptions as V, type WebSocketProxyRouteOptions as W, buildHostRoute as X, buildIframeHeadersHandler as Y, buildIframePermissiveHandler as Z, buildIframeProxyRoute as _, type AcmeDnsPolicyOptions as a, buildLoadBalancerRoute as a0, buildMapHandler as a1, buildMitmproxyRoute as a2, buildMitmproxyRoutePair as a3, buildMitmproxyWebSocketRoute as a4, buildMitmproxyWebUiRoute as a5, buildModernTlsPolicy as a6, buildPathRoute as a7, buildProjectIdHeadersHandler as a8, buildRedirectRoute as a9, generateCertTag as aA, getDaysUntilExpiration as aB, getDomainConfig as aC, hashPassword as aD, hashPasswordWithCaddy as aE, hostMatchesPattern as aF, insertRouteRelative as aG, isCertificateExpired as aH, isCertificateExpiringSoon as aI, listDomains as aJ, loadCaddyfile as aK, loadConfig as aL, parseCertificate as aM, removeOldCertificates as aN, resolveAcmeDnsProviderModule as aO, rotateCertificate as aP, sortRoutes as aQ, splitCertificateBundle as aR, updateDomain as aS, validateRouteOrdering as aT, verifyPassword as aU, buildRequestBodyHandler as aa, buildReverseProxyHandler as ab, buildRewriteHandler as ac, buildSecurityHeadersHandler as ad, buildServiceRoutes as ae, buildTemplatesRoute as af, buildTlsConnectionPolicy as ag, buildTracingHandler as ah, buildVarsHandler as ai, buildWebSocketProxyRoute as aj, buildWwwRedirect as ak, calculateRoutePriority as al, collectExternalHostsFromRoutes as am, createBasicAuthAccount as an, createBasicAuthAccounts as ao, createBasicAuthRoute as ap, createCertificateManager as aq, createHealthRoute as ar, createLoadBalancerRoute as as, createRedirectRoute as at, createRewriteRoute as au, createServiceRoute as av, deleteDomain as aw, detectAdapter as ax, extractSerialNumber as ay, filterAcmeManagedFromSkip as az, type AutomaticHttpsConfigOptions as b, type CertificateInfo as c, CertificateManager as d, type CertificateWithMetadata as e, type ExpirationCheckResult as f, HTTP2_ALPN_PROTOCOLS as g, HTTP_ALPN_PROTOCOLS as h, type HealthRouteOptions as i, type InternalFallbackPoliciesOptions as j, type InternalIssuerJson as k, type LoadConfigOptions as l, type MapHandlerOptions as m, ROUTE_PRIORITIES as n, type RequestBodyHandlerOptions as o, type RewriteRouteOptions as p, type RotateCertificateOptions as q, type RotationResult as r, TLS_1_3_CIPHER_SUITES as s, type TemplatesRouteOptions as t, type TlsConnectionPolicyOptions as u, type TracingHandlerOptions as v, addDomainWithAutoTls as w, addDomainWithTls as x, applyLocalCaInstallTrust as y, buildAcmeDnsPolicy as z };
|
|
@@ -333,4 +333,4 @@ declare namespace index {
|
|
|
333
333
|
export { type index_AcmeDnsProviderConfigResult as AcmeDnsProviderConfigResult, type Provider$1 as CloudflareDnsProviderConfig, index_CloudflareDnsProviderConfigSchema as CloudflareDnsProviderConfigSchema, type index_DigitaloceanDnsProviderConfig as DigitaloceanDnsProviderConfig, index_DigitaloceanDnsProviderConfigSchema as DigitaloceanDnsProviderConfigSchema, type Provider as GodaddyDnsProviderConfig, index_GodaddyDnsProviderConfigSchema as GodaddyDnsProviderConfigSchema, index_KNOWN_ACME_DNS_PROVIDERS as KNOWN_ACME_DNS_PROVIDERS, type index_KnownAcmeDnsProvider as KnownAcmeDnsProvider, type Provider$2 as PorkbunDnsProviderConfig, index_PorkbunDnsProviderConfigSchema as PorkbunDnsProviderConfigSchema, index_buildAcmeDnsProviderConfig as buildAcmeDnsProviderConfig, index_buildCloudflareDnsConfig as buildCloudflareDnsConfig, index_buildDigitaloceanDnsConfig as buildDigitaloceanDnsConfig, index_buildGodaddyDnsConfig as buildGodaddyDnsConfig, index_buildPorkbunDnsConfig as buildPorkbunDnsConfig, index_buildRoute53DnsConfig as buildRoute53DnsConfig };
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
-
export { type AcmeDnsProviderConfigResult as A, CloudflareDnsProviderConfigSchema as C, type DigitaloceanDnsProviderConfig as D, GodaddyDnsProviderConfigSchema as G,
|
|
336
|
+
export { type AcmeDnsProviderConfigResult as A, CloudflareDnsProviderConfigSchema as C, type DigitaloceanDnsProviderConfig as D, GodaddyDnsProviderConfigSchema as G, KNOWN_ACME_DNS_PROVIDERS as K, PorkbunDnsProviderConfigSchema as P, DigitaloceanDnsProviderConfigSchema as a, type KnownAcmeDnsProvider as b, type Provider$1 as c, type Provider as d, type Provider$2 as e, buildAcmeDnsProviderConfig as f, buildCloudflareDnsConfig as g, buildDigitaloceanDnsConfig as h, buildGodaddyDnsConfig as i, buildPorkbunDnsConfig as j, buildRoute53DnsConfig as k, index as l };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { e as CaddyRoute, c as AuthenticationPortal$1, d as AuthorizationPolicy$1, I as IdentityStore, L as LdapIdentityStore$1, t as LocalIdentityStore$1, O as OAuth2IdentityProvider$1, x as OidcIdentityProvider$1, S as SecurityApp$1, N as SecurityAuthenticatorHandler$1, Q as SecurityAuthorizationHandler$1, T as SecurityAuthorizerProvider, U as SecurityConfig$1, V as SecurityHandler } from './types-CccPerBC.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -3022,4 +3022,4 @@ declare namespace index {
|
|
|
3022
3022
|
export { type index_AccessListEntry as AccessListEntry, AuthenticationPortal$1 as AuthenticationPortal, index_AuthenticationPortalSchema as AuthenticationPortalSchema, AuthorizationPolicy$1 as AuthorizationPolicy, index_AuthorizationPolicySchema as AuthorizationPolicySchema, type index_BuildAuthenticationPortalOptions as BuildAuthenticationPortalOptions, type index_BuildAuthenticationRouteOptions as BuildAuthenticationRouteOptions, type index_BuildAuthenticatorHandlerOptions as BuildAuthenticatorHandlerOptions, type index_BuildAuthorizationHandlerOptions as BuildAuthorizationHandlerOptions, type index_BuildAuthorizationPolicyOptions as BuildAuthorizationPolicyOptions, type index_BuildLdapIdentityStoreOptions as BuildLdapIdentityStoreOptions, type index_BuildLocalIdentityStoreOptions as BuildLocalIdentityStoreOptions, type index_BuildOAuth2ProviderOptions as BuildOAuth2ProviderOptions, type index_BuildOidcProviderOptions as BuildOidcProviderOptions, type index_BuildProtectedRouteOptions as BuildProtectedRouteOptions, type index_BuildSecurityAppOptions as BuildSecurityAppOptions, type index_BuildSecurityConfigOptions as BuildSecurityConfigOptions, type index_CookieOptions as CookieOptions, type index_CryptoKeyConfig as CryptoKeyConfig, index_IdentityStore as IdentityStore, index_IdentityStoreSchema as IdentityStoreSchema, LdapIdentityStore$1 as LdapIdentityStore, index_LdapIdentityStoreSchema as LdapIdentityStoreSchema, type index_LdapServerConfig as LdapServerConfig, LocalIdentityStore$1 as LocalIdentityStore, index_LocalIdentityStoreSchema as LocalIdentityStoreSchema, OAuth2IdentityProvider$1 as OAuth2IdentityProvider, index_OAuth2IdentityProviderSchema as OAuth2IdentityProviderSchema, OidcIdentityProvider$1 as OidcIdentityProvider, index_OidcIdentityProviderSchema as OidcIdentityProviderSchema, type index_PortalUiOptions as PortalUiOptions, index_SECURITY_TEMPLATES as SECURITY_TEMPLATES, SecurityApp$1 as SecurityApp, index_SecurityAppSchema as SecurityAppSchema, SecurityAuthenticatorHandler$1 as SecurityAuthenticatorHandler, index_SecurityAuthenticatorHandlerSchema as SecurityAuthenticatorHandlerSchema, SecurityAuthorizationHandler$1 as SecurityAuthorizationHandler, index_SecurityAuthorizationHandlerSchema as SecurityAuthorizationHandlerSchema, index_SecurityAuthorizerProvider as SecurityAuthorizerProvider, index_SecurityAuthorizerProviderSchema as SecurityAuthorizerProviderSchema, SecurityConfig$1 as SecurityConfig, index_SecurityConfigSchema as SecurityConfigSchema, index_SecurityHandler as SecurityHandler, index_SecurityHandlerSchema as SecurityHandlerSchema, type index_SecurityTemplate as SecurityTemplate, type index_TemplateVariable as TemplateVariable, index_buildAuthenticationPortal as buildAuthenticationPortal, index_buildAuthenticatorHandler as buildAuthenticatorHandler, index_buildAuthenticatorRoute as buildAuthenticatorRoute, index_buildAuthorizationHandler as buildAuthorizationHandler, index_buildAuthorizationPolicy as buildAuthorizationPolicy, index_buildLdapIdentityStore as buildLdapIdentityStore, index_buildLocalIdentityStore as buildLocalIdentityStore, index_buildOAuth2Provider as buildOAuth2Provider, index_buildOidcProvider as buildOidcProvider, index_buildProtectedRoute as buildProtectedRoute, index_buildSecurityApp as buildSecurityApp, index_buildSecurityConfig as buildSecurityConfig, index_getTemplateById as getTemplateById, index_getTemplatesByCategory as getTemplatesByCategory };
|
|
3023
3023
|
}
|
|
3024
3024
|
|
|
3025
|
-
export {
|
|
3025
|
+
export { type AccessListEntry as A, type BuildAuthenticationPortalOptions as B, type CookieOptions as C, buildAuthenticatorRoute as D, buildAuthorizationHandler as E, buildAuthorizationPolicy as F, buildLdapIdentityStore as G, buildLocalIdentityStore as H, IdentityStoreSchema as I, buildOAuth2Provider as J, buildOidcProvider as K, LdapIdentityStoreSchema as L, buildProtectedRoute as M, buildSecurityApp as N, OAuth2IdentityProviderSchema as O, type PortalUiOptions as P, buildSecurityConfig as Q, getTemplateById as R, SECURITY_TEMPLATES as S, type TemplateVariable as T, getTemplatesByCategory as U, index as V, AuthenticationPortalSchema as a, AuthorizationPolicySchema as b, type BuildAuthenticationRouteOptions as c, type BuildAuthenticatorHandlerOptions as d, type BuildAuthorizationHandlerOptions as e, type BuildAuthorizationPolicyOptions as f, type BuildLdapIdentityStoreOptions as g, type BuildLocalIdentityStoreOptions as h, type BuildOAuth2ProviderOptions as i, type BuildOidcProviderOptions as j, type BuildProtectedRouteOptions as k, type BuildSecurityAppOptions as l, type BuildSecurityConfigOptions as m, type CryptoKeyConfig as n, type LdapServerConfig as o, LocalIdentityStoreSchema as p, OidcIdentityProviderSchema as q, SecurityAppSchema as r, SecurityAuthenticatorHandlerSchema as s, SecurityAuthorizationHandlerSchema as t, SecurityAuthorizerProviderSchema as u, SecurityConfigSchema as v, SecurityHandlerSchema as w, type SecurityTemplate as x, buildAuthenticationPortal as y, buildAuthenticatorHandler as z };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
1
|
+
export { A as ActiveHealthChecksSchema, a as AdaptOptionsSchema, b as AddDomainWithAutoTlsOptionsSchema, c as AddDomainWithTlsOptionsSchema, d as AuthenticationHandlerSchema, B as BasicAuthOptionsSchema, C as CaddyAdapterSchema, e as CaddyClient, f as CaddyClientOptionsSchema, g as CaddyDurationSchema, h as CaddyHandlerSchema, i as CaddyRouteHandlerSchema, j as CaddyRouteMatcherSchema, k as CaddyRouteSchema, l as CopyResponseHandlerSchema, m as CopyResponseHeadersHandlerSchema, D as DeleteDomainOptionsSchema, n as DialAddressSchema, o as DomainSchema, E as EncodeHandlerSchema, p as ErrorHandlerSchema, q as ExtendedRouteMatcherSchema, F as FileServerHandlerSchema, r as FrameOptionsSchema, H as HeaderRegexpSchema, s as HeadersHandlerSchema, t as HealthCheckRouteOptionsSchema, u as HealthChecksSchema, v as HostRouteOptionsSchema, w as HttpMethodSchema, I as InterceptHandlerSchema, x as InvokeHandlerSchema, K as KnownCaddyHandlerSchema, L as LoadBalancerRouteOptionsSchema, y as LoadBalancingSchema, z as LogAppendHandlerSchema, M as MapHandlerSchema, G as MatchHeaderSchema, J as MatchQuerySchema, N as MitmwebOptionsSchema, P as PassiveHealthChecksSchema, O as PathRouteOptionsSchema, Q as PushHandlerSchema, R as RedirectModeSchema, S as RedirectStatusCodeSchema, T as RequestBodyHandlerSchema, U as ReverseProxyHandlerSchema, V as RewriteHandlerSchema, W as SecurityHeadersSchema, X as ServiceRouteOptionsSchema, Y as StaticResponseHandlerSchema, Z as SubrouteHandlerSchema, _ as TemplatesHandlerSchema, $ as TlsIssuerSchema, a0 as TracingHandlerSchema, a1 as UpdateDomainOptionsSchema, a2 as UpstreamSchema, a3 as UpstreamStatusArraySchema, a4 as UpstreamStatusSchema, a5 as VarsHandlerSchema, a6 as validate } from './client-ZQl_qNE7.js';
|
|
2
|
+
export { b as AuthenticationHandler, c as AuthenticationPortal, d as AuthorizationPolicy, C as CaddyClientOptions, e as CaddyRoute, f as CaddyRouteHandler, g as CaddyRouteMatcher, h as CopyResponseHandler, i as CopyResponseHeadersHandler, E as EncodeHandler, m as ErrorHandler, F as FileServerHandler, G as GenericHandler, H as HeadersHandler, n as HealthCheckRouteOptions, o as HostRouteOptions, p as HttpMethod, I as IdentityStore, q as InterceptHandler, r as InvokeHandler, L as LdapIdentityStore, t as LocalIdentityStore, u as LogAppendHandler, M as MapHandler, v as MitmwebOptions, w as MitmwebStatus, O as OAuth2IdentityProvider, x as OidcIdentityProvider, P as PathRouteOptions, y as PushHandler, R as RedirectStatusCode, z as RequestBodyHandler, J as ReverseProxyHandler, K as RewriteHandler, S as SecurityApp, N as SecurityAuthenticatorHandler, Q as SecurityAuthorizationHandler, T as SecurityAuthorizerProvider, U as SecurityConfig, V as SecurityHandler, Y as StaticResponseHandler, Z as SubrouteHandler, _ as TemplatesHandler, $ as TlsConnectionPolicy, a0 as TracingHandler, a2 as UpstreamStatus, a3 as VarsHandler } from './types-CccPerBC.js';
|
|
3
|
+
export { A as ACME_DNS_PROVIDER_MODULE_MAP, a as AcmeDnsPolicyOptions, b as AutomaticHttpsConfigOptions, B as BasicAuthRouteOptions, C as CaddyAdapter, c as CertificateInfo, d as CertificateManager, e as CertificateWithMetadata, E as ErrorRouteOptions, f as ExpirationCheckResult, F as FileServerRouteOptions, H as HTTP1_ALPN_PROTOCOLS, g as HTTP2_ALPN_PROTOCOLS, h as HTTP_ALPN_PROTOCOLS, i as HealthRouteOptions, I as IframeProxyRouteOptions, j as InternalFallbackPoliciesOptions, k as InternalIssuerJson, L as LoadBalancerRouteOptions, l as LoadConfigOptions, M as MODERN_CIPHER_SUITES, m as MapHandlerOptions, R as RECOMMENDED_CURVES, n as ROUTE_PRIORITIES, o as RequestBodyHandlerOptions, p as RewriteRouteOptions, q as RotateCertificateOptions, r as RotationResult, S as ServiceRouteOptions, T as TLS_1_2_CIPHER_SUITES, s as TLS_1_3_CIPHER_SUITES, t as TemplatesRouteOptions, u as TlsConnectionPolicyOptions, v as TracingHandlerOptions, V as VarsHandlerOptions, W as WebSocketProxyRouteOptions, w as addDomainWithAutoTls, x as addDomainWithTls, y as applyLocalCaInstallTrust, z as buildAcmeDnsPolicy, D as buildAutomaticHttpsConfig, G as buildAutomationPoliciesWithInternalFallback, J as buildBasicAuthHandler, K as buildCompatibleTlsPolicy, N as buildCompressionHandler, O as buildDnsRebindingBypassHandler, P as buildErrorRoute, Q as buildFileServerRoute, U as buildHealthCheckRoute, X as buildHostRoute, Y as buildIframeHeadersHandler, Z as buildIframePermissiveHandler, _ as buildIframeProxyRoute, $ as buildIngressTagHeadersHandler, a0 as buildLoadBalancerRoute, a1 as buildMapHandler, a2 as buildMitmproxyRoute, a3 as buildMitmproxyRoutePair, a4 as buildMitmproxyWebSocketRoute, a5 as buildMitmproxyWebUiRoute, a6 as buildModernTlsPolicy, a7 as buildPathRoute, a8 as buildProjectIdHeadersHandler, a9 as buildRedirectRoute, aa as buildRequestBodyHandler, ab as buildReverseProxyHandler, ac as buildRewriteHandler, ad as buildSecurityHeadersHandler, ae as buildServiceRoutes, af as buildTemplatesRoute, ag as buildTlsConnectionPolicy, ah as buildTracingHandler, ai as buildVarsHandler, aj as buildWebSocketProxyRoute, ak as buildWwwRedirect, al as calculateRoutePriority, am as collectExternalHostsFromRoutes, an as createBasicAuthAccount, ao as createBasicAuthAccounts, ap as createBasicAuthRoute, aq as createCertificateManager, ar as createHealthRoute, as as createLoadBalancerRoute, at as createRedirectRoute, au as createRewriteRoute, av as createServiceRoute, aw as deleteDomain, ax as detectAdapter, ay as extractSerialNumber, az as filterAcmeManagedFromSkip, aA as generateCertTag, aB as getDaysUntilExpiration, aC as getDomainConfig, aD as hashPassword, aE as hashPasswordWithCaddy, aF as hostMatchesPattern, aG as insertRouteRelative, aH as isCertificateExpired, aI as isCertificateExpiringSoon, aJ as listDomains, aK as loadCaddyfile, aL as loadConfig, aM as parseCertificate, aN as removeOldCertificates, aO as resolveAcmeDnsProviderModule, aP as rotateCertificate, aQ as sortRoutes, aR as splitCertificateBundle, aS as updateDomain, aT as validateRouteOrdering, aU as verifyPassword } from './index-BPmcxCVk.js';
|
|
4
4
|
export { EnableOptions, MitmproxyInstance, MitmproxyManager, ServiceRegistration, ServiceStatus, autoInstallMitmproxy, getMitmproxyVersion, getMitmwebStatus, isMitmproxyInstalled, startMitmweb, stopMitmweb } from './mitm/index.js';
|
|
5
|
-
export {
|
|
6
|
-
export { A as AcmeDnsProviderConfigResult,
|
|
7
|
-
export {
|
|
5
|
+
export { A as AccessListEntry, a as AuthenticationPortalSchema, b as AuthorizationPolicySchema, B as BuildAuthenticationPortalOptions, c as BuildAuthenticationRouteOptions, d as BuildAuthenticatorHandlerOptions, e as BuildAuthorizationHandlerOptions, f as BuildAuthorizationPolicyOptions, g as BuildLdapIdentityStoreOptions, h as BuildLocalIdentityStoreOptions, i as BuildOAuth2ProviderOptions, j as BuildOidcProviderOptions, k as BuildProtectedRouteOptions, l as BuildSecurityAppOptions, m as BuildSecurityConfigOptions, C as CookieOptions, n as CryptoKeyConfig, I as IdentityStoreSchema, L as LdapIdentityStoreSchema, o as LdapServerConfig, p as LocalIdentityStoreSchema, O as OAuth2IdentityProviderSchema, q as OidcIdentityProviderSchema, P as PortalUiOptions, S as SECURITY_TEMPLATES, r as SecurityAppSchema, s as SecurityAuthenticatorHandlerSchema, t as SecurityAuthorizationHandlerSchema, u as SecurityAuthorizerProviderSchema, v as SecurityConfigSchema, w as SecurityHandlerSchema, x as SecurityTemplate, T as TemplateVariable, y as buildAuthenticationPortal, z as buildAuthenticatorHandler, D as buildAuthenticatorRoute, E as buildAuthorizationHandler, F as buildAuthorizationPolicy, G as buildLdapIdentityStore, H as buildLocalIdentityStore, J as buildOAuth2Provider, K as buildOidcProvider, M as buildProtectedRoute, N as buildSecurityApp, Q as buildSecurityConfig, V as caddySecurity, R as getTemplateById, U as getTemplatesByCategory } from './index-P1KJwTOK.js';
|
|
6
|
+
export { A as AcmeDnsProviderConfigResult, c as CloudflareDnsProviderConfig, C as CloudflareDnsProviderConfigSchema, D as DigitaloceanDnsProviderConfig, a as DigitaloceanDnsProviderConfigSchema, d as GodaddyDnsProviderConfig, G as GodaddyDnsProviderConfigSchema, K as KNOWN_ACME_DNS_PROVIDERS, b as KnownAcmeDnsProvider, e as PorkbunDnsProviderConfig, P as PorkbunDnsProviderConfigSchema, f as buildAcmeDnsProviderConfig, g as buildCloudflareDnsConfig, h as buildDigitaloceanDnsConfig, i as buildGodaddyDnsConfig, j as buildPorkbunDnsConfig, k as buildRoute53DnsConfig, l as caddyDns } from './index-CwQ-g5nn.js';
|
|
7
|
+
export { b as adminConfigSchema, p as configSchema, y as durationSchema, F as loggingSchema, a4 as routeListSchema, a5 as routeSchema, a7 as serverSchema } from './caddy-http.zod-T9FvybMd.js';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import './caddy-http-
|
|
9
|
+
import './caddy-http-jhg7B7CZ.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Custom error classes for Caddy API client
|
package/dist/index.js
CHANGED
|
@@ -2,5 +2,5 @@ import {z as z$1,ZodError}from'zod';import {join,normalize,isAbsolute,resolve}fr
|
|
|
2
2
|
`),n=[],a=false;for(let s of r)s.includes("-----BEGIN CERTIFICATE-----")?(a=true,n=[s]):s.includes("-----END CERTIFICATE-----")?(n.push(s),e.push(n.join(`
|
|
3
3
|
`)),n=[],a=false):a&&n.push(s);return e}function Mt(t){return new X509Certificate(t).serialNumber}function Lt(t){let e=new X509Certificate(t);return new Date>e.notAfter}function $t(t,e){let r=new X509Certificate(t),n=new Date;return n.setDate(n.getDate()+e),r.notAfter<=n}function zt(t){let e=new X509Certificate(t),r=new Date,n=e.notAfter.getTime()-r.getTime();return Math.floor(n/(1e3*60*60*24))}var ze=x(()=>{});var Ft={};Qe(Ft,{addDomainWithAutoTls:()=>Nt,addDomainWithTls:()=>Ut,deleteDomain:()=>Bt,getDomainConfig:()=>Y,listDomains:()=>xo,removeOldCertificates:()=>So,rotateCertificate:()=>bo,updateDomain:()=>fo});async function Nt(t){let e=y(xt,t,"addDomainWithAutoTls options"),r=new A({adminUrl:e.adminUrl});if(await Y(e.domain,e.adminUrl))throw new ae(e.domain);let a=[];e.redirectMode==="www_to_domain"?a.push(Dt({domain:e.domain,mode:"www-to-domain",permanent:true})):e.redirectMode==="domain_to_www"&&a.push(Dt({domain:e.domain,mode:"domain-to-www",permanent:true}));let s=[];e.enableSecurityHeaders&&s.push({handler:"headers",response:{set:{"X-Frame-Options":[e.frameOptions??"DENY"],"X-Content-Type-Options":["nosniff"],...e.enableHsts?{"Strict-Transport-Security":[`max-age=${e.hstsMaxAge}; includeSubDomains`]}:{}}}}),e.enableCompression!==false&&s.push(Tt()),s.push({handler:"reverse_proxy",upstreams:[{dial:`${e.target}:${e.targetPort}`}]}),a.push({"@id":e.domain,handle:s});let u={[e.domain]:{listen:[":443"],routes:a,automatic_https:{disable:false}}},h=await r.getConfig();return h.apps??={},h.apps.tls??={},h.apps.tls.automation??={policies:[]},h.apps.tls.automation.policies??=[],h.apps.tls.automation.policies.push({subjects:[e.domain],issuers:[{module:"acme"}]}),await r.patchServer(u),{domain:e.domain,target:e.target,targetPort:e.targetPort,tlsEnabled:true,autoTls:true,securityHeaders:{enableHsts:e.enableHsts??false,hstsMaxAge:e.hstsMaxAge??31536e3,frameOptions:e.frameOptions??"DENY",enableCompression:e.enableCompression??true},redirectMode:e.redirectMode??"none"}}async function Ut(t){let e=y(eo,t,"addDomainWithTls options"),r=new A({adminUrl:e.adminUrl});if(await Y(e.domain,e.adminUrl))throw new ae(e.domain);let a=[];e.redirectMode==="www_to_domain"?a.push(jt({fromHost:`www.${e.domain}`,toHost:e.domain,permanent:true,statusCode:e.redirectStatusCode,id:`${e.domain}-redirect`})):e.redirectMode==="domain_to_www"&&a.push(jt({fromHost:e.domain,toHost:`www.${e.domain}`,permanent:true,statusCode:e.redirectStatusCode,id:`${e.domain}-redirect`}));let s=[];e.enableSecurityHeaders&&s.push({handler:"headers",response:{set:{"X-Frame-Options":[e.frameOptions??"DENY"],"X-Content-Type-Options":["nosniff"],...e.enableHsts?{"Strict-Transport-Security":[`max-age=${e.hstsMaxAge}; includeSubDomains`]}:{}}}}),e.enableCompression!==false&&s.push(Tt()),s.push({handler:"reverse_proxy",upstreams:[{dial:`${e.target}:${e.targetPort}`}]}),a.push({"@id":e.domain,match:[{host:[e.domain]}],handle:s,terminal:true});let u={[e.domain]:{listen:[":443"],routes:a,tls_connection_policies:[{certificate_selection:{any_tag:["manual"]}}]}},h=await r.getConfig();h.apps??={},h.apps.tls??={},h.apps.tls.certificates??={load_files:[]},h.apps.tls.certificates.load_files??=[];let g=K(e.certFile),v=K(e.keyFile),T=await(await import('fs/promises')).readFile(g,"utf-8"),D=Et(T)[0],k=Mt(D),ve=fe(e.domain,k);return h.apps.tls.certificates.load_files.push({certificate:g,key:v,tags:[ve,"manual"]}),await r.request("/config/apps/tls",{method:"POST",body:JSON.stringify(h.apps.tls)}),await r.patchServer(u),{domain:e.domain,target:e.target,targetPort:e.targetPort,tlsEnabled:true,autoTls:false,certFile:e.certFile,keyFile:e.keyFile,securityHeaders:{enableHsts:e.enableHsts??false,hstsMaxAge:e.hstsMaxAge??31536e3,frameOptions:e.frameOptions??"DENY",enableCompression:e.enableCompression??true},redirectMode:e.redirectMode??"none"}}async function fo(t){let e=y(to,t,"updateDomain options"),r=await Y(e.domain,e.adminUrl);if(!r)throw new Q(e.domain);let n={...r,...e.target&&{target:e.target},...e.targetPort&&{targetPort:e.targetPort},securityHeaders:{...r.securityHeaders,...e.enableHsts!==void 0&&{enableHsts:e.enableHsts},...e.hstsMaxAge!==void 0&&{hstsMaxAge:e.hstsMaxAge},...e.frameOptions!==void 0&&{frameOptions:e.frameOptions},...e.enableCompression!==void 0&&{enableCompression:e.enableCompression}},...e.redirectMode!==void 0&&{redirectMode:e.redirectMode}};return await Bt({domain:e.domain,adminUrl:e.adminUrl}),n.autoTls?Nt({domain:n.domain,target:n.target,targetPort:n.targetPort,enableSecurityHeaders:true,enableHsts:n.securityHeaders.enableHsts,hstsMaxAge:n.securityHeaders.hstsMaxAge,frameOptions:n.securityHeaders.frameOptions,enableCompression:n.securityHeaders.enableCompression,redirectMode:n.redirectMode,adminUrl:e.adminUrl}):n.certFile&&n.keyFile?Ut({domain:n.domain,target:n.target,targetPort:n.targetPort,certFile:n.certFile,keyFile:n.keyFile,enableSecurityHeaders:true,enableHsts:n.securityHeaders.enableHsts,hstsMaxAge:n.securityHeaders.hstsMaxAge,frameOptions:n.securityHeaders.frameOptions,enableCompression:n.securityHeaders.enableCompression,redirectMode:n.redirectMode,adminUrl:e.adminUrl}):n}async function Bt(t){let e=y(ro,t,"deleteDomain options"),r=new A({adminUrl:e.adminUrl});if(!await Y(e.domain,e.adminUrl))throw new Q(e.domain);let a=await r.getConfig();a.apps?.http?.servers?.[e.domain]&&delete a.apps.http.servers[e.domain],a.apps?.tls?.certificates&&(a.apps.tls.certificates.load_files&&(a.apps.tls.certificates.load_files=a.apps.tls.certificates.load_files.filter(s=>{let u=s.tags?.some(h=>h.includes(e.domain)),m=s.certificate?.includes(e.domain)??s.key?.includes(e.domain);return !u&&!m})),a.apps.tls.certificates.load_pem&&(a.apps.tls.certificates.load_pem=a.apps.tls.certificates.load_pem.filter(s=>!s.tags?.some(m=>m.includes(e.domain))))),a.apps?.tls?.automation?.policies&&(a.apps.tls.automation.policies=a.apps.tls.automation.policies.filter(s=>!s.subjects?.includes(e.domain))),await r.request("/config/",{method:"POST",body:JSON.stringify(a)});}async function Y(t,e){let r=y(G,t,"domain"),n=new A({adminUrl:e});try{let s=(await n.getServers())[r];if(!s)return null;let u="127.0.0.1",m=3e3,h=!1,g="DENY",v=31536e3;if(s.routes&&s.routes.length>0){for(let T of s.routes)if(T.handle)for(let R of T.handle){if(R.handler==="reverse_proxy"&&R.upstreams?.[0]?.dial){let D=R.upstreams[0].dial,k=/^(.+):(\d+)$/.exec(D);k&&(u=k[1],m=parseInt(k[2],10));}if(R.handler==="headers"&&R.headers?.response?.set){let D=R.headers.response.set;if(D["Strict-Transport-Security"]){h=!0;let k=D["Strict-Transport-Security"][0],ve=/max-age=(\d+)/.exec(k);ve&&(v=parseInt(ve[1],10));}if(D["X-Frame-Options"]){let k=D["X-Frame-Options"][0];(k==="SAMEORIGIN"||k==="DENY")&&(g=k);}}}}let w=s.automatic_https?.disable!==!0;return {domain:r,target:u,targetPort:m,tlsEnabled:!0,autoTls:w,securityHeaders:{enableHsts:h,hstsMaxAge:v,frameOptions:g,enableCompression:!0},redirectMode:"none"}}catch{return null}}async function bo(t,e,r,n){let a=y(G,t,"domain"),s=K(e),u=K(r),m=new A({adminUrl:n});if(!await Y(a,n))throw new Q(a);let g=await m.getConfig(),w=await(await import('fs/promises')).readFile(s,"utf-8"),R=Et(w)[0],D=Mt(R),k=fe(a,D);return $e(R),g.apps??={},g.apps.tls??={},g.apps.tls.certificates??={load_files:[]},g.apps.tls.certificates.load_files??=[],g.apps.tls.certificates.load_files.push({certificate:s,key:u,tags:[k,"manual"]}),await m.request("/config/apps/tls/certificates",{method:"PATCH",body:JSON.stringify(g.apps.tls.certificates)}),k}async function So(t,e,r){let n=y(G,t,"domain"),a=new A({adminUrl:r}),s=await a.getConfig();if(!s.apps?.tls?.certificates?.load_files)return 0;let u=s.apps.tls.certificates.load_files.length;s.apps.tls.certificates.load_files=s.apps.tls.certificates.load_files.filter(h=>{let g=h.tags?.some(w=>w.includes(n)),v=h.tags?.includes(e);return !g||v});let m=u-s.apps.tls.certificates.load_files.length;return m>0&&await a.request("/config/apps/tls/certificates",{method:"PATCH",body:JSON.stringify(s.apps.tls.certificates)}),m}async function xo(t){let e=new A({adminUrl:t});try{let r=await e.getServers(),n=new Set;for(let a of Object.values(r))if(a.routes){for(let s of a.routes)if(s.match){for(let u of s.match)if(u.host)for(let m of u.host)n.add(m);}}return Array.from(n).sort()}catch{return []}}var Ne=x(()=>{N();Me();F();X();ze();Le();});F();N();Me();Le();Me();X();function yo(t){let e=t.toLowerCase();return e.endsWith(".json")?"json":e.endsWith(".yaml")||e.endsWith(".yml")?"yaml":e.endsWith(".nginx")||e.includes("nginx.conf")?"nginx":e.endsWith(".apache")||e.includes("httpd.conf")?"apache":"caddyfile"}async function go(t,e,r){let n=K(t),a=await readFile(n,"utf-8"),s=e??yo(t);return new A(r).adapt(a,s)}async function Ca(t,e){return go(t,"caddyfile",e)}Ne();function Wt(t,e){if(e===t)return true;if(!e.includes("*"))return false;if(e.startsWith("*.")&&!e.slice(2).includes("*")){let n=e.slice(2);if(!t.endsWith("."+n))return false;let a=t.slice(0,t.length-n.length-1);return a.length>0&&!a.includes(".")}return new RegExp("^"+e.split(/\*+/).map(wa).join(".*")+"$").test(t)}function wa(t){return t.replace(/[.+?^${}()|[\]\\]/g,"\\$&")}var Pa=["TLS_AES_128_GCM_SHA256","TLS_AES_256_GCM_SHA384","TLS_CHACHA20_POLY1305_SHA256"],Ra=["TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256","TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"],ka=[...Pa,...Ra],Aa=["x25519","secp256r1","secp384r1"],Ha=["h3","h2","http/1.1"],Ia=["h2","http/1.1"],Oa=["http/1.1"];function _o(t){let e={};return t.sni&&t.sni.length>0&&(e.match={sni:t.sni}),(t.certificateTags||t.requiredCertificateTags)&&(e.certificate_selection={},t.certificateTags&&(e.certificate_selection.any_tag=t.certificateTags),t.requiredCertificateTags&&(e.certificate_selection.all_tags=t.requiredCertificateTags)),t.protocolMin&&(e.protocol_min=t.protocolMin==="1.2"?"tls1.2":"tls1.3"),t.protocolMax&&(e.protocol_max=t.protocolMax==="1.2"?"tls1.2":"tls1.3"),t.cipherSuites&&(t.cipherSuites==="modern"?e.cipher_suites=[...ka]:e.cipher_suites=t.cipherSuites),t.curves&&(t.curves==="recommended"?e.curves=[...Aa]:e.curves=t.curves),t.alpn&&(t.alpn==="http3"?e.alpn=[...Ha]:t.alpn==="http2"?e.alpn=[...Ia]:t.alpn==="http1"?e.alpn=[...Oa]:e.alpn=t.alpn),(t.clientAuthMode||t.clientCaCertFiles)&&(e.client_authentication={},t.clientAuthMode&&(e.client_authentication.mode=t.clientAuthMode),t.clientCaCertFiles&&(e.client_authentication.trusted_ca_certs_pem_files=t.clientCaCertFiles)),e}function Pd(t){return _o({...t,protocolMin:"1.3",cipherSuites:"modern",curves:"recommended",alpn:"http3"})}function Rd(t){return _o({...t,protocolMin:"1.2",cipherSuites:"modern",curves:"recommended",alpn:"http2"})}function kd(t={}){let e={module:"internal",...t.internalIssuer??{}},r=[];return t.includeLocalhostPolicy!==false&&r.push({subjects:["*.localhost","localhost"],issuers:[{...e}]}),r.push({issuers:[{...e}]}),{policies:r}}function vo(t){let e=t.toLowerCase().trim();return !!(!e||e==="localhost"||e==="*.localhost"||e.endsWith(".localhost")||/^\d{1,3}(\.\d{1,3}){3}(:\d+)?$/.test(e)||/^\[[0-9a-f:]+\](:\d+)?$/.test(e))}function Ad(t){let e=new Set,r=n=>{if(!n)return;if(Array.isArray(n)){for(let s of n)r(s);return}if(typeof n!="object")return;let a=n;if(Array.isArray(a.match))for(let s of a.match){if(!s||typeof s!="object")continue;let u=s.host;if(Array.isArray(u))for(let m of u)typeof m!="string"||!m||vo(m)||e.add(m);}if(Array.isArray(a.handle))for(let s of a.handle)r(s);if(Array.isArray(a.routes))for(let s of a.routes)r(s);};return r(t),Array.from(e).sort()}function Hd(t={}){let e={};t.disable&&(e.disable=true),t.disableRedirects&&(e.disable_redirects=true),t.disableCertificates&&(e.disable_certificates=true),t.ignoreLoadedCertificates&&(e.ignore_loaded_certificates=true);let r=s=>{if(!s||s.length===0)return [];let u=new Set;for(let m of s)typeof m!="string"||!m||vo(m)||u.add(m);return Array.from(u).sort()},n=r(t.skip);n.length>0&&(e.skip=n);let a=r(t.skipCerts);return a.length>0&&(e.skip_certificates=a),Object.keys(e).length>0?e:void 0}function Id(t,e){if(e.size===0)return [...t];let r=new Set,n=[];for(let a of e){let s=a.toLowerCase();r.add(s),s.includes("*")&&n.push(s);}return t.filter(a=>{let s=a.toLowerCase();if(r.has(s))return false;if(s.includes("*")){for(let u of r)if(Wt(u,s))return false}for(let u of n)if(Wt(s,u))return false;return true})}function Od(t,e){if(!t||typeof t!="object")throw new Error("applyLocalCaInstallTrust: `config` must be an object");let r=Ue(t,"apps","config.apps"),n=Ue(r,"pki","config.apps.pki"),a=Ue(n,"certificate_authorities","config.apps.pki.certificate_authorities"),s=Ue(a,"local","config.apps.pki.certificate_authorities.local");s.install_trust=e;}function Ue(t,e,r){let n=t[e];if(n==null){let a={};return t[e]=a,a}if(typeof n!="object"||Array.isArray(n))throw new Error(`applyLocalCaInstallTrust: ${r} exists but is not an object (got ${Array.isArray(n)?"array":typeof n})`);return n}var ja=Object.freeze({porkbun:"porkbun",cloudflare:"cloudflare",route53:"route53",digitalocean:"digitalocean",godaddy:"godaddy"});function qt(t){let e=t.trim().toLowerCase();return ja[e]??e}function Td(t){if(!Array.isArray(t.subjects)||t.subjects.length===0)throw new Error("buildAcmeDnsPolicy: `subjects` must be a non-empty array");let e=[];for(let s of t.subjects){if(typeof s!="string"||!s.trim())throw new Error("buildAcmeDnsPolicy: `subjects` entries must be non-empty strings");e.push(s.trim());}if(typeof t.dnsProvider!="string"||!t.dnsProvider.trim())throw new Error("buildAcmeDnsPolicy: `dnsProvider` is required");if(t.providerConfig){if(Object.prototype.hasOwnProperty.call(t.providerConfig,"name"))throw new Error("buildAcmeDnsPolicy: `providerConfig.name` is reserved \u2014 set the provider via `dnsProvider`");if(Object.prototype.hasOwnProperty.call(t.providerConfig,"module"))throw new Error("buildAcmeDnsPolicy: `providerConfig.module` is reserved \u2014 `module` is the issuer-level discriminator, not a provider field")}let r=qt(t.dnsProvider),a={module:"acme",challenges:{dns:{provider:{...t.providerConfig??{},name:r}}}};return t.email&&(a.email=t.email),t.ca&&(a.ca=t.ca),{subjects:e,issuers:[a]}}var C={HEALTH:0,AUTH_DOMAIN:10,AUTH_PATH:20,SPECIFIC_PATH:30,REWRITE:40,SERVICE:50,WILDCARD:90,FALLBACK:100};function Be(t){if(typeof t.priority=="number")return t.priority;if(t["@id"]==="global-health"||Co(t))return C.HEALTH;let e=t.match??[];if(e.length===0)return C.FALLBACK;let r=C.SERVICE;for(let n of e){let a=n.path??[];for(let s of a)s==="/health"?r=Math.min(r,C.HEALTH):s.includes("/admin")||s.includes("/auth")?r=Math.min(r,C.AUTH_PATH):s==="/*"?r=Math.max(r,C.WILDCARD):(s.includes("*"),r=Math.min(r,C.SPECIFIC_PATH));}return r}function Co(t){return (t.match??[]).some(r=>r.path?.some(n=>n==="/health"||n.includes("health")))}function Ta(t){return !t.includes("*")&&!t.includes("{")?100:t.includes("{")?50:t.endsWith("*")?30+t.split("/").filter(r=>r&&r!=="*").length*5:t==="/*"?10:20}function Da(t){let e=t.map(r=>({route:r,priority:Be(r),specificity:Ea(r)}));return e.sort((r,n)=>r.priority!==n.priority?r.priority-n.priority:n.specificity-r.specificity),e.map(r=>{let{priority:n,...a}=r.route;return a})}function Ea(t){let e=t.match??[];if(e.length===0)return 0;let r=0;for(let n of e){let a=n.path??[];for(let u of a)r+=Ta(u);let s=n.host??[];for(let u of s)u.includes("*")?r+=10:r+=20;r+=Object.keys(n).length*5;}return r}function Ma(t){if(t.length===0)return;let e=t.findIndex(n=>n["@id"]==="global-health"||Co(n));if(e>0)throw new Error(`Route ordering violation: Health check route must be first, but found at index ${e}`);for(let n=0;n<t.length-1;n++){let a=Be(t[n]),s=Be(t[n+1]);if(a>s){let u=t[n]["@id"]??`route-${n}`,m=t[n+1]["@id"]??`route-${n+1}`;throw new Error(`Route ordering violation: Route "${u}" (priority ${a}) should come after route "${m}" (priority ${s})`)}}let r=La(t);for(let[n,a]of Object.entries(r)){let s=a.findIndex(u=>u.match?.some(m=>m.path?.some(h=>h==="/*")));if(s!==-1)for(let u=s+1;u<a.length;u++){let m=a[u];if(m.match?.some(g=>g.path?.some(v=>v!=="/*"&&!v.includes("*")))){let g=a[s]["@id"]??`route-${s}`,v=m["@id"]??`route-${u}`;throw new Error(`Route ordering violation on host "${n}": Specific path route "${v}" should come before wildcard route "${g}"`)}}}}function La(t){let e={};for(let r of t){let n=r.match?.flatMap(a=>a.host??[])??["*"];for(let a of n)e[a]||(e[a]=[]),e[a].push(r);}return e}function $a(t,e,r={}){let n=[...t];if(r.position==="beginning")return n.unshift(e),n;if(r.position==="end")return n.push(e),n;if(r.beforeId){let a=n.findIndex(s=>s["@id"]===r.beforeId);if(a===-1)throw new Error(`Route with @id "${r.beforeId}" not found`);return n.splice(a,0,e),n}if(r.afterId){let a=n.findIndex(s=>s["@id"]===r.afterId);if(a===-1)throw new Error(`Route with @id "${r.afterId}" not found`);return n.splice(a+1,0,e),n}return n.push(e),n}function za(t){let e=t.path??"/health",r=JSON.stringify({status:"healthy",...t.services!==void 0&&{services:t.services},...t.version&&{version:t.version}});return {"@id":"global-health",priority:C.HEALTH,match:[{path:[e]}],handle:[{handler:"headers",response:{set:{"X-ASD-Health":["ok"],"X-ASD-Service-ID":[t.instanceId],...t.projectId?{"X-ASD-Project":[t.projectId]}:{}}}},{handler:"static_response",status_code:200,headers:{"Content-Type":["application/json"]},body:r}],terminal:true}}function Na(t){let e=t.path??"/*",r=typeof t.upstream=="string"?[{dial:t.upstream}]:t.upstream,n={"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["DENY"],...t.headers};t.serviceId&&(n["X-ASD-Service-ID"]=[t.serviceId]),t.serviceType&&(n["X-ASD-Service-Type"]=[t.serviceType]),t.projectId&&(n["X-ASD-Project"]=[t.projectId]);let a=[];t.enableCompression!==false&&a.push({handler:"encode",encodings:{gzip:{},zstd:{}}}),a.push({handler:"headers",response:{set:n}}),a.push({handler:"reverse_proxy",upstreams:r});let s=t.priority??(e==="/*"?C.WILDCARD:C.SPECIFIC_PATH);return {"@id":t.id,priority:s,match:[{host:[t.host],path:[e]}],handle:a,terminal:true}}function Ua(t){let e=t.id??`auth-${t.host}${t.path?`-${t.path.replace(/[/*]/g,"")}`:""}`,r=t.path,n=typeof t.upstream=="string"?[{dial:t.upstream}]:t.upstream,a={"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["DENY"],"X-ASD-Auth-Type":[r?"path-level":"domain-level"],...t.headers};t.serviceId&&(a["X-ASD-Service-ID"]=[t.serviceId]),t.serviceType&&(a["X-ASD-Service-Type"]=[t.serviceType]),t.projectId&&(a["X-ASD-Project"]=[t.projectId]);let s=t.priority??(r?C.AUTH_PATH:C.AUTH_DOMAIN);return {"@id":e,priority:s,match:[{host:[t.host],...r&&{path:[r]}}],handle:[{handler:"authentication",providers:{http_basic:{accounts:t.accounts,realm:t.realm??"Protected Area"}}},{handler:"headers",response:{set:a}},{handler:"reverse_proxy",upstreams:n}],terminal:true}}function Ba(t){let e=t.path??"/*",r=t.upstreams.map(s=>typeof s=="string"?{dial:s}:s),n={"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["DENY"],...t.headers};t.serviceId&&(n["X-ASD-Service-ID"]=[t.serviceId]);let a={handler:"reverse_proxy",upstreams:r};return t.policy&&(a.load_balancing={selection_policy:{policy:t.policy}}),t.healthCheck&&(a.health_checks={active:{path:t.healthCheck.path??"/health",interval:t.healthCheck.interval??"10s",timeout:t.healthCheck.timeout??"2s"}}),{"@id":t.id,priority:C.SERVICE,match:[{host:[t.host],path:[e]}],handle:[{handler:"headers",response:{set:n}},a],terminal:true}}function Fa(t){let e=typeof t.upstream=="string"?[{dial:t.upstream}]:t.upstream,r={"X-ASD-Path-Rewrite":["true"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"],...t.headers};return t.serviceId&&(r["X-ASD-Service-ID"]=[t.serviceId]),{"@id":t.id,priority:C.REWRITE,match:[{host:[t.host],path:[`${t.pathPrefix}/*`]}],handle:[{handler:"rewrite",strip_path_prefix:t.pathPrefix},{handler:"headers",response:{set:r}},{handler:"reverse_proxy",upstreams:e}],terminal:true}}function Wa(t){let e=t.statusCode??(t.permanent===false?307:308);return {"@id":t.id??`redirect-${t.from}-to-${t.to}`,priority:C.SERVICE,match:[{host:[t.from]}],handle:[{handler:"static_response",status_code:e,headers:{Location:[`https://${t.to}{http.request.uri}`]}}],terminal:true}}ze();var Fe=class{constructor(e){this.client=e;}inspect(e){return Promise.resolve($e(e))}async rotate(e){let{domain:r,certPath:n,keyPath:a,adminUrl:s,cleanupOld:u=false}=e,{rotateCertificate:m}=await Promise.resolve().then(()=>(Ne(),Ft)),h=await m(r,n,a,s),g={tag:h};return u&&(g.removedCount=await this.cleanupOld(r,h,s)),g}async cleanupOld(e,r,n){let{removeOldCertificates:a}=await Promise.resolve().then(()=>(Ne(),Ft));return a(e,r,n)}async list(e){let n=(await this.client.getConfig()).apps?.tls;if(!n)return [];let a=n.certificates?.load_files??[],s=[];for(let u of a){let h=(u.tags??[]).find(v=>v.startsWith(`${e}-`));if(!h)continue;let g=u.certificate;if(typeof g=="string")try{let w=await(await import('fs/promises')).readFile(g,"utf-8"),T=await this.inspect(w),R=zt(w);s.push({...T,tag:h,isExpired:Lt(w),expiringSoon:$t(w,30),daysUntilExpiration:R});}catch{continue}}return s}async checkExpiration(e,r=30){let n=await this.list(e),a=n.filter(s=>s.isExpired||s.daysUntilExpiration<=r);return {hasExpiring:a.length>0,expiringCertificates:a,allCertificates:n}}generateTag(e,r){return Promise.resolve(fe(e,r))}async isExpired(e){return Promise.resolve(Lt(e))}async isExpiringSoon(e,r=30){return Promise.resolve($t(e,r))}async getDaysUntilExpiration(e){return Promise.resolve(zt(e))}};function qa(t){return new Fe(t)}async function wo(t,e=10){if(e<4||e>31)throw new Error("Bcrypt rounds must be between 4 and 31");try{return await(await import('bcrypt')).hash(t,e)}catch{throw new Error("bcrypt module not found. Install it with: npm install bcrypt @types/bcrypt")}}async function Ga(t,e){try{return await(await import('bcrypt')).compare(t,e)}catch{throw new Error("bcrypt module not found. Install it with: npm install bcrypt @types/bcrypt")}}async function Po(t){let{execFile:e}=await import('child_process'),{promisify:r}=await import('util'),n=r(e);try{let{stdout:a}=await n("caddy",["hash-password","--plaintext",t]);return a.trim()}catch{throw new Error(`Failed to hash password with Caddy CLI. Is Caddy installed?
|
|
4
4
|
Alternative: Use hashPassword() with npm install bcrypt
|
|
5
|
-
Or manually run: caddy hash-password --plaintext <your-password>`)}}async function Ro(t,e,r){let n=r?.useCaddyCLI?await Po(e):await wo(e,r?.rounds);return {username:t,password:n}}async function Ka(t,e){return Promise.all(t.map(r=>Ro(r.username,r.password,e)))}N();N();F();async function Ho(){return new Promise(t=>{let e=spawn("which",["mitmweb"]);e.on("close",r=>t(r===0)),e.on("error",()=>t(false));})}async function iu(){return await Ho()?new Promise(t=>{let e=spawn("mitmweb",["--version"]),r="";e.stdout.on("data",n=>{r+=n.toString();}),e.on("close",n=>{if(n===0){let a=/(\d+\.\d+\.\d+)/.exec(r);t(a?a[1]:null);}else t(null);}),e.on("error",()=>t(null));}):null}async function au(t={}){let e=kt.parse(t);if(!await Ho())throw new Pe("MITMproxy is not installed. Install with: pip install mitmproxy");let r=Io(e.workingDir);if(r.running)throw new P("MITMweb is already running",{pid:r.pid});let n=["--web-port",e.webPort.toString(),"--listen-port",e.proxyPort.toString(),"--listen-host",e.listenAddress,"--no-web-open-browser"];if(e.scripts&&e.scripts.length>0)for(let m of e.scripts)n.push("-s",m);let a=spawn("mitmweb",n,{detached:true,stdio:"ignore"}),s=e.workingDir??process.cwd(),u=join(s,"mitmweb.pid");if(writeFileSync(u,a.pid.toString(),"utf-8"),a.unref(),await Ya(e.webPort,1e4),e.openBrowser){let m=`http://${e.listenAddress}:${e.webPort}`;Za(m);}return {pid:a.pid,webUrl:`http://${e.listenAddress}:${e.webPort}`,proxyUrl:`http://${e.listenAddress}:${e.proxyPort}`,pidFile:u}}async function su(t){let e=Io(t);if(!e.running||!e.pid)return;try{process.kill(e.pid,"SIGTERM"),await new Promise(a=>{let s=setInterval(()=>{try{process.kill(e.pid,0);}catch{clearInterval(s),a();}},100);setTimeout(()=>{clearInterval(s);try{process.kill(e.pid,"SIGKILL");}catch{}a();},5e3);});}catch{}let r=t??process.cwd(),n=join(r,"mitmweb.pid");existsSync(n)&&unlinkSync(n);}function Io(t){let e=t??process.cwd(),r=join(e,"mitmweb.pid");if(!existsSync(r))return {running:false};try{let n=readFileSync(r,"utf-8").trim(),a=parseInt(n,10);if(isNaN(a))return {running:!1};try{return process.kill(a,0),{running:!0,pid:a,webUrl:"http://127.0.0.1:8081",proxyUrl:"http://127.0.0.1:8080"}}catch{return unlinkSync(r),{running:!1}}}catch{return {running:false}}}async function Ya(t,e){let r=Date.now(),n=`http://127.0.0.1:${t}`;for(;Date.now()-r<e;){try{if((await fetch(n)).ok)return}catch{}await new Promise(a=>setTimeout(a,500));}throw new Re("Mitmweb failed to start within timeout")}function Za(t){let e=process.platform,r;e==="darwin"?r="open":e==="win32"?r="start":r="xdg-open",spawn(r,[t],{detached:true,stdio:"ignore"}).unref();}async function cu(){return await new Promise(r=>{let n=spawn("which",["pipx"]);n.on("close",a=>r(a===0)),n.on("error",()=>r(false));})&&(console.log("Installing mitmproxy with pipx..."),await new Promise(n=>{let a=spawn("pipx",["install","mitmproxy"],{stdio:"inherit"});a.on("close",s=>n(s===0)),a.on("error",()=>n(false));}))||(console.log("Installing mitmproxy with pip..."),await new Promise(r=>{let n=spawn("pip",["install","--user","mitmproxy"],{stdio:"inherit"});n.on("close",a=>r(a===0)),n.on("error",()=>r(false));}))?(console.log("\u2705 MITMproxy installed successfully"),true):(console.error("\u274C Failed to install mitmproxy"),false)}Le();var Oo=class{caddy;proxies;services=new Map;constructor(e,r){if(this.caddy=e,this.proxies=r,Object.keys(r).length===0)throw new Error("At least one MITMproxy instance must be configured");if(!r.default){let n=Object.keys(r)[0];this.proxies.default=r[n];}}register(e){let r=`mitm_${e.id}`;this.services.set(e.id,{registration:e,enabled:false,activeProxy:null,routeId:r});}unregister(e){return this.services.delete(e)}getService(e){return this.services.get(e)}getProxy(e="default"){let r=this.proxies[e];if(!r)throw new Error(`Unknown proxy: ${e}. Available: ${Object.keys(this.proxies).join(", ")}`);return r}buildDirectRoute(e,r){let n=`${e.backend.host}:${e.backend.port}`;return e.host?{"@id":r,match:[{host:[e.host]}],handle:[V(n)],terminal:true}:{"@id":r,match:[{path:[`${e.pathPrefix}/*`]}],handle:[ye(e.pathPrefix),V(n)],terminal:true}}buildProxiedRoute(e,r,n){let a=`${r.host}:${r.port}`;return e.host?{"@id":n,match:[{host:[e.host]}],handle:[V(a)],terminal:true}:{"@id":n,match:[{path:[`${e.pathPrefix}/*`]}],handle:[ye(e.pathPrefix),V(a)],terminal:true}}async enable(e,r={}){let n=this.getService(e);if(!n)throw new Error(`Service not registered: ${e}`);let a=r.proxy??"default",s=this.getProxy(a),{registration:u,routeId:m}=n,h=this.buildProxiedRoute(u,s,m);await this.caddy.removeRouteById(u.serverId,m).catch(()=>{}),await this.caddy.addRoute(u.serverId,h),n.enabled=true,n.activeProxy=a;}async disable(e){let r=this.getService(e);if(!r)throw new Error(`Service not registered: ${e}`);let{registration:n,routeId:a}=r,s=this.buildDirectRoute(n,a);await this.caddy.removeRouteById(n.serverId,a).catch(()=>{}),await this.caddy.addRoute(n.serverId,s),r.enabled=false,r.activeProxy=null;}async enableAll(e={}){let r=Array.from(this.services.keys()).map(n=>this.enable(n,e));await Promise.all(r);}async disableAll(){let e=Array.from(this.services.keys()).map(r=>this.disable(r));await Promise.all(e);}isEnabled(e){return this.getService(e)?.enabled??false}getStatus(){let e={};for(let[r,n]of this.services)e[r]={enabled:n.enabled,proxy:n.activeProxy,service:n.registration};return e}getServiceStatus(e){let r=this.getService(e);if(r)return {enabled:r.enabled,proxy:r.activeProxy,service:r.registration}}getRegisteredServices(){return Array.from(this.services.keys())}getAvailableProxies(){return Object.keys(this.proxies)}getProxyConfig(e){return this.proxies[e]}};N();var Eo={};Qe(Eo,{AuthenticationPortalSchema:()=>ue,AuthorizationPolicySchema:()=>me,IdentityStoreSchema:()=>gt,LdapIdentityStoreSchema:()=>de,LocalIdentityStoreSchema:()=>pe,OAuth2IdentityProviderSchema:()=>Oe,OidcIdentityProviderSchema:()=>je,SECURITY_TEMPLATES:()=>Ke,SecurityAppSchema:()=>Te,SecurityAuthenticatorHandlerSchema:()=>q,SecurityAuthorizationHandlerSchema:()=>le,SecurityAuthorizerProviderSchema:()=>yt,SecurityConfigSchema:()=>he,SecurityHandlerSchema:()=>qr,buildAuthenticationPortal:()=>U,buildAuthenticatorHandler:()=>Kt,buildAuthenticatorRoute:()=>qe,buildAuthorizationHandler:()=>Xt,buildAuthorizationPolicy:()=>B,buildLdapIdentityStore:()=>We,buildLocalIdentityStore:()=>be,buildOAuth2Provider:()=>Se,buildOidcProvider:()=>J,buildProtectedRoute:()=>Ge,buildSecurityApp:()=>jo,buildSecurityConfig:()=>xe,getTemplateById:()=>Do,getTemplatesByCategory:()=>To});De();X();De();function be(t){let e={name:t.name??"local",kind:"local",params:{realm:t.realm??"local",path:t.path}};return y(pe,e,"buildLocalIdentityStore")}function We(t){let e={name:t.name??"ldapdb",kind:"ldap",params:{realm:t.realm??"ldap",servers:t.servers.map(r=>{let n=r.address;return !n.startsWith("ldap://")&&!n.startsWith("ldaps://")&&(n=(r.port===636?"ldaps://":"ldap://")+n),{address:n,...r.port&&{port:r.port}}}),bind_username:t.bindUsername,bind_password:t.bindPassword,search_base_dn:t.searchBaseDn,search_user_filter:(t.searchUserFilter??"(uid={username})").replace(/\{username\}/g,"%s"),groups:t.groups&&t.groups.length>0?t.groups.map(r=>({dn:r.groupDn??t.searchBaseDn,...r.roles&&{roles:r.roles}})):[{dn:t.searchBaseDn,roles:["authp/user"]}]}};return y(de,e,"buildLdapIdentityStore")}function Se(t){let e={name:t.name??t.provider,kind:"oauth",params:{driver:t.provider,realm:t.realm??t.provider,client_id:t.clientId,client_secret:t.clientSecret,scopes:t.scopes??["openid","email","profile"],...t.authorizationUrl&&{authorization_url:t.authorizationUrl},...t.tokenUrl&&{token_url:t.tokenUrl}}};return y(Oe,e,"buildOAuth2Provider")}function J(t){let e=t.metadataUrl;e.endsWith("/.well-known/openid-configuration")||(e=e.replace(/\/$/,"")+"/.well-known/openid-configuration");let r={name:t.name??t.provider,kind:"oauth",params:{driver:"generic",realm:t.realm??t.provider,client_id:t.clientId,client_secret:t.clientSecret,metadata_url:e,scopes:t.scopes??["openid","email","profile"]}};return y(je,r,"buildOidcProvider")}function U(t){let e={name:t.name};if(t.ui&&(e.ui={...t.ui.theme&&{theme:t.ui.theme},...t.ui.logoUrl&&{logo_url:t.ui.logoUrl},...t.ui.customCss&&{custom_css:t.ui.customCss}}),t.cookie){let r={},n;if(t.cookie.lifetime!==void 0)if(typeof t.cookie.lifetime=="number")n=t.cookie.lifetime;else {let a=/^(\d+)(h|m|s)?$/.exec(t.cookie.lifetime);if(a){let s=parseInt(a[1],10),u=a[2]??"s";n=u==="h"?s*3600:u==="m"?s*60:s;}}if(t.cookie.domain){let a={};n!==void 0&&(a.lifetime=n),t.cookie.insecure!==void 0&&(a.insecure=t.cookie.insecure),t.cookie.sameSite&&(a.same_site=t.cookie.sameSite),r.domains={[t.cookie.domain]:a};}else n!==void 0&&(r.lifetime=n),t.cookie.insecure!==void 0&&(r.insecure=t.cookie.insecure),t.cookie.sameSite&&(r.same_site=t.cookie.sameSite);t.cookie.path&&(r.path=t.cookie.path),Object.keys(r).length>0&&(e.cookie_config=r);}return t.identityStores&&(e.identity_stores=t.identityStores),t.identityProviders&&(e.identity_providers=t.identityProviders),t.transformUser&&(e.user_transformer_configs=[t.transformUser]),y(ue,e,"buildAuthenticationPortal")}function B(t){let e={name:t.name};return t.accessLists&&t.accessLists.length>0&&(e.access_list_rules=t.accessLists.map(r=>({action:r.action??"allow",conditions:[`match ${r.claim} ${r.values.join(" ")}`]}))),t.cryptoKey&&(e.crypto_key_configs=[{...t.cryptoKey.tokenName&&{token_name:t.cryptoKey.tokenName},...t.cryptoKey.source&&{source:t.cryptoKey.source}}]),t.bypass&&t.bypass.length>0&&(e.bypass_configs=t.bypass.map(r=>({uri:r,match_type:"prefix"}))),y(me,e,"buildAuthorizationPolicy")}function xe(t){let e={};return t.portals&&t.portals.length>0&&(e.authentication_portals=t.portals),t.policies&&t.policies.length>0&&(e.authorization_policies=t.policies),t.identityStores&&t.identityStores.length>0&&(e.identity_stores=t.identityStores),t.identityProviders&&t.identityProviders.length>0&&(e.identity_providers=t.identityProviders),y(he,e,"buildSecurityConfig")}function jo(t){let e={config:t.config};return y(Te,e,"buildSecurityApp")}function Kt(t){let e={handler:"authenticator",portal_name:t.portalName,...t.routeMatcher&&{route_matcher:t.routeMatcher}};return y(q,e,"buildAuthenticatorHandler")}function Xt(t){let e={handler:"authentication",providers:{authorizer:{gatekeeper_name:t.gatekeeperName,...t.routeMatcher&&{route_matcher:t.routeMatcher}}}};return y(le,e,"buildAuthorizationHandler")}function qe(t){let e=Kt({portalName:t.portalName,routeMatcher:"*"});return {"@id":t.routeId??`auth-portal-${t.portalName}`,match:[{host:t.hosts}],handle:[e],terminal:true}}function Ge(t){let e=t.paths?.join(" ")??"*",r=Xt({gatekeeperName:t.gatekeeperName,routeMatcher:e}),n={host:t.hosts};return t.paths&&(n.path=t.paths),{"@id":t.routeId??`protected-${t.gatekeeperName}`,match:[n],handle:[r,{handler:"reverse_proxy",upstreams:[{dial:t.dial}]}],terminal:true}}var Ja={id:"caddy-sec-local-store",name:"Local Identity Store",description:"File-based user authentication with JSON credentials file",category:"identity-store",variables:[{name:"path",description:"Path to users JSON file",default:"/etc/caddy/users.json"},{name:"realm",description:"Authentication realm name",default:"local"}],build:()=>be({path:"/etc/caddy/users.json",realm:"local"}),snippet:["buildLocalIdentityStore({",' path: "${1:/etc/caddy/users.json}",',' realm: "${2:local}",',"})"]},Qa={id:"caddy-sec-ldap-store",name:"LDAP Identity Store",description:"LDAP/Active Directory authentication",category:"identity-store",variables:[{name:"server",description:"LDAP server address",default:"ldap.example.com"},{name:"port",description:"LDAP server port",default:"389"},{name:"bindUsername",description:"Bind username/DN for LDAP queries",default:"cn=admin,dc=example,dc=com"},{name:"bindPassword",description:"Bind password",default:"secret"},{name:"searchBaseDn",description:"Base DN for user searches",default:"ou=users,dc=example,dc=com"}],build:()=>We({servers:[{address:"ldap.example.com",port:389}],bindUsername:"cn=admin,dc=example,dc=com",bindPassword:"secret",searchBaseDn:"ou=users,dc=example,dc=com",searchUserFilter:"(uid={username})"}),snippet:["buildLdapIdentityStore({",' servers: [{ address: "${1:ldap.example.com}", port: ${2:389} }],',' bindUsername: "${3:cn=admin,dc=example,dc=com}",',' bindPassword: "${4:secret}",',' searchBaseDn: "${5:ou=users,dc=example,dc=com}",',' searchUserFilter: "${6:(uid={username})}",',"})"]},es={id:"caddy-sec-oauth2-github",name:"GitHub OAuth2 Provider",description:"GitHub OAuth2 authentication for developer tools",category:"identity-provider",variables:[{name:"clientId",description:"GitHub OAuth App client ID",default:"your-client-id"},{name:"clientSecret",description:"GitHub OAuth App client secret",default:"your-client-secret"}],build:()=>Se({provider:"github",clientId:"your-client-id",clientSecret:"your-client-secret",scopes:["user:email","read:user"]}),snippet:["buildOAuth2Provider({",' provider: "github",',' clientId: "${1:your-client-id}",',' clientSecret: "${2:your-client-secret}",',' scopes: ["user:email", "read:user"],',"})"]},ts={id:"caddy-sec-oauth2-google",name:"Google OAuth2 Provider",description:"Google OAuth2 authentication",category:"identity-provider",variables:[{name:"clientId",description:"Google OAuth client ID",default:"your-client-id.apps.googleusercontent.com"},{name:"clientSecret",description:"Google OAuth client secret",default:"your-client-secret"}],build:()=>Se({provider:"google",clientId:"your-client-id.apps.googleusercontent.com",clientSecret:"your-client-secret",scopes:["openid","email","profile"]}),snippet:["buildOAuth2Provider({",' provider: "google",',' clientId: "${1:your-client-id.apps.googleusercontent.com}",',' clientSecret: "${2:your-client-secret}",',' scopes: ["openid", "email", "profile"],',"})"]},rs={id:"caddy-sec-oidc-keycloak",name:"Keycloak OIDC Provider",description:"Keycloak OpenID Connect authentication",category:"identity-provider",variables:[{name:"clientId",description:"Keycloak client ID",default:"my-app"},{name:"clientSecret",description:"Keycloak client secret",default:"your-client-secret"},{name:"metadataUrl",description:"OIDC metadata/discovery URL",default:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration"}],build:()=>J({provider:"keycloak",clientId:"my-app",clientSecret:"your-client-secret",metadataUrl:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration",scopes:["openid","email","profile"]}),snippet:["buildOidcProvider({",' provider: "keycloak",',' clientId: "${1:my-app}",',' clientSecret: "${2:your-client-secret}",',' metadataUrl: "${3:https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration}",',' scopes: ["openid", "email", "profile"],',"})"]},os={id:"caddy-sec-oidc-okta",name:"Okta OIDC Provider",description:"Okta OpenID Connect authentication",category:"identity-provider",variables:[{name:"clientId",description:"Okta client ID",default:"your-client-id"},{name:"clientSecret",description:"Okta client secret",default:"your-client-secret"},{name:"domain",description:"Okta domain",default:"your-domain.okta.com"}],build:()=>J({provider:"okta",clientId:"your-client-id",clientSecret:"your-client-secret",metadataUrl:"https://your-domain.okta.com/.well-known/openid-configuration"}),snippet:["buildOidcProvider({",' provider: "okta",',' clientId: "${1:your-client-id}",',' clientSecret: "${2:your-client-secret}",',' metadataUrl: "https://${3:your-domain.okta.com}/.well-known/openid-configuration",',"})"]},ns={id:"caddy-sec-oidc-auth0",name:"Auth0 OIDC Provider",description:"Auth0 OpenID Connect authentication",category:"identity-provider",variables:[{name:"clientId",description:"Auth0 client ID",default:"your-client-id"},{name:"clientSecret",description:"Auth0 client secret",default:"your-client-secret"},{name:"domain",description:"Auth0 domain",default:"your-tenant.auth0.com"}],build:()=>J({provider:"auth0",clientId:"your-client-id",clientSecret:"your-client-secret",metadataUrl:"https://your-tenant.auth0.com/.well-known/openid-configuration"}),snippet:["buildOidcProvider({",' provider: "auth0",',' clientId: "${1:your-client-id}",',' clientSecret: "${2:your-client-secret}",',' metadataUrl: "https://${3:your-tenant.auth0.com}/.well-known/openid-configuration",',"})"]},is={id:"caddy-sec-portal-basic",name:"Basic Authentication Portal",description:"Simple authentication portal with local identity store",category:"portal",variables:[{name:"name",description:"Portal name",default:"myportal"},{name:"identityStore",description:"Identity store name",default:"local"}],build:()=>U({name:"myportal",identityStores:["local"]}),snippet:["buildAuthenticationPortal({",' name: "${1:myportal}",',' identityStores: ["${2:local}"],',"})"]},as={id:"caddy-sec-portal-cookie",name:"Portal with Cookie Configuration",description:"Authentication portal with custom cookie settings",category:"portal",variables:[{name:"name",description:"Portal name",default:"myportal"},{name:"domain",description:"Cookie domain",default:".example.com"},{name:"lifetime",description:"Session lifetime",default:"24h"}],build:()=>U({name:"myportal",identityStores:["local"],cookie:{domain:".example.com",path:"/",lifetime:"24h"}}),snippet:["buildAuthenticationPortal({",' name: "${1:myportal}",',' identityStores: ["${2:local}"],'," cookie: {",' domain: "${3:.example.com}",',' path: "/",',' lifetime: "${4:24h}",'," },","})"]},ss={id:"caddy-sec-portal-sso",name:"Portal with SSO Providers",description:"Authentication portal with OAuth/OIDC single sign-on",category:"portal",variables:[{name:"name",description:"Portal name",default:"myportal"},{name:"providers",description:"Identity providers",default:"keycloak"}],build:()=>U({name:"myportal",identityStores:["local"],identityProviders:["keycloak","google"]}),snippet:["buildAuthenticationPortal({",' name: "${1:myportal}",',' identityStores: ["${2:local}"],',' identityProviders: ["${3:keycloak}", "${4:google}"],',"})"]},cs={id:"caddy-sec-policy-basic",name:"Basic Authorization Policy",description:"Simple role-based access control policy",category:"policy",variables:[{name:"name",description:"Policy name",default:"mypolicy"},{name:"roles",description:"Allowed roles",default:"user"}],build:()=>B({name:"mypolicy",accessLists:[{claim:"roles",values:["user"]}]}),snippet:["buildAuthorizationPolicy({",' name: "${1:mypolicy}",'," accessLists: [",' { claim: "roles", values: ["${2:user}"] },'," ],","})"]},ls={id:"caddy-sec-policy-admin",name:"Admin-Only Policy",description:"Policy that restricts access to admin role only",category:"policy",variables:[{name:"name",description:"Policy name",default:"admin-policy"}],build:()=>B({name:"admin-policy",accessLists:[{claim:"roles",values:["admin"]}]}),snippet:["buildAuthorizationPolicy({",' name: "${1:admin-policy}",'," accessLists: [",' { claim: "roles", values: ["admin"], action: "allow" },'," ],","})"]},ps={id:"caddy-sec-policy-bypass",name:"Policy with Bypass Paths",description:"Policy with public endpoints that skip authentication",category:"policy",variables:[{name:"name",description:"Policy name",default:"api-policy"},{name:"bypass",description:"Paths to bypass",default:"/health,/metrics"}],build:()=>B({name:"api-policy",accessLists:[{claim:"roles",values:["user","admin"]}],bypass:["/health","/metrics","/public/*"]}),snippet:["buildAuthorizationPolicy({",' name: "${1:api-policy}",'," accessLists: [",' { claim: "roles", values: ["user", "admin"] },'," ],",' bypass: ["/health", "/metrics", "${2:/public/*}"],',"})"]},ds={id:"caddy-sec-route-portal",name:"Authentication Portal Route",description:"Route that serves the login portal",category:"route",variables:[{name:"host",description:"Portal hostname",default:"auth.example.com"},{name:"portalName",description:"Portal name",default:"myportal"}],build:()=>qe({hosts:["auth.example.com"],portalName:"myportal",routeId:"auth-portal"}),snippet:["buildAuthenticatorRoute({",' hosts: ["${1:auth.example.com}"],',' portalName: "${2:myportal}",',' routeId: "${3:auth-portal}",',"})"]},us={id:"caddy-sec-route-protected",name:"Protected Route",description:"Route with authentication required",category:"route",variables:[{name:"host",description:"Service hostname",default:"api.example.com"},{name:"path",description:"Protected path",default:"/api/*"},{name:"gatekeeperName",description:"Policy name",default:"mypolicy"},{name:"upstream",description:"Upstream address",default:"localhost:3000"}],build:()=>Ge({hosts:["api.example.com"],paths:["/api/*"],gatekeeperName:"mypolicy",dial:"localhost:3000",routeId:"protected-api"}),snippet:["buildProtectedRoute({",' hosts: ["${1:api.example.com}"],',' paths: ["${2:/api/*}"],',' gatekeeperName: "${3:mypolicy}",',' dial: "${4:localhost:3000}",',' routeId: "${5:protected-api}",',"})"]},ms={id:"caddy-sec-full-local",name:"Complete Local Authentication Setup",description:"Full setup with local users, portal, policy, and routes",category:"full-setup",variables:[{name:"usersPath",description:"Path to users file",default:"/etc/caddy/users.json"},{name:"authHost",description:"Auth portal hostname",default:"auth.example.com"},{name:"apiHost",description:"API hostname",default:"api.example.com"}],build:()=>{let t=be({path:"/etc/caddy/users.json"}),e=U({name:"portal",identityStores:["local"],cookie:{domain:".example.com",lifetime:"24h"}}),r=B({name:"policy",accessLists:[{claim:"roles",values:["user","admin"]}],bypass:["/health"]});return xe({identityStores:[t],portals:[e],policies:[r]})},snippet:["// Complete local authentication setup","const store = buildLocalIdentityStore({",' path: "${1:/etc/caddy/users.json}",',"});","","const portal = buildAuthenticationPortal({",' name: "${2:portal}",',' identityStores: ["local"],'," cookie: {",' domain: "${3:.example.com}",',' lifetime: "24h",'," },","});","","const policy = buildAuthorizationPolicy({",' name: "${4:policy}",'," accessLists: [",' { claim: "roles", values: ["user", "admin"] },'," ],",' bypass: ["/health"],',"});","","const config = buildSecurityConfig({"," identityStores: [store],"," portals: [portal],"," policies: [policy],","});"]},hs={id:"caddy-sec-full-oidc",name:"Complete OIDC Authentication Setup",description:"Full setup with Keycloak OIDC, portal, policy, and routes",category:"full-setup",variables:[{name:"clientId",description:"OIDC client ID",default:"my-app"},{name:"clientSecret",description:"OIDC client secret",default:"your-secret"},{name:"metadataUrl",description:"OIDC metadata/discovery URL",default:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration"}],build:()=>{let t=J({provider:"keycloak",clientId:"my-app",clientSecret:"your-secret",metadataUrl:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration"}),e=U({name:"portal",identityProviders:["keycloak"]}),r=B({name:"policy",accessLists:[{claim:"roles",values:["user"]}]});return xe({identityProviders:[t],portals:[e],policies:[r]})},snippet:["// Complete OIDC authentication setup","const provider = buildOidcProvider({",' provider: "keycloak",',' clientId: "${1:my-app}",',' clientSecret: "${2:your-secret}",',' metadataUrl: "${3:https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration}",',"});","","const portal = buildAuthenticationPortal({",' name: "${4:portal}",',' identityProviders: ["keycloak"],',"});","","const policy = buildAuthorizationPolicy({",' name: "${5:policy}",'," accessLists: [",' { claim: "roles", values: ["user"] },'," ],","});","","const config = buildSecurityConfig({"," identityProviders: [provider],"," portals: [portal],"," policies: [policy],","});"]},Ke=[Ja,Qa,es,ts,rs,os,ns,is,as,ss,cs,ls,ps,ds,us,ms,hs];function To(t){return Ke.filter(e=>e.category===t)}function Do(t){return Ke.find(e=>e.id===t)}var qo={};Qe(qo,{CloudflareDnsProviderConfigSchema:()=>Ye,DigitaloceanDnsProviderConfigSchema:()=>Je,GodaddyDnsProviderConfigSchema:()=>Ze,KNOWN_ACME_DNS_PROVIDERS:()=>Mo,PorkbunDnsProviderConfigSchema:()=>Ve,buildAcmeDnsProviderConfig:()=>Wo,buildCloudflareDnsConfig:()=>Zt,buildDigitaloceanDnsConfig:()=>Qt,buildGodaddyDnsConfig:()=>er,buildPorkbunDnsConfig:()=>Yt,buildRoute53DnsConfig:()=>Jt});var Mo=["porkbun","cloudflare","route53","digitalocean","godaddy"];z$1.object({apikey:z$1.string(),secretapikey:z$1.string()});var Lo=z$1.object({api_key:z$1.string().optional(),api_secret_key:z$1.string().optional()});z$1.any();var $o=z$1.object({api_token:z$1.string().optional(),zone_token:z$1.string().optional()});var zo=z$1.object({api_token:z$1.string().optional()});z$1.object({data:z$1.string(),ttl:z$1.number()});var ys=z$1.object({});z$1.object({Record:z$1.any(),ID:z$1.string()});var No=z$1.object({Client:ys,auth_token:z$1.string()});var Uo=z$1.object({region:z$1.string().optional(),profile:z$1.string().optional(),access_key_id:z$1.string().optional(),secret_access_key:z$1.string().optional(),session_token:z$1.string().optional(),max_retries:z$1.number().optional(),route53_max_wait:z$1.number().optional(),wait_for_route53_sync:z$1.boolean().optional(),skip_route53_sync_on_delete:z$1.boolean().optional(),hosted_zone_id:z$1.string().optional()});var Bo=z$1.object({Provider:z$1.any().optional(),debug_logging:z$1.boolean().optional()});var Ve=Lo,Ye=$o,Ze=zo,Je=No.omit({Client:true}),Fo=Uo.extend(Bo.pick({debug_logging:true}).shape);X();function Yt(){return {providerConfig:y(Ve,{api_key:"{env.PORKBUN_API_KEY}",api_secret_key:"{env.PORKBUN_API_SECRET_KEY}"},"buildPorkbunDnsConfig"),envVars:["PORKBUN_API_KEY","PORKBUN_API_SECRET_KEY"]}}function Zt(){return {providerConfig:y(Ye,{api_token:"{env.CLOUDFLARE_API_TOKEN}"},"buildCloudflareDnsConfig"),envVars:["CLOUDFLARE_API_TOKEN"]}}function Jt(t){let e=["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_REGION"];return !t||Object.keys(t).length===0?{envVars:e}:{providerConfig:y(Fo,t,"buildRoute53DnsConfig"),envVars:e}}function Qt(){return {providerConfig:y(Je,{auth_token:"{env.DIGITALOCEAN_API_TOKEN}"},"buildDigitaloceanDnsConfig"),envVars:["DIGITALOCEAN_API_TOKEN"]}}function er(){return {providerConfig:y(Ze,{api_token:"{env.GODADDY_API_TOKEN}"},"buildGodaddyDnsConfig"),envVars:["GODADDY_API_TOKEN"]}}function Wo(t){switch(qt(t)){case "porkbun":return Yt();case "cloudflare":return Zt();case "route53":return Jt();case "digitalocean":return Qt();case "godaddy":return er();default:return {envVars:[]}}}ze();var Go={version:"0.10.0"};var am=Go.version;
|
|
5
|
+
Or manually run: caddy hash-password --plaintext <your-password>`)}}async function Ro(t,e,r){let n=r?.useCaddyCLI?await Po(e):await wo(e,r?.rounds);return {username:t,password:n}}async function Ka(t,e){return Promise.all(t.map(r=>Ro(r.username,r.password,e)))}N();N();F();async function Ho(){return new Promise(t=>{let e=spawn("which",["mitmweb"]);e.on("close",r=>t(r===0)),e.on("error",()=>t(false));})}async function iu(){return await Ho()?new Promise(t=>{let e=spawn("mitmweb",["--version"]),r="";e.stdout.on("data",n=>{r+=n.toString();}),e.on("close",n=>{if(n===0){let a=/(\d+\.\d+\.\d+)/.exec(r);t(a?a[1]:null);}else t(null);}),e.on("error",()=>t(null));}):null}async function au(t={}){let e=kt.parse(t);if(!await Ho())throw new Pe("MITMproxy is not installed. Install with: pip install mitmproxy");let r=Io(e.workingDir);if(r.running)throw new P("MITMweb is already running",{pid:r.pid});let n=["--web-port",e.webPort.toString(),"--listen-port",e.proxyPort.toString(),"--listen-host",e.listenAddress,"--no-web-open-browser"];if(e.scripts&&e.scripts.length>0)for(let m of e.scripts)n.push("-s",m);let a=spawn("mitmweb",n,{detached:true,stdio:"ignore"}),s=e.workingDir??process.cwd(),u=join(s,"mitmweb.pid");if(writeFileSync(u,a.pid.toString(),"utf-8"),a.unref(),await Ya(e.webPort,1e4),e.openBrowser){let m=`http://${e.listenAddress}:${e.webPort}`;Za(m);}return {pid:a.pid,webUrl:`http://${e.listenAddress}:${e.webPort}`,proxyUrl:`http://${e.listenAddress}:${e.proxyPort}`,pidFile:u}}async function su(t){let e=Io(t);if(!e.running||!e.pid)return;try{process.kill(e.pid,"SIGTERM"),await new Promise(a=>{let s=setInterval(()=>{try{process.kill(e.pid,0);}catch{clearInterval(s),a();}},100);setTimeout(()=>{clearInterval(s);try{process.kill(e.pid,"SIGKILL");}catch{}a();},5e3);});}catch{}let r=t??process.cwd(),n=join(r,"mitmweb.pid");existsSync(n)&&unlinkSync(n);}function Io(t){let e=t??process.cwd(),r=join(e,"mitmweb.pid");if(!existsSync(r))return {running:false};try{let n=readFileSync(r,"utf-8").trim(),a=parseInt(n,10);if(isNaN(a))return {running:!1};try{return process.kill(a,0),{running:!0,pid:a,webUrl:"http://127.0.0.1:8081",proxyUrl:"http://127.0.0.1:8080"}}catch{return unlinkSync(r),{running:!1}}}catch{return {running:false}}}async function Ya(t,e){let r=Date.now(),n=`http://127.0.0.1:${t}`;for(;Date.now()-r<e;){try{if((await fetch(n)).ok)return}catch{}await new Promise(a=>setTimeout(a,500));}throw new Re("Mitmweb failed to start within timeout")}function Za(t){let e=process.platform,r;e==="darwin"?r="open":e==="win32"?r="start":r="xdg-open",spawn(r,[t],{detached:true,stdio:"ignore"}).unref();}async function cu(){return await new Promise(r=>{let n=spawn("which",["pipx"]);n.on("close",a=>r(a===0)),n.on("error",()=>r(false));})&&(console.log("Installing mitmproxy with pipx..."),await new Promise(n=>{let a=spawn("pipx",["install","mitmproxy"],{stdio:"inherit"});a.on("close",s=>n(s===0)),a.on("error",()=>n(false));}))||(console.log("Installing mitmproxy with pip..."),await new Promise(r=>{let n=spawn("pip",["install","--user","mitmproxy"],{stdio:"inherit"});n.on("close",a=>r(a===0)),n.on("error",()=>r(false));}))?(console.log("\u2705 MITMproxy installed successfully"),true):(console.error("\u274C Failed to install mitmproxy"),false)}Le();var Oo=class{caddy;proxies;services=new Map;constructor(e,r){if(this.caddy=e,this.proxies=r,Object.keys(r).length===0)throw new Error("At least one MITMproxy instance must be configured");if(!r.default){let n=Object.keys(r)[0];this.proxies.default=r[n];}}register(e){let r=`mitm_${e.id}`;this.services.set(e.id,{registration:e,enabled:false,activeProxy:null,routeId:r});}unregister(e){return this.services.delete(e)}getService(e){return this.services.get(e)}getProxy(e="default"){let r=this.proxies[e];if(!r)throw new Error(`Unknown proxy: ${e}. Available: ${Object.keys(this.proxies).join(", ")}`);return r}buildDirectRoute(e,r){let n=`${e.backend.host}:${e.backend.port}`;return e.host?{"@id":r,match:[{host:[e.host]}],handle:[V(n)],terminal:true}:{"@id":r,match:[{path:[`${e.pathPrefix}/*`]}],handle:[ye(e.pathPrefix),V(n)],terminal:true}}buildProxiedRoute(e,r,n){let a=`${r.host}:${r.port}`;return e.host?{"@id":n,match:[{host:[e.host]}],handle:[V(a)],terminal:true}:{"@id":n,match:[{path:[`${e.pathPrefix}/*`]}],handle:[ye(e.pathPrefix),V(a)],terminal:true}}async enable(e,r={}){let n=this.getService(e);if(!n)throw new Error(`Service not registered: ${e}`);let a=r.proxy??"default",s=this.getProxy(a),{registration:u,routeId:m}=n,h=this.buildProxiedRoute(u,s,m);await this.caddy.removeRouteById(u.serverId,m).catch(()=>{}),await this.caddy.addRoute(u.serverId,h),n.enabled=true,n.activeProxy=a;}async disable(e){let r=this.getService(e);if(!r)throw new Error(`Service not registered: ${e}`);let{registration:n,routeId:a}=r,s=this.buildDirectRoute(n,a);await this.caddy.removeRouteById(n.serverId,a).catch(()=>{}),await this.caddy.addRoute(n.serverId,s),r.enabled=false,r.activeProxy=null;}async enableAll(e={}){let r=Array.from(this.services.keys()).map(n=>this.enable(n,e));await Promise.all(r);}async disableAll(){let e=Array.from(this.services.keys()).map(r=>this.disable(r));await Promise.all(e);}isEnabled(e){return this.getService(e)?.enabled??false}getStatus(){let e={};for(let[r,n]of this.services)e[r]={enabled:n.enabled,proxy:n.activeProxy,service:n.registration};return e}getServiceStatus(e){let r=this.getService(e);if(r)return {enabled:r.enabled,proxy:r.activeProxy,service:r.registration}}getRegisteredServices(){return Array.from(this.services.keys())}getAvailableProxies(){return Object.keys(this.proxies)}getProxyConfig(e){return this.proxies[e]}};N();var Eo={};Qe(Eo,{AuthenticationPortalSchema:()=>ue,AuthorizationPolicySchema:()=>me,IdentityStoreSchema:()=>gt,LdapIdentityStoreSchema:()=>de,LocalIdentityStoreSchema:()=>pe,OAuth2IdentityProviderSchema:()=>Oe,OidcIdentityProviderSchema:()=>je,SECURITY_TEMPLATES:()=>Ke,SecurityAppSchema:()=>Te,SecurityAuthenticatorHandlerSchema:()=>q,SecurityAuthorizationHandlerSchema:()=>le,SecurityAuthorizerProviderSchema:()=>yt,SecurityConfigSchema:()=>he,SecurityHandlerSchema:()=>qr,buildAuthenticationPortal:()=>U,buildAuthenticatorHandler:()=>Kt,buildAuthenticatorRoute:()=>qe,buildAuthorizationHandler:()=>Xt,buildAuthorizationPolicy:()=>B,buildLdapIdentityStore:()=>We,buildLocalIdentityStore:()=>be,buildOAuth2Provider:()=>Se,buildOidcProvider:()=>J,buildProtectedRoute:()=>Ge,buildSecurityApp:()=>jo,buildSecurityConfig:()=>xe,getTemplateById:()=>Do,getTemplatesByCategory:()=>To});De();X();De();function be(t){let e={name:t.name??"local",kind:"local",params:{realm:t.realm??"local",path:t.path}};return y(pe,e,"buildLocalIdentityStore")}function We(t){let e={name:t.name??"ldapdb",kind:"ldap",params:{realm:t.realm??"ldap",servers:t.servers.map(r=>{let n=r.address;return !n.startsWith("ldap://")&&!n.startsWith("ldaps://")&&(n=(r.port===636?"ldaps://":"ldap://")+n),{address:n,...r.port&&{port:r.port}}}),bind_username:t.bindUsername,bind_password:t.bindPassword,search_base_dn:t.searchBaseDn,search_user_filter:(t.searchUserFilter??"(uid={username})").replace(/\{username\}/g,"%s"),groups:t.groups&&t.groups.length>0?t.groups.map(r=>({dn:r.groupDn??t.searchBaseDn,...r.roles&&{roles:r.roles}})):[{dn:t.searchBaseDn,roles:["authp/user"]}]}};return y(de,e,"buildLdapIdentityStore")}function Se(t){let e={name:t.name??t.provider,kind:"oauth",params:{driver:t.provider,realm:t.realm??t.provider,client_id:t.clientId,client_secret:t.clientSecret,scopes:t.scopes??["openid","email","profile"],...t.authorizationUrl&&{authorization_url:t.authorizationUrl},...t.tokenUrl&&{token_url:t.tokenUrl}}};return y(Oe,e,"buildOAuth2Provider")}function J(t){let e=t.metadataUrl;e.endsWith("/.well-known/openid-configuration")||(e=e.replace(/\/$/,"")+"/.well-known/openid-configuration");let r={name:t.name??t.provider,kind:"oauth",params:{driver:"generic",realm:t.realm??t.provider,client_id:t.clientId,client_secret:t.clientSecret,metadata_url:e,scopes:t.scopes??["openid","email","profile"]}};return y(je,r,"buildOidcProvider")}function U(t){let e={name:t.name};if(t.ui&&(e.ui={...t.ui.theme&&{theme:t.ui.theme},...t.ui.logoUrl&&{logo_url:t.ui.logoUrl},...t.ui.customCss&&{custom_css:t.ui.customCss}}),t.cookie){let r={},n;if(t.cookie.lifetime!==void 0)if(typeof t.cookie.lifetime=="number")n=t.cookie.lifetime;else {let a=/^(\d+)(h|m|s)?$/.exec(t.cookie.lifetime);if(a){let s=parseInt(a[1],10),u=a[2]??"s";n=u==="h"?s*3600:u==="m"?s*60:s;}}if(t.cookie.domain){let a={};n!==void 0&&(a.lifetime=n),t.cookie.insecure!==void 0&&(a.insecure=t.cookie.insecure),t.cookie.sameSite&&(a.same_site=t.cookie.sameSite),r.domains={[t.cookie.domain]:a};}else n!==void 0&&(r.lifetime=n),t.cookie.insecure!==void 0&&(r.insecure=t.cookie.insecure),t.cookie.sameSite&&(r.same_site=t.cookie.sameSite);t.cookie.path&&(r.path=t.cookie.path),Object.keys(r).length>0&&(e.cookie_config=r);}return t.identityStores&&(e.identity_stores=t.identityStores),t.identityProviders&&(e.identity_providers=t.identityProviders),t.transformUser&&(e.user_transformer_configs=[t.transformUser]),y(ue,e,"buildAuthenticationPortal")}function B(t){let e={name:t.name};return t.accessLists&&t.accessLists.length>0&&(e.access_list_rules=t.accessLists.map(r=>({action:r.action??"allow",conditions:[`match ${r.claim} ${r.values.join(" ")}`]}))),t.cryptoKey&&(e.crypto_key_configs=[{...t.cryptoKey.tokenName&&{token_name:t.cryptoKey.tokenName},...t.cryptoKey.source&&{source:t.cryptoKey.source}}]),t.bypass&&t.bypass.length>0&&(e.bypass_configs=t.bypass.map(r=>({uri:r,match_type:"prefix"}))),y(me,e,"buildAuthorizationPolicy")}function xe(t){let e={};return t.portals&&t.portals.length>0&&(e.authentication_portals=t.portals),t.policies&&t.policies.length>0&&(e.authorization_policies=t.policies),t.identityStores&&t.identityStores.length>0&&(e.identity_stores=t.identityStores),t.identityProviders&&t.identityProviders.length>0&&(e.identity_providers=t.identityProviders),y(he,e,"buildSecurityConfig")}function jo(t){let e={config:t.config};return y(Te,e,"buildSecurityApp")}function Kt(t){let e={handler:"authenticator",portal_name:t.portalName,...t.routeMatcher&&{route_matcher:t.routeMatcher}};return y(q,e,"buildAuthenticatorHandler")}function Xt(t){let e={handler:"authentication",providers:{authorizer:{gatekeeper_name:t.gatekeeperName,...t.routeMatcher&&{route_matcher:t.routeMatcher}}}};return y(le,e,"buildAuthorizationHandler")}function qe(t){let e=Kt({portalName:t.portalName,routeMatcher:"*"});return {"@id":t.routeId??`auth-portal-${t.portalName}`,match:[{host:t.hosts}],handle:[e],terminal:true}}function Ge(t){let e=t.paths?.join(" ")??"*",r=Xt({gatekeeperName:t.gatekeeperName,routeMatcher:e}),n={host:t.hosts};return t.paths&&(n.path=t.paths),{"@id":t.routeId??`protected-${t.gatekeeperName}`,match:[n],handle:[r,{handler:"reverse_proxy",upstreams:[{dial:t.dial}]}],terminal:true}}var Ja={id:"caddy-sec-local-store",name:"Local Identity Store",description:"File-based user authentication with JSON credentials file",category:"identity-store",variables:[{name:"path",description:"Path to users JSON file",default:"/etc/caddy/users.json"},{name:"realm",description:"Authentication realm name",default:"local"}],build:()=>be({path:"/etc/caddy/users.json",realm:"local"}),snippet:["buildLocalIdentityStore({",' path: "${1:/etc/caddy/users.json}",',' realm: "${2:local}",',"})"]},Qa={id:"caddy-sec-ldap-store",name:"LDAP Identity Store",description:"LDAP/Active Directory authentication",category:"identity-store",variables:[{name:"server",description:"LDAP server address",default:"ldap.example.com"},{name:"port",description:"LDAP server port",default:"389"},{name:"bindUsername",description:"Bind username/DN for LDAP queries",default:"cn=admin,dc=example,dc=com"},{name:"bindPassword",description:"Bind password",default:"secret"},{name:"searchBaseDn",description:"Base DN for user searches",default:"ou=users,dc=example,dc=com"}],build:()=>We({servers:[{address:"ldap.example.com",port:389}],bindUsername:"cn=admin,dc=example,dc=com",bindPassword:"secret",searchBaseDn:"ou=users,dc=example,dc=com",searchUserFilter:"(uid={username})"}),snippet:["buildLdapIdentityStore({",' servers: [{ address: "${1:ldap.example.com}", port: ${2:389} }],',' bindUsername: "${3:cn=admin,dc=example,dc=com}",',' bindPassword: "${4:secret}",',' searchBaseDn: "${5:ou=users,dc=example,dc=com}",',' searchUserFilter: "${6:(uid={username})}",',"})"]},es={id:"caddy-sec-oauth2-github",name:"GitHub OAuth2 Provider",description:"GitHub OAuth2 authentication for developer tools",category:"identity-provider",variables:[{name:"clientId",description:"GitHub OAuth App client ID",default:"your-client-id"},{name:"clientSecret",description:"GitHub OAuth App client secret",default:"your-client-secret"}],build:()=>Se({provider:"github",clientId:"your-client-id",clientSecret:"your-client-secret",scopes:["user:email","read:user"]}),snippet:["buildOAuth2Provider({",' provider: "github",',' clientId: "${1:your-client-id}",',' clientSecret: "${2:your-client-secret}",',' scopes: ["user:email", "read:user"],',"})"]},ts={id:"caddy-sec-oauth2-google",name:"Google OAuth2 Provider",description:"Google OAuth2 authentication",category:"identity-provider",variables:[{name:"clientId",description:"Google OAuth client ID",default:"your-client-id.apps.googleusercontent.com"},{name:"clientSecret",description:"Google OAuth client secret",default:"your-client-secret"}],build:()=>Se({provider:"google",clientId:"your-client-id.apps.googleusercontent.com",clientSecret:"your-client-secret",scopes:["openid","email","profile"]}),snippet:["buildOAuth2Provider({",' provider: "google",',' clientId: "${1:your-client-id.apps.googleusercontent.com}",',' clientSecret: "${2:your-client-secret}",',' scopes: ["openid", "email", "profile"],',"})"]},rs={id:"caddy-sec-oidc-keycloak",name:"Keycloak OIDC Provider",description:"Keycloak OpenID Connect authentication",category:"identity-provider",variables:[{name:"clientId",description:"Keycloak client ID",default:"my-app"},{name:"clientSecret",description:"Keycloak client secret",default:"your-client-secret"},{name:"metadataUrl",description:"OIDC metadata/discovery URL",default:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration"}],build:()=>J({provider:"keycloak",clientId:"my-app",clientSecret:"your-client-secret",metadataUrl:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration",scopes:["openid","email","profile"]}),snippet:["buildOidcProvider({",' provider: "keycloak",',' clientId: "${1:my-app}",',' clientSecret: "${2:your-client-secret}",',' metadataUrl: "${3:https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration}",',' scopes: ["openid", "email", "profile"],',"})"]},os={id:"caddy-sec-oidc-okta",name:"Okta OIDC Provider",description:"Okta OpenID Connect authentication",category:"identity-provider",variables:[{name:"clientId",description:"Okta client ID",default:"your-client-id"},{name:"clientSecret",description:"Okta client secret",default:"your-client-secret"},{name:"domain",description:"Okta domain",default:"your-domain.okta.com"}],build:()=>J({provider:"okta",clientId:"your-client-id",clientSecret:"your-client-secret",metadataUrl:"https://your-domain.okta.com/.well-known/openid-configuration"}),snippet:["buildOidcProvider({",' provider: "okta",',' clientId: "${1:your-client-id}",',' clientSecret: "${2:your-client-secret}",',' metadataUrl: "https://${3:your-domain.okta.com}/.well-known/openid-configuration",',"})"]},ns={id:"caddy-sec-oidc-auth0",name:"Auth0 OIDC Provider",description:"Auth0 OpenID Connect authentication",category:"identity-provider",variables:[{name:"clientId",description:"Auth0 client ID",default:"your-client-id"},{name:"clientSecret",description:"Auth0 client secret",default:"your-client-secret"},{name:"domain",description:"Auth0 domain",default:"your-tenant.auth0.com"}],build:()=>J({provider:"auth0",clientId:"your-client-id",clientSecret:"your-client-secret",metadataUrl:"https://your-tenant.auth0.com/.well-known/openid-configuration"}),snippet:["buildOidcProvider({",' provider: "auth0",',' clientId: "${1:your-client-id}",',' clientSecret: "${2:your-client-secret}",',' metadataUrl: "https://${3:your-tenant.auth0.com}/.well-known/openid-configuration",',"})"]},is={id:"caddy-sec-portal-basic",name:"Basic Authentication Portal",description:"Simple authentication portal with local identity store",category:"portal",variables:[{name:"name",description:"Portal name",default:"myportal"},{name:"identityStore",description:"Identity store name",default:"local"}],build:()=>U({name:"myportal",identityStores:["local"]}),snippet:["buildAuthenticationPortal({",' name: "${1:myportal}",',' identityStores: ["${2:local}"],',"})"]},as={id:"caddy-sec-portal-cookie",name:"Portal with Cookie Configuration",description:"Authentication portal with custom cookie settings",category:"portal",variables:[{name:"name",description:"Portal name",default:"myportal"},{name:"domain",description:"Cookie domain",default:".example.com"},{name:"lifetime",description:"Session lifetime",default:"24h"}],build:()=>U({name:"myportal",identityStores:["local"],cookie:{domain:".example.com",path:"/",lifetime:"24h"}}),snippet:["buildAuthenticationPortal({",' name: "${1:myportal}",',' identityStores: ["${2:local}"],'," cookie: {",' domain: "${3:.example.com}",',' path: "/",',' lifetime: "${4:24h}",'," },","})"]},ss={id:"caddy-sec-portal-sso",name:"Portal with SSO Providers",description:"Authentication portal with OAuth/OIDC single sign-on",category:"portal",variables:[{name:"name",description:"Portal name",default:"myportal"},{name:"providers",description:"Identity providers",default:"keycloak"}],build:()=>U({name:"myportal",identityStores:["local"],identityProviders:["keycloak","google"]}),snippet:["buildAuthenticationPortal({",' name: "${1:myportal}",',' identityStores: ["${2:local}"],',' identityProviders: ["${3:keycloak}", "${4:google}"],',"})"]},cs={id:"caddy-sec-policy-basic",name:"Basic Authorization Policy",description:"Simple role-based access control policy",category:"policy",variables:[{name:"name",description:"Policy name",default:"mypolicy"},{name:"roles",description:"Allowed roles",default:"user"}],build:()=>B({name:"mypolicy",accessLists:[{claim:"roles",values:["user"]}]}),snippet:["buildAuthorizationPolicy({",' name: "${1:mypolicy}",'," accessLists: [",' { claim: "roles", values: ["${2:user}"] },'," ],","})"]},ls={id:"caddy-sec-policy-admin",name:"Admin-Only Policy",description:"Policy that restricts access to admin role only",category:"policy",variables:[{name:"name",description:"Policy name",default:"admin-policy"}],build:()=>B({name:"admin-policy",accessLists:[{claim:"roles",values:["admin"]}]}),snippet:["buildAuthorizationPolicy({",' name: "${1:admin-policy}",'," accessLists: [",' { claim: "roles", values: ["admin"], action: "allow" },'," ],","})"]},ps={id:"caddy-sec-policy-bypass",name:"Policy with Bypass Paths",description:"Policy with public endpoints that skip authentication",category:"policy",variables:[{name:"name",description:"Policy name",default:"api-policy"},{name:"bypass",description:"Paths to bypass",default:"/health,/metrics"}],build:()=>B({name:"api-policy",accessLists:[{claim:"roles",values:["user","admin"]}],bypass:["/health","/metrics","/public/*"]}),snippet:["buildAuthorizationPolicy({",' name: "${1:api-policy}",'," accessLists: [",' { claim: "roles", values: ["user", "admin"] },'," ],",' bypass: ["/health", "/metrics", "${2:/public/*}"],',"})"]},ds={id:"caddy-sec-route-portal",name:"Authentication Portal Route",description:"Route that serves the login portal",category:"route",variables:[{name:"host",description:"Portal hostname",default:"auth.example.com"},{name:"portalName",description:"Portal name",default:"myportal"}],build:()=>qe({hosts:["auth.example.com"],portalName:"myportal",routeId:"auth-portal"}),snippet:["buildAuthenticatorRoute({",' hosts: ["${1:auth.example.com}"],',' portalName: "${2:myportal}",',' routeId: "${3:auth-portal}",',"})"]},us={id:"caddy-sec-route-protected",name:"Protected Route",description:"Route with authentication required",category:"route",variables:[{name:"host",description:"Service hostname",default:"api.example.com"},{name:"path",description:"Protected path",default:"/api/*"},{name:"gatekeeperName",description:"Policy name",default:"mypolicy"},{name:"upstream",description:"Upstream address",default:"localhost:3000"}],build:()=>Ge({hosts:["api.example.com"],paths:["/api/*"],gatekeeperName:"mypolicy",dial:"localhost:3000",routeId:"protected-api"}),snippet:["buildProtectedRoute({",' hosts: ["${1:api.example.com}"],',' paths: ["${2:/api/*}"],',' gatekeeperName: "${3:mypolicy}",',' dial: "${4:localhost:3000}",',' routeId: "${5:protected-api}",',"})"]},ms={id:"caddy-sec-full-local",name:"Complete Local Authentication Setup",description:"Full setup with local users, portal, policy, and routes",category:"full-setup",variables:[{name:"usersPath",description:"Path to users file",default:"/etc/caddy/users.json"},{name:"authHost",description:"Auth portal hostname",default:"auth.example.com"},{name:"apiHost",description:"API hostname",default:"api.example.com"}],build:()=>{let t=be({path:"/etc/caddy/users.json"}),e=U({name:"portal",identityStores:["local"],cookie:{domain:".example.com",lifetime:"24h"}}),r=B({name:"policy",accessLists:[{claim:"roles",values:["user","admin"]}],bypass:["/health"]});return xe({identityStores:[t],portals:[e],policies:[r]})},snippet:["// Complete local authentication setup","const store = buildLocalIdentityStore({",' path: "${1:/etc/caddy/users.json}",',"});","","const portal = buildAuthenticationPortal({",' name: "${2:portal}",',' identityStores: ["local"],'," cookie: {",' domain: "${3:.example.com}",',' lifetime: "24h",'," },","});","","const policy = buildAuthorizationPolicy({",' name: "${4:policy}",'," accessLists: [",' { claim: "roles", values: ["user", "admin"] },'," ],",' bypass: ["/health"],',"});","","const config = buildSecurityConfig({"," identityStores: [store],"," portals: [portal],"," policies: [policy],","});"]},hs={id:"caddy-sec-full-oidc",name:"Complete OIDC Authentication Setup",description:"Full setup with Keycloak OIDC, portal, policy, and routes",category:"full-setup",variables:[{name:"clientId",description:"OIDC client ID",default:"my-app"},{name:"clientSecret",description:"OIDC client secret",default:"your-secret"},{name:"metadataUrl",description:"OIDC metadata/discovery URL",default:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration"}],build:()=>{let t=J({provider:"keycloak",clientId:"my-app",clientSecret:"your-secret",metadataUrl:"https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration"}),e=U({name:"portal",identityProviders:["keycloak"]}),r=B({name:"policy",accessLists:[{claim:"roles",values:["user"]}]});return xe({identityProviders:[t],portals:[e],policies:[r]})},snippet:["// Complete OIDC authentication setup","const provider = buildOidcProvider({",' provider: "keycloak",',' clientId: "${1:my-app}",',' clientSecret: "${2:your-secret}",',' metadataUrl: "${3:https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration}",',"});","","const portal = buildAuthenticationPortal({",' name: "${4:portal}",',' identityProviders: ["keycloak"],',"});","","const policy = buildAuthorizationPolicy({",' name: "${5:policy}",'," accessLists: [",' { claim: "roles", values: ["user"] },'," ],","});","","const config = buildSecurityConfig({"," identityProviders: [provider],"," portals: [portal],"," policies: [policy],","});"]},Ke=[Ja,Qa,es,ts,rs,os,ns,is,as,ss,cs,ls,ps,ds,us,ms,hs];function To(t){return Ke.filter(e=>e.category===t)}function Do(t){return Ke.find(e=>e.id===t)}var qo={};Qe(qo,{CloudflareDnsProviderConfigSchema:()=>Ye,DigitaloceanDnsProviderConfigSchema:()=>Je,GodaddyDnsProviderConfigSchema:()=>Ze,KNOWN_ACME_DNS_PROVIDERS:()=>Mo,PorkbunDnsProviderConfigSchema:()=>Ve,buildAcmeDnsProviderConfig:()=>Wo,buildCloudflareDnsConfig:()=>Zt,buildDigitaloceanDnsConfig:()=>Qt,buildGodaddyDnsConfig:()=>er,buildPorkbunDnsConfig:()=>Yt,buildRoute53DnsConfig:()=>Jt});var Mo=["porkbun","cloudflare","route53","digitalocean","godaddy"];z$1.object({apikey:z$1.string(),secretapikey:z$1.string()});var Lo=z$1.object({api_key:z$1.string().optional(),api_secret_key:z$1.string().optional()});z$1.any();var $o=z$1.object({api_token:z$1.string().optional(),zone_token:z$1.string().optional()});var zo=z$1.object({api_token:z$1.string().optional()});z$1.object({data:z$1.string(),ttl:z$1.number()});var ys=z$1.object({});z$1.object({Record:z$1.any(),ID:z$1.string()});var No=z$1.object({Client:ys,auth_token:z$1.string()});var Uo=z$1.object({region:z$1.string().optional(),profile:z$1.string().optional(),access_key_id:z$1.string().optional(),secret_access_key:z$1.string().optional(),session_token:z$1.string().optional(),max_retries:z$1.number().optional(),route53_max_wait:z$1.number().optional(),wait_for_route53_sync:z$1.boolean().optional(),skip_route53_sync_on_delete:z$1.boolean().optional(),hosted_zone_id:z$1.string().optional()});var Bo=z$1.object({Provider:z$1.any().optional(),debug_logging:z$1.boolean().optional()});var Ve=Lo,Ye=$o,Ze=zo,Je=No.omit({Client:true}),Fo=Uo.extend(Bo.pick({debug_logging:true}).shape);X();function Yt(){return {providerConfig:y(Ve,{api_key:"{env.PORKBUN_API_KEY}",api_secret_key:"{env.PORKBUN_API_SECRET_KEY}"},"buildPorkbunDnsConfig"),envVars:["PORKBUN_API_KEY","PORKBUN_API_SECRET_KEY"]}}function Zt(){return {providerConfig:y(Ye,{api_token:"{env.CLOUDFLARE_API_TOKEN}"},"buildCloudflareDnsConfig"),envVars:["CLOUDFLARE_API_TOKEN"]}}function Jt(t){let e=["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_REGION"];return !t||Object.keys(t).length===0?{envVars:e}:{providerConfig:y(Fo,t,"buildRoute53DnsConfig"),envVars:e}}function Qt(){return {providerConfig:y(Je,{auth_token:"{env.DIGITALOCEAN_API_TOKEN}"},"buildDigitaloceanDnsConfig"),envVars:["DIGITALOCEAN_API_TOKEN"]}}function er(){return {providerConfig:y(Ze,{api_token:"{env.GODADDY_API_TOKEN}"},"buildGodaddyDnsConfig"),envVars:["GODADDY_API_TOKEN"]}}function Wo(t){switch(qt(t)){case "porkbun":return Yt();case "cloudflare":return Zt();case "route53":return Jt();case "digitalocean":return Qt();case "godaddy":return er();default:return {envVars:[]}}}ze();var Go={version:"0.10.1"};var am=Go.version;
|
|
6
6
|
export{ja as ACME_DNS_PROVIDER_MODULE_MAP,Ei as ActiveHealthChecksSchema,Qr as AdaptOptionsSchema,xt as AddDomainWithAutoTlsOptionsSchema,eo as AddDomainWithTlsOptionsSchema,Wi as AuthenticationHandlerSchema,ue as AuthenticationPortalSchema,me as AuthorizationPolicySchema,_t as BasicAuthOptionsSchema,Di as CaddyAdapterSchema,P as CaddyApiClientError,ie as CaddyApiError,A as CaddyClient,bt as CaddyClientOptionsSchema,M as CaddyDurationSchema,Ep as CaddyHandlerSchema,Jr as CaddyRouteHandlerSchema,Ti as CaddyRouteMatcherSchema,z as CaddyRouteSchema,Fe as CertificateManager,Ye as CloudflareDnsProviderConfigSchema,na as CopyResponseHandlerSchema,ia as CopyResponseHeadersHandlerSchema,ro as DeleteDomainOptionsSchema,Ee as DialAddressSchema,Je as DigitaloceanDnsProviderConfigSchema,ae as DomainAlreadyExistsError,Q as DomainNotFoundError,G as DomainSchema,Gi as EncodeHandlerSchema,oa as ErrorHandlerSchema,vp as ExtendedRouteMatcherSchema,Ki as FileServerHandlerSchema,ft as FrameOptionsSchema,Ze as GodaddyDnsProviderConfigSchema,Oa as HTTP1_ALPN_PROTOCOLS,Ia as HTTP2_ALPN_PROTOCOLS,Ha as HTTP_ALPN_PROTOCOLS,Ni as HeaderRegexpSchema,Bi as HeadersHandlerSchema,Ct as HealthCheckRouteOptionsSchema,Li as HealthChecksSchema,wt as HostRouteOptionsSchema,Vr as HttpMethodSchema,gt as IdentityStoreSchema,Qi as InterceptHandlerSchema,ea as InvokeHandlerSchema,Mo as KNOWN_ACME_DNS_PROVIDERS,sa as KnownCaddyHandlerSchema,de as LdapIdentityStoreSchema,Rt as LoadBalancerRouteOptionsSchema,$i as LoadBalancingSchema,pe as LocalIdentityStoreSchema,ra as LogAppendHandlerSchema,ka as MODERN_CIPHER_SUITES,Vi as MapHandlerSchema,ji as MatchHeaderSchema,Oi as MatchQuerySchema,Oo as MitmproxyManager,Pe as MitmproxyNotInstalledError,Re as MitmproxyStartError,kt as MitmwebOptionsSchema,Ce as NetworkError,Oe as OAuth2IdentityProviderSchema,je as OidcIdentityProviderSchema,Mi as PassiveHealthChecksSchema,Pt as PathRouteOptionsSchema,Ve as PorkbunDnsProviderConfigSchema,Yi as PushHandlerSchema,Aa as RECOMMENDED_CURVES,C as ROUTE_PRIORITIES,Yr as RedirectModeSchema,Zr as RedirectStatusCodeSchema,Zi as RequestBodyHandlerSchema,Ui as ReverseProxyHandlerSchema,qi as RewriteHandlerSchema,Ke as SECURITY_TEMPLATES,Te as SecurityAppSchema,q as SecurityAuthenticatorHandlerSchema,le as SecurityAuthorizationHandlerSchema,yt as SecurityAuthorizerProviderSchema,he as SecurityConfigSchema,qr as SecurityHandlerSchema,St as SecurityHeadersSchema,vt as ServiceRouteOptionsSchema,Fi as StaticResponseHandlerSchema,aa as SubrouteHandlerSchema,Ra as TLS_1_2_CIPHER_SUITES,Pa as TLS_1_3_CIPHER_SUITES,Xi as TemplatesHandlerSchema,we as TimeoutError,_p as TlsIssuerSchema,ta as TracingHandlerSchema,to as UpdateDomainOptionsSchema,zi as UpstreamSchema,no as UpstreamStatusArraySchema,ca as UpstreamStatusSchema,am as VERSION,L as ValidationError,Ji as VarsHandlerSchema,Nt as addDomainWithAutoTls,Ut as addDomainWithTls,or as adminConfigSchema,Od as applyLocalCaInstallTrust,cu as autoInstallMitmproxy,Td as buildAcmeDnsPolicy,Wo as buildAcmeDnsProviderConfig,U as buildAuthenticationPortal,Kt as buildAuthenticatorHandler,qe as buildAuthenticatorRoute,Xt as buildAuthorizationHandler,B as buildAuthorizationPolicy,Hd as buildAutomaticHttpsConfig,kd as buildAutomationPoliciesWithInternalFallback,uo as buildBasicAuthHandler,Zt as buildCloudflareDnsConfig,Rd as buildCompatibleTlsPolicy,Tt as buildCompressionHandler,Qt as buildDigitaloceanDnsConfig,rd as buildDnsRebindingBypassHandler,id as buildErrorRoute,od as buildFileServerRoute,er as buildGodaddyDnsConfig,lo as buildHealthCheckRoute,Ht as buildHostRoute,ho as buildIframeHeadersHandler,_a as buildIframePermissiveHandler,Sa as buildIframeProxyRoute,It as buildIngressTagHeadersHandler,We as buildLdapIdentityStore,Jp as buildLoadBalancerRoute,be as buildLocalIdentityStore,ld as buildMapHandler,ba as buildMitmproxyRoute,Qp as buildMitmproxyRoutePair,td as buildMitmproxyWebSocketRoute,ed as buildMitmproxyWebUiRoute,Pd as buildModernTlsPolicy,Se as buildOAuth2Provider,J as buildOidcProvider,ga as buildPathRoute,Yt as buildPorkbunDnsConfig,Ot as buildProjectIdHeadersHandler,Ge as buildProtectedRoute,jt as buildRedirectRoute,ad as buildRequestBodyHandler,V as buildReverseProxyHandler,ye as buildRewriteHandler,Jt as buildRoute53DnsConfig,jo as buildSecurityApp,xe as buildSecurityConfig,po as buildSecurityHeadersHandler,Zp as buildServiceRoutes,nd as buildTemplatesRoute,_o as buildTlsConnectionPolicy,cd as buildTracingHandler,sd as buildVarsHandler,xa as buildWebSocketProxyRoute,Dt as buildWwwRedirect,qo as caddyDns,Eo as caddySecurity,Be as calculateRoutePriority,Ad as collectExternalHostsFromRoutes,et as configSchema,Ro as createBasicAuthAccount,Ka as createBasicAuthAccounts,Ua as createBasicAuthRoute,qa as createCertificateManager,za as createHealthRoute,Ba as createLoadBalancerRoute,Wa as createRedirectRoute,Fa as createRewriteRoute,Na as createServiceRoute,Bt as deleteDomain,yo as detectAdapter,tr as durationSchema,Mt as extractSerialNumber,Id as filterAcmeManagedFromSkip,fe as generateCertTag,zt as getDaysUntilExpiration,Y as getDomainConfig,iu as getMitmproxyVersion,Io as getMitmwebStatus,Do as getTemplateById,To as getTemplatesByCategory,wo as hashPassword,Po as hashPasswordWithCaddy,Wt as hostMatchesPattern,$a as insertRouteRelative,Lt as isCertificateExpired,$t as isCertificateExpiringSoon,Ho as isMitmproxyInstalled,xo as listDomains,Ca as loadCaddyfile,go as loadConfig,nr as loggingSchema,$e as parseCertificate,So as removeOldCertificates,qt as resolveAcmeDnsProviderModule,bo as rotateCertificate,te as routeListSchema,ee as routeSchema,se as serverSchema,Da as sortRoutes,Et as splitCertificateBundle,au as startMitmweb,su as stopMitmweb,fo as updateDomain,Mp as validate,Ma as validateRouteOrdering,Ga as verifyPassword};
|
package/dist/mitm/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export {
|
|
1
|
+
import { w as MitmwebStatus, v as MitmwebOptions } from '../types-CccPerBC.js';
|
|
2
|
+
import { e as CaddyClient } from '../client-ZQl_qNE7.js';
|
|
3
|
+
export { N as MitmwebOptionsSchema } from '../client-ZQl_qNE7.js';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../caddy-http-
|
|
5
|
+
import '../caddy-http-jhg7B7CZ.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Check if mitmproxy is installed
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AcmeDnsProviderConfigResult,
|
|
1
|
+
export { A as AcmeDnsProviderConfigResult, c as CloudflareDnsProviderConfig, C as CloudflareDnsProviderConfigSchema, D as DigitaloceanDnsProviderConfig, a as DigitaloceanDnsProviderConfigSchema, d as GodaddyDnsProviderConfig, G as GodaddyDnsProviderConfigSchema, K as KNOWN_ACME_DNS_PROVIDERS, b as KnownAcmeDnsProvider, e as PorkbunDnsProviderConfig, P as PorkbunDnsProviderConfigSchema, f as buildAcmeDnsProviderConfig, g as buildCloudflareDnsConfig, h as buildDigitaloceanDnsConfig, i as buildGodaddyDnsConfig, j as buildPorkbunDnsConfig, k as buildRoute53DnsConfig } from '../../index-CwQ-g5nn.js';
|
|
2
2
|
import 'zod';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { c as AuthenticationPortal, d as AuthorizationPolicy, I as IdentityStore, L as LdapIdentityStore, t as LocalIdentityStore, O as OAuth2IdentityProvider, x as OidcIdentityProvider, S as SecurityApp, N as SecurityAuthenticatorHandler, Q as SecurityAuthorizationHandler, T as SecurityAuthorizerProvider, U as SecurityConfig, V as SecurityHandler } from '../../types-CccPerBC.js';
|
|
2
|
+
export { A as AccessListEntry, a as AuthenticationPortalSchema, b as AuthorizationPolicySchema, B as BuildAuthenticationPortalOptions, c as BuildAuthenticationRouteOptions, d as BuildAuthenticatorHandlerOptions, e as BuildAuthorizationHandlerOptions, f as BuildAuthorizationPolicyOptions, g as BuildLdapIdentityStoreOptions, h as BuildLocalIdentityStoreOptions, i as BuildOAuth2ProviderOptions, j as BuildOidcProviderOptions, k as BuildProtectedRouteOptions, l as BuildSecurityAppOptions, m as BuildSecurityConfigOptions, C as CookieOptions, n as CryptoKeyConfig, I as IdentityStoreSchema, L as LdapIdentityStoreSchema, o as LdapServerConfig, p as LocalIdentityStoreSchema, O as OAuth2IdentityProviderSchema, q as OidcIdentityProviderSchema, P as PortalUiOptions, S as SECURITY_TEMPLATES, r as SecurityAppSchema, s as SecurityAuthenticatorHandlerSchema, t as SecurityAuthorizationHandlerSchema, u as SecurityAuthorizerProviderSchema, v as SecurityConfigSchema, w as SecurityHandlerSchema, x as SecurityTemplate, T as TemplateVariable, y as buildAuthenticationPortal, z as buildAuthenticatorHandler, D as buildAuthenticatorRoute, E as buildAuthorizationHandler, F as buildAuthorizationPolicy, G as buildLdapIdentityStore, H as buildLocalIdentityStore, J as buildOAuth2Provider, K as buildOidcProvider, M as buildProtectedRoute, N as buildSecurityApp, Q as buildSecurityConfig, R as getTemplateById, U as getTemplatesByCategory } from '../../index-P1KJwTOK.js';
|
|
3
3
|
import 'zod';
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { A as AcmeDnsProviderConfigResult,
|
|
3
|
-
export {
|
|
1
|
+
export { A as AccessListEntry, a as AuthenticationPortalSchema, b as AuthorizationPolicySchema, B as BuildAuthenticationPortalOptions, c as BuildAuthenticationRouteOptions, d as BuildAuthenticatorHandlerOptions, e as BuildAuthorizationHandlerOptions, f as BuildAuthorizationPolicyOptions, g as BuildLdapIdentityStoreOptions, h as BuildLocalIdentityStoreOptions, i as BuildOAuth2ProviderOptions, j as BuildOidcProviderOptions, k as BuildProtectedRouteOptions, l as BuildSecurityAppOptions, m as BuildSecurityConfigOptions, C as CookieOptions, n as CryptoKeyConfig, I as IdentityStoreSchema, L as LdapIdentityStoreSchema, o as LdapServerConfig, p as LocalIdentityStoreSchema, O as OAuth2IdentityProviderSchema, q as OidcIdentityProviderSchema, P as PortalUiOptions, S as SECURITY_TEMPLATES, r as SecurityAppSchema, s as SecurityAuthenticatorHandlerSchema, t as SecurityAuthorizationHandlerSchema, u as SecurityAuthorizerProviderSchema, v as SecurityConfigSchema, w as SecurityHandlerSchema, x as SecurityTemplate, T as TemplateVariable, y as buildAuthenticationPortal, z as buildAuthenticatorHandler, D as buildAuthenticatorRoute, E as buildAuthorizationHandler, F as buildAuthorizationPolicy, G as buildLdapIdentityStore, H as buildLocalIdentityStore, J as buildOAuth2Provider, K as buildOidcProvider, M as buildProtectedRoute, N as buildSecurityApp, Q as buildSecurityConfig, V as caddySecurity, R as getTemplateById, U as getTemplatesByCategory } from '../index-P1KJwTOK.js';
|
|
2
|
+
export { A as AcmeDnsProviderConfigResult, c as CloudflareDnsProviderConfig, C as CloudflareDnsProviderConfigSchema, D as DigitaloceanDnsProviderConfig, a as DigitaloceanDnsProviderConfigSchema, d as GodaddyDnsProviderConfig, G as GodaddyDnsProviderConfigSchema, K as KNOWN_ACME_DNS_PROVIDERS, b as KnownAcmeDnsProvider, e as PorkbunDnsProviderConfig, P as PorkbunDnsProviderConfigSchema, f as buildAcmeDnsProviderConfig, g as buildCloudflareDnsConfig, h as buildDigitaloceanDnsConfig, i as buildGodaddyDnsConfig, j as buildPorkbunDnsConfig, k as buildRoute53DnsConfig, l as caddyDns } from '../index-CwQ-g5nn.js';
|
|
3
|
+
export { c as AuthenticationPortal, d as AuthorizationPolicy, I as IdentityStore, L as LdapIdentityStore, t as LocalIdentityStore, O as OAuth2IdentityProvider, x as OidcIdentityProvider, S as SecurityApp, N as SecurityAuthenticatorHandler, Q as SecurityAuthorizationHandler, T as SecurityAuthorizerProvider, U as SecurityConfig, V as SecurityHandler } from '../types-CccPerBC.js';
|
|
4
4
|
import 'zod';
|
|
@@ -1038,4 +1038,4 @@ interface UpstreamStatus {
|
|
|
1038
1038
|
healthy: boolean;
|
|
1039
1039
|
}
|
|
1040
1040
|
|
|
1041
|
-
export type {
|
|
1041
|
+
export type { TlsConnectionPolicy as $, AddDomainWithAutoTlsOptions as A, BasicAuthOptions as B, CaddyClientOptions as C, DeleteDomainOptions as D, EncodeHandler as E, FileServerHandler as F, GenericHandler as G, HeadersHandler as H, IdentityStore as I, ReverseProxyHandler as J, RewriteHandler as K, LdapIdentityStore as L, MapHandler as M, SecurityAuthenticatorHandler as N, OAuth2IdentityProvider as O, PathRouteOptions as P, SecurityAuthorizationHandler as Q, RedirectStatusCode as R, SecurityApp as S, SecurityAuthorizerProvider as T, SecurityConfig as U, SecurityHandler as V, SecurityHeaders as W, ServiceRouteOptions as X, StaticResponseHandler as Y, SubrouteHandler as Z, TemplatesHandler as _, AddDomainWithTlsOptions as a, TracingHandler as a0, UpdateDomainOptions as a1, UpstreamStatus as a2, VarsHandler as a3, AuthenticationHandler as b, AuthenticationPortal as c, AuthorizationPolicy as d, CaddyRoute as e, CaddyRouteHandler as f, CaddyRouteMatcher as g, CopyResponseHandler as h, CopyResponseHeadersHandler as i, DialAddress as j, Domain as k, DomainConfig as l, ErrorHandler as m, HealthCheckRouteOptions as n, HostRouteOptions as o, HttpMethod as p, InterceptHandler as q, InvokeHandler as r, LoadBalancerRouteOptions as s, LocalIdentityStore as t, LogAppendHandler as u, MitmwebOptions as v, MitmwebStatus as w, OidcIdentityProvider as x, PushHandler as y, RequestBodyHandler as z };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viaalink/caddy-api-client",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "TypeScript client for Caddy Admin API with MITMproxy integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"bugs": {
|
|
126
126
|
"url": "https://github.com/viaalink/asd-caddy-api-client/issues"
|
|
127
127
|
},
|
|
128
|
-
"homepage": "https://
|
|
128
|
+
"homepage": "https://viaalink.com",
|
|
129
129
|
"documentation": "https://viaalink.github.io/asd-caddy-api-client",
|
|
130
130
|
"publishConfig": {
|
|
131
131
|
"access": "public",
|