9remote 0.1.29 → 0.1.30

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.
Files changed (2) hide show
  1. package/dist/cli.cjs +1 -1
  2. package/package.json +1 -1
package/dist/cli.cjs CHANGED
@@ -88,7 +88,7 @@ else
88
88
  ${Pe} ${b} --skip-update
89
89
  fi
90
90
  `;y=vo.default.join(dx.default.tmpdir(),`${Pe}-update.sh`),(0,Nt.writeFileSync)(y,q,{mode:493}),_=["sh",[y]]}(0,Jy.spawn)(_[0],_[1],{detached:!0,stdio:"inherit"}).unref(),process.exit(0)}).catch(()=>{clearTimeout(l),c(!1)})})}var pe=O(require("fs"),1),_o=O(require("path"),1),t_=O(require("https"),1),Ut=O(require("os"),1),uc=require("child_process"),yo=null,ic=null,ac=null,bo=_o.default.join(Ut.default.homedir(),".9remote","bin"),Zy="cloudflared",hx=Ut.default.platform()==="win32",CR=hx?`${Zy}.exe`:Zy,ti=_o.default.join(bo,CR),oc=_o.default.join(Ut.default.homedir(),".9remote","cloudflared.pid"),mo=!1,xx=5,e_=6e4,ni=[],ii=null,AR="https://github.com/cloudflare/cloudflared/releases/latest/download",qR={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function PR(){let r=Ut.default.platform(),e=Ut.default.arch(),t=qR[r];if(!t)throw new Error(`Unsupported platform: ${r}`);let n=t[e];if(!n)throw new Error(`Unsupported architecture: ${e} for platform ${r}`);return`${AR}/${n}`}async function n_(r,e){return new Promise((t,n)=>{let i=pe.default.createWriteStream(e);t_.default.get(r,o=>{if([301,302].includes(o.statusCode)){i.close(),pe.default.unlinkSync(e),n_(o.headers.location,e).then(t).catch(n);return}if(o.statusCode!==200){i.close(),pe.default.unlinkSync(e),n(new Error(`Download failed with status ${o.statusCode}`));return}o.pipe(i),i.on("finish",()=>{i.close(()=>t(e))}),i.on("error",a=>{i.close(),pe.default.unlinkSync(e),n(a)})}).on("error",o=>{i.close(),pe.default.existsSync(e)&&pe.default.unlinkSync(e),n(o)})})}async function px(){if(pe.default.existsSync(bo)||pe.default.mkdirSync(bo,{recursive:!0}),pe.default.existsSync(ti))return hx||pe.default.chmodSync(ti,"755"),ti;console.log("\u{1F4E5} Downloading tunnel binary...");let r=PR(),e=r.endsWith(".tgz"),t=e?_o.default.join(bo,"cloudflared.tgz"):ti;try{return await n_(r,t),e&&(console.log("\u2705 Extracting..."),(0,uc.execSync)(`tar -xzf "${t}" -C "${bo}"`,{stdio:"pipe"}),pe.default.unlinkSync(t)),hx||pe.default.chmodSync(ti,"755"),console.log("\u2705 cloudflared ready"),ti}catch(n){throw console.error("\u274C Failed to download cloudflared:",n.message),n}}var TR=["INF Starting tunnel","INF Version","GOOS:","Settings:","Autoupdate frequency","Generated Connector","Initial protocol","ICMP proxy","Created ICMP","Starting metrics server","curve preferences","Updated to new configuration"];async function i_(r,e=null){let t=await px();e&&(ii=e),ac=r;let n=(0,uc.spawn)(t,["tunnel","run","--token",r],{detached:!1,stdio:["ignore","pipe","pipe"]});mo=!1,console.log(`\u2705 Cloudflared spawned with PID: ${n.pid}`);let i=0,o=a=>{let u=a.toString().trim();if(!TR.some(s=>u.includes(s))&&!mo&&u.includes("Registered tunnel connection")){i++,i<=4&&(process.stdout.write(`\r \u2714 Connection ${i}/4 established`),i===4&&process.stdout.write(`
