tokentracker-cli 0.25.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard/dist/assets/{ActivityHeatmap-CiilYEqW.js → ActivityHeatmap-CB0rCGvm.js} +1 -1
- package/dashboard/dist/assets/{Card-BkDHn179.js → Card-BfKA33l_.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-BwTkSsim.js → DashboardPage-u0vbeset.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-DX8aCjtt.js → DevicePage-9mF2GYDM.js} +1 -1
- package/dashboard/dist/assets/{DialogTitle-DH5VFL8l.js → DialogTitle-BilvePW_.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-CcubhRKW.js → FadeIn-DIUOdWDR.js} +1 -1
- package/dashboard/dist/assets/HeaderGithubStar-jwgY8DT_.js +1 -0
- package/dashboard/dist/assets/{IpCheckPage-BcHkEcE7.js → IpCheckPage-BAJ9oJk5.js} +4 -4
- package/dashboard/dist/assets/{LandingPage-Bnqs_k3p.js → LandingPage-Bi7T_UG3.js} +165 -165
- package/dashboard/dist/assets/LeaderboardAvatar-DK4zB40R.js +1 -0
- package/dashboard/dist/assets/LeaderboardPage-BMLXmGUV.js +6 -0
- package/dashboard/dist/assets/LeaderboardProfileModal-DgDySCa4.js +32 -0
- package/dashboard/dist/assets/LeaderboardProfilePage-BoI-B3yY.js +1 -0
- package/dashboard/dist/assets/LimitsPage-DFntRPF-.js +2 -0
- package/dashboard/dist/assets/LocalOnlyNotice-kpOEyGcQ.js +1 -0
- package/dashboard/dist/assets/{LoginPage-1M5RskQE.js → LoginPage-J437b8fG.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-BzS6tVnf.js → PopoverPopup-CETYhElJ.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-C8nYnvzP.js → ProviderIcon-GLSK86ul.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-DjoUqFA-.js → SettingsPage-Ce-EIZCo.js} +1 -1
- package/dashboard/dist/assets/SkillsPage-BCg2tPe8.js +1 -0
- package/dashboard/dist/assets/WidgetsPage-B8eoNh1B.js +1 -0
- package/dashboard/dist/assets/{WrappedPage-BxuVlF3C.js → WrappedPage-57yACpcn.js} +1 -1
- package/dashboard/dist/assets/arrow-up-right-kKTEYa77.js +1 -0
- package/dashboard/dist/assets/check-BwEiSCgu.js +1 -0
- package/dashboard/dist/assets/{chevron-down-BS2aEE_V.js → chevron-down-CYErdTR9.js} +1 -1
- package/dashboard/dist/assets/{download-DtsgF1HV.js → download-CSjtsR81.js} +1 -1
- package/dashboard/dist/assets/{info-TG4KyASc.js → info-Y0vVD3FZ.js} +1 -1
- package/dashboard/dist/assets/{main-CR7sCH5H.js → main-CrjJx0KR.js} +22 -17
- package/dashboard/dist/assets/main-CvieAP2Q.css +1 -0
- package/dashboard/dist/assets/{use-limits-display-prefs-DgRoQmhK.js → use-limits-display-prefs-Csc65P9G.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-BVWj6xAN.js → use-native-settings-BeIgnIwx.js} +1 -1
- package/dashboard/dist/assets/{use-reduced-motion-BsyM6Mgz.js → use-reduced-motion-DZ7zH0oK.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-KGue9hvK.js → use-usage-limits-ClpyKC2F.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-BLJima5w.js → useCurrency-M999w0v1.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/share.html +2 -2
- package/package.json +1 -1
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/dashboard/dist/assets/LeaderboardPage-DV6K7KSV.js +0 -6
- package/dashboard/dist/assets/LeaderboardProfileModal-CnbpLjG_.js +0 -1
- package/dashboard/dist/assets/LimitsPage-DO53157-.js +0 -2
- package/dashboard/dist/assets/SkillsPage-CvOf-_li.js +0 -1
- package/dashboard/dist/assets/WidgetsPage-Cc5PRPDd.js +0 -1
- package/dashboard/dist/assets/check-r6BrjxcR.js +0 -1
- package/dashboard/dist/assets/main-aCzF4R9D.css +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{r as ce,B as t,C as n}from"./main-
|
|
1
|
+
import{r as ce,B as t,C as n}from"./main-CrjJx0KR.js";const Ge=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),$=Ge?"/proxy/ipcheck":"https://ip.net.coffee",le="claude_ip_history",be=6,Ue=["CN","HK","MO","RU","KP","IR","SY","CU","BY","VE"],ze={CN:"Asia/Shanghai",TW:"Asia/Taipei",HK:"Asia/Hong_Kong",MO:"Asia/Macau",JP:"Asia/Tokyo",KR:"Asia/Seoul",SG:"Asia/Singapore",MY:"Asia/Kuala_Lumpur",TH:"Asia/Bangkok",VN:"Asia/Ho_Chi_Minh",ID:"Asia/Jakarta",PH:"Asia/Manila",IN:"Asia/Kolkata",PK:"Asia/Karachi",BD:"Asia/Dhaka",IR:"Asia/Tehran",IL:"Asia/Jerusalem",AE:"Asia/Dubai",SA:"Asia/Riyadh",TR:"Europe/Istanbul",RU:"Europe/Moscow",UA:"Europe/Kyiv",GB:"Europe/London",IE:"Europe/Dublin",FR:"Europe/Paris",DE:"Europe/Berlin",IT:"Europe/Rome",ES:"Europe/Madrid",PT:"Europe/Lisbon",NL:"Europe/Amsterdam",BE:"Europe/Brussels",CH:"Europe/Zurich",AT:"Europe/Vienna",SE:"Europe/Stockholm",NO:"Europe/Oslo",DK:"Europe/Copenhagen",FI:"Europe/Helsinki",PL:"Europe/Warsaw",CZ:"Europe/Prague",GR:"Europe/Athens",RO:"Europe/Bucharest",US:"America/Los_Angeles",CA:"America/Toronto",MX:"America/Mexico_City",BR:"America/Sao_Paulo",AR:"America/Argentina/Buenos_Aires",CL:"America/Santiago",AU:"Australia/Sydney",NZ:"Pacific/Auckland",ZA:"Africa/Johannesburg",EG:"Africa/Cairo",NG:"Africa/Lagos",KE:"Africa/Nairobi"},We={CN:["zh"],TW:["zh"],HK:["zh","en"],MO:["zh","en"],JP:["ja"],KR:["ko"],TH:["th"],VN:["vi"],SG:["en","zh","ms","ta"],MY:["ms","en","zh","ta"],ID:["id","en"],PH:["en","tl","fil"],IN:["en","hi"],PK:["ur","en"],BD:["bn","en"],LK:["si","ta","en"],NP:["ne","en"],US:["en"],GB:["en"],IE:["en","ga"],AU:["en"],NZ:["en","mi"],CA:["en","fr"],DE:["de"],AT:["de"],CH:["de","fr","it","rm"],BE:["nl","fr","de"],FR:["fr"],IT:["it"],ES:["es","ca","gl","eu"],PT:["pt"],NL:["nl","fy"],LU:["lb","fr","de"],SE:["sv"],NO:["no","nb","nn"],DK:["da"],FI:["fi","sv"],IS:["is","en"],PL:["pl"],CZ:["cs"],SK:["sk"],HU:["hu"],RO:["ro"],BG:["bg"],GR:["el"],RU:["ru"],UA:["uk","ru"],BY:["be","ru"],TR:["tr"],IL:["he","ar","en"],SA:["ar"],AE:["ar","en"],EG:["ar"],IR:["fa"],IQ:["ar","ku"],ZA:["en","af","zu","xh"],KE:["en","sw"],NG:["en"],ET:["am","en"],BR:["pt"],AR:["es"],MX:["es"],CL:["es"],CO:["es"],PE:["es"],VE:["es"]},Be={jp:"Japan",tw:"Taiwan",hk:"Hong Kong",sg:"Singapore",us:"United States",de:"Germany",kr:"South Korea",fr:"France",nl:"Netherlands",gb:"United Kingdom",au:"Australia",ca:"Canada",br:"Brazil",in:"India"};function Z(d){return!!d&&d.includes(":")}function Ke(d){return!Z(d)||d.length<=20?d:d.substring(0,18)+"..."}function v(d){return d==null?"":String(d).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function W(d){if(!d||!/^[a-zA-Z]{2}$/.test(d))return"";const k=d.toLowerCase();return`<img src="${k==="cn"?`${$}/favicons/cn.png`:k==="tw"?`${$}/favicons/flags/tw.png`:`${$}/favicons/flags/${k}.png`}" alt="${k}" class="inline-block h-4 w-auto rounded-sm align-[-2px]" onerror="this.onerror=null;this.style.display='none'">`}function Fe(d){if(!d)return"";const k=String(d).trim();if(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(k)){const _=k.split(".");return _[0]+"."+_[1]+".*.*"}if(k.includes("…")){const _=k.lastIndexOf("…");return k.substring(0,_+1)+"*"}if(k.includes(":")){const _=k.split(":");if(_.length>=2)return _[0]+":"+_[1]+":*"}return k}function Ve(d){if(!d)return null;try{const _=new Intl.DateTimeFormat("en-US",{timeZone:d,timeZoneName:"longOffset"}).formatToParts(new Date).find(J=>J.type==="timeZoneName");if(!_)return null;if(_.value==="GMT"||_.value==="UTC")return 0;const N=_.value.match(/GMT([+-])(\d{1,2}):?(\d{0,2})/);return N?(N[1]==="+"?1:-1)*(parseInt(N[2],10)*60+parseInt(N[3]||"0",10)):null}catch{return null}}function Ye(d){if(d==null)return"";const k=d>=0?"+":"-",_=Math.abs(d),N=Math.floor(_/60),O=_%60;return"UTC"+k+N+(O?":"+String(O).padStart(2,"0"):"")}const we={safe:"bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",warn:"bg-amber-50 text-amber-800 dark:bg-amber-500/15 dark:text-amber-300",danger:"bg-red-50 text-red-700 dark:bg-red-500/15 dark:text-red-300",info:"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300",neutral:"bg-oai-gray-100 text-oai-gray-600 dark:bg-oai-gray-800 dark:text-oai-gray-400"};function qe(){const d=ce.useRef(null),[k,_]=ce.useState(!1);ce.useEffect(()=>{const L=d.current;if(!L)return;const b=a=>L.querySelector(`#${a}`);let ae=!1;const e={unknown:t("ipcheck.common.unknown"),failed:t("ipcheck.ip.failed"),regionAccessible:t("ipcheck.trust.region.accessible"),regionWarnTitle:a=>t("ipcheck.trust.region_warn.title",{region:a}),regionWarnBody:t("ipcheck.trust.region_warn.body"),regionRestrictedText:t("ipcheck.trust.text.restricted"),noData:t("ipcheck.trust.no_data"),noIp:t("ipcheck.trust.no_ip"),noScore:t("ipcheck.trust.no_score"),score:{pristine:t("ipcheck.trust.label.pristine"),clean:t("ipcheck.trust.label.clean"),good:t("ipcheck.trust.label.good"),neutral:t("ipcheck.trust.label.neutral"),suspicious:t("ipcheck.trust.label.suspicious"),unreachable:t("ipcheck.trust.label.unreachable")},scoreText:{excellent:t("ipcheck.trust.text.excellent"),great:t("ipcheck.trust.text.great"),minor:t("ipcheck.trust.text.minor"),moderate:t("ipcheck.trust.text.moderate"),severe:t("ipcheck.trust.text.severe")},propsRegion:t("ipcheck.props.region"),propsCity:t("ipcheck.props.city"),propsType:t("ipcheck.props.type"),propsAsn:t("ipcheck.props.asn"),propsOrg:t("ipcheck.props.org"),propsResidential:t("ipcheck.props.residential"),propsDatacenter:t("ipcheck.props.datacenter"),secVpn:t("ipcheck.security.vpn"),secProxy:t("ipcheck.security.proxy"),secTor:t("ipcheck.security.tor"),secCrawler:t("ipcheck.security.crawler"),secAbuser:t("ipcheck.security.abuser"),secProxyFlag:t("ipcheck.security.proxy_flag"),secCrawlerYes:t("ipcheck.security.crawler_yes"),secCrawlerNo:t("ipcheck.security.crawler_no"),secAbuserYes:t("ipcheck.security.abuser_yes"),secAbuserNo:t("ipcheck.security.abuser_no"),secClean:t("ipcheck.security.clean"),availSvc:t("ipcheck.avail.svc_row"),availLat:{normal:t("ipcheck.avail.latency.normal"),good:t("ipcheck.avail.latency.good"),slow:t("ipcheck.avail.latency.slow"),unreachable:t("ipcheck.avail.latency.unreachable")},availSvcStatus:{none:t("ipcheck.avail.svc.none"),minor:t("ipcheck.avail.svc.minor"),major:t("ipcheck.avail.svc.major"),critical:t("ipcheck.avail.svc.critical"),maintenance:t("ipcheck.avail.svc.maintenance"),other:t("ipcheck.avail.svc.other")},dnsStatus:t("ipcheck.dns.status"),dnsOutlet:t("ipcheck.dns.outlet"),dnsOutletIp:t("ipcheck.dns.outlet_ip"),dnsIsp:t("ipcheck.dns.isp"),dnsLeaked:t("ipcheck.dns.leaked"),dnsNoLeak:t("ipcheck.dns.no_leak"),dnsEncrypted:t("ipcheck.dns.encrypted"),dnsCnTag:t("ipcheck.dns.cn_tag"),udpStatus:t("ipcheck.udp.status"),udpOutlet:t("ipcheck.udp.outlet"),udpOutletIp:t("ipcheck.udp.outlet_ip"),udpOrigin:t("ipcheck.udp.origin"),udpDisabled:t("ipcheck.udp.disabled"),udpNoLeak:t("ipcheck.udp.no_leak"),udpLeaked:t("ipcheck.udp.leaked"),udpAnomaly:t("ipcheck.udp.anomaly"),devTz:t("ipcheck.device.tz"),devLang:t("ipcheck.device.lang"),devOs:t("ipcheck.device.os"),devTouch:t("ipcheck.device.touch"),devNet:t("ipcheck.device.net"),devDnt:t("ipcheck.device.dnt"),devWebglRender:t("ipcheck.device.webgl_render"),devCanvasFp:t("ipcheck.device.canvas_fp"),devWebglFp:t("ipcheck.device.webgl_fp"),devMatch:t("ipcheck.device.match"),devMismatch:t("ipcheck.device.mismatch"),devLocal:t("ipcheck.device.local"),devEstSuffix:t("ipcheck.device.estimate_suffix"),devDiffEqual:t("ipcheck.device.diff_equal"),devDiffAhead:a=>t("ipcheck.device.diff_ahead",{h:a}),devDiffBehind:a=>t("ipcheck.device.diff_behind",{h:a}),devLangExpected:t("ipcheck.device.lang_expected"),devTouchYes:t("ipcheck.device.touch_yes"),devTouchNo:t("ipcheck.device.touch_no"),devDntOn:t("ipcheck.device.dnt_on"),devDntOff:t("ipcheck.device.dnt_off"),devDntUnset:t("ipcheck.device.dnt_unset"),devNetUnsupported:t("ipcheck.device.net_unsupported"),devUnsupported:t("ipcheck.device.unsupported"),histEmpty:t("ipcheck.history.empty"),histCurrent:t("ipcheck.history.current"),histLoading:t("ipcheck.ip.loading")};function g(a,i="neutral"){return`<span class="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${we[i]||we.neutral}">${a}</span>`}function q(a,i,s){return a===!0?g(i,"danger"):a===!1?g(s,"safe"):g(e.unknown,"neutral")}function ue(a){if(!a)return`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`;const i=v(a);return Z(a)?`<span class="ip-mask-target truncate" title="${i}">${v(Ke(a))}</span>`:`<span class="ip-mask-target">${i}</span>`}function B(a){return a?`<span class="ip-link">${ue(a)}</span>`:`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`}function f(a,i){return`<div class="flex items-center justify-between py-3 gap-3">
|
|
2
2
|
<span class="text-sm text-oai-gray-500 dark:text-oai-gray-400 shrink-0">${a}</span>
|
|
3
3
|
<span class="text-sm font-medium text-oai-black dark:text-white text-right min-w-0">${i===void 0?'<span class="block h-3 w-20 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></span>':i}</span>
|
|
4
|
-
</div>`}function Y(a){return a.map(i=>f(i,void 0)).join("")}function ne(){return'<div class="h-7 w-44 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function ie(){return'<div class="h-3 w-52 mt-2 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function
|
|
5
|
-
`).map(u=>u.split("=")));return{ip:s.ip||null,loc:s.loc?.toLowerCase()||null}}catch{return null}}async function $e(){try{const s=(await(await fetch("https://2026.ip138.com/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}try{const s=(await(await fetch("https://my.ip.cn/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}return null}async function Ne(a,i,s,u){const p=b(a),o=b(i);if(!(!p||!o)){if(!s){p.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`,o.textContent="";return}Z(s)&&se(),p.innerHTML=`${W(u)+" "}${B(s)}`;try{const l=await fetch(`${$}/api/geoip/${s}`,{signal:AbortSignal.timeout(5e3)});if(l.ok){const h=await l.json(),r=[h.country,h.region,h.city,h.isp].filter(Boolean).join(" · "),m=h.country_code||u||"";p.innerHTML=`${W(m)} ${B(s)}`,Q(i,r)}}catch{}}}function je(){const a=w.ippure,i=w.claudeRisk,s=w.claudeGeo,u=w.ipapis,p=i?.asn||a?.asn||"",o=i?.asOrganization||a?.asOrganization||u?.company?.name||"",l=pe(),h=!!(i&&i.ip);let r,m=null;h?l?(r=0,m=e.regionRestrictedText):r=typeof i.trust_score=="number"?i.trust_score:null:r=null;const C=b("gaugePointer"),c=b("gaugeScore"),H=b("gaugeText");if(r===null)c.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">—</span> ${g(e.noData,"neutral")}`,C.style.left="0%",C.style.opacity="0.3",H.textContent=h?e.noScore:e.noIp;else{const S=l?{text:e.score.unreachable,variant:"danger"}:Te(r),L=r>=50?"text-emerald-500":r>=25?"text-amber-500":"text-red-500";c.innerHTML=`<span class="${L}">${r}</span> ${g(S.text,S.variant)}`,C.style.left=Math.min(r,100)+"%",C.style.opacity="1",H.textContent=m||(r>=95?e.scoreText.excellent:r>=80?e.scoreText.great:r>=50?e.scoreText.minor:r>=25?e.scoreText.moderate:e.scoreText.severe)}const x=b("statusDotClaude");if(x){let S,L;r===null?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"):l||r<25?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-red-500"):r<50?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-amber-500"):(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-emerald-500"),x.innerHTML=`<span class="${S}"></span><span class="${L}"></span>`}const I=b("regionWarn");I&&(l?(I.innerHTML=`<span class="font-medium">⚠️ ${e.regionWarnTitle(l)}</span><br><span class="text-[13px] font-normal mt-1 block opacity-90">${e.regionWarnBody}</span>`,I.classList.remove("hidden")):I.classList.add("hidden"));const D=b("claudeRegionSupportRow"),K=b("claudeRegionSupport");if(D&&K)if(l)D.classList.add("hidden");else{const S=!!(i&&i.ip),L=!!(i&&i.countryCode);K.innerHTML=!S||!L?g(e.unknown,"neutral"):g(e.regionAccessible,"safe"),D.classList.remove("hidden")}const G=i?.isResidential??(u?!u.is_datacenter:null),R=u?.company?.type||"",U=s?.country||i?.country||"",z=s?.city||i?.city||"";let _;if(G===!0?_=g(e.propsResidential,"safe"):G===!1?_=g(e.propsDatacenter,"warn"):_=g(e.unknown,"neutral"),R){const L={hosting:"Hosting",isp:"ISP",business:"Business",education:"Education"}[R]||v(R);_+=` <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${L}</span>`}b("propsContent").innerHTML=f(e.propsRegion,U?v(U):g(e.unknown,"neutral"))+f(e.propsCity,z?v(z):g(e.unknown,"neutral"))+f(e.propsType,_)+f(e.propsAsn,p?`<span class="font-mono tabular-nums">AS${v(p)}</span>`:g(e.unknown,"neutral"))+f(e.propsOrg,o?v(o):g(e.unknown,"neutral"));const j=u||{};b("securityContent").innerHTML=f(e.secVpn,q(j.is_vpn,e.secVpn,e.secClean))+f(e.secProxy,q(j.is_proxy,e.secProxyFlag,e.secClean))+f(e.secTor,q(j.is_tor,e.secTor,e.secClean))+f(e.secCrawler,q(j.is_crawler,e.secCrawlerYes,e.secCrawlerNo))+f(e.secAbuser,q(j.is_abuser,e.secAbuserYes,e.secAbuserNo))}async function Ee(){const a=b("dnsLeakContent");if(!a)return;const i=Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2);for(let r=1;r<=2;r++)await new Promise(m=>{const C=new Image,c=setTimeout(m,2e3);C.onload=C.onerror=()=>{clearTimeout(c),m()},C.src=`http://${i}-${r}.d.ip.net.coffee/pixel.gif?_=${Date.now()}`});await new Promise(r=>setTimeout(r,1500));let s=[];for(let r=0;r<2;r++){try{const m=await fetch(`${$}/api/dns/result/${i}`,{signal:AbortSignal.timeout(3e3)});if(m.ok&&(s=(await m.json()).dns_servers||[],s.length>0))break}catch{}r===0&&await new Promise(m=>setTimeout(m,1500))}if(s.length===0){a.innerHTML=f(e.dnsStatus,g(e.dnsEncrypted,"safe"));return}const u=(w.claudeRisk?.country||"").toLowerCase(),p=u.includes("china")||u.includes("中国");let o=null,l=!1;for(const r of s){let m=null;try{const x=await fetch(`${$}/api/geoip/${r}`,{signal:AbortSignal.timeout(3e3)});x.ok&&(m=await x.json())}catch{}const C=m?.country_code||"",c=m?.isp||"";if(C==="cn"&&!p){o={ip:r,cc:C,isp:c,leaked:!0},l=!0;break}o||(o={ip:r,cc:C,isp:c,leaked:!1})}let h=f(e.dnsStatus,l?g(e.dnsLeaked,"warn"):g(e.dnsNoLeak,"safe"));if(o){const r=`${W(o.cc)} <span class="ip-mask-target font-mono tabular-nums">${v(o.ip)}</span>${o.leaked?" "+g(e.dnsCnTag,"warn"):""}`;h+=f(e.dnsOutlet,r),o.isp&&(h+=f(e.dnsIsp,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal truncate inline-block max-w-[12rem] align-bottom">${v(o.isp)}</span>`))}a.innerHTML=h}async function Me(){const a=b("udpLeakContent");if(!a)return;const i=new Set;try{const x=new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.cloudflare.com:3478"}]});x.createDataChannel("");const I=await x.createOffer();await x.setLocalDescription(I),await new Promise(D=>{const K=setTimeout(()=>{x.close(),D()},5e3);x.onicecandidate=G=>{if(!G.candidate){clearTimeout(K),x.close(),D();return}const R=G.candidate.candidate.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/);if(R){const z=R[0];!z.startsWith("0.")&&!z.startsWith("127.")&&z!=="0.0.0.0"&&i.add(z)}const U=G.candidate.candidate.match(/([a-f0-9]{1,4}:){2,7}[a-f0-9]{1,4}/i);U&&i.add(U[0])}})}catch{}const s=w.claudeRisk?.ip||"",u=[...i],p=u.filter(x=>!Z(x)&&!x.startsWith("192.168.")&&!x.startsWith("10.")&&!x.startsWith("172.")&&!x.startsWith("198.18.")&&!x.startsWith("198.19.")&&!x.startsWith("100.64.")&&!x.startsWith("127.")&&!x.startsWith("0."));if(p.length===0&&u.length===0){a.innerHTML=f(e.udpStatus,g(e.udpDisabled,"safe"));return}if(p.length===0){a.innerHTML=f(e.udpStatus,g(e.udpNoLeak,"safe"));return}let o=p.find(x=>x===s)||p[0];const l=new Set(p).size>1,h=o===s,r=l&&!h;let m=f(e.udpStatus,r?g(e.udpLeaked,"warn"):g(e.udpNoLeak,"safe")),C="",c="";try{const x=await fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)});if(x.ok){const I=await x.json();C=I.country_code||"",c=I.country||""}}catch{}const H=`${W(C)} <span class="font-mono tabular-nums">${ue(o)}</span>${h?"":r?" "+g(e.udpAnomaly,"warn"):""}`;m+=f(e.udpOutlet,H),c&&(m+=f(e.udpOrigin,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${v(c)}</span>`)),a.innerHTML=m}async function me(){const a=b("claudeAvailContent");if(!a)return;a.innerHTML=Y(["claude.ai","anthropic.com"]);const i=[{name:"claude.ai",url:"https://claude.ai/cdn-cgi/trace"},{name:"anthropic.com",url:"https://www.anthropic.com/favicon.ico"}],s=await Promise.allSettled(i.map(async o=>{const l=performance.now();try{return await fetch(o.url,{mode:"no-cors",signal:AbortSignal.timeout(6e3)}),{name:o.name,ms:Math.round(performance.now()-l),ok:!0}}catch{return{name:o.name,ms:-1,ok:!1}}})),u=pe();let p="";s.forEach(o=>{const l=o.value;if(u)p+=f(l.name,g(e.availLat.unreachable,"danger"));else if(l.ok){const h=l.ms<250?"safe":l.ms<500?"info":"warn",r=l.ms<250?e.availLat.normal:l.ms<500?e.availLat.good:e.availLat.slow;p+=f(l.name,`${g(r,h)} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${l.ms}ms</span>`)}else p+=f(l.name,g(e.availLat.unreachable,"danger"))});try{const o=await fetch(`${$}/claude/status.json`,{signal:AbortSignal.timeout(3e3)});if(o.ok){const h=(await o.json()).overall_indicator||"none",r=e.availSvcStatus[h]||e.availSvcStatus.other,m={none:"safe",minor:"warn",major:"danger",critical:"danger",maintenance:"warn"};p+=f(e.availSvc,g(r,m[h]||"warn"))}}catch{}a.innerHTML=p}A.__detectClaudeAvail=me;function Ie(){const a=Intl.DateTimeFormat().resolvedOptions().timeZone||e.unknown,i=-(new Date().getTimezoneOffset()/60),s="UTC"+(i>=0?"+":"")+i,u=w.claudeRisk,p=(u?.countryCode||"").toUpperCase(),o=u?.timezone||Ue[p]||"",l=!!u?.timezone,h=Fe(o),r=-new Date().getTimezoneOffset();let m=null;o&&h!=null&&(m=Math.abs(h-r)<=60);let C;const c=v(a),H=v(o);if(m===!0)C=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${c} (${s})</span>`;else if(m===!1){const E=Ve(h),y=Math.round((h-r)/60),M=y===0?e.devDiffEqual:y>0?e.devDiffAhead(y):e.devDiffBehind(-y),F=l?H:`${H} ${e.devEstSuffix}`;C=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${c} (${s})<br>Claude ${F} (${E}) · ${M}</span>`}else C=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${c} (${s})</span>`;const x=navigator.languages||[navigator.language],I=x.join(", ")||e.unknown,D=(x[0]||"").split("-")[0].toLowerCase(),K=ze[p]||[],G=D&&K.length?K.includes(D):null;let R;const U=v(I),z=v(K.join(" / "));G===!0?R=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${U}</span>`:G===!1?R=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${U}<br>${e.devLangExpected} ${z}</span>`:R=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${U}</span>`;const _=navigator.userAgent;let j=e.unknown,S=e.unknown;_.includes("Windows")?j="Windows":_.includes("Mac OS")?j="macOS":_.includes("iPhone")||_.includes("iPad")?j="iOS":_.includes("Android")?j="Android":_.includes("Linux")&&(j="Linux"),_.includes("Edg/")?S="Edge "+(_.match(/Edg\/([\d.]+)/)||[])[1]:_.includes("Chrome/")?S="Chrome "+(_.match(/Chrome\/([\d.]+)/)||[])[1]:_.includes("Firefox/")?S="Firefox "+(_.match(/Firefox\/([\d.]+)/)||[])[1]:_.includes("Safari/")&&!_.includes("Chrome")&&(S="Safari "+(_.match(/Version\/([\d.]+)/)||[])[1]);let L=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info");M&&(L=y.getParameter(M.UNMASKED_RENDERER_WEBGL))}}catch{}let ye=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info"),F=M?y.getParameter(M.UNMASKED_VENDOR_WEBGL):"",X=M?y.getParameter(M.UNMASKED_RENDERER_WEBGL):"",ve=F+"~"+X+"~"+y.getParameter(y.VERSION)+"~"+y.getParameter(y.SHADING_LANGUAGE_VERSION);let te=0;for(let oe=0;oe<ve.length;oe++)te=(te<<5)-te+ve.charCodeAt(oe)|0;ye=(te>>>0).toString(16).toUpperCase()}}catch{}let ke=e.devUnsupported;try{const E=document.createElement("canvas");E.width=200,E.height=50;const y=E.getContext("2d");y.textBaseline="top",y.font="14px Arial",y.fillStyle="#f60",y.fillRect(50,0,100,50),y.fillStyle="#069",y.fillText("net.coffee",2,15),y.fillStyle="rgba(102,204,0,0.7)",y.fillText("canvas fp",4,30);const M=E.toDataURL();let F=0;for(let X=0;X<M.length;X++)F=(F<<5)-F+M.charCodeAt(X)|0;ke=(F>>>0).toString(16).toUpperCase()}catch{}const Oe=navigator.maxTouchPoints>0,re=navigator.connection||navigator.mozConnection||navigator.webkitConnection,Pe=re?re.effectiveType||re.type||e.unknown:e.devNetUnsupported,De=navigator.doNotTrack==="1"?e.devDntOn:navigator.doNotTrack==="0"?e.devDntOff:e.devDntUnset;b("deviceContent").innerHTML=f(e.devTz,C)+f(e.devLang,R)+f(e.devOs,`${v(j)} <span class="text-oai-gray-400 dark:text-oai-gray-500">/</span> ${v(S)}`)+f(e.devTouch,Oe?g(e.devTouchYes,"info"):g(e.devTouchNo,"neutral"))+f(e.devNet,`<span class="font-mono tabular-nums uppercase">${v(Pe)}</span>`)+f(e.devDnt,v(De))+f(e.devWebglRender,`<span class="text-xs font-normal text-oai-gray-600 dark:text-oai-gray-400 break-all">${v(L)}</span>`)+f(e.devCanvasFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ke)}</span>`)+f(e.devWebglFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ye)}</span>`)}function xe(){try{return JSON.parse(localStorage.getItem(le))||[]}catch{return[]}}function Re(){const a=w.claudeRisk?.ip||"",i=(w.claudeRisk?.countryCode||"").toLowerCase(),s=w.claudeRisk?.city||"";if(!a){ee();return}const u=xe(),p=new Date,o={ip:a,cc:i,geo:s,time:p.toISOString()};if(u.length>0){const l=u[0],h=(p-new Date(l.time))/(1e3*60*60);if(l.ip===a&&h<24){ee();return}}u.unshift(o),u.length>be&&(u.length=be),localStorage.setItem(le,JSON.stringify(u)),ee()}function ee(){const a=b("ipHistoryContent");if(!a)return;const i=xe();if(i.length===0){a.innerHTML=`<span class="text-sm text-oai-gray-500 dark:text-oai-gray-400">${e.histEmpty}</span>`;return}a.innerHTML=`<ul class="divide-y divide-oai-gray-100 dark:divide-oai-gray-800">${i.map((s,u)=>{const p=new Date(s.time),o=`${p.getMonth()+1}-${p.getDate()} ${String(p.getHours()).padStart(2,"0")}:${String(p.getMinutes()).padStart(2,"0")}`,l=u===0;return`<li class="flex items-center justify-between py-3 gap-4">
|
|
4
|
+
</div>`}function Y(a){return a.map(i=>f(i,void 0)).join("")}function ne(){return'<div class="h-7 w-44 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function ie(){return'<div class="h-3 w-52 mt-2 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function _e(a){return a>=95?{text:e.score.pristine,variant:"safe"}:a>=80?{text:e.score.clean,variant:"safe"}:a>=50?{text:e.score.good,variant:"info"}:a>=25?{text:e.score.neutral,variant:"warn"}:{text:e.score.suspicious,variant:"danger"}}const w={ip:null,ippure:null,ipapis:null,claudeGeo:null,claudeRisk:null,cfGeo:""};function pe(){const a=(w.claudeRisk?.countryCode||"").toUpperCase();return!a||!Ue.includes(a)?null:t(`ipcheck.region.${a}`)}function se(){const a=b("ipv6Warn");a&&a.classList.remove("hidden")}function Q(a,i){const s=b(a);s&&(s.textContent=i||"",s.classList.remove("animate-pulse","bg-oai-gray-200","dark:bg-oai-gray-800","w-52","h-3","mt-2","rounded"))}const Te={ipAddrCN:ne(),ipGeoCN:ie(),ipAddr:ne(),ipGeo:ie(),ipAddrClaude:ne(),ipGeoClaude:ie(),propsContent:Y([e.propsRegion,e.propsCity,e.propsType,e.propsAsn,e.propsOrg]),securityContent:Y([e.secVpn,e.secProxy,e.secTor,e.secCrawler,e.secAbuser]),claudeAvailContent:Y(["claude.ai","anthropic.com"]),dnsLeakContent:Y([e.dnsStatus,e.dnsOutletIp]),udpLeakContent:Y([e.udpStatus,e.udpOutletIp]),deviceContent:Y([e.devTz,e.devLang,e.devOs,e.devTouch,e.devNet,e.devDnt,e.devWebglRender,e.devCanvasFp]),ipHistoryContent:`<span class="text-sm text-oai-gray-400 dark:text-oai-gray-500">${e.histLoading}</span>`};Object.entries(Te).forEach(([a,i])=>{const s=b(a);s&&(s.innerHTML=i)});let ge=!1;function Se(a){if(!a)return;a.dataset.realText||(a.dataset.realText=(a.textContent||"").trim());const i=a.dataset.realText,s=ge?Fe(i):i;a.textContent!==s&&(a.textContent=s)}function fe(){L.querySelectorAll(".ip-link, .ip-mask-target").forEach(Se)}const he=new MutationObserver(()=>requestAnimationFrame(fe));["ipHeroCN","ipHero","ipHeroClaude","ipHistoryContent","dnsLeakContent","udpLeakContent"].forEach(a=>{const i=b(a);i&&he.observe(i,{childList:!0,subtree:!0})}),L.__setMaskOn=a=>{ge=!!a,fe()};async function Le(){try{const s=(await(await fetch("https://1.1.1.1/cdn-cgi/trace",{signal:AbortSignal.timeout(5e3)})).text()).match(/ip=([^\n]+)/);s&&(w.ip=s[1].trim())}catch{}}async function Ae(){try{const i=await(await fetch("https://claude.ai/cdn-cgi/trace",{cache:"no-store",signal:AbortSignal.timeout(8e3)})).text(),s=Object.fromEntries(i.trim().split(`
|
|
5
|
+
`).map(u=>u.split("=")));return{ip:s.ip||null,loc:s.loc?.toLowerCase()||null}}catch{return null}}async function $e(){try{const s=(await(await fetch("https://2026.ip138.com/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}try{const s=(await(await fetch("https://my.ip.cn/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}return null}async function Ne(a,i,s,u){const p=b(a),o=b(i);if(!(!p||!o)){if(!s){p.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`,o.textContent="";return}Z(s)&&se(),p.innerHTML=`${W(u)+" "}${B(s)}`;try{const l=await fetch(`${$}/api/geoip/${s}`,{signal:AbortSignal.timeout(5e3)});if(l.ok){const h=await l.json(),r=[h.country,h.region,h.city,h.isp].filter(Boolean).join(" · "),m=h.country_code||u||"";p.innerHTML=`${W(m)} ${B(s)}`,Q(i,r)}}catch{}}}function je(){const a=w.ippure,i=w.claudeRisk,s=w.claudeGeo,u=w.ipapis,p=i?.asn||a?.asn||"",o=i?.asOrganization||a?.asOrganization||u?.company?.name||"",l=pe(),h=!!(i&&i.ip);let r,m=null;h?l?(r=0,m=e.regionRestrictedText):r=typeof i.trust_score=="number"?i.trust_score:null:r=null;const C=b("gaugePointer"),c=b("gaugeScore"),H=b("gaugeText");if(r===null)c.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">—</span> ${g(e.noData,"neutral")}`,C.style.left="0%",C.style.opacity="0.3",H.textContent=h?e.noScore:e.noIp;else{const S=l?{text:e.score.unreachable,variant:"danger"}:_e(r),A=r>=50?"text-emerald-500":r>=25?"text-amber-500":"text-red-500";c.innerHTML=`<span class="${A}">${r}</span> ${g(S.text,S.variant)}`,C.style.left=Math.min(r,100)+"%",C.style.opacity="1",H.textContent=m||(r>=95?e.scoreText.excellent:r>=80?e.scoreText.great:r>=50?e.scoreText.minor:r>=25?e.scoreText.moderate:e.scoreText.severe)}const x=b("statusDotClaude");if(x){let S,A;r===null?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"):l||r<25?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-red-500"):r<50?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-amber-500"):(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-emerald-500"),x.innerHTML=`<span class="${S}"></span><span class="${A}"></span>`}const I=b("regionWarn");I&&(l?(I.innerHTML=`<span class="font-medium">⚠️ ${e.regionWarnTitle(l)}</span><br><span class="text-[13px] font-normal mt-1 block opacity-90">${e.regionWarnBody}</span>`,I.classList.remove("hidden")):I.classList.add("hidden"));const D=b("claudeRegionSupportRow"),K=b("claudeRegionSupport");if(D&&K)if(l)D.classList.add("hidden");else{const S=!!(i&&i.ip),A=!!(i&&i.countryCode);K.innerHTML=!S||!A?g(e.unknown,"neutral"):g(e.regionAccessible,"safe"),D.classList.remove("hidden")}const G=i?.isResidential??(u?!u.is_datacenter:null),R=u?.company?.type||"",U=s?.country||i?.country||"",z=s?.city||i?.city||"";let T;if(G===!0?T=g(e.propsResidential,"safe"):G===!1?T=g(e.propsDatacenter,"warn"):T=g(e.unknown,"neutral"),R){const A={hosting:"Hosting",isp:"ISP",business:"Business",education:"Education"}[R]||v(R);T+=` <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${A}</span>`}b("propsContent").innerHTML=f(e.propsRegion,U?v(U):g(e.unknown,"neutral"))+f(e.propsCity,z?v(z):g(e.unknown,"neutral"))+f(e.propsType,T)+f(e.propsAsn,p?`<span class="font-mono tabular-nums">AS${v(p)}</span>`:g(e.unknown,"neutral"))+f(e.propsOrg,o?v(o):g(e.unknown,"neutral"));const j=u||{};b("securityContent").innerHTML=f(e.secVpn,q(j.is_vpn,e.secVpn,e.secClean))+f(e.secProxy,q(j.is_proxy,e.secProxyFlag,e.secClean))+f(e.secTor,q(j.is_tor,e.secTor,e.secClean))+f(e.secCrawler,q(j.is_crawler,e.secCrawlerYes,e.secCrawlerNo))+f(e.secAbuser,q(j.is_abuser,e.secAbuserYes,e.secAbuserNo))}async function Ee(){const a=b("dnsLeakContent");if(!a)return;const i=Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2);for(let r=1;r<=2;r++)await new Promise(m=>{const C=new Image,c=setTimeout(m,2e3);C.onload=C.onerror=()=>{clearTimeout(c),m()},C.src=`http://${i}-${r}.d.ip.net.coffee/pixel.gif?_=${Date.now()}`});await new Promise(r=>setTimeout(r,1500));let s=[];for(let r=0;r<2;r++){try{const m=await fetch(`${$}/api/dns/result/${i}`,{signal:AbortSignal.timeout(3e3)});if(m.ok&&(s=(await m.json()).dns_servers||[],s.length>0))break}catch{}r===0&&await new Promise(m=>setTimeout(m,1500))}if(s.length===0){a.innerHTML=f(e.dnsStatus,g(e.dnsEncrypted,"safe"));return}const u=(w.claudeRisk?.country||"").toLowerCase(),p=u.includes("china")||u.includes("中国");let o=null,l=!1;for(const r of s){let m=null;try{const x=await fetch(`${$}/api/geoip/${r}`,{signal:AbortSignal.timeout(3e3)});x.ok&&(m=await x.json())}catch{}const C=m?.country_code||"",c=m?.isp||"";if(C==="cn"&&!p){o={ip:r,cc:C,isp:c,leaked:!0},l=!0;break}o||(o={ip:r,cc:C,isp:c,leaked:!1})}let h=f(e.dnsStatus,l?g(e.dnsLeaked,"warn"):g(e.dnsNoLeak,"safe"));if(o){const r=`${W(o.cc)} <span class="ip-mask-target font-mono tabular-nums">${v(o.ip)}</span>${o.leaked?" "+g(e.dnsCnTag,"warn"):""}`;h+=f(e.dnsOutlet,r),o.isp&&(h+=f(e.dnsIsp,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal truncate inline-block max-w-[12rem] align-bottom">${v(o.isp)}</span>`))}a.innerHTML=h}async function Me(){const a=b("udpLeakContent");if(!a)return;const i=new Set;try{const x=new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.cloudflare.com:3478"}]});x.createDataChannel("");const I=await x.createOffer();await x.setLocalDescription(I),await new Promise(D=>{const K=setTimeout(()=>{x.close(),D()},5e3);x.onicecandidate=G=>{if(!G.candidate){clearTimeout(K),x.close(),D();return}const R=G.candidate.candidate.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/);if(R){const z=R[0];!z.startsWith("0.")&&!z.startsWith("127.")&&z!=="0.0.0.0"&&i.add(z)}const U=G.candidate.candidate.match(/([a-f0-9]{1,4}:){2,7}[a-f0-9]{1,4}/i);U&&i.add(U[0])}})}catch{}const s=w.claudeRisk?.ip||"",u=[...i],p=u.filter(x=>!Z(x)&&!x.startsWith("192.168.")&&!x.startsWith("10.")&&!x.startsWith("172.")&&!x.startsWith("198.18.")&&!x.startsWith("198.19.")&&!x.startsWith("100.64.")&&!x.startsWith("127.")&&!x.startsWith("0."));if(p.length===0&&u.length===0){a.innerHTML=f(e.udpStatus,g(e.udpDisabled,"safe"));return}if(p.length===0){a.innerHTML=f(e.udpStatus,g(e.udpNoLeak,"safe"));return}let o=p.find(x=>x===s)||p[0];const l=new Set(p).size>1,h=o===s,r=l&&!h;let m=f(e.udpStatus,r?g(e.udpLeaked,"warn"):g(e.udpNoLeak,"safe")),C="",c="";try{const x=await fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)});if(x.ok){const I=await x.json();C=I.country_code||"",c=I.country||""}}catch{}const H=`${W(C)} <span class="font-mono tabular-nums">${ue(o)}</span>${h?"":r?" "+g(e.udpAnomaly,"warn"):""}`;m+=f(e.udpOutlet,H),c&&(m+=f(e.udpOrigin,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${v(c)}</span>`)),a.innerHTML=m}async function me(){const a=b("claudeAvailContent");if(!a)return;a.innerHTML=Y(["claude.ai","anthropic.com"]);const i=[{name:"claude.ai",url:"https://claude.ai/cdn-cgi/trace"},{name:"anthropic.com",url:"https://www.anthropic.com/favicon.ico"}],s=await Promise.allSettled(i.map(async o=>{const l=performance.now();try{return await fetch(o.url,{mode:"no-cors",signal:AbortSignal.timeout(6e3)}),{name:o.name,ms:Math.round(performance.now()-l),ok:!0}}catch{return{name:o.name,ms:-1,ok:!1}}})),u=pe();let p="";s.forEach(o=>{const l=o.value;if(u)p+=f(l.name,g(e.availLat.unreachable,"danger"));else if(l.ok){const h=l.ms<250?"safe":l.ms<500?"info":"warn",r=l.ms<250?e.availLat.normal:l.ms<500?e.availLat.good:e.availLat.slow;p+=f(l.name,`${g(r,h)} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${l.ms}ms</span>`)}else p+=f(l.name,g(e.availLat.unreachable,"danger"))});try{const o=await fetch(`${$}/claude/status.json`,{signal:AbortSignal.timeout(3e3)});if(o.ok){const h=(await o.json()).overall_indicator||"none",r=e.availSvcStatus[h]||e.availSvcStatus.other,m={none:"safe",minor:"warn",major:"danger",critical:"danger",maintenance:"warn"};p+=f(e.availSvc,g(r,m[h]||"warn"))}}catch{}a.innerHTML=p}L.__detectClaudeAvail=me;function Ie(){const a=Intl.DateTimeFormat().resolvedOptions().timeZone||e.unknown,i=-(new Date().getTimezoneOffset()/60),s="UTC"+(i>=0?"+":"")+i,u=w.claudeRisk,p=(u?.countryCode||"").toUpperCase(),o=u?.timezone||ze[p]||"",l=!!u?.timezone,h=Ve(o),r=-new Date().getTimezoneOffset();let m=null;o&&h!=null&&(m=Math.abs(h-r)<=60);let C;const c=v(a),H=v(o);if(m===!0)C=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${c} (${s})</span>`;else if(m===!1){const E=Ye(h),y=Math.round((h-r)/60),M=y===0?e.devDiffEqual:y>0?e.devDiffAhead(y):e.devDiffBehind(-y),F=l?H:`${H} ${e.devEstSuffix}`;C=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${c} (${s})<br>Claude ${F} (${E}) · ${M}</span>`}else C=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${c} (${s})</span>`;const x=navigator.languages||[navigator.language],I=x.join(", ")||e.unknown,D=(x[0]||"").split("-")[0].toLowerCase(),K=We[p]||[],G=D&&K.length?K.includes(D):null;let R;const U=v(I),z=v(K.join(" / "));G===!0?R=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${U}</span>`:G===!1?R=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${U}<br>${e.devLangExpected} ${z}</span>`:R=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${U}</span>`;const T=navigator.userAgent;let j=e.unknown,S=e.unknown;T.includes("Windows")?j="Windows":T.includes("Mac OS")?j="macOS":T.includes("iPhone")||T.includes("iPad")?j="iOS":T.includes("Android")?j="Android":T.includes("Linux")&&(j="Linux"),T.includes("Edg/")?S="Edge "+(T.match(/Edg\/([\d.]+)/)||[])[1]:T.includes("Chrome/")?S="Chrome "+(T.match(/Chrome\/([\d.]+)/)||[])[1]:T.includes("Firefox/")?S="Firefox "+(T.match(/Firefox\/([\d.]+)/)||[])[1]:T.includes("Safari/")&&!T.includes("Chrome")&&(S="Safari "+(T.match(/Version\/([\d.]+)/)||[])[1]);let A=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info");M&&(A=y.getParameter(M.UNMASKED_RENDERER_WEBGL))}}catch{}let ye=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info"),F=M?y.getParameter(M.UNMASKED_VENDOR_WEBGL):"",X=M?y.getParameter(M.UNMASKED_RENDERER_WEBGL):"",ve=F+"~"+X+"~"+y.getParameter(y.VERSION)+"~"+y.getParameter(y.SHADING_LANGUAGE_VERSION);let te=0;for(let oe=0;oe<ve.length;oe++)te=(te<<5)-te+ve.charCodeAt(oe)|0;ye=(te>>>0).toString(16).toUpperCase()}}catch{}let ke=e.devUnsupported;try{const E=document.createElement("canvas");E.width=200,E.height=50;const y=E.getContext("2d");y.textBaseline="top",y.font="14px Arial",y.fillStyle="#f60",y.fillRect(50,0,100,50),y.fillStyle="#069",y.fillText("net.coffee",2,15),y.fillStyle="rgba(102,204,0,0.7)",y.fillText("canvas fp",4,30);const M=E.toDataURL();let F=0;for(let X=0;X<M.length;X++)F=(F<<5)-F+M.charCodeAt(X)|0;ke=(F>>>0).toString(16).toUpperCase()}catch{}const Oe=navigator.maxTouchPoints>0,re=navigator.connection||navigator.mozConnection||navigator.webkitConnection,Pe=re?re.effectiveType||re.type||e.unknown:e.devNetUnsupported,De=navigator.doNotTrack==="1"?e.devDntOn:navigator.doNotTrack==="0"?e.devDntOff:e.devDntUnset;b("deviceContent").innerHTML=f(e.devTz,C)+f(e.devLang,R)+f(e.devOs,`${v(j)} <span class="text-oai-gray-400 dark:text-oai-gray-500">/</span> ${v(S)}`)+f(e.devTouch,Oe?g(e.devTouchYes,"info"):g(e.devTouchNo,"neutral"))+f(e.devNet,`<span class="font-mono tabular-nums uppercase">${v(Pe)}</span>`)+f(e.devDnt,v(De))+f(e.devWebglRender,`<span class="text-xs font-normal text-oai-gray-600 dark:text-oai-gray-400 break-all">${v(A)}</span>`)+f(e.devCanvasFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ke)}</span>`)+f(e.devWebglFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ye)}</span>`)}function xe(){try{return JSON.parse(localStorage.getItem(le))||[]}catch{return[]}}function Re(){const a=w.claudeRisk?.ip||"",i=(w.claudeRisk?.countryCode||"").toLowerCase(),s=w.claudeRisk?.city||"";if(!a){ee();return}const u=xe(),p=new Date,o={ip:a,cc:i,geo:s,time:p.toISOString()};if(u.length>0){const l=u[0],h=(p-new Date(l.time))/(1e3*60*60);if(l.ip===a&&h<24){ee();return}}u.unshift(o),u.length>be&&(u.length=be),localStorage.setItem(le,JSON.stringify(u)),ee()}function ee(){const a=b("ipHistoryContent");if(!a)return;const i=xe();if(i.length===0){a.innerHTML=`<span class="text-sm text-oai-gray-500 dark:text-oai-gray-400">${e.histEmpty}</span>`;return}a.innerHTML=`<ul class="divide-y divide-oai-gray-100 dark:divide-oai-gray-800">${i.map((s,u)=>{const p=new Date(s.time),o=`${p.getMonth()+1}-${p.getDate()} ${String(p.getHours()).padStart(2,"0")}:${String(p.getMinutes()).padStart(2,"0")}`,l=u===0;return`<li class="flex items-center justify-between py-3 gap-4">
|
|
6
6
|
<div class="flex items-center gap-2 min-w-0">
|
|
7
7
|
<span class="text-sm tabular-nums ${l?"text-oai-black dark:text-white":"text-oai-gray-500 dark:text-oai-gray-400"}">${o}</span>
|
|
8
8
|
${l?`<span class="inline-flex items-center rounded-full bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300 px-1.5 py-0.5 text-[10px] font-medium">${v(e.histCurrent)}</span>`:""}
|
|
@@ -12,4 +12,4 @@ import{r as ce,B as t,C as n}from"./main-CR7sCH5H.js";const $="/proxy/ipcheck",l
|
|
|
12
12
|
${B(s.ip)}
|
|
13
13
|
${s.geo?`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal truncate">${v(s.geo)}</span>`:""}
|
|
14
14
|
</div>
|
|
15
|
-
</li>`}).join("")}</ul>`}A.__clearIPHistory=()=>{localStorage.removeItem(le),ee()};async function He(){const[,a,i]=await Promise.allSettled([Ae(),$e(),Le()]);if(ae)return;const s=a.status==="fulfilled"?a.value:null,u=i.status==="fulfilled"?i.value:null,p=[];p.push(Ne("ipAddrCN","ipGeoCN",s?.ip,"cn")),p.push((async()=>{const o=b("ipAddr"),l=b("ipGeo");if(!w.ip){o&&(o.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),l&&(l.textContent="");return}Z(w.ip)&&se(),o&&(o.innerHTML=B(w.ip));try{const h=await fetch(`${$}/api/geoip/${w.ip}`,{signal:AbortSignal.timeout(5e3)});if(h.ok){const r=await h.json(),m=(r.country_code||"").toLowerCase();w.ippure={ip:w.ip,country:r.country,countryCode:(r.country_code||"").toUpperCase(),region:r.region,city:r.city},w.cfGeo=[r.country,r.region,r.city,r.isp].filter(Boolean).join(" · "),o&&(o.innerHTML=`${W(m)} ${B(w.ip)}`),Q("ipGeo",w.cfGeo)}}catch{}})()),p.push((async()=>{const o=u?.ip,l=b("ipAddrClaude"),h=b("ipGeoClaude");if(!o){l&&(l.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),h&&(h.textContent="");return}Z(o)&&se(),l&&(l.innerHTML=`${W(u.loc||"")} ${B(o)}`);const[r,m]=await Promise.allSettled([fetch(`${$}/api/iprisk/${o}`,{signal:AbortSignal.timeout(1e4)}),fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)})]);let C=!1;if(m.status==="fulfilled"&&m.value.ok)try{const c=await m.value.json();if(c.country){w.claudeGeo={country:c.country,region:c.region,city:c.city,isp:c.isp,country_code:c.country_code};const H=[c.country,c.region,c.city,c.isp].filter(Boolean).join(" · ");l&&(l.innerHTML=`${W(c.country_code||u.loc||"")} ${B(o)}`),Q("ipGeoClaude",H),C=!0}}catch{}if(!C&&u.loc&&(l&&(l.innerHTML=`${W(u.loc)} ${B(o)}`),Q("ipGeoClaude",We[u.loc]||u.loc.toUpperCase())),r.status==="fulfilled"&&r.value.ok){const c=await r.value.json();w.ipapis={is_datacenter:c.is_datacenter,is_vpn:c.is_vpn,is_proxy:c.is_proxy,is_tor:c.is_tor,is_crawler:c.is_crawler,is_abuser:c.is_abuser,is_mobile:c.is_mobile,company:{type:c.company_type,name:c.company_name},abuser_score:c.abuser_score,datacenter_name:c.datacenter_name},w.claudeRisk={ip:o,asn:c.asn,asOrganization:c.asOrganization,country:c.country,countryCode:c.countryCode,region:c.region,city:c.city,isResidential:c.isResidential,isBroadcast:c.isBroadcast,trust_score:c.trust_score,timezone:c.timezone}}})()),await Promise.allSettled(p),!ae&&(je(),Promise.allSettled([Ee(),Me(),me()]),Ie(),Re())}return He(),()=>{ae=!0,he.disconnect(),delete A.__setMaskOn,delete A.__clearIPHistory,delete A.__detectClaudeAvail}},[]);const N=A=>{T(A),d.current?.__setMaskOn?.(A)},O=()=>d.current?.__clearIPHistory?.(),J=()=>d.current?.__detectClaudeAvail?.(),P={__html:""};return n.jsx("div",{ref:d,className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:n.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:n.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[n.jsxs("div",{className:"flex items-start justify-between gap-4 mb-8",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:t("ipcheck.page.title")}),n.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base max-w-2xl",children:t("ipcheck.page.subtitle")})]}),n.jsxs("label",{className:"shrink-0 inline-flex items-center gap-2 cursor-pointer select-none",children:[n.jsx("span",{className:"text-xs text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.mask.toggle")}),n.jsxs("span",{className:"relative inline-block w-9 h-5",children:[n.jsx("input",{type:"checkbox",checked:k,onChange:A=>N(A.target.checked),className:"peer sr-only"}),n.jsx("span",{className:"absolute inset-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 peer-checked:bg-oai-brand-500 transition-colors"}),n.jsx("span",{className:"absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-white shadow-sm transition-transform peer-checked:translate-x-4"})]})]})]}),n.jsx("div",{id:"ipv6Warn",className:"hidden mb-4 rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-500/30 dark:bg-amber-500/10 px-4 py-3 text-sm text-amber-800 dark:text-amber-200",children:t("ipcheck.ipv6.warn")}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[n.jsx(de,{id:"CN",label:t("ipcheck.ip.cn"),icon:null}),n.jsx(de,{id:"",label:t("ipcheck.ip.cloudflare"),icon:n.jsx("img",{src:`${$}/favicons/cloudflare.webp`,alt:"",className:"h-4 w-4"})}),n.jsx(de,{id:"Claude",label:t("ipcheck.ip.claude"),icon:n.jsx("img",{src:`${$}/favicons/claude.webp`,alt:"",className:"h-4 w-4"}),statusDot:!0})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:t("ipcheck.trust.title"),subtitle:t("ipcheck.trust.subtitle"),children:n.jsxs("div",{className:"px-1 py-2",children:[n.jsx("div",{className:"flex items-baseline justify-between mb-2 gap-3",children:n.jsx("div",{id:"gaugeScore",className:"text-3xl font-semibold tabular-nums leading-none flex items-center gap-2",dangerouslySetInnerHTML:P})}),n.jsx("div",{id:"gaugeText",className:"text-xs text-oai-gray-500 dark:text-oai-gray-400 mb-4 min-h-[1rem]"}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"h-1.5 rounded-full",style:{background:"linear-gradient(90deg, #ef4444 0%, #f59e0b 50%, #10b981 100%)"}}),n.jsx("span",{id:"gaugePointer",className:"absolute -top-1 h-3.5 w-[3px] rounded-sm bg-oai-black dark:bg-white shadow-[0_0_0_1px_rgba(255,255,255,0.6)] dark:shadow-[0_0_0_1px_rgba(0,0,0,0.6)] -translate-x-1/2 transition-[left] duration-700 ease-out",style:{left:"0%"}}),n.jsxs("div",{className:"mt-2 flex justify-between text-[10px] uppercase tracking-wider text-oai-gray-400 dark:text-oai-gray-500 font-medium",children:[n.jsx("span",{children:t("ipcheck.trust.gauge.low")}),n.jsx("span",{children:"25"}),n.jsx("span",{children:"50"}),n.jsx("span",{children:"75"}),n.jsx("span",{children:t("ipcheck.trust.gauge.high")})]})]}),n.jsx("div",{id:"regionWarn",className:"hidden mt-4 rounded-lg border border-red-200 bg-red-50 dark:border-red-500/30 dark:bg-red-500/10 px-3 py-2 text-xs text-red-800 dark:text-red-300"}),n.jsxs("div",{id:"claudeRegionSupportRow",className:"hidden mt-4 pt-4 border-t border-oai-gray-100 dark:border-oai-gray-800 flex items-center justify-between",children:[n.jsx("span",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.trust.region_support")}),n.jsx("span",{id:"claudeRegionSupport",className:"text-sm font-medium text-oai-black dark:text-white",dangerouslySetInnerHTML:P})]})]})}),n.jsx(V,{title:t("ipcheck.props.title"),children:n.jsx("div",{id:"propsContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.security.title"),children:n.jsx("div",{id:"securityContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:n.jsxs("span",{className:"flex items-center gap-1.5",children:[t("ipcheck.avail.title"),n.jsx(Ye,{text:t("ipcheck.avail.tooltip")})]}),action:n.jsx(Ce,{label:t("ipcheck.avail.refresh"),onClick:J}),children:n.jsx("div",{id:"claudeAvailContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.dns.title"),children:n.jsx("div",{id:"dnsLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.udp.title"),children:n.jsx("div",{id:"udpLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsx(V,{title:t("ipcheck.device.title"),children:n.jsx("div",{id:"deviceContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.history.title"),subtitle:t("ipcheck.history.subtitle"),action:n.jsx(Ce,{label:t("ipcheck.history.clear"),onClick:O}),children:n.jsx("div",{id:"ipHistoryContent",dangerouslySetInnerHTML:P})})]})]})})})}function V({title:d,subtitle:k,action:T,children:N,className:O=""}){return n.jsxs("section",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6 ${O}`,children:[n.jsxs("div",{className:"flex items-start justify-between gap-3 mb-4",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h2",{className:"text-[15px] font-semibold text-oai-black dark:text-white",children:d}),k?n.jsx("p",{className:"mt-0.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:k}):null]}),T]}),N]})}function Ce({label:d,onClick:k}){return n.jsx("button",{type:"button",onClick:k,className:"shrink-0 inline-flex h-7 items-center px-2.5 rounded-md text-xs font-medium text-oai-gray-600 dark:text-oai-gray-300 border border-oai-gray-200 dark:border-oai-gray-700 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:d})}function Ye({text:d}){return n.jsxs("span",{className:"relative inline-flex items-center group",children:[n.jsx("svg",{viewBox:"0 0 16 16",className:"h-3.5 w-3.5 text-oai-gray-400 dark:text-oai-gray-500",fill:"currentColor","aria-hidden":!0,children:n.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zM7.25 6.75a.75.75 0 0 1 1.5 0V11a.75.75 0 0 1-1.5 0V6.75zM8 4a.85.85 0 1 1 0 1.7A.85.85 0 0 1 8 4z"})}),n.jsx("span",{className:"pointer-events-none absolute left-1/2 top-full z-10 mt-1.5 -translate-x-1/2 w-56 rounded-md bg-oai-gray-900 dark:bg-oai-gray-800 px-2.5 py-2 text-[11px] font-normal text-white opacity-0 transition-opacity group-hover:opacity-100 leading-relaxed shadow-lg",children:d})]})}function de({id:d,label:k,icon:T,statusDot:N}){const O=`ipAddr${d}`,J=`ipGeo${d}`;return n.jsxs("article",{id:`ipHero${d}`,className:"rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] uppercase tracking-wider font-medium text-oai-gray-500 dark:text-oai-gray-400 mb-2",children:[T,n.jsx("span",{children:k}),N?n.jsxs("span",{id:`statusDot${d}`,className:"relative inline-flex h-2 w-2 ml-1.5","aria-hidden":!0,children:[n.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75"}),n.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"})]}):null]}),n.jsx("div",{id:O,className:"text-xl sm:text-2xl font-semibold tabular-nums text-oai-black dark:text-white flex items-center gap-2 min-h-[2rem]",dangerouslySetInnerHTML:{__html:""}}),n.jsx("div",{id:J,className:"mt-1 text-xs text-oai-gray-500 dark:text-oai-gray-400 truncate min-h-[1rem]"})]})}export{Je as default};
|
|
15
|
+
</li>`}).join("")}</ul>`}L.__clearIPHistory=()=>{localStorage.removeItem(le),ee()};async function He(){const[,a,i]=await Promise.allSettled([Le(),$e(),Ae()]);if(ae)return;const s=a.status==="fulfilled"?a.value:null,u=i.status==="fulfilled"?i.value:null,p=[];p.push(Ne("ipAddrCN","ipGeoCN",s?.ip,"cn")),p.push((async()=>{const o=b("ipAddr"),l=b("ipGeo");if(!w.ip){o&&(o.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),l&&(l.textContent="");return}Z(w.ip)&&se(),o&&(o.innerHTML=B(w.ip));try{const h=await fetch(`${$}/api/geoip/${w.ip}`,{signal:AbortSignal.timeout(5e3)});if(h.ok){const r=await h.json(),m=(r.country_code||"").toLowerCase();w.ippure={ip:w.ip,country:r.country,countryCode:(r.country_code||"").toUpperCase(),region:r.region,city:r.city},w.cfGeo=[r.country,r.region,r.city,r.isp].filter(Boolean).join(" · "),o&&(o.innerHTML=`${W(m)} ${B(w.ip)}`),Q("ipGeo",w.cfGeo)}}catch{}})()),p.push((async()=>{const o=u?.ip,l=b("ipAddrClaude"),h=b("ipGeoClaude");if(!o){l&&(l.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),h&&(h.textContent="");return}Z(o)&&se(),l&&(l.innerHTML=`${W(u.loc||"")} ${B(o)}`);const[r,m]=await Promise.allSettled([fetch(`${$}/api/iprisk/${o}`,{signal:AbortSignal.timeout(1e4)}),fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)})]);let C=!1;if(m.status==="fulfilled"&&m.value.ok)try{const c=await m.value.json();if(c.country){w.claudeGeo={country:c.country,region:c.region,city:c.city,isp:c.isp,country_code:c.country_code};const H=[c.country,c.region,c.city,c.isp].filter(Boolean).join(" · ");l&&(l.innerHTML=`${W(c.country_code||u.loc||"")} ${B(o)}`),Q("ipGeoClaude",H),C=!0}}catch{}if(!C&&u.loc&&(l&&(l.innerHTML=`${W(u.loc)} ${B(o)}`),Q("ipGeoClaude",Be[u.loc]||u.loc.toUpperCase())),r.status==="fulfilled"&&r.value.ok){const c=await r.value.json();w.ipapis={is_datacenter:c.is_datacenter,is_vpn:c.is_vpn,is_proxy:c.is_proxy,is_tor:c.is_tor,is_crawler:c.is_crawler,is_abuser:c.is_abuser,is_mobile:c.is_mobile,company:{type:c.company_type,name:c.company_name},abuser_score:c.abuser_score,datacenter_name:c.datacenter_name},w.claudeRisk={ip:o,asn:c.asn,asOrganization:c.asOrganization,country:c.country,countryCode:c.countryCode,region:c.region,city:c.city,isResidential:c.isResidential,isBroadcast:c.isBroadcast,trust_score:c.trust_score,timezone:c.timezone}}})()),await Promise.allSettled(p),!ae&&(je(),Promise.allSettled([Ee(),Me(),me()]),Ie(),Re())}return He(),()=>{ae=!0,he.disconnect(),delete L.__setMaskOn,delete L.__clearIPHistory,delete L.__detectClaudeAvail}},[]);const N=L=>{_(L),d.current?.__setMaskOn?.(L)},O=()=>d.current?.__clearIPHistory?.(),J=()=>d.current?.__detectClaudeAvail?.(),P={__html:""};return n.jsx("div",{ref:d,className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:n.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:n.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[n.jsxs("div",{className:"flex items-start justify-between gap-4 mb-8",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:t("ipcheck.page.title")}),n.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base max-w-2xl",children:t("ipcheck.page.subtitle")})]}),n.jsxs("label",{className:"shrink-0 inline-flex items-center gap-2 cursor-pointer select-none",children:[n.jsx("span",{className:"text-xs text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.mask.toggle")}),n.jsxs("span",{className:"relative inline-block w-9 h-5",children:[n.jsx("input",{type:"checkbox",checked:k,onChange:L=>N(L.target.checked),className:"peer sr-only"}),n.jsx("span",{className:"absolute inset-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 peer-checked:bg-oai-brand-500 transition-colors"}),n.jsx("span",{className:"absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-white shadow-sm transition-transform peer-checked:translate-x-4"})]})]})]}),n.jsx("div",{id:"ipv6Warn",className:"hidden mb-4 rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-500/30 dark:bg-amber-500/10 px-4 py-3 text-sm text-amber-800 dark:text-amber-200",children:t("ipcheck.ipv6.warn")}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[n.jsx(de,{id:"CN",label:t("ipcheck.ip.cn"),icon:null}),n.jsx(de,{id:"",label:t("ipcheck.ip.cloudflare"),icon:n.jsx("img",{src:`${$}/favicons/cloudflare.webp`,alt:"",className:"h-4 w-4"})}),n.jsx(de,{id:"Claude",label:t("ipcheck.ip.claude"),icon:n.jsx("img",{src:`${$}/favicons/claude.webp`,alt:"",className:"h-4 w-4"}),statusDot:!0})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:t("ipcheck.trust.title"),subtitle:t("ipcheck.trust.subtitle"),children:n.jsxs("div",{className:"px-1 py-2",children:[n.jsx("div",{className:"flex items-baseline justify-between mb-2 gap-3",children:n.jsx("div",{id:"gaugeScore",className:"text-3xl font-semibold tabular-nums leading-none flex items-center gap-2",dangerouslySetInnerHTML:P})}),n.jsx("div",{id:"gaugeText",className:"text-xs text-oai-gray-500 dark:text-oai-gray-400 mb-4 min-h-[1rem]"}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"h-1.5 rounded-full",style:{background:"linear-gradient(90deg, #ef4444 0%, #f59e0b 50%, #10b981 100%)"}}),n.jsx("span",{id:"gaugePointer",className:"absolute -top-1 h-3.5 w-[3px] rounded-sm bg-oai-black dark:bg-white shadow-[0_0_0_1px_rgba(255,255,255,0.6)] dark:shadow-[0_0_0_1px_rgba(0,0,0,0.6)] -translate-x-1/2 transition-[left] duration-700 ease-out",style:{left:"0%"}}),n.jsxs("div",{className:"mt-2 flex justify-between text-[10px] uppercase tracking-wider text-oai-gray-400 dark:text-oai-gray-500 font-medium",children:[n.jsx("span",{children:t("ipcheck.trust.gauge.low")}),n.jsx("span",{children:"25"}),n.jsx("span",{children:"50"}),n.jsx("span",{children:"75"}),n.jsx("span",{children:t("ipcheck.trust.gauge.high")})]})]}),n.jsx("div",{id:"regionWarn",className:"hidden mt-4 rounded-lg border border-red-200 bg-red-50 dark:border-red-500/30 dark:bg-red-500/10 px-3 py-2 text-xs text-red-800 dark:text-red-300"}),n.jsxs("div",{id:"claudeRegionSupportRow",className:"hidden mt-4 pt-4 border-t border-oai-gray-100 dark:border-oai-gray-800 flex items-center justify-between",children:[n.jsx("span",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.trust.region_support")}),n.jsx("span",{id:"claudeRegionSupport",className:"text-sm font-medium text-oai-black dark:text-white",dangerouslySetInnerHTML:P})]})]})}),n.jsx(V,{title:t("ipcheck.props.title"),children:n.jsx("div",{id:"propsContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.security.title"),children:n.jsx("div",{id:"securityContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:n.jsxs("span",{className:"flex items-center gap-1.5",children:[t("ipcheck.avail.title"),n.jsx(Ze,{text:t("ipcheck.avail.tooltip")})]}),action:n.jsx(Ce,{label:t("ipcheck.avail.refresh"),onClick:J}),children:n.jsx("div",{id:"claudeAvailContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.dns.title"),children:n.jsx("div",{id:"dnsLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.udp.title"),children:n.jsx("div",{id:"udpLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsx(V,{title:t("ipcheck.device.title"),children:n.jsx("div",{id:"deviceContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.history.title"),subtitle:t("ipcheck.history.subtitle"),action:n.jsx(Ce,{label:t("ipcheck.history.clear"),onClick:O}),children:n.jsx("div",{id:"ipHistoryContent",dangerouslySetInnerHTML:P})})]})]})})})}function V({title:d,subtitle:k,action:_,children:N,className:O=""}){return n.jsxs("section",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6 ${O}`,children:[n.jsxs("div",{className:"flex items-start justify-between gap-3 mb-4",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h2",{className:"text-[15px] font-semibold text-oai-black dark:text-white",children:d}),k?n.jsx("p",{className:"mt-0.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:k}):null]}),_]}),N]})}function Ce({label:d,onClick:k}){return n.jsx("button",{type:"button",onClick:k,className:"shrink-0 inline-flex h-7 items-center px-2.5 rounded-md text-xs font-medium text-oai-gray-600 dark:text-oai-gray-300 border border-oai-gray-200 dark:border-oai-gray-700 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:d})}function Ze({text:d}){return n.jsxs("span",{className:"relative inline-flex items-center group",children:[n.jsx("svg",{viewBox:"0 0 16 16",className:"h-3.5 w-3.5 text-oai-gray-400 dark:text-oai-gray-500",fill:"currentColor","aria-hidden":!0,children:n.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zM7.25 6.75a.75.75 0 0 1 1.5 0V11a.75.75 0 0 1-1.5 0V6.75zM8 4a.85.85 0 1 1 0 1.7A.85.85 0 0 1 8 4z"})}),n.jsx("span",{className:"pointer-events-none absolute left-1/2 top-full z-10 mt-1.5 -translate-x-1/2 w-56 rounded-md bg-oai-gray-900 dark:bg-oai-gray-800 px-2.5 py-2 text-[11px] font-normal text-white opacity-0 transition-opacity group-hover:opacity-100 leading-relaxed shadow-lg",children:d})]})}function de({id:d,label:k,icon:_,statusDot:N}){const O=`ipAddr${d}`,J=`ipGeo${d}`;return n.jsxs("article",{id:`ipHero${d}`,className:"rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] uppercase tracking-wider font-medium text-oai-gray-500 dark:text-oai-gray-400 mb-2",children:[_,n.jsx("span",{children:k}),N?n.jsxs("span",{id:`statusDot${d}`,className:"relative inline-flex h-2 w-2 ml-1.5","aria-hidden":!0,children:[n.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75"}),n.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"})]}):null]}),n.jsx("div",{id:O,className:"text-xl sm:text-2xl font-semibold tabular-nums text-oai-black dark:text-white flex items-center gap-2 min-h-[2rem]",dangerouslySetInnerHTML:{__html:""}}),n.jsx("div",{id:J,className:"mt-1 text-xs text-oai-gray-500 dark:text-oai-gray-400 truncate min-h-[1rem]"})]})}export{qe as default};
|