[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[feature] enable running snapdrop in local network - #558

Open
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network
Open

[feature] enable running snapdrop in local network#558
schlagmichdoch wants to merge 3 commits into
SnapDrop:masterfrom
schlagmichdoch:enable_snapdrop_on_local_network

Conversation

@schlagmichdoch

@schlagmichdochschlagmichdoch commented Jan 6, 2023

Copy link
Copy Markdown
Contributor

I wanted to run snapdrop as an instance on a raspberry Pi but devices where not shown to each other.
Devices are grouped by their ip addresses. On local networks all devices have different ip adresses and therefor do not see each other.
As the ip addresses shown to the server are private in that scenario, I added a function isIpPrivate() to differentiate that case and group all devices with private ip addresses together in one room.

The function isIpPrivate() is based on those two stackoverflow discussions as a combination of both:
https://stackoverflow.com/questions/13969655/how-do-you-check-whether-the-given-ip-is-internal-or-not/74891529#74891529
https://stackoverflow.com/questions/35374207/how-to-determine-if-ipv6-address-is-private

…ame room to make it possible to run snapdrop on the local network
@blipk

Copy link
Copy Markdown

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

 /home/node/app/index.js:202
if (net.isIPv4(ip)) {
^
ReferenceError: net is not defined

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

Hey @schlagmichdoch this PR doesn't work for me, looks like it's missing the definition for isIPv4()

Hey @blipk Actually, it's the whole package net that is missing as I forgot to commit the import -.-

I just added the following line to this PR which resolves the error:

constnet=require('net');

Please try again!

@blipk

blipk commented Feb 4, 2023

Copy link
Copy Markdown

@schlagmichdoch I just changed the line to:
if (!ip.includes(":")) {

Seemed silly to me to pull in another module for just one function, and I'm pretty sure all ipv6 addresses will have a semicolon, feel free to let me know otherwise.

Also you're still checking the same comparison twice on L192.

I also tried with your change now, and it still doesn't work, not detecting as a peer with my android phone
Perhaps something needs to be changed in the client code, or on the app.

EDIT:
Looks like I have to point the "Base URL" in the android app settings to the scheme, IP and port that my instance is running on, it's working with that change.

It'd be nice if there was some level of auto-discovery, so I could use my home instance at home, and others elsewhere.
I noticed you have forked this to "PairDrop", are you making changes to the app as well? I might give that a go.

@schlagmichdoch

schlagmichdoch commented Feb 4, 2023

Copy link
Copy Markdown
ContributorAuthor

@blipk net is built-in to node so it wouldn't matter much but your right, I applied your change. Additionally I moved the prefix removal outside of the ipIsPrivate method.

I'm not sure what you mean with the auto-discovery feature and how this could be implemented. I'm also not sure what the android app is doing. As this is a PWA, there should be no need for an additional app.

The PairDrop fork provides an added pairing functionality to enable sending outside of the local network. There are multiple other changes, lots of stability fixes and ongoing development so feel free to find out more in the Readme, give it a go and add feature requests or issues.

@blipk

blipk commented Feb 5, 2023

Copy link
Copy Markdown

@schlagmichdoch
I don't use the PWA, there's an app on the F-Droid store, I had to change the setting I mentioned in order for it to work over the local instance.
By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

@schlagmichdoch

Copy link
Copy Markdown
ContributorAuthor

there's an app on the F-Droid store

I'll take a look at that. Not sure whether that is compatible with PairDrop. I'll create an issue.

By auto-discovery I mean it would be good to scan the local network for instances (or have the instance broadcast themselves) and if there's none local then revert to snapdrop.net etc.

Why would you use multiple instances? Just make your private instance publicly available via port forwarding in the routers settings and you can always use your private instance

For any further discussion you should propably create a new issue here or on my repo to keep comments here on topic

@blipk

blipk commented Feb 7, 2023

Copy link
Copy Markdown

Setting up port forwarding is not so easy for a lot of people, many ISPs are using CGNAT these days and/or only offer IPv6 which is still limited.

I mostly use it to share between my devices at home anyway, just figured I'd mention.

@schlagmichdoch

schlagmichdoch commented Feb 9, 2023

Copy link
Copy Markdown
ContributorAuthor

True, but I guess it’s wise to keep the instances separated from each other so front and backend is matching. If you want to use two instances and don’t want to install two PWAs with the Snapdrop for Android app you can change the base url in the settings. Maybe you could create a feature request for quick changing between instances at its repo? 🤷🏽‍♂️

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@schlagmichdoch@blipk