@viaalink/caddy-api-client 0.10.1 → 0.10.2
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 +15 -0
- package/dist/caddy/index.d.ts +3 -3
- package/dist/caddy/index.js +3 -3
- package/dist/{client-ZQl_qNE7.d.ts → client--uI2vvWr.d.ts} +101 -11
- package/dist/generated/extension-assets.d.ts +4 -4
- package/dist/generated/extension-assets.js +132 -37
- package/dist/{index-BPmcxCVk.d.ts → index-Bgl6uVxd.d.ts} +2 -2
- package/dist/{index-P1KJwTOK.d.ts → index-DNBQR_yL.d.ts} +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/mitm/index.d.ts +3 -3
- package/dist/mitm/index.js +2 -2
- package/dist/plugins/caddy-security/index.d.ts +2 -2
- package/dist/plugins/index.d.ts +2 -2
- package/dist/{types-CccPerBC.d.ts → types-WSyYaJZ9.d.ts} +1 -1
- package/package.json +1 -1
package/dist/mitm/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { w as MitmwebStatus, v as MitmwebOptions } from '../types-
|
|
2
|
-
import { e as CaddyClient } from '../client
|
|
3
|
-
export { N as MitmwebOptionsSchema } from '../client
|
|
1
|
+
import { w as MitmwebStatus, v as MitmwebOptions } from '../types-WSyYaJZ9.js';
|
|
2
|
+
import { e as CaddyClient } from '../client--uI2vvWr.js';
|
|
3
|
+
export { N as MitmwebOptionsSchema } from '../client--uI2vvWr.js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '../caddy-http-jhg7B7CZ.js';
|
|
6
6
|
|
package/dist/mitm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {spawn}from'child_process';import {writeFileSync,existsSync,unlinkSync,readFileSync}from'fs';import {join}from'path';import {z as z$1}from'zod';var j=class l extends Error{constructor(s,c){super(s);this.context=c;this.name="CaddyApiClientError",Object.setPrototypeOf(this,l.prototype);}};var I=class l extends j{constructor(i="MITMproxy is not installed"){super(i),this.name="MitmproxyNotInstalledError",Object.setPrototypeOf(this,l.prototype);}},A=class l extends j{constructor(s,c){super(s,{exitCode:c});this.exitCode=c;this.name="MitmproxyStartError",Object.setPrototypeOf(this,l.prototype);}};var Ke=z$1.object({identifiers:z$1.array(z$1.string()).optional(),issuers:z$1.array(z$1.unknown()).optional()}),ae=z$1.union([z$1.number(),z$1.string()]),Qe=z$1.object({paths:z$1.array(z$1.string()).optional(),methods:z$1.array(z$1.string()).optional()});z$1.any();var Ye=z$1.any();z$1.any();z$1.object({error:z$1.string()});var Je=z$1.record(z$1.string(),z$1.unknown());z$1.any();z$1.any();z$1.object({id:z$1.string(),source:z$1.string(),specversion:z$1.string(),type:z$1.string(),time:z$1.string(),datacontenttype:z$1.string().optional(),data:z$1.unknown().optional()});z$1.string();z$1.object({Context:z$1.unknown()});z$1.any();z$1.object({Network:z$1.string(),Host:z$1.string(),StartPort:z$1.number(),EndPort:z$1.number()});z$1.any();z$1.any();z$1.any();z$1.unknown();var et=z$1.object({interval:z$1.union([z$1.number(),z$1.string()]).optional(),first:z$1.number().optional(),thereafter:z$1.number().optional()}),ie=z$1.object({writer:z$1.unknown().optional(),encoder:z$1.unknown().optional(),core:z$1.unknown().optional(),level:z$1.string().optional(),sampling:et.optional(),with_caller:z$1.boolean().optional(),with_caller_skip:z$1.number().optional(),with_stacktrace:z$1.string().optional()}),tt=z$1.object({BaseLog:ie,include:z$1.array(z$1.string()).optional(),exclude:z$1.array(z$1.string()).optional()});z$1.object({});z$1.object({});z$1.object({});z$1.any();z$1.any();var ot=z$1.string();z$1.any();z$1.any();z$1.any();z$1.any();z$1.object({});z$1.any();z$1.any();z$1.any();z$1.object({RWMutex:z$1.unknown()});z$1.any();z$1.any();var rt=z$1.object({persist:z$1.boolean().optional(),load:z$1.unknown().optional(),load_delay:ae.optional()}),nt=z$1.object({public_keys:z$1.array(z$1.string()).optional(),permissions:z$1.array(Qe).optional()});z$1.object({Pattern:z$1.string(),Handler:Ye});var at=z$1.object({BaseLog:ie});z$1.object({ID:ot,New:z$1.any()});var it=z$1.object({listen:z$1.string().optional(),access_control:z$1.array(z$1.union([nt,z$1.undefined()])).optional()}),se=z$1.object({disabled:z$1.boolean().optional(),listen:z$1.string().optional(),enforce_origin:z$1.boolean().optional(),origins:z$1.array(z$1.string()).optional(),config:rt.optional(),identity:Ke.optional(),remote:it.optional()}),ce=z$1.object({sink:at.optional(),logs:z$1.record(z$1.string(),z$1.union([tt,z$1.undefined()])).optional()});z$1.object({admin:se.optional(),logging:ce.optional(),storage:z$1.unknown().optional(),apps:Je.optional()});var pe=z$1.object({per_host:z$1.boolean().optional(),observe_catchall_hosts:z$1.boolean().optional(),otlp:z$1.boolean().optional()}),le=z$1.object({disable:z$1.boolean().optional(),disable_redirects:z$1.boolean().optional(),disable_certificates:z$1.boolean().optional(),skip:z$1.array(z$1.string()).optional(),skip_certificates:z$1.array(z$1.string()).optional(),ignore_loaded_certificates:z$1.boolean().optional()});z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();var ct=z$1.object({status_code:z$1.array(z$1.number()).optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional()}),L=z$1.string();z$1.object({expr:z$1.string().optional(),name:z$1.string().optional()});z$1.any();z$1.any();z$1.any();z$1.object({max_header_bytes:z$1.number().optional()});var E=z$1.object({name:z$1.string().optional()}),$=z$1.object({ranges:z$1.array(z$1.string()).optional()}),D=z$1.object({ranges:z$1.array(z$1.string()).optional()});z$1.any();z$1.object({ranges:z$1.array(z$1.string()).optional()});var lt=z$1.array(z$1.string());z$1.object({});z$1.object({Request:z$1.unknown().optional(),ShouldLogCredentials:z$1.boolean()});z$1.any();z$1.any();z$1.unknown();z$1.array(z$1.string());z$1.array(z$1.string());var q=z$1.object({name:z$1.string().optional(),pattern:z$1.string()});z$1.array(z$1.string());z$1.record(z$1.string(),z$1.array(z$1.string()));z$1.record(z$1.string(),z$1.array(z$1.string()));var B=z$1.record(z$1.string(),z$1.union([q,z$1.undefined()])),O=z$1.string(),F=z$1.object({handshake_complete:z$1.boolean().optional()});z$1.object({});z$1.object({ResponseWriter:z$1.unknown()});z$1.unknown();z$1.any();var bt=z$1.array(z$1.any());z$1.array(bt);var de=z$1.object({default_logger_name:z$1.string().optional(),logger_names:z$1.record(z$1.string(),lt).optional(),skip_hosts:z$1.array(z$1.string()).optional(),skip_unmapped_hosts:z$1.boolean().optional(),should_log_credentials:z$1.boolean().optional(),trace:z$1.boolean().optional()}),W=z$1.object({error:z$1.string().optional(),status_code:L.optional()});z$1.object({status_code:L.optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),body:z$1.string().optional(),close:z$1.boolean().optional(),abort:z$1.boolean().optional()});z$1.record(z$1.string(),z$1.any());z$1.record(z$1.string(),z$1.array(z$1.string()));z$1.record(z$1.string(),z$1.union([q,z$1.undefined()]));var H=z$1.any(),xt=z$1.any(),St=z$1.any();z$1.object({MatchRegexp:q});var Ht=z$1.array(xt),M=z$1.object({group:z$1.string().optional(),match:Ht.optional(),handle:z$1.array(z$1.unknown()).optional(),terminal:z$1.boolean().optional()}),P=z$1.array(M),me=z$1.object({routes:P.optional()});z$1.object({routes:P.optional(),errors:me.optional()});var N=z$1.object({listen:z$1.array(z$1.string()).optional(),listener_wrappers:z$1.array(z$1.unknown()).optional(),packet_conn_wrappers:z$1.array(z$1.unknown()).optional(),read_timeout:H.optional(),read_header_timeout:H.optional(),write_timeout:H.optional(),idle_timeout:H.optional(),keepalive_interval:H.optional(),keepalive_idle:H.optional(),keepalive_count:z$1.number().optional(),max_header_bytes:z$1.number().optional(),enable_full_duplex:z$1.boolean().optional(),routes:P.optional(),errors:me.optional(),named_routes:z$1.record(z$1.string(),z$1.union([M,z$1.undefined()])).optional(),tls_connection_policies:St.optional(),automatic_https:le.optional(),strict_sni_host:z$1.boolean().optional(),trusted_proxies:z$1.unknown().optional(),client_ip_headers:z$1.array(z$1.string()).optional(),trusted_proxies_strict:z$1.number().optional(),trusted_proxies_unix:z$1.boolean().optional(),logs:de.optional(),protocols:z$1.array(z$1.string()).optional(),listen_protocols:z$1.array(z$1.array(z$1.string())).optional(),allow_0rtt:z$1.boolean().optional(),metrics:pe.optional()});z$1.object({match:ct.optional(),status_code:L.optional(),routes:P.optional()});z$1.object({http_port:z$1.number().optional(),https_port:z$1.number().optional(),grace_period:H.optional(),shutdown_delay:H.optional(),servers:z$1.record(z$1.string(),z$1.union([N,z$1.undefined()])).optional(),metrics:pe.optional()});var he=z$1.object({smallest:z$1.boolean().optional(),root_common_name:z$1.array(z$1.string()).optional(),any_common_name:z$1.array(z$1.string()).optional()}),ue=z$1.object({subjects:z$1.array(z$1.string()).optional(),issuers:z$1.array(z$1.unknown()).optional(),get_certificate:z$1.array(z$1.unknown()).optional(),must_staple:z$1.boolean().optional(),renewal_window_ratio:z$1.number().optional(),key_type:z$1.string().optional(),storage:z$1.unknown().optional(),on_demand:z$1.boolean().optional(),reuse_private_keys:z$1.boolean().optional(),disable_ocsp_stapling:z$1.boolean().optional(),ocsp_overrides:z$1.record(z$1.string(),z$1.string()).optional()}),Rt=z$1.object({ask:z$1.string().optional(),permission:z$1.unknown().optional()}),ge=z$1.object({disabled:z$1.boolean().optional(),alternate_port:z$1.number().optional()}),ye=z$1.object({disabled:z$1.boolean().optional(),alternate_port:z$1.number().optional()});z$1.any();z$1.any();z$1.any();z$1.object({trusted_ca_certs:z$1.array(z$1.string()).optional()});z$1.object({pem_files:z$1.array(z$1.string()).optional()});z$1.object({authority:z$1.array(z$1.string()).optional()});z$1.object({authority:z$1.array(z$1.string()).optional()});z$1.object({storage:z$1.unknown().optional(),pem_keys:z$1.array(z$1.string()).optional()});z$1.object({});z$1.object({sources:z$1.array(z$1.unknown()).optional()});z$1.object({});z$1.object({url:z$1.string().optional()});var jt=z$1.number(),be=z$1.object({serial_number:z$1.array(z$1.string()).optional(),subject_organization:z$1.array(z$1.string()).optional(),public_key_algorithm:jt.optional(),any_tag:z$1.array(z$1.string()).optional(),all_tags:z$1.array(z$1.string()).optional()}),fe=z$1.object({ca:z$1.unknown().optional(),trusted_ca_certs:z$1.array(z$1.string()).optional(),trusted_ca_certs_pem_files:z$1.array(z$1.string()).optional(),trusted_leaf_certs:z$1.array(z$1.string()).optional(),verifiers:z$1.array(z$1.unknown()).optional(),mode:z$1.string().optional()});z$1.any();z$1.object({leaf_certs_loaders:z$1.array(z$1.unknown()).optional()});z$1.any();z$1.any();z$1.any();var Pt=z$1.object({public_name:z$1.string()});z$1.unknown().and(z$1.unknown());z$1.object({provider:z$1.unknown().optional()});z$1.any();var xe=z$1.object({certificate:z$1.string(),key:z$1.string(),format:z$1.string().optional(),tags:z$1.array(z$1.string()).optional()});z$1.array(z$1.string());z$1.object({files:z$1.array(z$1.string()).optional()});z$1.object({folders:z$1.array(z$1.string()).optional()});z$1.object({certificates:z$1.array(z$1.string()).optional()});z$1.object({certificates:z$1.array(z$1.string()).optional(),storage:z$1.unknown().optional()});z$1.array(z$1.string());var It=z$1.object({name:z$1.string().optional(),pattern:z$1.string()});z$1.object({MatchRegexp:It});z$1.object({ranges:z$1.array(z$1.string()).optional(),not_ranges:z$1.array(z$1.string()).optional()});z$1.object({ranges:z$1.array(z$1.string()).optional()});z$1.any();z$1.object({endpoint:z$1.string()});var Ot=z$1.object({certificate:z$1.string(),key:z$1.string(),tags:z$1.array(z$1.string()).optional()});z$1.any();z$1.object({pairs:z$1.array(xe).optional()});var Se=z$1.object({capacity:z$1.number().optional()});z$1.any();var zt=z$1.lazy(()=>z$1.object({Certificate:zt,Tags:z$1.array(z$1.string())}));z$1.array(z$1.string());var f=z$1.any(),U=z$1.any(),_e=z$1.object({policies:z$1.array(z$1.union([ue,z$1.undefined()])).optional(),on_demand:Rt.optional(),ocsp_interval:f.optional(),renew_interval:f.optional(),storage_clean_interval:f.optional()}),Z=z$1.object({provider:z$1.unknown().optional(),ttl:f.optional(),propagation_delay:f.optional(),propagation_timeout:f.optional(),resolvers:z$1.array(z$1.string()).optional(),override_domain:z$1.string().optional()}),Lt=z$1.object({ca:z$1.unknown().optional(),insecure_skip_verify:z$1.boolean().optional(),handshake_timeout:f.optional(),server_name:z$1.string().optional(),renegotiation:z$1.string().optional()});z$1.object({endpoints:z$1.array(z$1.string()).optional(),tls:Lt.optional()});var He=z$1.object({match:U.optional(),certificate_selection:be.optional(),cipher_suites:z$1.array(z$1.string()).optional(),curves:z$1.array(z$1.string()).optional(),alpn:z$1.array(z$1.string()).optional(),protocol_min:z$1.string().optional(),protocol_max:z$1.string().optional(),drop:z$1.boolean().optional(),client_authentication:fe.optional(),default_sni:z$1.string().optional(),fallback_sni:z$1.string().optional(),insecure_secrets_log:z$1.string().optional(),handshake_context:z$1.unknown().optional()}),Et=z$1.object({configs:z$1.array(z$1.string()).optional(),domains:z$1.array(z$1.string()).optional(),publishers:U.optional()});z$1.array(xe);z$1.object({ca:z$1.string().optional(),lifetime:f.optional(),sign_with_root:z$1.boolean().optional()});z$1.array(Ot);var ve=z$1.object({key_source:z$1.unknown().optional(),rotation_interval:f.optional(),max_keys:z$1.number().optional(),disable_rotation:z$1.boolean().optional(),disabled:z$1.boolean().optional()}),Dt=z$1.object({configs:z$1.array(Pt).optional(),publication:z$1.array(z$1.union([Et,z$1.undefined()])).optional()});z$1.object({api_key:z$1.string().optional(),validity_days:z$1.number().optional(),listen_host:z$1.string().optional(),alternate_http_port:z$1.number().optional(),cname_validation:Z.optional()});var Bt=z$1.object({http:ge.optional(),"tls-alpn":ye.optional(),dns:Z.optional(),bind_host:z$1.string().optional(),distributed:z$1.boolean().optional()});z$1.array(z$1.union([He,z$1.undefined()]));z$1.object({certificates:U.optional(),automation:_e.optional(),session_tickets:ve.optional(),cache:Se.optional(),disable_ocsp_stapling:z$1.boolean().optional(),disable_storage_check:z$1.boolean().optional(),disable_storage_clean:z$1.boolean().optional(),encrypted_client_hello:Dt.optional(),dns:z$1.unknown().optional(),resolvers:z$1.array(z$1.string()).optional()});z$1.object({ca:z$1.string().optional(),test_ca:z$1.string().optional(),email:z$1.string().optional(),profile:z$1.string().optional(),account_key:z$1.string().optional(),external_account:z$1.object({kid:z$1.string().optional(),hmacEncoded:z$1.string().optional()}).optional(),acme_timeout:f.optional(),challenges:Bt.optional(),trusted_roots_pem_files:z$1.array(z$1.string()).optional(),preferred_chains:he.optional(),certificate_lifetime:f.optional(),network_proxy:z$1.unknown().optional()});var Nt=z$1.object({template_file:z$1.string().optional(),reveal_symlinks:z$1.boolean().optional(),sort:z$1.array(z$1.string()).optional(),file_limit:z$1.number().optional()}),we=z$1.object({fs:z$1.string().optional(),root:z$1.string().optional(),try_files:z$1.array(z$1.string()).optional(),try_policy:z$1.string().optional(),split_path:z$1.array(z$1.string()).optional()}),Ut=z$1.any(),Zt=z$1.any(),Re=z$1.object({fs:z$1.string().optional(),root:z$1.string().optional(),hide:z$1.array(z$1.string()).optional(),index_names:z$1.array(z$1.string()).optional(),browse:Nt.optional(),canonical_uris:z$1.boolean().optional(),status_code:Ut.optional(),pass_thru:z$1.boolean().optional(),precompressed:Zt.optional(),precompressed_order:z$1.array(z$1.string()).optional(),etag_file_extensions:z$1.array(z$1.string()).optional()});var Xt=z$1.object({find:z$1.string().optional(),replace:z$1.string().optional(),limit:z$1.number().optional()}),Vt=z$1.object({find:z$1.string().optional(),replace:z$1.string().optional()}),X=z$1.object({key:z$1.string(),val:z$1.string()}),Gt=z$1.object({key:z$1.string().optional(),search:z$1.string().optional(),search_regexp:z$1.string().optional(),replace:z$1.string().optional()}),V=z$1.object({delete:z$1.array(z$1.string()).optional(),set:z$1.array(X).optional(),add:z$1.array(X).optional(),replace:z$1.array(Gt).optional(),rename:z$1.array(X).optional()});z$1.object({method:z$1.string().optional(),uri:z$1.string().optional(),strip_path_prefix:z$1.string().optional(),strip_path_suffix:z$1.string().optional(),uri_substring:z$1.array(Xt).optional(),path_regexp:z$1.array(Vt).optional(),query:V.optional()});z$1.any();var Kt=z$1.object({Header:z$1.record(z$1.string(),z$1.array(z$1.string()))}),Qt=z$1.any(),je=z$1.object({file_root:z$1.string().optional(),mime_types:z$1.array(z$1.string()).optional(),delimiters:z$1.array(z$1.string()).optional(),match:Qt.optional()});z$1.object({Root:z$1.unknown(),Req:z$1.unknown().optional(),Args:z$1.array(z$1.any()),RespHeader:Kt,CustomFuncs:z$1.array(z$1.record(z$1.string(),z$1.unknown()))});var Yt=z$1.object({input:z$1.string().optional(),input_regexp:z$1.string().optional(),outputs:z$1.array(z$1.any()).optional()}),Pe=z$1.object({source:z$1.string().optional(),destinations:z$1.array(z$1.string()).optional(),mappings:z$1.array(Yt).optional(),defaults:z$1.array(z$1.string()).optional()});var Jt=z$1.object({method:z$1.string().optional(),target:z$1.string().optional()}),eo=z$1.any(),to=z$1.object({HeaderOps:eo}),ke=z$1.object({resources:z$1.array(Jt).optional(),headers:to.optional()});var Ce=z$1.object({max_size:z$1.number().optional(),read_timeout:z$1.union([z$1.number(),z$1.string()]).optional(),write_timeout:z$1.union([z$1.number(),z$1.string()]).optional(),set:z$1.string().optional()});var oo=z$1.any(),Ie=z$1.object({handle_response:z$1.array(oo).optional()});var Ae=z$1.object({span:z$1.string(),span_attributes:z$1.record(z$1.string(),z$1.string()).optional()});var Oe=z$1.object({key:z$1.string().optional(),value:z$1.string().optional(),early:z$1.boolean().optional()});var Me=z$1.object({include:z$1.array(z$1.string()).optional(),exclude:z$1.array(z$1.string()).optional()});z$1.any();var Te=z$1.object({dial:z$1.string().optional(),max_requests:z$1.number().optional()});z$1.object({});z$1.object({Upstream:Te.optional(),Network:z$1.string(),Address:z$1.string(),Host:z$1.string(),Port:z$1.string()});z$1.object({AddrPort:z$1.string()});var K=z$1.object({addresses:z$1.array(z$1.string()).optional()}),ro=z$1.array(z$1.union([Te,z$1.undefined()]));z$1.any();z$1.any();z$1.object({});z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();z$1.object({});z$1.object({weights:z$1.array(z$1.number()).optional()});z$1.object({choose:z$1.number().optional()});z$1.object({});z$1.object({});z$1.object({});z$1.object({});z$1.object({});z$1.object({});z$1.object({key:z$1.string().optional(),fallback:z$1.unknown().optional()});z$1.object({field:z$1.string().optional(),fallback:z$1.unknown().optional()});var no=z$1.object({ipv4:z$1.boolean().optional(),ipv6:z$1.boolean().optional()});z$1.object({sources:z$1.array(z$1.unknown()).optional()});var ao=z$1.any(),h=z$1.any(),io=z$1.any(),so=z$1.any(),co=z$1.any(),po=z$1.any(),ze=z$1.object({status_code:ao.optional()}),lo=z$1.object({path:z$1.string().optional(),uri:z$1.string().optional(),upstream:z$1.string().optional(),port:z$1.number().optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),method:z$1.string().optional(),body:z$1.string().optional(),follow_redirects:z$1.boolean().optional(),interval:h.optional(),timeout:h.optional(),passes:z$1.number().optional(),fails:z$1.number().optional(),max_size:z$1.number().optional(),expect_status:z$1.number().optional(),expect_body:z$1.string().optional()}),mo=z$1.object({fail_duration:h.optional(),max_fails:z$1.number().optional(),unhealthy_request_count:z$1.number().optional(),unhealthy_status:z$1.array(z$1.number()).optional(),unhealthy_latency:h.optional()}),ho=z$1.object({ca:z$1.unknown().optional(),root_ca_pool:z$1.array(z$1.string()).optional(),root_ca_pem_files:z$1.array(z$1.string()).optional(),client_certificate_file:z$1.string().optional(),client_certificate_key_file:z$1.string().optional(),client_certificate_automate:z$1.string().optional(),insecure_skip_verify:z$1.boolean().optional(),handshake_timeout:h.optional(),server_name:z$1.string().optional(),renegotiation:z$1.string().optional(),except_ports:z$1.array(z$1.string()).optional(),curves:z$1.array(z$1.string()).optional()}),uo=z$1.object({enabled:z$1.boolean().optional(),probe_interval:h.optional(),max_idle_conns:z$1.number().optional(),max_idle_conns_per_host:z$1.number().optional(),idle_timeout:h.optional()}),go=z$1.object({selection_policy:z$1.unknown().optional(),retries:z$1.number().optional(),try_duration:h.optional(),try_interval:h.optional(),retry_match:po.optional()}),yo=z$1.object({active:lo.optional(),passive:mo.optional()});z$1.object({name:z$1.string().optional(),secret:z$1.string().optional(),max_age:h.optional(),fallback:z$1.unknown().optional()});z$1.object({service:z$1.string().optional(),proto:z$1.string().optional(),name:z$1.string().optional(),refresh:h.optional(),grace_period:h.optional(),resolver:K.optional(),dial_timeout:h.optional(),dial_fallback_delay:h.optional(),dial_network:z$1.string().optional()});z$1.object({name:z$1.string().optional(),port:z$1.string().optional(),refresh:h.optional(),resolver:K.optional(),dial_timeout:h.optional(),dial_fallback_delay:h.optional(),versions:no.optional()});z$1.object({resolver:K.optional(),tls:ho.optional(),keep_alive:uo.optional(),compression:z$1.boolean().optional(),max_conns_per_host:z$1.number().optional(),proxy_protocol:z$1.string().optional(),forward_proxy_url:z$1.string().optional(),dial_timeout:h.optional(),dial_fallback_delay:h.optional(),response_header_timeout:h.optional(),expect_continue_timeout:h.optional(),max_response_header_size:z$1.number().optional(),write_buffer_size:z$1.number().optional(),read_buffer_size:z$1.number().optional(),read_timeout:h.optional(),write_timeout:h.optional(),versions:z$1.array(z$1.string()).optional(),local_address:z$1.string().optional(),network_proxy:z$1.unknown().optional()});z$1.object({transport:z$1.unknown().optional(),circuit_breaker:z$1.unknown().optional(),load_balancing:go.optional(),health_checks:yo.optional(),upstreams:ro.optional(),dynamic_upstreams:z$1.unknown().optional(),flush_interval:h.optional(),trusted_proxies:z$1.array(z$1.string()).optional(),headers:io.optional(),request_buffers:z$1.number().optional(),response_buffers:z$1.number().optional(),stream_timeout:h.optional(),stream_buffer_size:z$1.number().optional(),stream_close_delay:h.optional(),rewrite:so.optional(),handle_response:z$1.array(co).optional(),verbose_logs:z$1.boolean().optional()});z$1.any();z$1.object({route_matcher:z$1.string().optional(),portal_name:z$1.string().optional()});z$1.object({route_matcher:z$1.string().optional(),gatekeeper_name:z$1.string().optional()});var xo=z$1.any();z$1.object({config:xo.optional(),secrets_managers:z$1.array(z$1.unknown()).optional()});var Q=z$1.object({handler:z$1.literal("authenticator"),portal_name:z$1.string().optional(),route_matcher:z$1.string().optional()}),_o=z$1.object({gatekeeper_name:z$1.string().optional(),route_matcher:z$1.string().optional()}),Ho=z$1.object({handler:z$1.literal("authentication"),providers:z$1.object({authorizer:_o})});z$1.discriminatedUnion("handler",[Q,Ho]);var vo=z$1.object({realm:z$1.string().optional(),path:z$1.string()}),wo=z$1.object({name:z$1.string(),kind:z$1.literal("local"),params:vo}),Ro=z$1.object({address:z$1.string(),port:z$1.number().int().positive().max(65535).optional()}),jo=z$1.object({dn:z$1.string(),roles:z$1.array(z$1.string()).optional()}),Po=z$1.object({realm:z$1.string().optional(),servers:z$1.array(Ro).optional(),bind_username:z$1.string().optional(),bind_password:z$1.string().optional(),search_base_dn:z$1.string().optional(),search_user_filter:z$1.string().optional(),groups:z$1.array(jo).optional()}),ko=z$1.object({name:z$1.string(),kind:z$1.literal("ldap"),params:Po.passthrough()}),Le=z$1.object({driver:z$1.string().optional(),realm:z$1.string().optional(),client_id:z$1.string().optional(),client_secret:z$1.string().optional(),scopes:z$1.array(z$1.string()).optional(),authorization_url:z$1.string().optional(),token_url:z$1.string().optional()});z$1.object({name:z$1.string(),kind:z$1.literal("oauth"),params:Le});var Ee=z$1.object({driver:z$1.string().optional(),realm:z$1.string().optional(),client_id:z$1.string().optional(),client_secret:z$1.string().optional(),metadata_url:z$1.string().optional(),scopes:z$1.array(z$1.string()).optional()});z$1.object({name:z$1.string(),kind:z$1.literal("oauth"),params:Ee});var Co=z$1.discriminatedUnion("kind",[wo,ko]),Io=z$1.object({name:z$1.string(),kind:z$1.literal("oauth"),params:z$1.union([Le.passthrough(),Ee.passthrough()])}),Ao=z$1.object({theme:z$1.string().optional(),logo_url:z$1.string().optional(),custom_css:z$1.string().optional()}),Oo=z$1.object({lifetime:z$1.number().optional(),insecure:z$1.boolean().optional(),same_site:z$1.string().optional()}),Mo=z$1.object({domains:z$1.record(z$1.string(),Oo).optional(),path:z$1.string().optional(),lifetime:z$1.number().optional(),insecure:z$1.boolean().optional(),same_site:z$1.string().optional()}),To=z$1.object({name:z$1.string(),ui:Ao.optional(),cookie_config:Mo.optional(),identity_stores:z$1.array(z$1.string()).optional(),identity_providers:z$1.array(z$1.string()).optional(),user_transformer_configs:z$1.array(z$1.record(z$1.string(),z$1.unknown())).optional()}),zo=z$1.object({comment:z$1.string().optional(),conditions:z$1.array(z$1.string()).optional(),action:z$1.enum(["allow","deny"]).optional()}),Lo=z$1.object({token_name:z$1.string().optional(),source:z$1.string().optional()}),Eo=z$1.object({match_type:z$1.string(),uri:z$1.string().optional()}),$o=z$1.object({name:z$1.string(),access_list_rules:z$1.array(zo).optional(),crypto_key_configs:z$1.array(Lo).optional(),bypass_configs:z$1.array(Eo).optional()}),Do=z$1.object({generic:z$1.record(z$1.string(),z$1.unknown()).optional()}),qo=z$1.object({authentication_portals:z$1.array(To).optional(),authorization_policies:z$1.array($o).optional(),credentials:Do.optional(),identity_stores:z$1.array(Co).optional(),identity_providers:z$1.array(Io).optional()}),Bo=z$1.object({driver:z$1.string()}).passthrough();z$1.object({config:qo.optional(),secrets_managers:z$1.array(Bo).optional()});var Y=z$1.string().min(1,"Domain cannot be empty").regex(/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,"Invalid domain format"),z=z$1.string().regex(/^.+:\d+$/,"Dial address must be in host:port format"),De=z$1.string(),J=z$1.enum(["DENY","SAMEORIGIN"]),qe=z$1.enum(["none","www_to_domain","domain_to_www"]),Be=z$1.union([z$1.literal(301),z$1.literal(302),z$1.literal(307),z$1.literal(308)]);z$1.enum(["letsencrypt","zerossl","acme"]);var Wo=z$1.record(z$1.string(),z$1.array(z$1.string())),No=z$1.record(z$1.string(),z$1.array(z$1.string())),Uo=z$1.object({host:z$1.array(z$1.string()).optional(),path:z$1.array(z$1.string()).optional(),path_regexp:z$1.object({name:z$1.string().optional(),pattern:z$1.string()}).optional(),method:z$1.array(De).optional(),header:No.optional(),header_regexp:B.optional(),query:Wo.optional(),client_ip:D.optional(),remote_ip:$.optional(),protocol:O.optional(),tls:F.optional(),file:we.optional(),not:z$1.array(z$1.record(z$1.string(),z$1.unknown())).optional(),expression:z$1.string().optional()}),Fe=z$1.object({handler:z$1.string()}).passthrough(),Zo=z$1.object({"@id":z$1.string().optional(),match:z$1.array(Uo).optional(),handle:z$1.array(Fe).min(1,"Route must have at least one handler"),terminal:z$1.boolean().optional(),priority:z$1.number().int().optional()});z$1.object({adminUrl:z$1.string().url().optional().default("http://127.0.0.1:2019"),timeout:z$1.number().int().positive().optional().default(5e3)});var Xo=z$1.enum(["caddyfile","json","yaml","nginx","apache"]);z$1.object({config:z$1.string().min(1,"Config cannot be empty"),adapter:Xo.optional().default("caddyfile")});var ee=z$1.object({enableHsts:z$1.boolean().optional().default(false),hstsMaxAge:z$1.number().int().positive().optional().default(31536e3),frameOptions:J.optional().default("DENY"),enableCompression:z$1.boolean().optional().default(true)}),Vo=z$1.object({domain:Y,target:z$1.string().min(1,"Target cannot be empty"),targetPort:z$1.number().int().positive().max(65535,"Port must be between 1 and 65535"),enableSecurityHeaders:z$1.boolean().optional().default(true),enableHsts:z$1.boolean().optional().default(false),hstsMaxAge:z$1.number().int().positive().optional().default(31536e3),frameOptions:J.optional().default("DENY"),enableCompression:z$1.boolean().optional().default(true),redirectMode:qe.optional().default("none"),redirectStatusCode:Be.optional().default(308),adminUrl:z$1.string().url().optional()});Vo.extend({certFile:z$1.string().min(1,"Certificate file path cannot be empty"),keyFile:z$1.string().min(1,"Key file path cannot be empty")});z$1.object({domain:Y,target:z$1.string().min(1).optional(),targetPort:z$1.number().int().positive().max(65535).optional(),enableSecurityHeaders:z$1.boolean().optional(),enableHsts:z$1.boolean().optional(),hstsMaxAge:z$1.number().int().positive().optional(),frameOptions:J.optional(),enableCompression:z$1.boolean().optional(),redirectMode:qe.optional(),redirectStatusCode:Be.optional(),adminUrl:z$1.string().url().optional()});z$1.object({domain:Y,adminUrl:z$1.string().url().optional()});var te=z$1.object({enabled:z$1.boolean(),username:z$1.string().min(1).optional(),passwordHash:z$1.string().min(1).optional(),realm:z$1.string().optional(),routes:z$1.array(z$1.enum(["host","path","tunnel"])).optional()});z$1.object({host:z$1.string().optional(),path:z$1.string().optional(),pathRouteHost:z$1.string().optional().default("asd.localhost"),dial:z,serviceId:z$1.string().optional().default("unknown"),enableHostRoute:z$1.boolean().optional().default(true),enablePathRoute:z$1.boolean().optional().default(true),stripPrefix:z$1.boolean().optional().default(true),priority:z$1.number().int().optional().default(50),securityHeaders:ee.optional(),basicAuth:te.optional(),ingressTag:z$1.string().nullable().optional(),iframeOrigin:z$1.string().nullable().optional(),deleteResponseHeaders:z$1.array(z$1.string()).optional(),serviceType:z$1.string().optional(),isTunnelDomain:z$1.boolean().optional().default(false),flushInterval:z$1.number().optional(),projectId:z$1.string().nullable().optional()});z$1.object({host:z$1.string().min(1),serviceId:z$1.string().min(1),priority:z$1.number().int().optional(),ingressTag:z$1.string().nullable().optional(),dial:z$1.string().min(1).optional(),projectId:z$1.string().nullable().optional()});z$1.object({host:z$1.string().min(1),dial:z,securityHeaders:ee.optional(),basicAuth:te.optional(),priority:z$1.number().int().optional(),ingressTag:z$1.string().nullable().optional(),iframeOrigin:z$1.string().nullable().optional(),deleteResponseHeaders:z$1.array(z$1.string()).optional(),serviceId:z$1.string().optional(),serviceType:z$1.string().optional(),flushInterval:z$1.number().optional(),projectId:z$1.string().nullable().optional()});z$1.object({path:z$1.string().min(1),host:z$1.string().min(1),dial:z,stripPrefix:z$1.boolean().optional().default(true),securityHeaders:ee.optional(),basicAuth:te.optional(),priority:z$1.number().int().optional(),ingressTag:z$1.string().nullable().optional(),iframeOrigin:z$1.string().nullable().optional(),deleteResponseHeaders:z$1.array(z$1.string()).optional(),serviceId:z$1.string().optional(),serviceType:z$1.string().optional(),flushInterval:z$1.number().optional(),projectId:z$1.string().nullable().optional()});z$1.object({host:z$1.string().min(1),upstreams:z$1.array(z).min(1,"At least one upstream is required"),healthCheckPath:z$1.string().optional().default("/health"),healthCheckInterval:z$1.string().optional().default("10s"),policy:z$1.enum(["first","random","least_conn","round_robin"]).optional().default("first"),priority:z$1.number().int().optional()});var _=z$1.union([z$1.number().int(),z$1.literal("0"),z$1.string().regex(/^-?(\d+(\.\d+)?(ns|us|µs|ms|s|m|h|d))+$/,"Invalid Go duration format. Use units: ns, us, \xB5s, ms, s, m, h, d (e.g., '30s', '1h30m', '1.5d')")]),er=z$1.object({uri:z$1.string().optional(),path:z$1.string().optional(),port:z$1.number().int().positive().max(65535).optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),follow_redirects:z$1.boolean().optional(),interval:_.optional(),timeout:_.optional(),passes:z$1.number().int().positive().optional(),fails:z$1.number().int().positive().optional(),max_size:z$1.number().int().positive().optional(),expect_status:z$1.number().int().min(100).max(599).optional(),expect_body:z$1.string().optional()}),tr=z$1.object({fail_duration:_.optional(),max_fails:z$1.number().int().positive().optional(),unhealthy_request_count:z$1.number().int().positive().optional(),unhealthy_status:z$1.array(z$1.number().int().min(100).max(599)).optional(),unhealthy_latency:_.optional()}),or=z$1.object({active:er.optional(),passive:tr.optional()}),rr=z$1.object({selection_policy:z$1.object({policy:z$1.enum(["first","random","least_conn","round_robin","ip_hash","uri_hash","header","cookie"])}).passthrough().optional(),retries:z$1.number().int().nonnegative().optional(),try_duration:_.optional(),try_interval:_.optional()}),nr=z$1.object({dial:z$1.string().min(1),max_requests:z$1.number().int().positive().optional()}),ar=z$1.object({name:z$1.string().optional(),pattern:z$1.string()}),$e=z$1.object({host:z$1.array(z$1.string()).optional(),path:z$1.array(z$1.string()).optional(),path_regexp:z$1.object({name:z$1.string().optional(),pattern:z$1.string()}).optional(),method:z$1.array(De).optional(),header:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),header_regexp:z$1.record(z$1.string(),ar).optional(),query:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),client_ip:z$1.object({ranges:z$1.array(z$1.string())}).optional(),remote_ip:z$1.object({ranges:z$1.array(z$1.string())}).optional(),protocol:O.optional(),expression:z$1.string().optional(),tls:z$1.object({handshake_complete:z$1.boolean().optional()}).optional(),file:z$1.object({fs:z$1.string().optional(),root:z$1.string().optional(),try_files:z$1.array(z$1.string()).optional(),try_policy:z$1.enum(["first_exist","first_exist_fallback","smallest_size","largest_size","most_recently_modified"]).optional(),split_path:z$1.array(z$1.string()).optional()}).optional()});$e.extend({not:z$1.array(z$1.lazy(()=>$e)).optional()});var ir=z$1.object({handler:z$1.literal("reverse_proxy"),upstreams:z$1.array(nr).optional(),load_balancing:rr.optional(),health_checks:or.optional(),transport:z$1.object({protocol:z$1.string()}).passthrough().optional(),circuit_breaker:z$1.object({type:z$1.string()}).passthrough().optional(),dynamic_upstreams:z$1.object({source:z$1.string()}).passthrough().optional(),flush_interval:_.optional(),stream_timeout:_.optional(),stream_close_delay:_.optional(),trusted_proxies:z$1.array(z$1.string()).optional(),request_buffers:z$1.number().int().nonnegative().optional(),response_buffers:z$1.number().int().nonnegative().optional(),headers:z$1.object({request:z$1.object({add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional(),response:z$1.object({add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional()}).optional(),rewrite:z$1.object({uri:z$1.string().optional(),strip_path_prefix:z$1.string().optional(),strip_path_suffix:z$1.string().optional()}).passthrough().optional(),handle_response:z$1.array(z$1.object({match:z$1.object({status_code:z$1.array(z$1.number().int()).optional()}).passthrough().optional(),routes:z$1.array(z$1.any()).optional()}).passthrough()).optional(),verbose_logs:z$1.boolean().optional()}),sr=z$1.object({handler:z$1.literal("headers"),response:z$1.object({deferred:z$1.boolean().optional(),set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional(),request:z$1.object({set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional()}),We=z$1.union([z$1.number().int(),z$1.string()]).optional(),cr=z$1.object({handler:z$1.literal("static_response"),status_code:We,body:z$1.string().optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),close:z$1.boolean().optional(),abort:z$1.boolean().optional()}),pr=z$1.object({handler:z$1.literal("authentication"),providers:z$1.object({http_basic:z$1.object({accounts:z$1.array(z$1.object({username:z$1.string(),password:z$1.string()})).optional(),realm:z$1.string().optional(),hash:z$1.object({algorithm:z$1.string().optional()}).optional()}).optional()}).optional()}),lr=z$1.object({handler:z$1.literal("rewrite"),uri:z$1.string().optional(),strip_path_prefix:z$1.string().optional(),strip_path_suffix:z$1.string().optional(),uri_substring:z$1.array(z$1.object({find:z$1.string(),replace:z$1.string(),limit:z$1.number().int().optional()})).optional(),query:V.optional()}),dr=z$1.object({handler:z$1.literal("encode"),encodings:z$1.object({gzip:z$1.object({}).passthrough().optional(),zstd:z$1.object({}).passthrough().optional(),br:z$1.object({}).passthrough().optional()}).passthrough().optional(),prefer:z$1.array(z$1.string()).optional(),minimum_length:z$1.number().int().positive().optional()}),mr=Re.extend({handler:z$1.literal("file_server")}),hr=je.extend({handler:z$1.literal("templates")}),ur=Pe.extend({handler:z$1.literal("map")}),gr=ke.extend({handler:z$1.literal("push")}),yr=Ce.extend({handler:z$1.literal("request_body")}),br=z$1.object({handler:z$1.literal("vars")}).passthrough(),fr=Ie.extend({handler:z$1.literal("intercept")}),xr=E.extend({handler:z$1.literal("invoke")}),Sr=Ae.extend({handler:z$1.literal("tracing")}),_r=Oe.extend({handler:z$1.literal("log_append")}),Hr=W.extend({handler:z$1.literal("error"),status_code:We}),vr=ze.extend({handler:z$1.literal("copy_response")}),wr=Me.extend({handler:z$1.literal("copy_response_headers")}),Rr=z$1.object({handler:z$1.literal("subroute"),routes:z$1.array(z$1.lazy(()=>Zo)).optional(),errors:z$1.any().optional()}),jr=z$1.discriminatedUnion("handler",[ir,sr,cr,pr,lr,dr,mr,hr,ur,gr,yr,br,fr,xr,Sr,_r,Hr,vr,wr,Rr,Q]);z$1.union([jr,Fe]);var Pr=z$1.object({address:z$1.string(),num_requests:z$1.number(),fails:z$1.number(),healthy:z$1.boolean()});z$1.array(Pr);var oe=z$1.object({webPort:z$1.number().int().positive().max(65535).optional().default(8081),proxyPort:z$1.number().int().positive().max(65535).optional().default(8080),listenAddress:z$1.string().optional().default("127.0.0.1"),openBrowser:z$1.boolean().optional().default(true),scripts:z$1.array(z$1.string()).optional(),workingDir:z$1.string().optional()});async function Ze(){return new Promise(l=>{let i=spawn("which",["mitmweb"]);i.on("close",s=>l(s===0)),i.on("error",()=>l(false));})}async function us(){return await Ze()?new Promise(l=>{let i=spawn("mitmweb",["--version"]),s="";i.stdout.on("data",c=>{s+=c.toString();}),i.on("close",c=>{if(c===0){let p=/(\d+\.\d+\.\d+)/.exec(s);l(p?p[1]:null);}else l(null);}),i.on("error",()=>l(null));}):null}async function gs(l={}){let i=oe.parse(l);if(!await Ze())throw new I("MITMproxy is not installed. Install with: pip install mitmproxy");let s=Xe(i.workingDir);if(s.running)throw new j("MITMweb is already running",{pid:s.pid});let c=["--web-port",i.webPort.toString(),"--listen-port",i.proxyPort.toString(),"--listen-host",i.listenAddress,"--no-web-open-browser"];if(i.scripts&&i.scripts.length>0)for(let R of i.scripts)c.push("-s",R);let p=spawn("mitmweb",c,{detached:true,stdio:"ignore"}),g=i.workingDir??process.cwd(),b=join(g,"mitmweb.pid");if(writeFileSync(b,p.pid.toString(),"utf-8"),p.unref(),await Ir(i.webPort,1e4),i.openBrowser){let R=`http://${i.listenAddress}:${i.webPort}`;Ar(R);}return {pid:p.pid,webUrl:`http://${i.listenAddress}:${i.webPort}`,proxyUrl:`http://${i.listenAddress}:${i.proxyPort}`,pidFile:b}}async function ys(l){let i=Xe(l);if(!i.running||!i.pid)return;try{process.kill(i.pid,"SIGTERM"),await new Promise(p=>{let g=setInterval(()=>{try{process.kill(i.pid,0);}catch{clearInterval(g),p();}},100);setTimeout(()=>{clearInterval(g);try{process.kill(i.pid,"SIGKILL");}catch{}p();},5e3);});}catch{}let s=l??process.cwd(),c=join(s,"mitmweb.pid");existsSync(c)&&unlinkSync(c);}function Xe(l){let i=l??process.cwd(),s=join(i,"mitmweb.pid");if(!existsSync(s))return {running:false};try{let c=readFileSync(s,"utf-8").trim(),p=parseInt(c,10);if(isNaN(p))return {running:!1};try{return process.kill(p,0),{running:!0,pid:p,webUrl:"http://127.0.0.1:8081",proxyUrl:"http://127.0.0.1:8080"}}catch{return unlinkSync(s),{running:!1}}}catch{return {running:false}}}async function Ir(l,i){let s=Date.now(),c=`http://127.0.0.1:${l}`;for(;Date.now()-s<i;){try{if((await fetch(c)).ok)return}catch{}await new Promise(p=>setTimeout(p,500));}throw new A("Mitmweb failed to start within timeout")}function Ar(l){let i=process.platform,s;i==="darwin"?s="open":i==="win32"?s="start":s="xdg-open",spawn(s,[l],{detached:true,stdio:"ignore"}).unref();}async function bs(){return await new Promise(s=>{let c=spawn("which",["pipx"]);c.on("close",p=>s(p===0)),c.on("error",()=>s(false));})&&(console.log("Installing mitmproxy with pipx..."),await new Promise(c=>{let p=spawn("pipx",["install","mitmproxy"],{stdio:"inherit"});p.on("close",g=>c(g===0)),p.on("error",()=>c(false));}))||(console.log("Installing mitmproxy with pip..."),await new Promise(s=>{let c=spawn("pip",["install","--user","mitmproxy"],{stdio:"inherit"});c.on("close",p=>s(p===0)),c.on("error",()=>s(false));}))?(console.log("\u2705 MITMproxy installed successfully"),true):(console.error("\u274C Failed to install mitmproxy"),false)}function C(l,i){let s=typeof l=="string"&&l.startsWith("https://"),c=s?l.replace("https://",""):l,p=s,g={handler:"reverse_proxy",upstreams:[{dial:c}]};if(p){let b={};g.transport={protocol:"http",tls:b};}else g.transport={protocol:"http"};return g}function ne(l){return {handler:"rewrite",strip_path_prefix:l}}var Ve=class{caddy;proxies;services=new Map;constructor(i,s){if(this.caddy=i,this.proxies=s,Object.keys(s).length===0)throw new Error("At least one MITMproxy instance must be configured");if(!s.default){let c=Object.keys(s)[0];this.proxies.default=s[c];}}register(i){let s=`mitm_${i.id}`;this.services.set(i.id,{registration:i,enabled:false,activeProxy:null,routeId:s});}unregister(i){return this.services.delete(i)}getService(i){return this.services.get(i)}getProxy(i="default"){let s=this.proxies[i];if(!s)throw new Error(`Unknown proxy: ${i}. Available: ${Object.keys(this.proxies).join(", ")}`);return s}buildDirectRoute(i,s){let c=`${i.backend.host}:${i.backend.port}`;return i.host?{"@id":s,match:[{host:[i.host]}],handle:[C(c)],terminal:true}:{"@id":s,match:[{path:[`${i.pathPrefix}/*`]}],handle:[ne(i.pathPrefix),C(c)],terminal:true}}buildProxiedRoute(i,s,c){let p=`${s.host}:${s.port}`;return i.host?{"@id":c,match:[{host:[i.host]}],handle:[C(p)],terminal:true}:{"@id":c,match:[{path:[`${i.pathPrefix}/*`]}],handle:[ne(i.pathPrefix),C(p)],terminal:true}}async enable(i,s={}){let c=this.getService(i);if(!c)throw new Error(`Service not registered: ${i}`);let p=s.proxy??"default",g=this.getProxy(p),{registration:b,routeId:R}=c,Ge=this.buildProxiedRoute(b,g,R);await this.caddy.removeRouteById(b.serverId,R).catch(()=>{}),await this.caddy.addRoute(b.serverId,Ge),c.enabled=true,c.activeProxy=p;}async disable(i){let s=this.getService(i);if(!s)throw new Error(`Service not registered: ${i}`);let{registration:c,routeId:p}=s,g=this.buildDirectRoute(c,p);await this.caddy.removeRouteById(c.serverId,p).catch(()=>{}),await this.caddy.addRoute(c.serverId,g),s.enabled=false,s.activeProxy=null;}async enableAll(i={}){let s=Array.from(this.services.keys()).map(c=>this.enable(c,i));await Promise.all(s);}async disableAll(){let i=Array.from(this.services.keys()).map(s=>this.disable(s));await Promise.all(i);}isEnabled(i){return this.getService(i)?.enabled??false}getStatus(){let i={};for(let[s,c]of this.services)i[s]={enabled:c.enabled,proxy:c.activeProxy,service:c.registration};return i}getServiceStatus(i){let s=this.getService(i);if(s)return {enabled:s.enabled,proxy:s.activeProxy,service:s.registration}}getRegisteredServices(){return Array.from(this.services.keys())}getAvailableProxies(){return Object.keys(this.proxies)}getProxyConfig(i){return this.proxies[i]}};
|
|
2
|
-
export{
|
|
1
|
+
import {spawn}from'child_process';import {writeFileSync,existsSync,unlinkSync,readFileSync}from'fs';import {join}from'path';import {z as z$1}from'zod';var j=class p extends Error{constructor(s,c){super(s);this.context=c;this.name="CaddyApiClientError",Object.setPrototypeOf(this,p.prototype);}};var I=class p extends j{constructor(i="MITMproxy is not installed"){super(i),this.name="MitmproxyNotInstalledError",Object.setPrototypeOf(this,p.prototype);}},A=class p extends j{constructor(s,c){super(s,{exitCode:c});this.exitCode=c;this.name="MitmproxyStartError",Object.setPrototypeOf(this,p.prototype);}};var Qe=z$1.object({identifiers:z$1.array(z$1.string()).optional(),issuers:z$1.array(z$1.unknown()).optional()}),ie=z$1.union([z$1.number(),z$1.string()]),Ye=z$1.object({paths:z$1.array(z$1.string()).optional(),methods:z$1.array(z$1.string()).optional()});z$1.any();var Je=z$1.any();z$1.any();z$1.object({error:z$1.string()});var et=z$1.record(z$1.string(),z$1.unknown());z$1.any();z$1.any();z$1.object({id:z$1.string(),source:z$1.string(),specversion:z$1.string(),type:z$1.string(),time:z$1.string(),datacontenttype:z$1.string().optional(),data:z$1.unknown().optional()});z$1.string();z$1.object({Context:z$1.unknown()});z$1.any();z$1.object({Network:z$1.string(),Host:z$1.string(),StartPort:z$1.number(),EndPort:z$1.number()});z$1.any();z$1.any();z$1.any();z$1.unknown();var tt=z$1.object({interval:z$1.union([z$1.number(),z$1.string()]).optional(),first:z$1.number().optional(),thereafter:z$1.number().optional()}),se=z$1.object({writer:z$1.unknown().optional(),encoder:z$1.unknown().optional(),core:z$1.unknown().optional(),level:z$1.string().optional(),sampling:tt.optional(),with_caller:z$1.boolean().optional(),with_caller_skip:z$1.number().optional(),with_stacktrace:z$1.string().optional()}),ot=z$1.object({BaseLog:se,include:z$1.array(z$1.string()).optional(),exclude:z$1.array(z$1.string()).optional()});z$1.object({});z$1.object({});z$1.object({});z$1.any();z$1.any();var rt=z$1.string();z$1.any();z$1.any();z$1.any();z$1.any();z$1.object({});z$1.any();z$1.any();z$1.any();z$1.object({RWMutex:z$1.unknown()});z$1.any();z$1.any();var nt=z$1.object({persist:z$1.boolean().optional(),load:z$1.unknown().optional(),load_delay:ie.optional()}),at=z$1.object({public_keys:z$1.array(z$1.string()).optional(),permissions:z$1.array(Ye).optional()});z$1.object({Pattern:z$1.string(),Handler:Je});var it=z$1.object({BaseLog:se});z$1.object({ID:rt,New:z$1.any()});var st=z$1.object({listen:z$1.string().optional(),access_control:z$1.array(z$1.union([at,z$1.undefined()])).optional()}),ce=z$1.object({disabled:z$1.boolean().optional(),listen:z$1.string().optional(),enforce_origin:z$1.boolean().optional(),origins:z$1.array(z$1.string()).optional(),config:nt.optional(),identity:Qe.optional(),remote:st.optional()}),pe=z$1.object({sink:it.optional(),logs:z$1.record(z$1.string(),z$1.union([ot,z$1.undefined()])).optional()});z$1.object({admin:ce.optional(),logging:pe.optional(),storage:z$1.unknown().optional(),apps:et.optional()});var le=z$1.object({per_host:z$1.boolean().optional(),observe_catchall_hosts:z$1.boolean().optional(),otlp:z$1.boolean().optional()}),de=z$1.object({disable:z$1.boolean().optional(),disable_redirects:z$1.boolean().optional(),disable_certificates:z$1.boolean().optional(),skip:z$1.array(z$1.string()).optional(),skip_certificates:z$1.array(z$1.string()).optional(),ignore_loaded_certificates:z$1.boolean().optional()});z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();var pt=z$1.object({status_code:z$1.array(z$1.number()).optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional()}),L=z$1.string();z$1.object({expr:z$1.string().optional(),name:z$1.string().optional()});z$1.any();z$1.any();z$1.any();z$1.object({max_header_bytes:z$1.number().optional()});var E=z$1.object({name:z$1.string().optional()}),$=z$1.object({ranges:z$1.array(z$1.string()).optional()}),D=z$1.object({ranges:z$1.array(z$1.string()).optional()});z$1.any();z$1.object({ranges:z$1.array(z$1.string()).optional()});var dt=z$1.array(z$1.string());z$1.object({});z$1.object({Request:z$1.unknown().optional(),ShouldLogCredentials:z$1.boolean()});z$1.any();z$1.any();z$1.unknown();z$1.array(z$1.string());z$1.array(z$1.string());var q=z$1.object({name:z$1.string().optional(),pattern:z$1.string()});z$1.array(z$1.string());z$1.record(z$1.string(),z$1.array(z$1.string()));z$1.record(z$1.string(),z$1.array(z$1.string()));var B=z$1.record(z$1.string(),z$1.union([q,z$1.undefined()])),O=z$1.string(),F=z$1.object({handshake_complete:z$1.boolean().optional()});z$1.object({});z$1.object({ResponseWriter:z$1.unknown()});z$1.unknown();z$1.any();var ft=z$1.array(z$1.any());z$1.array(ft);var me=z$1.object({default_logger_name:z$1.string().optional(),logger_names:z$1.record(z$1.string(),dt).optional(),skip_hosts:z$1.array(z$1.string()).optional(),skip_unmapped_hosts:z$1.boolean().optional(),should_log_credentials:z$1.boolean().optional(),trace:z$1.boolean().optional()}),W=z$1.object({error:z$1.string().optional(),status_code:L.optional()});z$1.object({status_code:L.optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),body:z$1.string().optional(),close:z$1.boolean().optional(),abort:z$1.boolean().optional()});z$1.record(z$1.string(),z$1.any());z$1.record(z$1.string(),z$1.array(z$1.string()));z$1.record(z$1.string(),z$1.union([q,z$1.undefined()]));var H=z$1.any(),St=z$1.any(),_t=z$1.any();z$1.object({MatchRegexp:q});var vt=z$1.array(St),M=z$1.object({group:z$1.string().optional(),match:vt.optional(),handle:z$1.array(z$1.unknown()).optional(),terminal:z$1.boolean().optional()}),P=z$1.array(M),he=z$1.object({routes:P.optional()});z$1.object({routes:P.optional(),errors:he.optional()});var N=z$1.object({listen:z$1.array(z$1.string()).optional(),listener_wrappers:z$1.array(z$1.unknown()).optional(),packet_conn_wrappers:z$1.array(z$1.unknown()).optional(),read_timeout:H.optional(),read_header_timeout:H.optional(),write_timeout:H.optional(),idle_timeout:H.optional(),keepalive_interval:H.optional(),keepalive_idle:H.optional(),keepalive_count:z$1.number().optional(),max_header_bytes:z$1.number().optional(),enable_full_duplex:z$1.boolean().optional(),routes:P.optional(),errors:he.optional(),named_routes:z$1.record(z$1.string(),z$1.union([M,z$1.undefined()])).optional(),tls_connection_policies:_t.optional(),automatic_https:de.optional(),strict_sni_host:z$1.boolean().optional(),trusted_proxies:z$1.unknown().optional(),client_ip_headers:z$1.array(z$1.string()).optional(),trusted_proxies_strict:z$1.number().optional(),trusted_proxies_unix:z$1.boolean().optional(),logs:me.optional(),protocols:z$1.array(z$1.string()).optional(),listen_protocols:z$1.array(z$1.array(z$1.string())).optional(),allow_0rtt:z$1.boolean().optional(),metrics:le.optional()});z$1.object({match:pt.optional(),status_code:L.optional(),routes:P.optional()});z$1.object({http_port:z$1.number().optional(),https_port:z$1.number().optional(),grace_period:H.optional(),shutdown_delay:H.optional(),servers:z$1.record(z$1.string(),z$1.union([N,z$1.undefined()])).optional(),metrics:le.optional()});var ue=z$1.object({smallest:z$1.boolean().optional(),root_common_name:z$1.array(z$1.string()).optional(),any_common_name:z$1.array(z$1.string()).optional()}),ge=z$1.object({subjects:z$1.array(z$1.string()).optional(),issuers:z$1.array(z$1.unknown()).optional(),get_certificate:z$1.array(z$1.unknown()).optional(),must_staple:z$1.boolean().optional(),renewal_window_ratio:z$1.number().optional(),key_type:z$1.string().optional(),storage:z$1.unknown().optional(),on_demand:z$1.boolean().optional(),reuse_private_keys:z$1.boolean().optional(),disable_ocsp_stapling:z$1.boolean().optional(),ocsp_overrides:z$1.record(z$1.string(),z$1.string()).optional()}),jt=z$1.object({ask:z$1.string().optional(),permission:z$1.unknown().optional()}),ye=z$1.object({disabled:z$1.boolean().optional(),alternate_port:z$1.number().optional()}),be=z$1.object({disabled:z$1.boolean().optional(),alternate_port:z$1.number().optional()});z$1.any();z$1.any();z$1.any();z$1.object({trusted_ca_certs:z$1.array(z$1.string()).optional()});z$1.object({pem_files:z$1.array(z$1.string()).optional()});z$1.object({authority:z$1.array(z$1.string()).optional()});z$1.object({authority:z$1.array(z$1.string()).optional()});z$1.object({storage:z$1.unknown().optional(),pem_keys:z$1.array(z$1.string()).optional()});z$1.object({});z$1.object({sources:z$1.array(z$1.unknown()).optional()});z$1.object({});z$1.object({url:z$1.string().optional()});var Pt=z$1.number(),fe=z$1.object({serial_number:z$1.array(z$1.string()).optional(),subject_organization:z$1.array(z$1.string()).optional(),public_key_algorithm:Pt.optional(),any_tag:z$1.array(z$1.string()).optional(),all_tags:z$1.array(z$1.string()).optional()}),xe=z$1.object({ca:z$1.unknown().optional(),trusted_ca_certs:z$1.array(z$1.string()).optional(),trusted_ca_certs_pem_files:z$1.array(z$1.string()).optional(),trusted_leaf_certs:z$1.array(z$1.string()).optional(),verifiers:z$1.array(z$1.unknown()).optional(),mode:z$1.string().optional()});z$1.any();z$1.object({leaf_certs_loaders:z$1.array(z$1.unknown()).optional()});z$1.any();z$1.any();z$1.any();var kt=z$1.object({public_name:z$1.string()});z$1.unknown().and(z$1.unknown());z$1.object({provider:z$1.unknown().optional()});z$1.any();var Se=z$1.object({certificate:z$1.string(),key:z$1.string(),format:z$1.string().optional(),tags:z$1.array(z$1.string()).optional()});z$1.array(z$1.string());z$1.object({files:z$1.array(z$1.string()).optional()});z$1.object({folders:z$1.array(z$1.string()).optional()});z$1.object({certificates:z$1.array(z$1.string()).optional()});z$1.object({certificates:z$1.array(z$1.string()).optional(),storage:z$1.unknown().optional()});z$1.array(z$1.string());var At=z$1.object({name:z$1.string().optional(),pattern:z$1.string()});z$1.object({MatchRegexp:At});z$1.object({ranges:z$1.array(z$1.string()).optional(),not_ranges:z$1.array(z$1.string()).optional()});z$1.object({ranges:z$1.array(z$1.string()).optional()});z$1.any();z$1.object({endpoint:z$1.string()});var Mt=z$1.object({certificate:z$1.string(),key:z$1.string(),tags:z$1.array(z$1.string()).optional()});z$1.any();z$1.object({pairs:z$1.array(Se).optional()});var _e=z$1.object({capacity:z$1.number().optional()});z$1.any();var Lt=z$1.lazy(()=>z$1.object({Certificate:Lt,Tags:z$1.array(z$1.string())}));z$1.array(z$1.string());var f=z$1.any(),U=z$1.any(),He=z$1.object({policies:z$1.array(z$1.union([ge,z$1.undefined()])).optional(),on_demand:jt.optional(),ocsp_interval:f.optional(),renew_interval:f.optional(),storage_clean_interval:f.optional()}),Z=z$1.object({provider:z$1.unknown().optional(),ttl:f.optional(),propagation_delay:f.optional(),propagation_timeout:f.optional(),resolvers:z$1.array(z$1.string()).optional(),override_domain:z$1.string().optional()}),Et=z$1.object({ca:z$1.unknown().optional(),insecure_skip_verify:z$1.boolean().optional(),handshake_timeout:f.optional(),server_name:z$1.string().optional(),renegotiation:z$1.string().optional()});z$1.object({endpoints:z$1.array(z$1.string()).optional(),tls:Et.optional()});var ve=z$1.object({match:U.optional(),certificate_selection:fe.optional(),cipher_suites:z$1.array(z$1.string()).optional(),curves:z$1.array(z$1.string()).optional(),alpn:z$1.array(z$1.string()).optional(),protocol_min:z$1.string().optional(),protocol_max:z$1.string().optional(),drop:z$1.boolean().optional(),client_authentication:xe.optional(),default_sni:z$1.string().optional(),fallback_sni:z$1.string().optional(),insecure_secrets_log:z$1.string().optional(),handshake_context:z$1.unknown().optional()}),$t=z$1.object({configs:z$1.array(z$1.string()).optional(),domains:z$1.array(z$1.string()).optional(),publishers:U.optional()});z$1.array(Se);z$1.object({ca:z$1.string().optional(),lifetime:f.optional(),sign_with_root:z$1.boolean().optional()});z$1.array(Mt);var we=z$1.object({key_source:z$1.unknown().optional(),rotation_interval:f.optional(),max_keys:z$1.number().optional(),disable_rotation:z$1.boolean().optional(),disabled:z$1.boolean().optional()}),qt=z$1.object({configs:z$1.array(kt).optional(),publication:z$1.array(z$1.union([$t,z$1.undefined()])).optional()});z$1.object({api_key:z$1.string().optional(),validity_days:z$1.number().optional(),listen_host:z$1.string().optional(),alternate_http_port:z$1.number().optional(),cname_validation:Z.optional()});var Ft=z$1.object({http:ye.optional(),"tls-alpn":be.optional(),dns:Z.optional(),bind_host:z$1.string().optional(),distributed:z$1.boolean().optional()});z$1.array(z$1.union([ve,z$1.undefined()]));z$1.object({certificates:U.optional(),automation:He.optional(),session_tickets:we.optional(),cache:_e.optional(),disable_ocsp_stapling:z$1.boolean().optional(),disable_storage_check:z$1.boolean().optional(),disable_storage_clean:z$1.boolean().optional(),encrypted_client_hello:qt.optional(),dns:z$1.unknown().optional(),resolvers:z$1.array(z$1.string()).optional()});z$1.object({ca:z$1.string().optional(),test_ca:z$1.string().optional(),email:z$1.string().optional(),profile:z$1.string().optional(),account_key:z$1.string().optional(),external_account:z$1.object({kid:z$1.string().optional(),hmacEncoded:z$1.string().optional()}).optional(),acme_timeout:f.optional(),challenges:Ft.optional(),trusted_roots_pem_files:z$1.array(z$1.string()).optional(),preferred_chains:ue.optional(),certificate_lifetime:f.optional(),network_proxy:z$1.unknown().optional()});var Ut=z$1.object({template_file:z$1.string().optional(),reveal_symlinks:z$1.boolean().optional(),sort:z$1.array(z$1.string()).optional(),file_limit:z$1.number().optional()}),Re=z$1.object({fs:z$1.string().optional(),root:z$1.string().optional(),try_files:z$1.array(z$1.string()).optional(),try_policy:z$1.string().optional(),split_path:z$1.array(z$1.string()).optional()}),Zt=z$1.any(),Xt=z$1.any(),je=z$1.object({fs:z$1.string().optional(),root:z$1.string().optional(),hide:z$1.array(z$1.string()).optional(),index_names:z$1.array(z$1.string()).optional(),browse:Ut.optional(),canonical_uris:z$1.boolean().optional(),status_code:Zt.optional(),pass_thru:z$1.boolean().optional(),precompressed:Xt.optional(),precompressed_order:z$1.array(z$1.string()).optional(),etag_file_extensions:z$1.array(z$1.string()).optional()});var Vt=z$1.object({find:z$1.string().optional(),replace:z$1.string().optional(),limit:z$1.number().optional()}),Gt=z$1.object({find:z$1.string().optional(),replace:z$1.string().optional()}),X=z$1.object({key:z$1.string(),val:z$1.string()}),Kt=z$1.object({key:z$1.string().optional(),search:z$1.string().optional(),search_regexp:z$1.string().optional(),replace:z$1.string().optional()}),V=z$1.object({delete:z$1.array(z$1.string()).optional(),set:z$1.array(X).optional(),add:z$1.array(X).optional(),replace:z$1.array(Kt).optional(),rename:z$1.array(X).optional()});z$1.object({method:z$1.string().optional(),uri:z$1.string().optional(),strip_path_prefix:z$1.string().optional(),strip_path_suffix:z$1.string().optional(),uri_substring:z$1.array(Vt).optional(),path_regexp:z$1.array(Gt).optional(),query:V.optional()});z$1.any();var Qt=z$1.object({Header:z$1.record(z$1.string(),z$1.array(z$1.string()))}),Yt=z$1.any(),Pe=z$1.object({file_root:z$1.string().optional(),mime_types:z$1.array(z$1.string()).optional(),delimiters:z$1.array(z$1.string()).optional(),match:Yt.optional()});z$1.object({Root:z$1.unknown(),Req:z$1.unknown().optional(),Args:z$1.array(z$1.any()),RespHeader:Qt,CustomFuncs:z$1.array(z$1.record(z$1.string(),z$1.unknown()))});var Jt=z$1.object({input:z$1.string().optional(),input_regexp:z$1.string().optional(),outputs:z$1.array(z$1.any()).optional()}),ke=z$1.object({source:z$1.string().optional(),destinations:z$1.array(z$1.string()).optional(),mappings:z$1.array(Jt).optional(),defaults:z$1.array(z$1.string()).optional()});var eo=z$1.object({method:z$1.string().optional(),target:z$1.string().optional()}),to=z$1.any(),oo=z$1.object({HeaderOps:to}),Ce=z$1.object({resources:z$1.array(eo).optional(),headers:oo.optional()});var Ie=z$1.object({max_size:z$1.number().optional(),read_timeout:z$1.union([z$1.number(),z$1.string()]).optional(),write_timeout:z$1.union([z$1.number(),z$1.string()]).optional(),set:z$1.string().optional()});var ro=z$1.any(),Ae=z$1.object({handle_response:z$1.array(ro).optional()});var Oe=z$1.object({span:z$1.string(),span_attributes:z$1.record(z$1.string(),z$1.string()).optional()});var Me=z$1.object({key:z$1.string().optional(),value:z$1.string().optional(),early:z$1.boolean().optional()});var Te=z$1.object({include:z$1.array(z$1.string()).optional(),exclude:z$1.array(z$1.string()).optional()});z$1.any();var ze=z$1.object({dial:z$1.string().optional(),max_requests:z$1.number().optional()});z$1.object({});z$1.object({Upstream:ze.optional(),Network:z$1.string(),Address:z$1.string(),Host:z$1.string(),Port:z$1.string()});z$1.object({AddrPort:z$1.string()});var K=z$1.object({addresses:z$1.array(z$1.string()).optional()}),no=z$1.array(z$1.union([ze,z$1.undefined()]));z$1.any();z$1.any();z$1.object({});z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();z$1.any();z$1.object({});z$1.object({weights:z$1.array(z$1.number()).optional()});z$1.object({choose:z$1.number().optional()});z$1.object({});z$1.object({});z$1.object({});z$1.object({});z$1.object({});z$1.object({});z$1.object({key:z$1.string().optional(),fallback:z$1.unknown().optional()});z$1.object({field:z$1.string().optional(),fallback:z$1.unknown().optional()});var ao=z$1.object({ipv4:z$1.boolean().optional(),ipv6:z$1.boolean().optional()});z$1.object({sources:z$1.array(z$1.unknown()).optional()});var io=z$1.any(),h=z$1.any(),so=z$1.any(),co=z$1.any(),po=z$1.any(),lo=z$1.any(),Le=z$1.object({status_code:io.optional()}),mo=z$1.object({path:z$1.string().optional(),uri:z$1.string().optional(),upstream:z$1.string().optional(),port:z$1.number().optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),method:z$1.string().optional(),body:z$1.string().optional(),follow_redirects:z$1.boolean().optional(),interval:h.optional(),timeout:h.optional(),passes:z$1.number().optional(),fails:z$1.number().optional(),max_size:z$1.number().optional(),expect_status:z$1.number().optional(),expect_body:z$1.string().optional()}),ho=z$1.object({fail_duration:h.optional(),max_fails:z$1.number().optional(),unhealthy_request_count:z$1.number().optional(),unhealthy_status:z$1.array(z$1.number()).optional(),unhealthy_latency:h.optional()}),uo=z$1.object({ca:z$1.unknown().optional(),root_ca_pool:z$1.array(z$1.string()).optional(),root_ca_pem_files:z$1.array(z$1.string()).optional(),client_certificate_file:z$1.string().optional(),client_certificate_key_file:z$1.string().optional(),client_certificate_automate:z$1.string().optional(),insecure_skip_verify:z$1.boolean().optional(),handshake_timeout:h.optional(),server_name:z$1.string().optional(),renegotiation:z$1.string().optional(),except_ports:z$1.array(z$1.string()).optional(),curves:z$1.array(z$1.string()).optional()}),go=z$1.object({enabled:z$1.boolean().optional(),probe_interval:h.optional(),max_idle_conns:z$1.number().optional(),max_idle_conns_per_host:z$1.number().optional(),idle_timeout:h.optional()}),yo=z$1.object({selection_policy:z$1.unknown().optional(),retries:z$1.number().optional(),try_duration:h.optional(),try_interval:h.optional(),retry_match:lo.optional()}),bo=z$1.object({active:mo.optional(),passive:ho.optional()});z$1.object({name:z$1.string().optional(),secret:z$1.string().optional(),max_age:h.optional(),fallback:z$1.unknown().optional()});z$1.object({service:z$1.string().optional(),proto:z$1.string().optional(),name:z$1.string().optional(),refresh:h.optional(),grace_period:h.optional(),resolver:K.optional(),dial_timeout:h.optional(),dial_fallback_delay:h.optional(),dial_network:z$1.string().optional()});z$1.object({name:z$1.string().optional(),port:z$1.string().optional(),refresh:h.optional(),resolver:K.optional(),dial_timeout:h.optional(),dial_fallback_delay:h.optional(),versions:ao.optional()});z$1.object({resolver:K.optional(),tls:uo.optional(),keep_alive:go.optional(),compression:z$1.boolean().optional(),max_conns_per_host:z$1.number().optional(),proxy_protocol:z$1.string().optional(),forward_proxy_url:z$1.string().optional(),dial_timeout:h.optional(),dial_fallback_delay:h.optional(),response_header_timeout:h.optional(),expect_continue_timeout:h.optional(),max_response_header_size:z$1.number().optional(),write_buffer_size:z$1.number().optional(),read_buffer_size:z$1.number().optional(),read_timeout:h.optional(),write_timeout:h.optional(),versions:z$1.array(z$1.string()).optional(),local_address:z$1.string().optional(),network_proxy:z$1.unknown().optional()});z$1.object({transport:z$1.unknown().optional(),circuit_breaker:z$1.unknown().optional(),load_balancing:yo.optional(),health_checks:bo.optional(),upstreams:no.optional(),dynamic_upstreams:z$1.unknown().optional(),flush_interval:h.optional(),trusted_proxies:z$1.array(z$1.string()).optional(),headers:so.optional(),request_buffers:z$1.number().optional(),response_buffers:z$1.number().optional(),stream_timeout:h.optional(),stream_buffer_size:z$1.number().optional(),stream_close_delay:h.optional(),rewrite:co.optional(),handle_response:z$1.array(po).optional(),verbose_logs:z$1.boolean().optional()});z$1.any();z$1.object({route_matcher:z$1.string().optional(),portal_name:z$1.string().optional()});z$1.object({route_matcher:z$1.string().optional(),gatekeeper_name:z$1.string().optional()});var So=z$1.any();z$1.object({config:So.optional(),secrets_managers:z$1.array(z$1.unknown()).optional()});var Q=z$1.object({handler:z$1.literal("authenticator"),portal_name:z$1.string().optional(),route_matcher:z$1.string().optional()}),Y=z$1.object({gatekeeper_name:z$1.string().optional(),route_matcher:z$1.string().optional()}),Ho=z$1.object({handler:z$1.literal("authentication"),providers:z$1.object({authorizer:Y})});z$1.discriminatedUnion("handler",[Q,Ho]);var vo=z$1.object({realm:z$1.string().optional(),path:z$1.string()}),wo=z$1.object({name:z$1.string(),kind:z$1.literal("local"),params:vo}),Ro=z$1.object({address:z$1.string(),port:z$1.number().int().positive().max(65535).optional()}),jo=z$1.object({dn:z$1.string(),roles:z$1.array(z$1.string()).optional()}),Po=z$1.object({realm:z$1.string().optional(),servers:z$1.array(Ro).optional(),bind_username:z$1.string().optional(),bind_password:z$1.string().optional(),search_base_dn:z$1.string().optional(),search_user_filter:z$1.string().optional(),groups:z$1.array(jo).optional()}),ko=z$1.object({name:z$1.string(),kind:z$1.literal("ldap"),params:Po.passthrough()}),Ee=z$1.object({driver:z$1.string().optional(),realm:z$1.string().optional(),client_id:z$1.string().optional(),client_secret:z$1.string().optional(),scopes:z$1.array(z$1.string()).optional(),authorization_url:z$1.string().optional(),token_url:z$1.string().optional()});z$1.object({name:z$1.string(),kind:z$1.literal("oauth"),params:Ee});var $e=z$1.object({driver:z$1.string().optional(),realm:z$1.string().optional(),client_id:z$1.string().optional(),client_secret:z$1.string().optional(),metadata_url:z$1.string().optional(),scopes:z$1.array(z$1.string()).optional()});z$1.object({name:z$1.string(),kind:z$1.literal("oauth"),params:$e});var Co=z$1.discriminatedUnion("kind",[wo,ko]),Io=z$1.object({name:z$1.string(),kind:z$1.literal("oauth"),params:z$1.union([Ee.passthrough(),$e.passthrough()])}),Ao=z$1.object({theme:z$1.string().optional(),logo_url:z$1.string().optional(),custom_css:z$1.string().optional()}),Oo=z$1.object({lifetime:z$1.number().optional(),insecure:z$1.boolean().optional(),same_site:z$1.string().optional()}),Mo=z$1.object({domains:z$1.record(z$1.string(),Oo).optional(),path:z$1.string().optional(),lifetime:z$1.number().optional(),insecure:z$1.boolean().optional(),same_site:z$1.string().optional()}),To=z$1.object({name:z$1.string(),ui:Ao.optional(),cookie_config:Mo.optional(),identity_stores:z$1.array(z$1.string()).optional(),identity_providers:z$1.array(z$1.string()).optional(),user_transformer_configs:z$1.array(z$1.record(z$1.string(),z$1.unknown())).optional()}),zo=z$1.object({comment:z$1.string().optional(),conditions:z$1.array(z$1.string()).optional(),action:z$1.enum(["allow","deny"]).optional()}),Lo=z$1.object({token_name:z$1.string().optional(),source:z$1.string().optional()}),Eo=z$1.object({match_type:z$1.string(),uri:z$1.string().optional()}),$o=z$1.object({name:z$1.string(),access_list_rules:z$1.array(zo).optional(),crypto_key_configs:z$1.array(Lo).optional(),bypass_configs:z$1.array(Eo).optional()}),Do=z$1.object({generic:z$1.record(z$1.string(),z$1.unknown()).optional()}),qo=z$1.object({authentication_portals:z$1.array(To).optional(),authorization_policies:z$1.array($o).optional(),credentials:Do.optional(),identity_stores:z$1.array(Co).optional(),identity_providers:z$1.array(Io).optional()}),Bo=z$1.object({driver:z$1.string()}).passthrough();z$1.object({config:qo.optional(),secrets_managers:z$1.array(Bo).optional()});var J=z$1.string().min(1,"Domain cannot be empty").regex(/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,"Invalid domain format"),z=z$1.string().refine(p=>p.includes("{")||/^(unix|unix\+h2c|unixgram|unixpacket)\/.+$/.test(p)||/^((tcp|udp)[46]?\/)?[^/]+:\d+$/.test(p),"Dial address must be host:port, network/host:port (tcp, udp) or a unix socket (unix//path/to.sock)"),qe=z$1.string(),ee=z$1.enum(["DENY","SAMEORIGIN"]),Be=z$1.enum(["none","www_to_domain","domain_to_www"]),Fe=z$1.union([z$1.literal(301),z$1.literal(302),z$1.literal(307),z$1.literal(308)]);z$1.enum(["letsencrypt","zerossl","acme"]);var Wo=z$1.record(z$1.string(),z$1.array(z$1.string())),No=z$1.record(z$1.string(),z$1.array(z$1.string())),Uo=z$1.object({host:z$1.array(z$1.string()).optional(),path:z$1.array(z$1.string()).optional(),path_regexp:z$1.object({name:z$1.string().optional(),pattern:z$1.string()}).optional(),method:z$1.array(qe).optional(),header:No.optional(),header_regexp:B.optional(),query:Wo.optional(),client_ip:D.optional(),remote_ip:$.optional(),protocol:O.optional(),tls:F.optional(),file:Re.optional(),not:z$1.array(z$1.record(z$1.string(),z$1.unknown())).optional(),expression:z$1.string().optional()}),We=z$1.object({handler:z$1.string()}).passthrough(),Zo=z$1.object({"@id":z$1.string().optional(),match:z$1.array(Uo).optional(),handle:z$1.array(We).min(1,"Route must have at least one handler"),terminal:z$1.boolean().optional(),priority:z$1.number().int().optional()});z$1.object({adminUrl:z$1.string().url().optional().default("http://127.0.0.1:2019"),timeout:z$1.number().int().positive().optional().default(5e3)});var Xo=z$1.enum(["caddyfile","json","yaml","nginx","apache"]);z$1.object({config:z$1.string().min(1,"Config cannot be empty"),adapter:Xo.optional().default("caddyfile")});var te=z$1.object({enableHsts:z$1.boolean().optional().default(false),hstsMaxAge:z$1.number().int().positive().optional().default(31536e3),frameOptions:ee.optional().default("DENY"),enableCompression:z$1.boolean().optional().default(true)}),Vo=z$1.object({domain:J,target:z$1.string().min(1,"Target cannot be empty"),targetPort:z$1.number().int().positive().max(65535,"Port must be between 1 and 65535"),enableSecurityHeaders:z$1.boolean().optional().default(true),enableHsts:z$1.boolean().optional().default(false),hstsMaxAge:z$1.number().int().positive().optional().default(31536e3),frameOptions:ee.optional().default("DENY"),enableCompression:z$1.boolean().optional().default(true),redirectMode:Be.optional().default("none"),redirectStatusCode:Fe.optional().default(308),adminUrl:z$1.string().url().optional()});Vo.extend({certFile:z$1.string().min(1,"Certificate file path cannot be empty"),keyFile:z$1.string().min(1,"Key file path cannot be empty")});z$1.object({domain:J,target:z$1.string().min(1).optional(),targetPort:z$1.number().int().positive().max(65535).optional(),enableSecurityHeaders:z$1.boolean().optional(),enableHsts:z$1.boolean().optional(),hstsMaxAge:z$1.number().int().positive().optional(),frameOptions:ee.optional(),enableCompression:z$1.boolean().optional(),redirectMode:Be.optional(),redirectStatusCode:Fe.optional(),adminUrl:z$1.string().url().optional()});z$1.object({domain:J,adminUrl:z$1.string().url().optional()});var oe=z$1.object({enabled:z$1.boolean(),username:z$1.string().min(1).optional(),passwordHash:z$1.string().min(1).optional(),realm:z$1.string().optional(),routes:z$1.array(z$1.enum(["host","path","tunnel"])).optional()});z$1.object({host:z$1.string().optional(),path:z$1.string().optional(),pathRouteHost:z$1.string().optional().default("asd.localhost"),dial:z,serviceId:z$1.string().optional().default("unknown"),enableHostRoute:z$1.boolean().optional().default(true),enablePathRoute:z$1.boolean().optional().default(true),stripPrefix:z$1.boolean().optional().default(true),priority:z$1.number().int().optional().default(50),securityHeaders:te.optional(),basicAuth:oe.optional(),ingressTag:z$1.string().nullable().optional(),iframeOrigin:z$1.string().nullable().optional(),deleteResponseHeaders:z$1.array(z$1.string()).optional(),serviceType:z$1.string().optional(),isTunnelDomain:z$1.boolean().optional().default(false),flushInterval:z$1.number().optional(),projectId:z$1.string().nullable().optional()});z$1.object({host:z$1.string().min(1),serviceId:z$1.string().min(1),priority:z$1.number().int().optional(),ingressTag:z$1.string().nullable().optional(),dial:z$1.string().min(1).optional(),projectId:z$1.string().nullable().optional()});z$1.object({host:z$1.string().min(1),dial:z,securityHeaders:te.optional(),basicAuth:oe.optional(),priority:z$1.number().int().optional(),ingressTag:z$1.string().nullable().optional(),iframeOrigin:z$1.string().nullable().optional(),deleteResponseHeaders:z$1.array(z$1.string()).optional(),serviceId:z$1.string().optional(),serviceType:z$1.string().optional(),flushInterval:z$1.number().optional(),projectId:z$1.string().nullable().optional()});z$1.object({path:z$1.string().min(1),host:z$1.string().min(1),dial:z,stripPrefix:z$1.boolean().optional().default(true),securityHeaders:te.optional(),basicAuth:oe.optional(),priority:z$1.number().int().optional(),ingressTag:z$1.string().nullable().optional(),iframeOrigin:z$1.string().nullable().optional(),deleteResponseHeaders:z$1.array(z$1.string()).optional(),serviceId:z$1.string().optional(),serviceType:z$1.string().optional(),flushInterval:z$1.number().optional(),projectId:z$1.string().nullable().optional()});z$1.object({host:z$1.string().min(1),upstreams:z$1.array(z).min(1,"At least one upstream is required"),healthCheckPath:z$1.string().optional().default("/health"),healthCheckInterval:z$1.string().optional().default("10s"),policy:z$1.enum(["first","random","least_conn","round_robin"]).optional().default("first"),priority:z$1.number().int().optional()});var _=z$1.union([z$1.number().int(),z$1.literal("0"),z$1.string().regex(/^-?(\d+(\.\d+)?(ns|us|µs|ms|s|m|h|d))+$/,"Invalid Go duration format. Use units: ns, us, \xB5s, ms, s, m, h, d (e.g., '30s', '1h30m', '1.5d')")]),er=z$1.object({uri:z$1.string().optional(),path:z$1.string().optional(),port:z$1.number().int().positive().max(65535).optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),follow_redirects:z$1.boolean().optional(),interval:_.optional(),timeout:_.optional(),passes:z$1.number().int().positive().optional(),fails:z$1.number().int().positive().optional(),max_size:z$1.number().int().positive().optional(),expect_status:z$1.number().int().min(100).max(599).optional(),expect_body:z$1.string().optional()}),tr=z$1.object({fail_duration:_.optional(),max_fails:z$1.number().int().positive().optional(),unhealthy_request_count:z$1.number().int().positive().optional(),unhealthy_status:z$1.array(z$1.number().int().min(100).max(599)).optional(),unhealthy_latency:_.optional()}),or=z$1.object({active:er.optional(),passive:tr.optional()}),rr=z$1.object({selection_policy:z$1.object({policy:z$1.enum(["first","random","least_conn","round_robin","ip_hash","uri_hash","header","cookie"])}).passthrough().optional(),retries:z$1.number().int().nonnegative().optional(),try_duration:_.optional(),try_interval:_.optional()}),nr=z$1.object({dial:z$1.string().min(1),max_requests:z$1.number().int().positive().optional()}),ar=z$1.object({name:z$1.string().optional(),pattern:z$1.string()}),De=z$1.object({host:z$1.array(z$1.string()).optional(),path:z$1.array(z$1.string()).optional(),path_regexp:z$1.object({name:z$1.string().optional(),pattern:z$1.string()}).optional(),method:z$1.array(qe).optional(),header:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),header_regexp:z$1.record(z$1.string(),ar).optional(),query:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),client_ip:z$1.object({ranges:z$1.array(z$1.string())}).optional(),remote_ip:z$1.object({ranges:z$1.array(z$1.string())}).optional(),protocol:O.optional(),expression:z$1.string().optional(),tls:z$1.object({handshake_complete:z$1.boolean().optional()}).optional(),file:z$1.object({fs:z$1.string().optional(),root:z$1.string().optional(),try_files:z$1.array(z$1.string()).optional(),try_policy:z$1.enum(["first_exist","first_exist_fallback","smallest_size","largest_size","most_recently_modified"]).optional(),split_path:z$1.array(z$1.string()).optional()}).optional()});De.extend({not:z$1.array(z$1.lazy(()=>De)).optional()});var ir=z$1.object({handler:z$1.literal("reverse_proxy"),upstreams:z$1.array(nr).optional(),load_balancing:rr.optional(),health_checks:or.optional(),transport:z$1.object({protocol:z$1.string()}).passthrough().optional(),circuit_breaker:z$1.object({type:z$1.string()}).passthrough().optional(),dynamic_upstreams:z$1.object({source:z$1.string()}).passthrough().optional(),flush_interval:_.optional(),stream_timeout:_.optional(),stream_close_delay:_.optional(),trusted_proxies:z$1.array(z$1.string()).optional(),request_buffers:z$1.number().int().nonnegative().optional(),response_buffers:z$1.number().int().nonnegative().optional(),headers:z$1.object({request:z$1.object({add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional(),response:z$1.object({add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional()}).optional(),rewrite:z$1.object({uri:z$1.string().optional(),strip_path_prefix:z$1.string().optional(),strip_path_suffix:z$1.string().optional()}).passthrough().optional(),handle_response:z$1.array(z$1.object({match:z$1.object({status_code:z$1.array(z$1.number().int()).optional()}).passthrough().optional(),routes:z$1.array(z$1.any()).optional()}).passthrough()).optional(),verbose_logs:z$1.boolean().optional()}),sr=z$1.object({handler:z$1.literal("headers"),response:z$1.object({deferred:z$1.boolean().optional(),set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional(),request:z$1.object({set:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),add:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),delete:z$1.array(z$1.string()).optional()}).optional()}),Ne=z$1.union([z$1.number().int(),z$1.string()]).optional(),cr=z$1.object({handler:z$1.literal("static_response"),status_code:Ne,body:z$1.string().optional(),headers:z$1.record(z$1.string(),z$1.array(z$1.string())).optional(),close:z$1.boolean().optional(),abort:z$1.boolean().optional()}),pr=z$1.object({handler:z$1.literal("authentication"),providers:z$1.object({http_basic:z$1.object({accounts:z$1.array(z$1.object({username:z$1.string(),password:z$1.string()})).optional(),realm:z$1.string().optional(),hash:z$1.object({algorithm:z$1.string().optional()}).optional()}).optional(),authorizer:Y.optional()}).optional()}),lr=z$1.object({handler:z$1.literal("rewrite"),uri:z$1.string().optional(),strip_path_prefix:z$1.string().optional(),strip_path_suffix:z$1.string().optional(),uri_substring:z$1.array(z$1.object({find:z$1.string(),replace:z$1.string(),limit:z$1.number().int().optional()})).optional(),query:V.optional()}),dr=z$1.object({handler:z$1.literal("encode"),encodings:z$1.object({gzip:z$1.object({}).passthrough().optional(),zstd:z$1.object({}).passthrough().optional(),br:z$1.object({}).passthrough().optional()}).passthrough().optional(),prefer:z$1.array(z$1.string()).optional(),minimum_length:z$1.number().int().positive().optional()}),mr=je.extend({handler:z$1.literal("file_server")}),hr=Pe.extend({handler:z$1.literal("templates")}),ur=ke.extend({handler:z$1.literal("map")}),gr=Ce.extend({handler:z$1.literal("push")}),yr=Ie.extend({handler:z$1.literal("request_body")}),br=z$1.object({handler:z$1.literal("vars")}).passthrough(),fr=Ae.extend({handler:z$1.literal("intercept")}),xr=E.extend({handler:z$1.literal("invoke")}),Sr=Oe.extend({handler:z$1.literal("tracing")}),_r=Me.extend({handler:z$1.literal("log_append")}),Hr=W.extend({handler:z$1.literal("error"),status_code:Ne}),vr=Le.extend({handler:z$1.literal("copy_response")}),wr=Te.extend({handler:z$1.literal("copy_response_headers")}),Rr=z$1.object({handler:z$1.literal("subroute"),routes:z$1.array(z$1.lazy(()=>Zo)).optional(),errors:z$1.any().optional()}),jr=z$1.discriminatedUnion("handler",[ir,sr,cr,pr,lr,dr,mr,hr,ur,gr,yr,br,fr,xr,Sr,_r,Hr,vr,wr,Rr,Q]);z$1.union([jr,We]);var Pr=z$1.object({address:z$1.string(),num_requests:z$1.number(),fails:z$1.number(),healthy:z$1.boolean()});z$1.array(Pr);var re=z$1.object({webPort:z$1.number().int().positive().max(65535).optional().default(8081),proxyPort:z$1.number().int().positive().max(65535).optional().default(8080),listenAddress:z$1.string().optional().default("127.0.0.1"),openBrowser:z$1.boolean().optional().default(true),scripts:z$1.array(z$1.string()).optional(),workingDir:z$1.string().optional()});async function Xe(){return new Promise(p=>{let i=spawn("which",["mitmweb"]);i.on("close",s=>p(s===0)),i.on("error",()=>p(false));})}async function us(){return await Xe()?new Promise(p=>{let i=spawn("mitmweb",["--version"]),s="";i.stdout.on("data",c=>{s+=c.toString();}),i.on("close",c=>{if(c===0){let l=/(\d+\.\d+\.\d+)/.exec(s);p(l?l[1]:null);}else p(null);}),i.on("error",()=>p(null));}):null}async function gs(p={}){let i=re.parse(p);if(!await Xe())throw new I("MITMproxy is not installed. Install with: pip install mitmproxy");let s=Ve(i.workingDir);if(s.running)throw new j("MITMweb is already running",{pid:s.pid});let c=["--web-port",i.webPort.toString(),"--listen-port",i.proxyPort.toString(),"--listen-host",i.listenAddress,"--no-web-open-browser"];if(i.scripts&&i.scripts.length>0)for(let R of i.scripts)c.push("-s",R);let l=spawn("mitmweb",c,{detached:true,stdio:"ignore"}),g=i.workingDir??process.cwd(),b=join(g,"mitmweb.pid");if(writeFileSync(b,l.pid.toString(),"utf-8"),l.unref(),await Ir(i.webPort,1e4),i.openBrowser){let R=`http://${i.listenAddress}:${i.webPort}`;Ar(R);}return {pid:l.pid,webUrl:`http://${i.listenAddress}:${i.webPort}`,proxyUrl:`http://${i.listenAddress}:${i.proxyPort}`,pidFile:b}}async function ys(p){let i=Ve(p);if(!i.running||!i.pid)return;try{process.kill(i.pid,"SIGTERM"),await new Promise(l=>{let g=setInterval(()=>{try{process.kill(i.pid,0);}catch{clearInterval(g),l();}},100);setTimeout(()=>{clearInterval(g);try{process.kill(i.pid,"SIGKILL");}catch{}l();},5e3);});}catch{}let s=p??process.cwd(),c=join(s,"mitmweb.pid");existsSync(c)&&unlinkSync(c);}function Ve(p){let i=p??process.cwd(),s=join(i,"mitmweb.pid");if(!existsSync(s))return {running:false};try{let c=readFileSync(s,"utf-8").trim(),l=parseInt(c,10);if(isNaN(l))return {running:!1};try{return process.kill(l,0),{running:!0,pid:l,webUrl:"http://127.0.0.1:8081",proxyUrl:"http://127.0.0.1:8080"}}catch{return unlinkSync(s),{running:!1}}}catch{return {running:false}}}async function Ir(p,i){let s=Date.now(),c=`http://127.0.0.1:${p}`;for(;Date.now()-s<i;){try{if((await fetch(c)).ok)return}catch{}await new Promise(l=>setTimeout(l,500));}throw new A("Mitmweb failed to start within timeout")}function Ar(p){let i=process.platform,s;i==="darwin"?s="open":i==="win32"?s="start":s="xdg-open",spawn(s,[p],{detached:true,stdio:"ignore"}).unref();}async function bs(){return await new Promise(s=>{let c=spawn("which",["pipx"]);c.on("close",l=>s(l===0)),c.on("error",()=>s(false));})&&(console.log("Installing mitmproxy with pipx..."),await new Promise(c=>{let l=spawn("pipx",["install","mitmproxy"],{stdio:"inherit"});l.on("close",g=>c(g===0)),l.on("error",()=>c(false));}))||(console.log("Installing mitmproxy with pip..."),await new Promise(s=>{let c=spawn("pip",["install","--user","mitmproxy"],{stdio:"inherit"});c.on("close",l=>s(l===0)),c.on("error",()=>s(false));}))?(console.log("\u2705 MITMproxy installed successfully"),true):(console.error("\u274C Failed to install mitmproxy"),false)}function C(p,i){let s=typeof p=="string"&&p.startsWith("https://"),c=s?p.replace("https://",""):p,l=s,g={handler:"reverse_proxy",upstreams:[{dial:c}]};if(l){let b={};g.transport={protocol:"http",tls:b};}else g.transport={protocol:"http"};return g}function ae(p){return {handler:"rewrite",strip_path_prefix:p}}var Ge=class{caddy;proxies;services=new Map;constructor(i,s){if(this.caddy=i,this.proxies=s,Object.keys(s).length===0)throw new Error("At least one MITMproxy instance must be configured");if(!s.default){let c=Object.keys(s)[0];this.proxies.default=s[c];}}register(i){let s=`mitm_${i.id}`;this.services.set(i.id,{registration:i,enabled:false,activeProxy:null,routeId:s});}unregister(i){return this.services.delete(i)}getService(i){return this.services.get(i)}getProxy(i="default"){let s=this.proxies[i];if(!s)throw new Error(`Unknown proxy: ${i}. Available: ${Object.keys(this.proxies).join(", ")}`);return s}buildDirectRoute(i,s){let c=`${i.backend.host}:${i.backend.port}`;return i.host?{"@id":s,match:[{host:[i.host]}],handle:[C(c)],terminal:true}:{"@id":s,match:[{path:[`${i.pathPrefix}/*`]}],handle:[ae(i.pathPrefix),C(c)],terminal:true}}buildProxiedRoute(i,s,c){let l=`${s.host}:${s.port}`;return i.host?{"@id":c,match:[{host:[i.host]}],handle:[C(l)],terminal:true}:{"@id":c,match:[{path:[`${i.pathPrefix}/*`]}],handle:[ae(i.pathPrefix),C(l)],terminal:true}}async enable(i,s={}){let c=this.getService(i);if(!c)throw new Error(`Service not registered: ${i}`);let l=s.proxy??"default",g=this.getProxy(l),{registration:b,routeId:R}=c,Ke=this.buildProxiedRoute(b,g,R);await this.caddy.removeRouteById(b.serverId,R).catch(()=>{}),await this.caddy.addRoute(b.serverId,Ke),c.enabled=true,c.activeProxy=l;}async disable(i){let s=this.getService(i);if(!s)throw new Error(`Service not registered: ${i}`);let{registration:c,routeId:l}=s,g=this.buildDirectRoute(c,l);await this.caddy.removeRouteById(c.serverId,l).catch(()=>{}),await this.caddy.addRoute(c.serverId,g),s.enabled=false,s.activeProxy=null;}async enableAll(i={}){let s=Array.from(this.services.keys()).map(c=>this.enable(c,i));await Promise.all(s);}async disableAll(){let i=Array.from(this.services.keys()).map(s=>this.disable(s));await Promise.all(i);}isEnabled(i){return this.getService(i)?.enabled??false}getStatus(){let i={};for(let[s,c]of this.services)i[s]={enabled:c.enabled,proxy:c.activeProxy,service:c.registration};return i}getServiceStatus(i){let s=this.getService(i);if(s)return {enabled:s.enabled,proxy:s.activeProxy,service:s.registration}}getRegisteredServices(){return Array.from(this.services.keys())}getAvailableProxies(){return Object.keys(this.proxies)}getProxyConfig(i){return this.proxies[i]}};
|
|
2
|
+
export{Ge as MitmproxyManager,re as MitmwebOptionsSchema,bs as autoInstallMitmproxy,us as getMitmproxyVersion,Ve as getMitmwebStatus,Xe as isMitmproxyInstalled,gs as startMitmweb,ys as stopMitmweb};
|
|
@@ -1,3 +1,3 @@
|
|
|
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-
|
|
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-
|
|
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-WSyYaJZ9.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-DNBQR_yL.js';
|
|
3
3
|
import 'zod';
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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-
|
|
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-DNBQR_yL.js';
|
|
2
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-
|
|
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-WSyYaJZ9.js';
|
|
4
4
|
import 'zod';
|
|
@@ -324,7 +324,7 @@ type SecurityHandler = SecurityAuthenticatorHandler | SecurityAuthorizationHandl
|
|
|
324
324
|
*/
|
|
325
325
|
type Domain = string;
|
|
326
326
|
/**
|
|
327
|
-
* Dial address
|
|
327
|
+
* Dial address: host:port (e.g. "127.0.0.1:3000"), tcp/host:port, or a unix socket ("unix//run/app.sock")
|
|
328
328
|
*/
|
|
329
329
|
type DialAddress = string;
|
|
330
330
|
/**
|