mirror of
https://github.com/torappinfo/uweb.git
synced 2024-08-14 23:54:59 +00:00
support ebrowser update
This commit is contained in:
parent
5f2116943f
commit
c3173e0f97
13 changed files with 167 additions and 33 deletions
47
misc/ebrowser/package.json
Normal file
47
misc/ebrowser/package.json
Normal file
|
@ -0,0 +1,47 @@
|
|||
{"version":"1.0.21",
|
||||
"name": "ebrowser",
|
||||
"description": "The keyboard-friendly minimal suckless web browser",
|
||||
"main": "webview.js",
|
||||
"scripts": {
|
||||
"release": "electron-builder"
|
||||
},
|
||||
"author": "Richard H. Cao",
|
||||
"keywords": ["browser","minimal","suckless","command line","vim key map","user scripts"],
|
||||
"license": "GPL-3.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/torappinfo/ebrowser.git"
|
||||
},
|
||||
"build": {
|
||||
"appId": "torapp.eweb",
|
||||
"publish": "github",
|
||||
"asar": false,
|
||||
"files": [
|
||||
"webview.js",
|
||||
"index.html",
|
||||
"package.json",
|
||||
"README.md"
|
||||
],
|
||||
"directories": {
|
||||
"output": "release"
|
||||
},
|
||||
"dmg": {
|
||||
"contents": [
|
||||
{ "x": 110, "y": 150 },
|
||||
{ "x": 240, "y": 150, "type": "link", "path": "/Applications" }
|
||||
]
|
||||
},
|
||||
"nsis": {
|
||||
"createDesktopShortcut": "always"
|
||||
},
|
||||
"linux": {
|
||||
"target": "AppImage"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron":"",
|
||||
"electron-builder": ""
|
||||
}
|
||||
}
|
|
@ -177,6 +177,17 @@ function addrCommand(cmd){
|
|||
case "ext":
|
||||
session.defaultSession.loadExtension(args[1]);
|
||||
return;
|
||||
case "gr":
|
||||
if(args.length<2) {
|
||||
gredirect_enable(0);
|
||||
return;
|
||||
}
|
||||
let i = parseInt(args[1]);
|
||||
if(i>=0 && i<gredirects.length)
|
||||
gredirect_enable(i);
|
||||
else
|
||||
gredirect_disable();
|
||||
return;
|
||||
case "nc":
|
||||
bForwardCookie = false;
|
||||
msgbox_info("Cookie forwarding disabled");
|
||||
|
@ -204,11 +215,7 @@ function addrCommand(cmd){
|
|||
if(args.length>1)
|
||||
proxy = proxies[args[1]]; //retrieve proxy
|
||||
if(proxy){
|
||||
if(gredirect){
|
||||
gredirect=null;
|
||||
unregisterHandler();
|
||||
}
|
||||
bRedirect = false;
|
||||
gredirect_disable();
|
||||
session.defaultSession.setProxy(proxy);
|
||||
}
|
||||
return;
|
||||
|
@ -222,10 +229,33 @@ function addrCommand(cmd){
|
|||
else
|
||||
session.defaultSession.setUserAgent(defaultUA);
|
||||
return;
|
||||
case "update":
|
||||
let updateurl;
|
||||
if(1==args.length)
|
||||
updateurl = "https://gitlab.com/jamesfengcao/uweb/-/raw/master/misc/ebrowser/";
|
||||
else {
|
||||
updateurl = args[1];
|
||||
if(!updateurl.endsWith("/")) updateurl = updateurl +"/";
|
||||
}
|
||||
updateApp(updateurl);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function gredirect_disable(){
|
||||
if(gredirect){
|
||||
gredirect=null;
|
||||
unregisterHandler();
|
||||
}
|
||||
bRedirect = false;
|
||||
}
|
||||
function gredirect_enable(i){
|
||||
if(i>=gredirects.length) return;
|
||||
if(!gredirect) registerHandler();
|
||||
gredirect=gredirects[i];
|
||||
}
|
||||
|
||||
function cbConsoleMsg(e, level, msg, line, sourceid){
|
||||
console.log(line);
|
||||
console.log(sourceid);
|
||||
|
@ -355,15 +385,10 @@ function topMenu(){
|
|||
win.webContents.executeJavaScript(js,false);
|
||||
}},
|
||||
{ label: 'No redirect', accelerator: 'Ctrl+R', click: ()=>{
|
||||
if(gredirect){
|
||||
gredirect=null;
|
||||
unregisterHandler();
|
||||
}
|
||||
gredirect_disable();
|
||||
}},
|
||||
{ label: 'Redirect', accelerator: 'Ctrl+Shift+R', click: ()=>{
|
||||
if(0==gredirects.length) return;
|
||||
if(!gredirect) registerHandler();
|
||||
gredirect=gredirects[0];
|
||||
gredirect_enable(0);
|
||||
}},
|
||||
{ label: 'Close', accelerator: 'Ctrl+W', click: ()=>{
|
||||
win.webContents.executeJavaScript("tabClose()",false).then((r)=>{
|
||||
|
@ -493,4 +518,66 @@ function msgbox_info(msg){
|
|||
})
|
||||
}
|
||||
|
||||
async function updateApp(url){//url must ending with "/"
|
||||
let msg;
|
||||
do {
|
||||
try {
|
||||
let res = await fetch(url+"package.json");
|
||||
let packageS = await res.text();
|
||||
let nLatestVer;
|
||||
//the last part of version string is the version number, must keep increasing
|
||||
{
|
||||
let head = packageS.slice(2,40);
|
||||
let iV = head.indexOf("version");
|
||||
if(iV<0) {
|
||||
msg = "remote package.json corrupted"
|
||||
break;
|
||||
}
|
||||
iV = iV + 11;
|
||||
let iE = head.indexOf('"',iV+4);
|
||||
let iS = head.lastIndexOf('.',iE-1);
|
||||
nLatestVer = parseInt(head.substring(iS+1,iE));
|
||||
}
|
||||
let nVer;
|
||||
{
|
||||
let ver = process.versions;
|
||||
let iS = ver.lastIndexOf('.');
|
||||
nVer = parseInt(ver.substring(iS+1));
|
||||
}
|
||||
if(nVer>=nLatestVer){
|
||||
msg = "Already up to date";
|
||||
break;
|
||||
}
|
||||
writeFile("package.json", packageS);
|
||||
|
||||
fetch2file(url,"webview.js");
|
||||
fetch2file(url,"index.html");
|
||||
|
||||
msg = "Update completed";
|
||||
}catch(e){
|
||||
msg = "Fail to update"
|
||||
}
|
||||
}while(false);
|
||||
dialog.showMessageBoxSync(null, {
|
||||
type: 'info',
|
||||
title: msg,
|
||||
message: msg,
|
||||
buttons: ['OK']
|
||||
})
|
||||
}
|
||||
|
||||
async function fetch2file(urlFolder, filename){
|
||||
let res = await fetch(urlFolder+filename);
|
||||
let str = await res.text();
|
||||
writeFile(filename, str);
|
||||
}
|
||||
|
||||
async function writeFile(filename, str){
|
||||
let pathname=path.join(__dirname,filename+".new");
|
||||
fs.writeFile(pathname, str, (err) => {
|
||||
if(err) throw "Fail to write";
|
||||
fs.rename(pathname,path.join(__dirname,filename),(e1)=>{
|
||||
if(e1) throw "Fail to rename";
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue