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

Android support? #143

Open
flokli opened this issue Mar 1, 2024 · 3 comments
Open

Android support? #143

flokli opened this issue Mar 1, 2024 · 3 comments
Assignees
Labels
state_inprogress type_feature New feature or request

Comments

@flokli
Copy link
Contributor

flokli commented Mar 1, 2024

I'd like to reach some mycelium nodes (and non-mycelium networks behind them) from my Android phone.

A first version could provide a GUI to:

  • configure a list of bootstrap nodes
  • create key material or set the location to it
  • start/stop the mycelium service

Once started, the mycelium service would create the tun interface with the address and netmask, allowing the regular network stack to reach mycelium IPs.

Later on, I could think of the following features:

  • expose some of the connection status / list of peers / announced routes / observed network topology in the UI (by using the web API)
  • allow configuring tunnels / SRv6 encapsulation to certain nodes and add routes
@LeeSmet
Copy link
Contributor

LeeSmet commented Mar 1, 2024

Android support is planned yes (IOS as well for that matter). And indeed a setup would look something like described, with an option to set peers, and start/stop the VPN. The main "problem" right now is that I have no experience in mobile development, so that will take some time to get bootstrapped. Other than that, I'm not really up to date on the latest tech on running rust on android. At the very least, it should be possible to just create a lib (which is already there), and import that from android (with a C bridge). Perhaps a full rust solution (which includes the GUI code and stuff) is possible, which would be my preference at the moment. I'll have to take a look what is possible there. Since the library is definitely an option, I'd also not use the HTTP API but rather expose these as methods on the Stack type instead, so they can also be called directly when the library is in use.

@LeeSmet LeeSmet added the type_feature New feature or request label Mar 1, 2024
@LeeSmet
Copy link
Contributor

LeeSmet commented Mar 6, 2024

After fiddling around with this a bit, it seems that cargo mobile seems to be a viable solution to set this up. For the UI side of things, I'm hoping dioxus can be used since it seems to be the easiest to get some proper buttons/inputs/... on the screen.

Considering how this will impact the source tree, I'm currently considering setting this up in a separate project, which uses this repo as a dependency (alternatively a git submodule could be used for the time being as well).

@iwanbk
Copy link
Member

iwanbk commented May 6, 2024

initial support for android is done at #221 .
The UI uses flutter, currently under development at separate repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
state_inprogress type_feature New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants