Giter VIP home page Giter VIP logo

awl's People

Contributors

asmallbit avatar grigorykrasnochub avatar pymq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

awl's Issues

Make awl-tray easy to run on linux with root

This includes:

  • automatically elevate privileges to root instead of asking user to run with sudo using terminal
  • automatically create .desktop file
  • think about adding checkbox to run on system startup

Builds without release version don't update

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?)

App fails to (re)start with error 'unable to bind address'

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.

Low default resource limit configuration

INFO	net/identify	failed negotiate identify protocol with peer	{"peer": "***", "error": "Application error 0x1 (remote): peer:***: cannot reserve connection: resource limit exceeded"}

Unique peers aliases

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)

admin.awl not secure

admin.awl page is not shown on chrome page becouse of "Not Secure" warning on Win10

Add tutorial page into app

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.

Allow to use peers as socks5 proxy server

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:

  • each peer can allow known peer to use themselves as proxy server. This means that there will be new configuration for each peer like Allow to use my device as socks5 proxy server. This configuration should be accessible from the GUI and also be in peer status protocol here
  • somewhere in GUI there should be switch to use one particular peer as socks5 proxy. In system tray it can be a new submenu with list of available peers and a checkbox to use one of them. For interface and cli I don't have any good ideas, probably we can show information about currently used peer in Status section and add button for each peer to set them as proxy
  • each peer binds to something like 127.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
  • each peer provides new p2p protocol like this. This protocol handler should first check access (that remote peer can use local peer as socks5 proxy) and then "proxy" incoming stream like this. It probably should be synchronous inside StreamHandler

cc: @GrigoryKrasnochub

Question

This project is awesome! Is there a way to enable a peer to auto accept requests?

add updates to awl tray

now cli has updates command, awl tray functionality should be expanded this way too.

  1. add button update in tray menu
  2. add auto check per some time (once per day, for example)
    2.1) in settings add bool param to enable/disable auto check
    2.2) notice user about available update by using system notification

GLHF

I Can not visit arm node, but arm node can visit me

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.

Show system dialogs doesn't work on linux

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.

Allow to use peers as relays to access to another peers behind NAT

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:

  • there should be new config option like Allow to use my device as relay for known peers. By default it's false
  • a new option must be passed to p2p here. Option like libp2p.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 above
  • there must be new test here

Sign android .apk in releases

Currently 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.

Broken p2p discovery in local network on Android 11+

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.

Add option to disable awldns

Just an option in config file should be enough. Check it on application startup. No need to add it to GUI, yet

QR not readable

video_2023-05-30_20-33-49.mp4

Google pixel 2;
Android 11;

Improve AWL cli app

  1. show log command (check ubuntu head/tail command, could be helpfull)
  2. change friend-peers alias command
  3. your peer settings (Name....) change command. Open config in default editor????
  4. add info to peers_status command. (check images for additional info)
    image
    image
  5. show peer ID and QR code command. (Is it ok to use this lib???? https://github.com/mdp/qrterminal)
  6. remove peer from friends command
  7. make add peer command more useful. Add opportunity to use it interactively (choosing peer to add to friends by numbers) show message when add to friends successfully
  8. command to show this info
    image

cli: further improvements to achieve feature parity with web gui

TODO:

  • rename cli log to cli logs to make it more obvious that it print logs rather than logs something
  • rename cli me stats to cli me status
  • extend cli peers rename (or add new command) to make it possible to update peer DomainName
  • in cli me id print QR code with peer_id in it
  • add command cli me rename to rename ourselves. add it to readme in server installation steps
  • add somewhere in cli -h description link to this github repository
  • re-generate help description in README

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.