PageSourceSearch

https://networkingtoolbox.net/_app/immutable/nodes/83.Dr3gjW-C.js

js networkingtoolbox.net collected 2026-09-25 19:14:54 UTC 13,106 bytes, 1 lines download raw bytes

1import"../chunks/DsnmJJEf.js";import{p as re,c as r,s,t as T,g as a,a as se,av as sa,A as z,n as pa,r as e,f as Y,ay as La}from"../chunks/BY0bk6Yc.js";import{s as x}from"../chunks/B6oFbeKC.js";import{f as c,a as o,c as qa,t as Ia}from"../chunks/DXItkK2y.js";import{i as g}from"../chunks/DiSB06Pf.js";import{e as $a,i as Qa}from"../chunks/BOZOuEyP.js";import{a as S,t as N}from"../chunks/z40oqvJk.js";import{r as te}from"../chunks/kUWlVhub.js";import{s as Ca}from"../chunks/BZLnOqJO.js";import{d as ve}from"../chunks/CFtbtvCf.js";import{b as ie}from"../chunks/DhiJda7t.js";import{I as L}from"../chunks/DGiEONFf.js";/* empty css                */var de=c("<button><h5> </h5> <p> </p></button>"),oe=(ta,B)=>B(),le=(ta,B)=>ta.key==="Enter"&&B(),ne=c("<!> Tracing...",1),ce=c("<!> Trace",1),me=c('<div class="card error-card"><div class="card-content"><div class="error-content"><!> <div><strong>Trace Failed</strong> <p> </p></div></div></div></div>'),_e=c('<div class="card"><div class="card-content"><div class="loading-state svelte-123bgah"><!> <div class="loading-text svelte-123bgah"><h3 class="svelte-123bgah">Performing DNS Trace</h3> <p class="svelte-123bgah">Following the DNS resolution path from root servers to authoritative nameservers...</p></div></div></div></div>'),ue=c('<span class="record-type svelte-123bgah"> </span>'),pe=c('<span class="server-name svelte-123bgah"> </span>'),he=c('<span class="referral svelte-123bgah"> </span>'),fe=c('<span class="answer svelte-123bgah"><!></span>'),ge=c('<span class="nodata svelte-123bgah">No data for this record type</span>'),be=c('<span class="nxdomain svelte-123bgah">Domain does not exist</span>'),ye=c('<div class="step-response svelte-123bgah"><strong class="svelte-123bgah">Response:</strong> <!></div>'),xe=c('<span class="flag authoritative svelte-123bgah">AA</span>'),we=c('<span class="flag dnssec svelte-123bgah">AD</span>'),Se=c('<span class="flag svelte-123bgah">RD</span>'),Ne=c('<span class="flag svelte-123bgah">RA</span>'),Te=c('<div class="step-flags svelte-123bgah"><!> <!> <!> <!></div>'),Ae=c('<div class="trace-step svelte-123bgah"><div class="step-marker svelte-123bgah"><span class="step-number svelte-123bgah"></span></div> <div class="step-content svelte-123bgah"><div class="step-header svelte-123bgah"><span class="step-type svelte-123bgah"> </span> <span class="step-timing svelte-123bgah"> </span></div> <div class="step-query svelte-123bgah"><strong class="svelte-123bgah">Query:</strong> <!></div> <div class="step-server svelte-123bgah"><strong class="svelte-123bgah">Server:</strong> <!></div> <!> <!></div></div>'),De=c('<div class="stat-card svelte-123bgah"><div class="stat-label">Final Server</div> <div class="stat-value mono svelte-123bgah"> </div></div>'),ke=c('<div class="stat-card svelte-123bgah"><div class="stat-label">Record Type</div> <div class="stat-value svelte-123bgah"> </div></div>'),qe=c('<div class="stat-card svelte-123bgah"><div class="stat-label">Total Hops</div> <div class="stat-value svelte-123bgah"> </div></div>'),Ce=c('<div class="stat-card svelte-123bgah"><div class="stat-label">Avg Latency</div> <div class="stat-value svelte-123bgah"> </div></div>'),Ee=c('<div class="stat-card svelte-123bgah"><div class="stat-label">DNSSEC Status</div> <div><!> </div></div>'),ze=c('<div class="stat-card svelte-123bgah"><div class="stat-label">Authoritative</div> <div><!> </div></div>'),Fe=c('<div class="stat-card double-width svelte-123bgah"><div class="stat-label">Resolution Path</div> <div class="stat-value mono resolver-path svelte-123bgah"> </div></div>'),Pe=c('<div class="stat-card double-width svelte-123bgah"><div class="stat-label">Final Answer</div> <div class="stat-value mono svelte-123bgah"> </div></div>'),Re=c('<div class="card"><div class="card-header"><h3>Trace Summary</h3></div> <div class="card-content"><div class="stats-grid"><div class="stat-card svelte-123bgah"><div class="stat-label">Total Time</div> <div class="stat-value svelte-123bgah"><!> </div></div> <div class="stat-card svelte-123bgah"><div class="stat-label">DNS Queries</div> <div class="stat-value svelte-123bgah"> </div></div> <!> <!> <!> <!> <!> <!> <!> <!></div></div></div>'),Ve=c('<div class="card results-card"><div class="card-header"><h3>Trace Path</h3></div> <div class="card-content"><div class="trace-timeline svelte-123bgah"></div></div></div> <!>',1),He=c('<div class="card"><header class="card-header"><h1>DNS Trace Tool</h1> <p>Iterative trace from root to authoritative nameservers via DNS over HTTPS</p></header> <div class="card examples-card"><details class="examples-details"><summary class="examples-summary"><!> <h4>Quick Examples</h4></summary> <div class="examples-grid"></div></details></div> <div class="card input-card"><div class="card-header"><h3>Trace Configuration</h3></div> <div class="card-content"><div class="form-group"><label for="domain">Domain Name</label> <div class="input-flex-container"><input id="domain" type="text" placeholder="example.com"/> <button class="primary"><!></button></div></div></div></div> <!> <!> <!></div>');function Ue(ta,B){re(B,!0);let K=sa("example.com"),$=sa(!1),l=sa(null),U=sa(null),ha=sa(null);const Oa=[{domain:"www.cloudflare.com",description:"Cloudflare edge network"},{domain:"www.google.com",description:"Popular service with CDN"},{domain:"github.com",description:"GitHub platform trace"},{domain:"bbc.co.uk",description:"Multi-level TLD (.co.uk)"},{domain:"aws.amazon.com",description:"AWS subdomain delegation"},{domain:"aliciasykes.com",description:"Homepage hosted on Vercel"}];async function fa(){if(!a(K)?.trim()){z(U,"Please enter a domain name");return}z($,!0),z(U,null),z(l,null);try{const d=await fetch("/api/internal/diagnostics/dns",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"trace",domain:a(K).trim().toLowerCase()})}),h=await d.json();if(!d.ok)throw new Error(h.message||"Failed to trace domain");z(l,h,!0)}catch(d){z(U,d instanceof Error?d.message:"An error occurred",!0)}finally{z($,!1)}}function Wa(d,h){z(K,d.domain,!0),z(ha,h,!0),fa()}function Ga(){z(ha,null)}function Ea(d){return d<1?`${(d*1e3).toFixed(0)}μs`:d<1e3?`${d.toFixed(1)}ms`:`${(d/1e3).toFixed(2)}s`}var ga=He(),ba=s(r(ga),2),za=r(ba),ya=r(za),Ja=r(ya);L(Ja,{name:"chevron-right",size:"xs"}),pa(2),e(ya);var Fa=s(ya,2);$a(Fa,21,()=>Oa,Qa,(d,h,A)=>{var D=de();let F;D.__click=()=>Wa(a(h),A);var V=r(D),O=r(V,!0);e(V);var P=s(V,2),m=r(P,!0);e(P),e(D),S(D,(H,j)=>N?.(H,j),()=>`Trace DNS resolution path for ${a(h).domain}`),T(H=>{F=Ca(D,1,"example-card",null,F,H),x(O,a(h).domain),x(m,a(h).description)},[()=>({selected:a(ha)===A})]),o(d,D)}),e(Fa),e(za),e(ba);
1var xa=s(ba,2),Pa=s(r(xa),2),Ra=r(Pa),Va=s(r(Ra),2),Q=r(Va);te(Q),Q.__change=[oe,Ga],Q.__keydown=[le,fa];var va=s(Q,2);va.__click=fa;var Ma=r(va);{var Ya=d=>{var h=ne(),A=Y(h);L(A,{name:"loader",size:"sm",animate:"spin"}),pa(),o(d,h)},Ba=d=>{var h=ce(),A=Y(h);L(A,{name:"search",size:"sm"}),pa(),o(d,h)};g(Ma,d=>{a($)?d(Ya):d(Ba,!1)})}e(va),e(Va),e(Ra),e(Pa),e(xa);var Ha=s(xa,2);{var Ka=d=>{var h=me(),A=r(h),D=r(A),F=r(D);L(F,{name:"alert-triangle",size:"md"});var V=s(F,2),O=s(r(V),2),P=r(O,!0);e(O),e(V),e(D),e(A),e(h),T(()=>x(P,a(U))),o(d,h)};g(Ha,d=>{a(U)&&d(Ka)})}var ja=s(Ha,2);{var Ua=d=>{var h=_e(),A=r(h),D=r(A),F=r(D);L(F,{name:"loader",size:"lg",animate:"spin"}),pa(2),e(D),e(A),e(h),o(d,h)};g(ja,d=>{a($)&&d(Ua)})}var Xa=s(ja,2);{var Za=d=>{var h=Ve(),A=Y(h),D=s(r(A),2),F=r(D);$a(F,21,()=>a(l).path,Qa,(P,m,H)=>{var j=Ae(),I=r(j),ia=r(I);ia.textContent=H+1,e(I);var X=s(I,2),W=r(X),G=r(W),Z=r(G,!0);e(G),S(G,(u,f)=>N?.(u,f),()=>"Type of DNS query operation");var J=s(G,2),da=r(J,!0);e(J),S(J,(u,f)=>N?.(u,f),()=>"Time taken for this query"),e(W);var aa=s(W,2),ea=r(aa);S(ea,(u,f)=>N?.(u,f),()=>"Domain name being queried");var oa=s(ea),la=s(oa);{var wa=u=>{var f=ue(),C=r(f,!0);e(f),S(f,(t,v)=>N?.(t,v),()=>"DNS record type requested"),T(()=>x(C,a(m).qtype)),o(u,f)};g(la,u=>{a(m).qtype&&u(wa)})}e(aa);var M=s(aa,2),na=r(M);S(na,(u,f)=>N?.(u,f),()=>"DNS server that responded to this query");var ra=s(na),Sa=s(ra);{var ca=u=>{var f=pe(),C=r(f);e(f),T(()=>x(C,`(${a(m).serverName??""})`)),o(u,f)};g(Sa,u=>{a(m).serverName&&u(ca)})}e(M);var ma=s(M,2);{var _a=u=>{var f=ye(),C=r(f);S(C,(i,_)=>N?.(i,_),()=>"Response received from the DNS server");var t=s(C,2);{var v=i=>{var _=he(),b=r(_);e(_),T(w=>x(b,`Referral to ${w??""}`),[()=>a(m).response.nameservers.join(", ")]),o(i,_)},p=i=>{var _=qa(),b=Y(_);{var w=y=>{var k=fe(),E=r(k);{var Ta=q=>{var R=Ia();T(Da=>x(R,Da),[()=>a(m).response.data.join(", ")]),o(q,R)},Aa=q=>{var R=Ia();T(()=>x(R,a(m).response.data)),o(q,R)};g(E,q=>{Array.isArray(a(m).response.data)?q(Ta):q(Aa,!1)})}e(k),o(y,k)},n=y=>{var k=qa(),E=Y(k);{var Ta=q=>{var R=ge();o(q,R)},Aa=q=>{var R=qa(),Da=Y(R);{var ae=ka=>{var ee=be();o(ka,ee)};g(Da,ka=>{a(m).response.type==="nxdomain"&&ka(ae)},!0)}o(q,R)};g(E,q=>{a(m).response.type==="nodata"?q(Ta):q(Aa,!1)},!0)}o(y,k)};g(b,y=>{a(m).response.type==="answer"?y(w):y(n,!1)},!0)}o(i,_)};g(t,i=>{a(m).response.type==="referral"?i(v):i(p,!1)})}e(f),o(u,f)};g(ma,u=>{a(m).response&&u(_a)})}var Na=s(ma,2);{var ua=u=>{var f=Te(),C=r(f);{var t=n=>{var y=xe();S(y,(k,E)=>N?.(k,E),()=>"Authoritative Answer"),o(n,y)};g(C,n=>{a(m).flags.aa&&n(t)})}var v=s(C,2);{var p=n=>{var y=we();S(y,(k,E)=>N?.(k,E),()=>"Authenticated Data (DNSSEC)"),o(n,y)};g(v,n=>{a(m).flags.ad&&n(p)})}var i=s(v,2);{var _=n=>{var y=Se();S(y,(k,E)=>N?.(k,E),()=>"Recursion Desired"),o(n,y)};g(i,n=>{a(m).flags.rd&&n(_)})}var b=s(i,2);{var w=n=>{var y=Ne();S(y,(k,E)=>N?.(k,E),()=>"Recursion Available"),o(n,y)};g(b,n=>{a(m).flags.ra&&n(w)})}e(f),o(u,f)};g(Na,u=>{a(m).flags&&u(ua)})}e(X),e(j),T(u=>{x(Z,a(m).type),x(da,u),x(oa,` ${a(m).query??""} `),x(ra,` ${a(m).server??""} `)},[()=>Ea(a(m).timing)]),o(P,j)}),e(F),e(D),e(A);var V=s(A,2);{var O=P=>{var m=Re(),H=s(r(m),2),j=r(H),I=r(j),ia=r(I);S(ia,(t,v)=>N?.(t,v),()=>"Total time for the complete DNS trace");var X=s(ia,2),W=r(X);L(W,{name:"timer",size:"sm"});var G=s(W);e(X),e(I);var Z=s(I,2),J=r(Z);S(J,(t,v)=>N?.(t,v),()=>"Number of DNS queries performed during trace");var da=s(J,2),aa=r(da,!0);e(da),e(Z);var ea=s(Z,2);{var oa=t=>{var v=De(),p=r(v);S(p,(b,w)=>N?.(b,w),()=>"Final authoritative server that provided the answer");var i=s(p,2),_=r(i,!0);e(i),e(v),T(()=>x(_,a(l).summary.finalServer)),o(t,v)};g(ea,t=>{a(l).summary.finalServer&&t(oa)})}var la=s(ea,2);{var wa=t=>{var v=ke(),p=r(v);S(p,(b,w)=>N?.(b,w),()=>"Type of DNS record that was traced");var i=s(p,2),_=r(i,!0);e(i),e(v),T(()=>x(_,a(l).summary.recordType)),o(t,v)};g(la,t=>{a(l).summary.recordType&&t(wa)})}var M=s(la,2);{var na=t=>{var v=qe(),p=r(v);S(p,(b,w)=>N?.(b,w),()=>"Number of DNS resolution hops from root to authoritative");var i=s(p,2),_=r(i,!0);e(i),e(v),T(()=>x(_,a(l).summary.totalHops)),o(t,v)};g(M,t=>{a(l).summary.totalHops&&t(na)})}var ra=s(M,2);{var Sa=t=>{var v=Ce(),p=r(v);S(p,(b,w)=>N?.(b,w),()=>"Average response time per DNS query");var i=s(p,2),_=r(i);e(i),e(v),T(()=>x(_,`${a(l).summary.averageLatency??""}ms`)),o(t,v)};g(ra,t=>{a(l).summary.averageLatency&&t(Sa)})}var ca=s(ra,2);{var ma=t=>{var v=Ee(),p=r(v);S(p,(n,y)=>N?.(n,y),()=>"DNSSEC validation status for the final response");var i=s(p,2);let _;var b=r(i);{let n=La(()=>a(l).summary.dnssecValid?"shield-check":"shield-x");L(b,{get name(){return a(n)},size:"sm"})}var w=s(b);e(i),e(v),T(n=>{_=Ca(i,1,"stat-value svelte-123bgah",null,_,n),x(w,` ${a(l).summary.dnssecValid?"Valid":"Not Validated"}`)},[()=>({valid:a(l).summary.dnssecValid,invalid:!a(l).summary.dnssecValid})]),o(t,v)};g(ca,t=>{a(l).summary.dnssecValid!==void 0&&t(ma)})}var _a=s(ca,2);{var Na=t=>
1{var v=ze(),p=r(v);S(p,(n,y)=>N?.(n,y),()=>"Whether the final answer came from an authoritative server");var i=s(p,2);let _;var b=r(i);{let n=La(()=>a(l).summary.authoritativeAnswer?"check-circle":"x-circle");L(b,{get name(){return a(n)},size:"sm"})}var w=s(b);e(i),e(v),T(n=>{_=Ca(i,1,"stat-value svelte-123bgah",null,_,n),x(w,` ${a(l).summary.authoritativeAnswer?"Yes":"No"}`)},[()=>({valid:a(l).summary.authoritativeAnswer,invalid:!a(l).summary.authoritativeAnswer})]),o(t,v)};g(_a,t=>{a(l).summary.authoritativeAnswer!==void 0&&t(Na)})}var ua=s(_a,2);{var u=t=>{var v=Fe(),p=r(v);S(p,(b,w)=>N?.(b,w),()=>"The path taken through different DNS servers");var i=s(p,2),_=r(i,!0);e(i),e(v),T(()=>x(_,a(l).summary.resolverPath)),o(t,v)};g(ua,t=>{a(l).summary.resolverPath&&t(u)})}var f=s(ua,2);{var C=t=>{var v=Pe(),p=r(v);S(p,(b,w)=>N?.(b,w),()=>"The final answer received from the authoritative server");var i=s(p,2),_=r(i,!0);e(i),e(v),T(b=>x(_,b),[()=>Array.isArray(a(l).summary.finalAnswer)?a(l).summary.finalAnswer.join(", "):a(l).summary.finalAnswer]),o(t,v)};g(f,t=>{a(l).summary.finalAnswer&&t(C)})}e(j),e(H),e(m),T(t=>{x(G,` ${t??""}`),x(aa,a(l).summary.queryCount)},[()=>Ea(a(l).summary.totalTime)]),o(P,m)};g(V,P=>{a(l).summary&&P(O)})}o(d,h)};g(Xa,d=>{a(l)&&d(Za)})}e(ga),T(()=>{Q.disabled=a($),va.disabled=a($)}),ie(Q,()=>a(K),d=>z(K,d)),o(ta,ga),se()}ve(["click","change","keydown"]);export{Ue as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.