1import{j as e}from"./vendor-query-skQMsM6X.js";import{r as p,L as I}from"./vendor-react-DyYvSSk1.js";import{H as P,p as j,c as S}from"./index-BGwtrXIa.js";import{b as E,w as N,L as w,C as v,v as y,i as O,X as A,n as L}from"./vendor-ui-CCmu0bzQ.js";import"./vendor-supabase-BfoV2C50.js";const x=[{name:"API RadReport",url:"https://api.radreport.com.br/auth/v1/health",description:"Servidor principal â autenticação, dados, IA",required:!0},{name:"Cloudflare Turnstile",url:"https://challenges.cloudflare.com/turnstile/v0/api.js",description:"Verificação anti-robô (necessária para login)",required:!0,probe:"turnstile-script"},{name:"Cloudflare Edge",url:"https://radreport.com.br/cdn-cgi/trace",description:"Borda Cloudflare (CDN, performance)",required:!0},{name:"Google Accounts",url:"https://accounts.google.com/generate_204",description:"Login com Google (opcional, só se usar)",required:!1},{name:"Google Fonts",url:"https://fonts.googleapis.com/css2?family=Inter",description:"Tipografia (visual, não-crÃtico)",required:!1,probe:"font-link"}],D=`Para liberar o RadReport (plataforma médica de laudos radiológicos) em sua rede corporativa/hospitalar, autorize HTTPS/443 (TCP) para os seguintes domÃnios: 2 3OBRIGATÃRIOS: 4⢠*.radreport.com.br 5⢠challenges.cloudflare.com 6 7OPCIONAIS (recomendados): 8⢠accounts.google.com (login Google) 9⢠fonts.googleapis.com e fonts.gstatic.com (visual) 10 11CATEGORIA: Health and Medicine / Healthcare Technology 12PROVEDOR: Cloudflare (infraestrutura segura, TLS 1.2+, HSTS preload) 13CONFORMIDADE: LGPD (Lei Geral de Proteção de Dados â Brasil) 14 15Nenhum outro domÃnio externo é necessário. Toda comunicação é criptografada.`,$=(a,c=8e3)=>new Promise((m,l)=>{const o=document.createElement("script"),d=window.setTimeout(()=>{o.remove(),l(new Error("timeout"))},c);o.src=a,o.async=!0,o.onload=()=>{window.clearTimeout(d),o.remove(),m()},o.onerror=()=>{window.clearTimeout(d),o.remove(),l(new Error("script-error"))},document.head.appendChild(o)}),q=(a,c=8e3)=>new Promise((m,l)=>{const o=document.createElement("link"),d=window.setTimeout(()=>{o.remove(),l(new Error("timeout"))},c);o.rel="preload",o.as="style",o.href=a,o.onload=()=>{window.clearTimeout(d),o.remove(),m()},o.onerror=()=>{window.clearTimeout(d),o.remove(),l(new Error("link-error"))},document.head.appendChild(o)}),G=async a=>{if(a.probe==="turnstile-script")return $(a.url);if(a.probe==="font-link")return q(a.url);await fetch(a.url,{method:"GET",mode:"no-cors",cache:"no-store",signal:AbortSignal.timeout(8e3)})};function V(){const[a,c]=p.useState({}),[m,l]=p.useState({}),[o,d]=p.useState(null),[u,C]=p.useState(null);p.useEffect(()=>{const s={};x.forEach(r=>s[r.url]="checking"),c(s),x.forEach(async r=>{const t=performance.now();try{await G(r);const n=Math.round(performance.now()-t);c(i=>({...i,[r.url]:"ok"})),l(i=>({...i,[r.url]:n}))}catch{c(n=>({...n,[r.url]:r.required?"fail":"warn"}))}}),fetch("https://radreport.com.br/cdn-cgi/trace",{cache:"no-store",signal:AbortSignal.timeout(5e3)}).then(r=>r.text()).then(r=>{var i,b;const t=(i=r.match(/^ip=(.+)$/m))==null?void 0:i[1],n=(b=r.match(/^colo=(.+)$/m))==null?void 0:b[1];t&&d(t),n&&C(n)}).catch(()=>{})},[]);const g=x.filter(s=>s.required).every(s=>a[s.url]==="ok"),T=Object.values(a).some(s=>s==="warn"),f=Object.values(a).some(s=>s==="checking"),k=()=>{navigator.clipboard.writeText(h()),S.success("Diagnóstico copiado â envie ao seu setor de TI")},h=()=>{const s=[D,"","âââ DIAGNÃSTICO TÃCNICO âââ"];return s.push(`Data: ${new Date().toLocaleString("pt-BR")}`),o&&s.push(`IP público do cliente: ${o}`),u&&s.push(`Cloudflare POP: ${u}`),s.push(`User-Agent: ${navigator.userAgent}`),s.push(""),s.push("Resultado dos testes:"),x.forEach(r=>{const t=a[r.url]??"checking",n=m[r.url],i=t==="ok"?"[OK]":t==="fail"?"[FALHA]":t==="warn"?"[INCONCLUSIVO]":"[...]";s.push(`${i} ${r.name} (${r.url})${n!==void 0?` â ${n}ms`:""}`)}),s.join(` 16`)},R=()=>{const s=encodeURIComponent("Liberação de domÃnio â RadReport (plataforma médica)"),r=encodeURIComponent(h());window.location.href=`mailto:?subject=${s}&body=${r}`};return e.jsxs(e.Fragment,{children:[e.jsxs(P,{children:[e.jsx("title",{children:"Diagnóstico de Rede â RadReport"}),e.jsx("meta",{name:"robots",content:"noindex"})]}),e.jsx("div",{className:"landing-mono min-h-screen bg-[color:var(--mono-bg)] text-mono",children:e.jsxs("div",{className:"max-w-2xl mx-auto px-4 py-12 sm:py-16",children:[e.jsxs(I,{to:"/",className:"inline-flex items-center gap-2 text-sm text-mono-muted hover:text-mono mb-8 transition-colors story-link",children:[e.jsx(E,{className:"h-4 w-4"}),"Voltar ao site"]}),e.jsxs("div",{className:"flex flex-col gap-4 mb-10",children:[e.jsxs("span",{className:"chip-mono w-fit",children:[e.jsx(N,{className:"w-3.5 h-3.5"})," Diagnóstico"]}),e.jsx("h1",{className:"display-lg text-mono",children:"Diagnóstico de Rede"}),e.jsx("p",{className:"body-lg text-mono-muted",children:"Esta página verifica se sua conexão consegue alcançar todos os serviços que o RadReport precisa."})]}),e.jsx("div",{className:`mb-6 p-4 rounded-xl border ${f?"bg-muted/40 border-border":g?"bg-green-500/10 border-green-500/30":"bg-yellow-500/10 border-yellow-500/30"}`,children:f?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(w,{className:"h-5 w-5 animate-spin text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:"Testando conexões..."})]}):g?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(v,{className:"h-5 w-5 text-green-500"}),e.jsx("span",{className:"font-medium",children:T?"Sua rede está liberada. Alguns testes opcionais foram inconclusivos â isso é normal em redes domésticas com bloqueadores.":"Sua rede está liberada â você pode usar o RadReport normalmente."})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx(y,{className:"h-5 w-5 text-yellow-500"}),e.jsx("span",{className:"font-medium",children:"Sua rede está bloqueando alguns serviços essenciais."})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Use o botão abaixo para enviar o diagnóstico ao setor de TI do seu hospital/clÃnica."})]})}),(o||u)&&e.jsxs("div",{className:"mb-6 p-3 rounded-lg border border-border bg-card flex items-start gap-3",children:[e.jsx(N,{className:"h-4 w-4 text-muted-foreground mt-0.5 shrink-0"}),e.jsxs("div",{className:"text-sm flex-1",children:[e.jsx("div",{className:"font-medium mb-1",children:"Sua identificação na rede"}),o&&e.jsxs("div",{className:"text-muted-foreground",children:["IP público: ",e.jsx("code",{className:"text-xs bg-muted/50 px-1.5 py-0.5 rounded",children:o})]}),u&&e.jsxs("div",{className:"text-muted-foreground",children:["Cloudflare POP: ",e.jsx("code",{className:"text-xs bg-muted/50 px-1.5 py-0.5 rounded",children:u})]})]})]}),e.jsx("div",{className:"space-y-2 mb-8",children:x.map(s=>{const r=a[s.url]??"checking",t=m[s.url];return e.jsxs("div",{className:"flex items-start gap-3 p-3 rounded-lg border border-border bg-card",children:[e.jsxs("div",{className:"mt-0.5 shrink-0",children:[r==="checking"&&e.jsx(w,{className:"h-5 w-5 animate-spin text-muted-foreground"}),r==="ok"&&e.jsx(v,{className:"h-5 w-5 text-green-500"}),r==="warn"&&e.jsx(O,{className:"h-5 w-5 text-yellow-500"}),r==="fail"&&e.jsx(y,{className:"h-5 w-5 text-red-500"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-medium",children:s.name}),s.required?e.jsx("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-primary/10 text-primary",children:"Obrigatório"}):e.jsx("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-muted text-muted-foreground",children:"Opcional"}),t!==void 0&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t,"ms"]})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:s.description}),r==="warn"&&e.jsx("p",{className:"text-xs text-yellow-500 mt-1",children:"Teste inconclusivo nesta rede â serviço opcional, não impede o uso."}
16),e.jsx("code",{className:"text-[11px] text-muted-foreground/70 block mt-1 break-all",children:s.url.replace(/^https?:\/\//,"").split("/")[0]})]})]},s.url)})}),e.jsxs("div",{className:"rounded-xl border border-border bg-card p-4 sm:p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2 flex-wrap",children:[e.jsx("h2",{className:"font-semibold",children:"Mensagem pronta para o setor de TI"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(j,{size:"sm",variant:"outline",onClick:k,children:[e.jsx(A,{className:"h-3.5 w-3.5 mr-1.5"}),"Copiar"]}),e.jsxs(j,{size:"sm",onClick:R,children:[e.jsx(L,{className:"h-3.5 w-3.5 mr-1.5"}),"Enviar por email"]})]})]}),e.jsx("pre",{className:"text-xs sm:text-sm text-muted-foreground whitespace-pre-wrap font-mono bg-muted/30 p-3 rounded-lg overflow-x-auto",children:h()})]}),e.jsx("div",{className:"mt-8 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:"Página de diagnóstico independente â funciona mesmo se o servidor principal estiver bloqueado."})})]})})]})}export{V as default};
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.