anywherelan / awl Goto Github PK
View Code? Open in Web Editor NEWSecurely connect your devices into a private network
Home Page: https://anywherelan.com
License: Mozilla Public License 2.0
Securely connect your devices into a private network
Home Page: https://anywherelan.com
License: Mozilla Public License 2.0
This includes:
Now pre-release versions (versions that builds not from commit with release tag) look like 0.4.0-118-g8113a535-dirty, where 118 is number of commits after the tag, but updaterini lib is trying to parse it like channel -> can't find it in channel list -> error
The best option for us now is to truncate this dirty part and left only the tag (tag is 0.4.0 in my example)
Also dev builds can't update by the same reason. (Should we hardcode it?)
On any android version, when you start app (server started), then close app from 'recent applications' (server still working because it is attached to android vpn activity), after this if you try to open app again, it shows error PlatformException(error, failed to setup api: unable to bind address 127.0.0.1:8639: listen tcp 127.0.0.1:8639: bind: address already in use, null, null)
because it tried to start server for the second time instead of connecting to the already running one.
some repo like openp2p has good direct connections
This can be useful for a kind of "public nodes" that provide services that are available to everyone (e.g. websites, game servers, speedtest).
INFO net/identify failed negotiate identify protocol with peer {"peer": "***", "error": "Application error 0x1 (remote): peer:***: cannot reserve connection: resource limit exceeded"}
This is because of running awl-tray under root.
https://github.com/anywherelan/awl/runs/4820310308?check_suite_focus=true#step:4:76
This fails on line
./librespeed-cli --local-json config_librespeed.json --server 2 --json --share | python3 -m json.tool
With output
Expecting value: line 1 column 1 (char 0)
##***error***Process completed with exit code 1.
If we talk about cli, it is much easier to work with your peers by their aliases.
Now aliases is not unique, so let's fix that!
Step 1. Settings should be checked for non-unique aliases on awl starts
Step 2. Add checks on cli peers rename/add commands (serverside)
Step 3. When user add new peer without alias, we should safe new peer's name to alias, to protect users from scam. If new peer's name is not unique we should add something to the end of his name (a number for example)
I have a padavan router, CPU is MT7621A, need a mips or mipsle platform version
uname -a:
Linux Bsyy 3.4.113 #7 SMP Sun Jan 9 04:53:57 CST 2022 mips GNU/Linux
admin.awl page is not shown on chrome page becouse of "Not Secure" warning on Win10
Representative benchmark:
https://github.com/anywherelan/awl/blob/master/application_test.go#L230
Probably we should wait until Go 1.21 is released
More info here: incrediblezayed/file_saver#14
There should be a page with text and images which explains the app and provides links with more info. Show this page on first launch.
... for those who can't or do not want to side-load stuff.
I think this is a good idea. i would like to install awl as a windows service but need to protect it with a password
Sometimes it's necessary to access the internet from another IP address. This can be used to bypass firewalls or government restrictions. This feature allows you to use your known peers to be socks5 proxy server for you (from their permission, of course).
More technically:
Allow to use my device as socks5 proxy server
. This configuration should be accessible from the GUI and also be in peer status protocol here127.0.0.66:1080
which is intended to be a socks5 proxy endpoint. Something like this. On each connect there should be opened new stream to p2p protocol (below) that should be handled with bidirectional io.Copy
until io.EOF
This project is awesome! Is there a way to enable a peer to auto accept requests?
now cli has updates command, awl tray functionality should be expanded this way too.
GLHF
Linux version :
Linux OTCloud_5634 3.10.33 #1 SMP PREEMPT Tue Jun 30 18:57:47 CST 2020 XL-V2.4.4 armv7l GNU/Linux
ping x86 node from arm node:
#ping 10.66.0.3
PING 10.66.0.3 (10.66.0.3): 56 data bytes
64 bytes from 10.66.0.3: seq=0 ttl=128 time=36.732 ms
64 bytes from 10.66.0.3: seq=1 ttl=128 time=38.229 ms
64 bytes from 10.66.0.3: seq=2 ttl=128 time=37.228 ms
^C
--- 10.66.0.3 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
ping arm node from x64 node:
#ping 10.66.0.2
PING 10.66.0.2 (10.66.0.2): 56 data bytes
--- 10.66.0.2 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
maybe arm version have a bug.
Library that we use depends on zenity
, which may be not installed. In particular, it is not installed on Kubuntu 20.04. We can use kdialog
as fallback or try to package this dependencies with application. Need to find out which packages (zenity
, kdialog
and maybe others) are installed on modern OS versions by default.
For now only community bootstrap nodes can be used as relays (they announce themselves as relays). But we can add more clever thing: allow you to use your friendly devices as a relay for you. This feature will make awl truly mesh vpn.
How this will work. For instance, you have 3 devices: server 1 with public IP, server 2 without public IP and your laptop, they all know each other. Because server 1 have public IP, you can connect to server 2 from your laptop via server 1.
More technically:
Allow to use my device as relay for known peers
. By default it's falselibp2p.EnableRelayService(relay.WithResources(relayResourcesCfg), relay.WithACL(TODO))
. Important part is ACL - we must allow it only for known peers and only if peer enabled config option aboveCurrently we use Manual build release
CI job for building apks, the problem is that it generates different signature each time. We need to use our own signature to distribute apks.
As a result, in local networks, all connections between two android devices go through relays. Between android and other OS, this issue has less impact because Android --> not Android works fine.
Upstream issue: golang/go#40569
Logs from device:
2021-11-17 22:15:04 ERROR basichost failed to resolve local interface addresses {"error": "route ip+net: netlinkrib: permission denied"}
2021-11-17 22:15:05 ERROR basichost failed to resolve local interface addresses {"error": "route ip+net: netlinkrib: permission denied"}
2021-11-17 22:15:05 INFO awl/p2p Connection established with bootstrap node: 12D3KooWNWa2r6dJVogbjNf1CKrKNttVAhKZr1PpWRPJYX7o4t4M
2021-11-17 22:15:05 INFO net/identify failed to get interface listen addrs%!(EXTRA *net.OpError=route ip+net: netlinkrib: permission denied)
2021-11-17 22:15:05 INFO net/identify failed to get interface listen addrs%!(EXTRA *net.OpError=route ip+net: netlinkrib: permission denied)
Addresses announced to DHT:
"PeerstoreAddrs": [
"/ip4/127.0.0.1/tcp/37449",
"/ip4/127.0.0.1/udp/42789/quic",
"/ip6/::1/tcp/37475",
"/ip6/::1/udp/42451/quic"
]
Possible solution that we could try: Catfriend1/syncthing-android#800
Also, there is an option to temporary downgrade targetSdkVersion
to 29, since we are not publishing the app anywhere at the moment. But when we will, we'll have to set 30 as per google play's policy.
Just an option in config file should be enough. Check it on application startup. No need to add it to GUI, yet
Google pixel 2;
Android 11;
is it possible to run?
TODO:
cli log
to cli logs
to make it more obvious that it print logs rather than logs somethingcli me stats
to cli me status
cli peers rename
(or add new command) to make it possible to update peer DomainNamecli me id
print QR code with peer_id
in itcli me rename
to rename ourselves. add it to readme in server installation stepscli -h
description link to this github repositoryExperienced on Windows 11 Pro.
Very odd bug indeed. Happens after every restart of awl service.
Restarting the server fixes this issue.
Ask for peer name, network interface address range, etc
See test output: https://github.com/anywherelan/awl/runs/4311301730?check_suite_focus=true#step:5:103
There is probably some bug here. Need to verify that this is not upload-only problem, because librespeed-cli
always starts with a download.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.