Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sharable Links via traditionally hosted redirect server #2406

Closed
jeff-hykin opened this issue Jan 24, 2020 · 37 comments
Closed

Sharable Links via traditionally hosted redirect server #2406

jeff-hykin opened this issue Jan 24, 2020 · 37 comments
Labels

Comments

@jeff-hykin
Copy link

Is your feature request related to a problem? Please describe.

Even if I specify that ZeroNet is needed, people still complain that the link doesn't work.
I can't really blame them, I'm busy too.
I'd like to make ZeroNet sites slightly more friendly for sharing on mainstream outlets (where people may or may not have ZeroNet installed).

Describe the behavior you'd like

As a Zite dev, I'd like to generate a shareable link (different from the Zite url), such that, when people visit that link, if they don't have Zeronet installed, they receive an explanation that they need ZeroNet, with directions/references on installation. (And if they do have Zeronet installed, they are redirected to the actual Zite)

Describe a possible implementation

I could set this up for proof of concept

  • Setup a traditionally hosted server
  • Externally shareable links are actually just a link that directs to that traditionally hosted server
  • The externally shareable link contains the Zite URL as a parameter
  • The traditionally hosted server checks if ZeroNet is installed through a kind of localhost ping (unsure on the feasibility of this)
  • If ZeroNet is installed it immediately redirects to the Zite URL
  • If not it displays the installation explanation

Describe alternatives you've considered

  • Each Zite could designate its own traditionally-hosted backup server that could be shared externally
  • The ZeroNet app not being a required dependency (obviously unrealistic)

Additional context

ZeroNet is an incredible hidden gem, but it seems like its staying hidden. As a web dev ZeroNet has some of the most well designed interfaces I've seen on the entire internet. I'd love this to become more common, as I have several must-be-zeronet apps I'd like develop.

@HelloZeroNet
Copy link
Owner

HelloZeroNet commented Jan 24, 2020

It's a good idea, but I'm not sure about the automatically redirection: I think it would be a more clean solution to let the user decide if wants to open the link in the local client or via a proxy.

So as a plan: we would create a https://go.zeronet.io/[Siteaddress] url that would have a short explanation and link to a local client, download instructions and possible links to public proxies.

Maybe it would be even better to use https://go.zeronet.io/#[Siteaddress] as url, so the site address would not be sent to the server

@filips123
Copy link
Contributor

It should be something like zeronet.link. And it should also provide stable public proxy for users that don't want or can't install ZeroNet.

And in similar way as Ethereum and IPFS have .eth.link to like ENS+IPFS websites (domain.eth.link resolves to IPFS gateway), ZeroNet should also support address.zeronet.to and domain.bit.zeronet.to which would resolver to ZeroNet proxy.

However, problem here is centralization and relying on singe server. So, when/if ZeroNet would get implementation of domain-based wrapper (@imachug was working on that), it should also locally resolve .zeronet.to addresses without relying on DNS servers.

@filips123
Copy link
Contributor

