|
@@ -4,7 +4,7 @@ import {spawn} from 'node:child_process'
|
|
|
import {mkdir,readFile,writeFile} from 'node:fs/promises'
|
|
import {mkdir,readFile,writeFile} from 'node:fs/promises'
|
|
|
import {join} from 'node:path'
|
|
import {join} from 'node:path'
|
|
|
import {randomBytes,createCipheriv,createDecipheriv} from 'node:crypto'
|
|
import {randomBytes,createCipheriv,createDecipheriv} from 'node:crypto'
|
|
|
-const login=process.argv[1]==='login',home=process.env.HOME
|
|
|
|
|
|
|
+const open=process.argv[1]==='login-open',login=process.argv[1].startsWith('login'),home=process.env.HOME
|
|
|
const app=join(home,'.config/yaoyao-auth-fixture'),keyring=join(home,'.local/share/keyrings/yaoyao-auth-fixture')
|
|
const app=join(home,'.config/yaoyao-auth-fixture'),keyring=join(home,'.local/share/keyrings/yaoyao-auth-fixture')
|
|
|
if(login){
|
|
if(login){
|
|
|
await mkdir(app,{recursive:true});await mkdir(join(home,'.local/share/keyrings'),{recursive:true})
|
|
await mkdir(app,{recursive:true});await mkdir(join(home,'.local/share/keyrings'),{recursive:true})
|
|
@@ -22,7 +22,7 @@ const server=createServer((req,res)=>{
|
|
|
res.setHeader('Content-Type','text/html');res.end('<!doctype html><body>authorization fixture</body>')
|
|
res.setHeader('Content-Type','text/html');res.end('<!doctype html><body>authorization fixture</body>')
|
|
|
})
|
|
})
|
|
|
await new Promise(resolve=>server.listen(18765,'127.0.0.1',resolve))
|
|
await new Promise(resolve=>server.listen(18765,'127.0.0.1',resolve))
|
|
|
-const browser=spawn('google-chrome',['--headless','--no-sandbox','--disable-dev-shm-usage','--disable-gpu','--no-first-run','--no-default-browser-check','--disable-background-networking','--password-store=basic','--remote-debugging-pipe',`--user-data-dir=${join(home,'.config/yaoyao-auth-browser')}`],{stdio:['ignore','ignore','pipe','pipe','pipe']})
|
|
|
|
|
|
|
+const browser=spawn('google-chrome',[...(open?[]:['--headless']),'--no-sandbox','--disable-dev-shm-usage','--disable-gpu','--no-first-run','--no-default-browser-check','--disable-background-networking','--password-store=basic','--remote-debugging-pipe',`--user-data-dir=${join(home,'.config/yaoyao-auth-browser')}`],{stdio:['ignore','ignore','pipe','pipe','pipe']})
|
|
|
let buffer='',id=0,errors='';const waiting=new Map()
|
|
let buffer='',id=0,errors='';const waiting=new Map()
|
|
|
browser.stderr.on('data',chunk=>{errors=(errors+chunk).slice(-1500)})
|
|
browser.stderr.on('data',chunk=>{errors=(errors+chunk).slice(-1500)})
|
|
|
browser.stdio[4].on('data',chunk=>{
|
|
browser.stdio[4].on('data',chunk=>{
|
|
@@ -54,6 +54,8 @@ try{
|
|
|
return cookie&&localStorage.getItem('authorization')==='fixture-local'&&token==='fixture-idb';
|
|
return cookie&&localStorage.getItem('authorization')==='fixture-local'&&token==='fixture-idb';
|
|
|
})()`},sessionId)
|
|
})()`},sessionId)
|
|
|
if(result.exceptionDetails||result.result?.value!==true)throw Error('browser authorization lost: '+JSON.stringify(result))
|
|
if(result.exceptionDetails||result.result?.value!==true)throw Error('browser authorization lost: '+JSON.stringify(result))
|
|
|
- await command('Browser.close');await closed
|
|
|
|
|
|
|
+ if(open)await writeFile(join(app,'ready'),'ready')
|
|
|
|
|
+ else await command('Browser.close')
|
|
|
|
|
+ await closed
|
|
|
console.log(JSON.stringify({browser:true,encryptedApplicationToken:true}))
|
|
console.log(JSON.stringify({browser:true,encryptedApplicationToken:true}))
|
|
|
}finally{clearTimeout(timeout);browser.kill();server.close()}
|
|
}finally{clearTimeout(timeout);browser.kill();server.close()}
|