91
- `));return}};return n.stdout.on("data",o),n.stderr.on("data",o),n.on("error",a=>{console.error("\u274C cloudflared error:",a)}),n.on("exit",(a,u)=>{if(console.log(`\u26A0\uFE0F Cloudflared process exited (code: ${a}, signal: ${u}, intentional: ${mo})`),mo)console.log("\u2139\uFE0F Cloudflared exit ignored (intentional shutdown)");else if(console.log("\u26A0\uFE0F Cloudflared unexpected exit detected - will restart"),ii){let s=Date.now();ni.push(s),ni=ni.filter(c=>c>s-e_),ni.length<=xx?(console.log(`\u{1F504} Restarting tunnel... (attempt ${ni.length}/${xx})`),setTimeout(()=>{console.log("\u{1F504} Executing tunnel restart..."),ii(r)},2e3)):console.log(`\u274C Too many tunnel restarts (${xx} in ${e_/1e3}s). Giving up.`)}else console.log("\u26A0\uFE0F No restart callback registered")}),pe.default.writeFileSync(oc,n.pid.toString()),BR(),n}function vx(){try{if(pe.default.existsSync(oc)){mo=!0;let r=parseInt(pe.default.readFileSync(oc,"utf8"));process.kill(r),pe.default.unlinkSync(oc),console.log("\u2705 Cloudflared killed")}}catch{}}function o_(){ni=[],ii=null,ac=null,jR()}function r_(){let r=Ut.default.networkInterfaces(),e=[];for(let[t,n]of Object.entries(r))if(n)for(let i of n)!i.internal&&i.family==="IPv4"&&e.push(`${t}:${i.address}`);return e.sort().join("|")}function BR(){yo||(ic=r_(),yo=setInterval(()=>{let r=r_();r!==ic&&(console.log("\u{1F504} Network change detected - restarting tunnel..."),ic=r,vx(),ii&&ac&&setTimeout(()=>{console.log("\u{1F504} Restarting tunnel after network change..."),ii(ac)},2e3))},5e3))}function jR(){yo&&(clearInterval(yo),yo=null),ic=null}var MR=process.argv.includes("--skip-update"),yx=Wt.default.dirname((0,l_.fileURLToPath)(__importMetaUrl)),RR=Wt.default.resolve(yx,".."),IR=Wt.default.join(yx,"server.cjs"),a_=Wt.default.join(RR,"server/index.js"),ft="https://remote.9router.com",mx=2208,bx=10,u_=6e4,G=A.rgb(230,138,110),kR=A.rgb(200,120,95);function LR(){return"0.1.29"}function d_(){let r=LR(),e=Math.min(44,process.stdout.columns||44);console.log(""),console.log(G("\u2554"+"\u2550".repeat(e-2)+"\u2557")),console.log(G("\u2551")+" ".repeat(e-2)+G("\u2551"));let t=`\u{1F680} 9Remote v${r}`,n=Math.floor((e-2-t.length)/2);console.log(G("\u2551")+" ".repeat(n)+G.bold(t)+" ".repeat(e-2-n-t.length)+G("\u2551"));let i="Remote terminal access from anywhere",o=Math.floor((e-2-i.length)/2);console.log(G("\u2551")+" ".repeat(o)+A.gray(i)+" ".repeat(e-2-o-i.length)+G("\u2551")),console.log(G("\u2551")+" ".repeat(e-2)+G("\u2551")),console.log(G("\u255A"+"\u2550".repeat(e-2)+"\u255D")),console.log("")}function x_(r,e="\u{1F4F1} Scan QR to connect:"){console.log(G(`
91
+ `));return}};return n.stdout.on("data",o),n.stderr.on("data",o),n.on("error",a=>{console.error("\u274C cloudflared error:",a)}),n.on("exit",(a,u)=>{if(console.log(`\u26A0\uFE0F Cloudflared process exited (code: ${a}, signal: ${u}, intentional: ${mo})`),mo)console.log("\u2139\uFE0F Cloudflared exit ignored (intentional shutdown)");else if(console.log("\u26A0\uFE0F Cloudflared unexpected exit detected - will restart"),ii){let s=Date.now();ni.push(s),ni=ni.filter(c=>c>s-e_),ni.length<=xx?(console.log(`\u{1F504} Restarting tunnel... (attempt ${ni.length}/${xx})`),setTimeout(()=>{console.log("\u{1F504} Executing tunnel restart..."),ii(r)},2e3)):console.log(`\u274C Too many tunnel restarts (${xx} in ${e_/1e3}s). Giving up.`)}else console.log("\u26A0\uFE0F No restart callback registered")}),pe.default.writeFileSync(oc,n.pid.toString()),BR(),n}function vx(){try{if(pe.default.existsSync(oc)){mo=!0;let r=parseInt(pe.default.readFileSync(oc,"utf8"));process.kill(r),pe.default.unlinkSync(oc),console.log("\u2705 Cloudflared killed")}}catch{}}function o_(){ni=[],ii=null,ac=null,jR()}function r_(){let r=Ut.default.networkInterfaces(),e=[];for(let[t,n]of Object.entries(r))if(n)for(let i of n)!i.internal&&i.family==="IPv4"&&e.push(`${t}:${i.address}`);return e.sort().join("|")}function BR(){yo||(ic=r_(),yo=setInterval(()=>{let r=r_();r!==ic&&(console.log("\u{1F504} Network change detected - restarting tunnel..."),ic=r,vx(),ii&&ac&&setTimeout(()=>{console.log("\u{1F504} Restarting tunnel after network change..."),ii(ac)},2e3))},5e3))}function jR(){yo&&(clearInterval(yo),yo=null),ic=null}var MR=process.argv.includes("--skip-update"),yx=Wt.default.dirname((0,l_.fileURLToPath)(__importMetaUrl)),RR=Wt.default.resolve(yx,".."),IR=Wt.default.join(yx,"server.cjs"),a_=Wt.default.join(RR,"server/index.js"),ft="https://remote.9router.com",mx=2208,bx=10,u_=6e4,G=A.rgb(230,138,110),kR=A.rgb(200,120,95);function LR(){return"0.1.30"}function d_(){let r=LR(),e=Math.min(44,process.stdout.columns||44);console.log(""),console.log(G("\u2554"+"\u2550".repeat(e-2)+"\u2557")),console.log(G("\u2551")+" ".repeat(e-2)+G("\u2551"));let t=`\u{1F680} 9Remote v${r}`,n=Math.floor((e-2-t.length)/2);console.log(G("\u2551")+" ".repeat(n)+G.bold(t)+" ".repeat(e-2-n-t.length)+G("\u2551"));let i="Remote terminal access from anywhere",o=Math.floor((e-2-i.length)/2);console.log(G("\u2551")+" ".repeat(o)+A.gray(i)+" ".repeat(e-2-o-i.length)+G("\u2551")),console.log(G("\u2551")+" ".repeat(e-2)+G("\u2551")),console.log(G("\u255A"+"\u2550".repeat(e-2)+"\u255D")),console.log("")}function x_(r,e="\u{1F4F1} Scan QR to connect:"){console.log(G(`
92
92
  ${e}`)),c_.default.generate(r,{small:!0,type:"terminal",margin:0},t=>{let n=t.trim().split(`
93
93
  `);console.log(n.join(`
94
94
  `))})}async function h_(r,e){let t=await fx(r,ft);if(!t){console.log(A.red("\u274C Failed to create temp key"));return}let n=`${ft}/login?k=${t.tempKey}`,i=Math.min(44,process.stdout.columns||55);x_(n),console.log(A.gray(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9remote",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "type": "module",
5
5
  "description": "Remote terminal access from anywhere",
6
6
  "main": "index.js",