Also, with DNS plugin (which isn't merged yet), you can use DNS reverse proxy for your own site so classic DNS domain resolves to public or personal ZeroNet instance.

@HelloZeroNet
Copy link
Owner

I'm not fan of the "default, official proxy" idea as it would lead to centralization, would not encourage to run other proxies and also magnet of dmca/legal requests.

@ghost
Copy link

ghost commented Jan 26, 2020

Garbage!

First of all I have contributed to ZeroNet and my accounts are suspended because Zeronet is full of retarded idiots who reporting my accounts just to make sure I get no credit for my contributions. Well over 20 account is suspended by GitHub. For example I fixed a Hungarian typo d19cc64 and various other pull request I made which was merged. I cleaned up trashy code, fixed encodings added correct MIME types to fix font loading etc... No credit given whatsoever.

Also I have reported that ZeroNet is distributed illegally and nearly 3 months after my report the license is the same because @HelloZeroNet is ignorant person who don't give a damn about how previous contributors voted for GPLv3+ #2273 This voting also has been manipulated by @imachug and archive.org and other archiver sites are there to verify this. You should be shameful @shortcutme that you let this happen what happening here for 3 months now.

Now you come up with the idea to have a centralized proxy is absolutely disgraceful, not enough that downloading and running ZeroNet will serve your *.zeronetwork.bit domains? Why the hell you want to have a public proxy at zeronet.io also?

If someone want to share links and want to resolve that links to ZeroNet than that person whousl spend a few bucks to run a zeroNet proxy on some VPS and set up the domain accordingly.

Fix the license, reflect what most of the contributors voted for, give me credit for my contributions and stop being an idiot who centralize ZeroNet with zeronetwork.bit and zeronet.io domains and subdomains on those domains.

@filips123 you can start reversing all my contributions because you are the one who sending reports to github. Go and remove / reverse all my contributions. I contributed more to ZeroNet than you! You are disgusting!

@filips123
Copy link
Contributor

...

@ghost
Copy link

ghost commented Jan 26, 2020

@filips123 @imachug GitHub monkey. Developing a decentralized network on a centralized network where you complaining to GitHub to suspend accounts because you don't want to give credit for contributions is pretty disgusting! Just think about for a second. You all should be thankful for any contribution!

Top on that, the same time you claiming that ZeroNet is "censorship resistant" when you motherfckers censoring ZeroNet's GitHub repository.

@ghost
Copy link

ghost commented Jan 26, 2020

@HelloZeroNet Tamas te meg legyel mar olyan szives hogy lecsereled a licenszt! Rakj ra egy GPLv3+ licenszt es mindenki boldog.

@filips123
Copy link
Contributor

Death and other threats, spamming, trolling, insults... are also pretty disgusting. Just think about for a second.

@ghost
Copy link

ghost commented Jan 26, 2020

Maybe you deserve to be punched in the face when you destroy other peoples work with your complaints to GitHub which often result in account suspension. I can show you 3 account all of which suspended and I have contributed with those accounts to ZeroNet. Think about that for a second.

@ghost
Copy link

ghost commented Jan 26, 2020

@HelloZeroNet ZeroNet should be developed in a place which is uncensorable! @imachug have GitCenter. I'm pretty sure that is censorable too but way better than have an idiot like @filips123 who attacking every single account I use to contribute. Actually I'm a contributor and is sick that I need to open new account because of this retard.

@ghost
Copy link

ghost commented Jan 26, 2020

Imagine you make a contribution and than a few minutes after GitHub flags the account because @filips123 send them some shit. Basically I have well over 20 account suspended and in 3 of them I'm a contributor to ZeroNet. I strongly support the IDEA to abandon fucking GitHub and move to @imachug's GitCenter or some alternative place on ZeroNet itself where this maniac @filips123 can't attack my accounts.

@filips123
Copy link
Contributor

I wouldn't report you if you wouldn't start spamming, trolling, making threats...

@ghost
Copy link

ghost commented Jan 26, 2020

BS! 😠 For example "Gigantic Black Bear" d19cc64 is suspended without that I made comment! I just sent pr to fix a typo and my account was suspended because of you! There was no comment whatsoever so you lie.

@filips123
Copy link
Contributor

I didn't report GiganticBlackBear. I just reported account in which you were spamming, trolling and making threats.

@ghost
Copy link

ghost commented Jan 26, 2020

Yeah, so GitHub just for fun suspending my account right after that my PR get merged to ZeroNet. Cut the BS!

@filips123
Copy link
Contributor

Do you have any proof that I reported your account? If not, shut up!

@ghost
Copy link

ghost commented Jan 26, 2020

You acknowledge that you like a maniac reporting all my account, I have all reasons to believe that one too. You contributed 8 times a total to ZeroNet and your contribution sucks. @imachug and @shortcutme at least commit useful things and they not abusing GitHub systems like you. Shame on you.

@filips123
Copy link
Contributor

Still no proof... Shame on you!

@filips123
Copy link
Contributor

And what are your contributions? Stupid typo fix that you try to copyright. Or handling MIME types according to standards. Why don't you copyright Hello World program?

@filips123
Copy link
Contributor

And just that you know. I didn't reported this exact account you had until few minutes ago. I actually noticed that it is deleted 30 seconds ago.

@jeff-hykin
Copy link
Author

jeff-hykin commented Jan 27, 2020

Wow, well thank you @HelloZeroNet, @krzysztof113, and @filips123 for responding so quickly, I'm used to waiting a few weeks before hearing anything on my issues.

Part of it is implemented in zeronet.link
https://github.com/krzysztof113/ZeronetLink
I've seen that people use the same technique for their sites specifically.
@krzysztof113 that repo

This is great, it is exactly the kind of thing I had in mind. Thank you!

It's a good idea, but I'm not sure about the automatically redirection: I think it would be a more clean solution to let the user decide if wants to open the link in the local client or via a proxy.

Thats a good consideration, I had not considered proxies as I didn't set one up myself. The redirect website could have an option similar to Android's option of "Open ___ link with __ app [Always] [Just this one Time]" But instead of ___ app it would be local network or via a proxy and it could save the user's preference to localStorage.

Maybe it would be even better to use https://go.zeronet.io/#[Siteaddress] as url, so the site address would not be sent to the server

I'm not sure what you mean by this. Won't the server need the site address in order to perform the redirect?

I'm not fan of the "default, official proxy" idea as it would lead to centralization

While I'm not so sure about a central proxy, I do think having https://go.zeronet.io/#[Siteaddress] as an official redirect service would be good. For all I know, krzysztof113 could add a commit tomorrow that redirects all my users into a phishing attack. (No offence @krzysztof113, I'm sure your server is great and I'll probably use it in the meantime). I have already trusted the ZeroNet repo enough to install it's app on my computer so it makes sense to trust it a little bit more as a redirect service (in comparison to some random 3rd party service). For those who may be concerned, there could even be a redirect-verification-tool built into the ZeroNet app that performs verification checks at random intervals to make sure the https://zeronet.io/ (or any site) is correctly performing redirects.

With that said about a central redirect service, I agree there should always be an ability to switch to an alternative. However, as per https://github.com/krzysztof113/ZeronetLink we already have that alternative.

@jeff-hykin
Copy link
Author

Hi @ghost,

If you're reading this, why not use your GPLv2-given-right and just clone the repo? You can

  • make it 100% uncensored
  • Give yourself all the credit you'd like to
  • Upgrade GLPv2 to v3 as described here

The beauty of open source, is you never have to tell someone what to do because you can always do it yourself. So why not take advantage of that, and stop disrupting a conversation between people who would like to work together.

@filips123
Copy link
Contributor

I'm not sure what you mean by this. Won't the server need the site address in order to perform the redirect?

Redirect could be performed by JavaScript. And because URL fragments (after #) are not sent to server, it shouldn't be able to track them.

Upgrade GLPv2 to v3 as described here

He actually can't publicly relicense ZeroNet as it is licensed as GPLv2-only and this means that he needs agreement from all ZeroNet contributors to relicense their work. He won't need agreement if ZeroNet would be licensed as GPLv2-or-later, but it is not. That page from GNU is just for relicesing your own work, but since ZeroNet includes contributions from other users, he needs agreement from them.

@jeff-hykin
Copy link
Author

Redirect could be performed by JavaScript. And because URL fragments (after #) are not sent to server, it shouldn't be able to track them.

Interesting, I wasn't aware of that functionality. From a security standpoint, on the downside the client could still send the data back to the server, but on the (stronger) upside: everyone can see what the client is doing and if they see it send data back to the server would be incredibly suspicious. So that sounds like a fantastic idea to me. Now that I think about it, the redirect service could easily be hosted as a GitHub pages site.

He actually can't publicly relicense ZeroNet as it is licensed as GPLv2-only and this means that he needs agreement from all ZeroNet contributors to relicense their work. He won't need agreement if ZeroNet would be licensed as GPLv2-or-later, but it is not. That page from GNU is just for relicesing your own work, but since ZeroNet includes contributions from other users, he needs agreement from them.

Ah, but you see @ghost has contributed vast amounts of code so clearly he can just fill in the gaps and then upgrade the license 😄

(thank you for the info though, it was unclear to me how that would have been handled)

@mx5kevin
Copy link

mx5kevin commented Jan 28, 2020

I also had a similar idea with a concrete idea. That would be a simple solution. Given a XY GB sized storage no matter how much big! It’s works with single zites and optional files too! Old files are automatically deleted from the server when someone asks for new ones. This deletion depends on the storage capacity. The are a browser notification system. Becuse many things are not immediately available. If the requested file has downloaded the browser shows a popup with the link! Later, it will remain online untill other users requesting other data. And at the end of the list it is deleted. This would require one plugin. And a server access to port 80 what working like a simple http server. These servers they could communicate with each other. So if somebody's got the full thing what the user want then a simple redirection happend. This redirection can happend to multiple cilent too. As well as downloading the same thing too can make 2 or more client too.If no one has it.So if you have one server what goes offline data is still available.It could work behind TOR too. File and zite owners this way even if they not 24/7 active could easily be shared their own content in clearnet. But for that, something would be very important. For all large file need a download button regardless of the page. What resume the download.Something like this: Files download one click using a discrete msg, what shows the client when existing a large file in the opened page. You could protect your own files from automatic deletion.And just a separate line need in the client like the recently downloaded sites in Zero Hello menu. And a similar seperated line in files menu. To not to get mixed up with the user own things. It could be added here the own files too as indexed from the files using a single button click.From behind Tor anonymous way anyone could set up such a server who online permanently for several hours a day or 24/7. Thats another server what have clearnet access can index too the server what server are behind TOR.This system could also be used for that to help seeding unseeded or new files too. And that's not all. Users could also be encouraged through a reward-based system. Whoever runs such a service it can be retrieved or stored data on this network. And so it can be stored long term the users his own files and zites who help with this.

@HelloZeroNet
Copy link
Owner

I have created a first version:
https://zeronet.io/#Site:1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8

It checks the local client by loading http://127.0.0.1:43110/favicon.ico

If anyone has other proxy addresses it can be added here: https://github.com/HelloZeroNet/zeronet.io/blob/master/index.html#L120

@filips123
Copy link
Contributor

filips123 commented Feb 7, 2020

It doesn't work for me in Firefox. It says that my ZeroNet local client is not detected, even if it is running. It fails because it tries to load favicon as a stylesheet so MIME type is incorrect.

@filips123
Copy link
Contributor

Also, wouldn't it be better to create a separate HTML and CSS files for this, as currently it is just embedds in main ZeroNet website? So it also loads 10 more files even if they are not needed for this.

So it would be https://zeronet.io/Site/#1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8, or even better https://go.zeronet.io/#1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8.

@HelloZeroNet
Copy link
Owner

Thanks for the suggestions, I have changed the checking and it should work now on FF.
Separated the landing page to https://go.zeronet.io/#1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8, so it won't load unnecessary files and also moved the translator php code to separate file.

If you are running the client on non-default port you can still click the link and change the port/host later. I think this is the best solution we can find now.

@jeff-hykin
Copy link
Author

jeff-hykin commented Feb 8, 2020

This is great, and I think there's just one addition I'd like to request. Can there be a split between local and proxy with a url? Otherwise I'm going to need to give a little mini-tutorial with every post explaining to users what to expect (that the link doesn't actually go to my site) and option to pick which is kind of what I was trying to avoid in the first place.

If there are two urls:
https://go.zeronet.io/local/#1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8
https://go.zeronet.io/proxy/#1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8

I can say:
Hey non-zeronet users, test out my site: proxy-url and consider getting Zeronet!
Zeronet users, here's the fast version of the site: local-url

That way once any user clicks the link they're greeted with what they expected instead of a 404-looking page even when they have Zeronet installed.

@krzysztof113
Copy link

@HelloZeroNet sorry to say but it's still broken atm. Site address is ignored.
obraz

@jeff-hykin it shouldn't be working like this as using proxy promotes centralization. So it shouldn't be recommended, rather last resort.

@HelloZeroNet
Copy link
Owner

HelloZeroNet commented Feb 8, 2020

The my bad, the address format is https://go.zeronet.io/#Site:1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8

You should only use it for non-ZeroNet users. There is no reason to use this page if you expect that the user already have zeronet installed.

@filips123
Copy link
Contributor

@HelloZeroNet I created PR which modifiers regex to allow both access with Site: prefix and without it: HelloZeroNet/zeronet.io#46.

@HelloZeroNet
Copy link
Owner

I think it's better to have one format. In the future we will have non-site addressed (hash-based) content on zeronet, so this way it's more future-proof.

@jeff-hykin
Copy link
Author

Can there be a split between local and proxy with a url?

I'm dumb, please ignore that^ last message. I could literally just use the local client url or proxy url.

@jeff-hykin it shouldn't be working like this as using proxy promotes centralization. So it shouldn't be recommended, rather last resort.

Oh I agree, my original request I was assuming proxy wasn't even going to be an option.

@jeff-hykin
Copy link
Author

jeff-hykin commented Feb 9, 2020

You should only use it for non-ZeroNet users. There is no reason to use this page if you expect that the user already have ZeroNet installed.

The reason I opened the issue is because I expect a mixed audience (some have ZeroNet, some don't, and I have no way of knowing the difference).

I think an example will illustrate the situation, so lets assume we're trying to make KopyKate go mainstream

  1. For KopyKate to "take-off" in a way similar to the early days of YouTube, it needs to be accessible by a non-technical audience. An audience that probably doesn't know what localhost or proxy is or the difference between them.
  2. KopyKate has a high data requirement, if a significant number of users are using proxies (I believe) the service isn't going to be capable of scaling to a larger audience. It will simply become slow and people will stop using it.

Its hard enough to get people interested in a regular site when all they have to do is click the link. Adding a technical question like "Using a proxy or using a local client?" is going to act as a deterrent. Users will say "yeah, I was curious, but not curious enough to do research on proxies".

Think of the days of FlashPlayer; people couldn't even tell you if they had FlashPlayer installed, they just installed it if they were told they needed it and then they would reload the page. (This isn't in support of FlashPlayer, it just shows what non-technical users are capable of and how they behave)

Needing to install ZeroNet is also a deterrent, but I believe its a necessary step for the scaleability of a mainstream site (KopyKate wouldn't work without P2P). And FlashPlayer has proven that installation is not too heavy of a burden for non-technical users.

If I'm presenting my site to a group of people, or if friends-of-friends are sharing my link on forums, I need the service to be as accessible as possible. I can't afford for it to inconvenience or confuse non-technical people who may or may not have ZeroNet installed & running, and the site itself can't afford for many people to be using proxies because of how much it would degrade performance/experience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants