arozos icon indicating copy to clipboard operation
arozos copied to clipboard

[Feature request] Browser?

Open amgno opened this issue 3 years ago • 7 comments

Is it possible to install a web browser into this os?

amgno avatar Aug 01 '22 19:08 amgno

Hi @heryoff ,

What browser are you referencing here?

If you mean web browser, you already using a web browser to access ArozOS and it make no sense to make a web browser inside another browser. If you mean iframe browser, I guess we can add it in with some web browser like features (e.g. bookmark, history etc). However due to iframe and embedding policy problems, it might have issues opening some sites that do now allow embedding like Youtube and Google.

tobychui avatar Aug 02 '22 04:08 tobychui

I’m actually referring to a web browser, the fact is that I would like to navigate privately and without the limits of the current Network that I’m connected to.

amgno avatar Aug 02 '22 04:08 amgno

Reference: #56

yeungalan avatar Aug 02 '22 05:08 yeungalan

Mmm I see, is it possible to have other apps. Let’s say like Discord?

amgno avatar Aug 02 '22 05:08 amgno

Yes it is possible, but you might need to write your own app to comply with license requirements. Use Discord as an example, you can use third party Discord embedding library like this one from WidgetBot and a few lines of HTML and JSON configuration to make something like this.

圖片

tobychui avatar Aug 02 '22 06:08 tobychui

Wow that’s really cool. Last question: are there few apps to install and try?

amgno avatar Aug 02 '22 06:08 amgno

Most apps developed for ArozOS by third parties are used in commercial or business environment. We do open source a few apps and subservice that you can take a look over here.

tobychui avatar Aug 02 '22 06:08 tobychui

Experimental browser added in v2.005 internal preview. Will be closing this issue after release. 圖片 圖片

tobychui avatar Oct 20 '22 07:10 tobychui

Can you extend the browser with the possibility to open (and block) tabs, additional windows and popups. It would also be good to have a simple menu in the browser where you can e.g. change the popup blocklist, the access rights, the start page and set a custom DNS for the browser and maybe the possibility to assign a proxy for the browser if you want to isolate the browser from the network of the environment. A toggle button to turn this feature on and off would be great. That an ad and script blocker will probably not be an option is clear to me but it would be good to have a way to use something like in PiHole or a similar service within the browser.

Secarian avatar Feb 08 '23 00:02 Secarian

@Secarian I appreciate your suggestion, but this is currently technically not feasible due to browser's sandbox design. The only solution I came up with is by containerizing a browser and run it at server side which expose a Web VNC connection to a web interface.

tobychui avatar Feb 08 '23 15:02 tobychui

So that needs to be a Docker to?

Secarian avatar Feb 09 '23 10:02 Secarian

You could do a proxy, like Hypertabs did.

rcgram avatar Apr 14 '23 11:04 rcgram

You could do a proxy, like Hypertabs did.

This is not helpful. Can you provide a link to the example you mentioned, or propose an architecture that might help with this request?

tobychui avatar Apr 15 '23 15:04 tobychui

You could do a proxy, like Hypertabs did.

This is not helpful. Can you provide a link to the example you mentioned, or propose an architecture that might help with this request?

A serverside proxy, and make the browser connect through it. Hypertabs is, well, a browser in a browser, and it runs on an identical architecture. Your request goes through a proxy on their end. Hope this clarifies what i mean

Edit: oh yeah, and here's the link. It's a little clunky though.

rcgram avatar Apr 15 '23 18:04 rcgram

@xtreemtm I think this might be feasible, if you can make it work (The demo link you commented earlier is not working on my side). If you are planning to integrate it with ArozOS, please note that it is AGPLv3 licensed (i.e. You cannot merge it or any part of it into the ArozOS core which GPLv3 licensed). However, I guess you might be able to wrap it into a subservice module which can be licensed by individual contributors or upstream license.

Feel free to let me know if you need any help trying to integrate this. I would be interested to see a working, properly proxy browser in ArozOS as well. Good luck!

tobychui avatar Apr 16 '23 04:04 tobychui

@xtreemtm I think this might be feasible, if you can make it work (The demo link you commented earlier is not working on my side). If you are planning to integrate it with ArozOS, please note that it is AGPLv3 licensed (i.e. You cannot merge it or any part of it into the ArozOS core which GPLv3 licensed). However, I guess you might be able to wrap it into a subservice module which can be licensed by individual contributors or upstream license.

Feel free to let me know if you need any help trying to integrate this. I would be interested to see a working, properly proxy browser in ArozOS as well. Good luck!

Already started working on this, the Hypertabs website does not work on my end too, that's a problem on their side. I have actually been trying to implement a browser in a browser without VNC for a very long time, so this is a great opportunity to finally get it done.

rcgram avatar Apr 16 '23 08:04 rcgram

Issue comes up when the app does not have an executable. I am not super familiar with arozOS, so I don't have any solutions here except package the whole app into an executable.

rcgram avatar Apr 16 '23 10:04 rcgram

@xtreemtm If you can pack it into an executable for different platforms, you can easily integrate it as a subservice for arozos. ArozOS subservice is basically a reverse proxy for web server. So what you need to do is accept the -port and -info startup parameter to do your things. Here are a few examples which ArozOS core will use to start your subservice

./browser_linux_amd64 -info 
./browser_linux_amd64 -port=:12510

Port is straight forward, it tells your browser where to listen for client request. For -info, your executable should return a JSON struct so ArozOS knows how to start your binary. Here is an example of which when -info is set, your application should return and exit with code 0

{
 "Name": "MyBrowser",
 "Desc": "The best browser I ever wrote",
 "Group": "Network",
 "IconPath": "mybrowser/img/small_icon.png",
 "Version": "2.1",
 "StartDir": "mybrowser/index.html",
 "SupportFW": true,
 "LaunchFWDir": "mybrowser/index.html",
 "SupportEmb": false,
 "LaunchEmb": "",
 "InitFWSize": [
  1080,
  580
 ],
 "InitEmbSize": null,
 "SupportedExt": null
}

If you want to implement user isolations (e.g. different user have different browser state or cookies), you can check for the request header with key "aouser". This value will be populated by ArozOS reverse proxy and the requesting user id (or username) will be written in here.

If you have further questions, feel free to contact me at [email protected] and ask for Toby.

tobychui avatar Apr 16 '23 10:04 tobychui

Wrote a simple web proxy and tried to package it into an executable for arozOS, no luck. I guess i will have to leave this project alone, because I have no other ideas on how to make arozOS run it.

rcgram avatar Apr 16 '23 16:04 rcgram

The build-in browser is good enough for basic usage. Closing this issue as completed.

tobychui avatar Jan 25 '24 11:01 tobychui