Meshrabiya icon indicating copy to clipboard operation
Meshrabiya copied to clipboard

Implement Android VPN app for Meshrabiya

Open mikedawson opened this issue 1 year ago • 5 comments

User story

As a user type I want an Android VPN app for Meshrabiya so that multiple apps can use the mesh network and any permission requests do not need to be done directly in course apps.

(If work duration will exceed five days, must be broken down into multiple)

Background info on user story

  • Google nearby requires Bluetooth permission;

Implementation tasks

Each task max one day

  • [ ] Create module lib-meshrabiya-vpn that implements Android VPN

When implementation is complete: developer to attach video showing completion of acceptance criteria

Acceptance criteria

  • App is installable on Android and possible to select as a VPN using settings
  • All app traffic is routed through the app and Internet still works as normal
  • App can filter/examine each packet and determine/log
    • Destination IP address and port
    • Type of traffic (TCP/UDP)

mikedawson avatar Sep 12 '24 07:09 mikedawson

App is installable on Android and possible to select as a VPN using settings.

https://github.com/user-attachments/assets/09561a8e-c53b-4a25-8614-711d928a1668

Prashant-Android avatar Sep 12 '24 10:09 Prashant-Android

Note Ad-Away ( https://f-droid.org/en/packages/org.adaway/ ) is using a similar concept to run Ad-Blocking : it uses the VPN interface, but is not really a VPN.

mikedawson avatar Sep 12 '24 11:09 mikedawson

@Prashant-Android - HttpToolkit might be a better place to start https://httptoolkit.com/blog/inspecting-android-http/

mikedawson avatar Sep 13 '24 07:09 mikedawson

App traffic is routed through the app and Internet still works as normal

https://github.com/user-attachments/assets/c5452341-e160-44a1-b842-28cfe3f35c79

Prashant-Android avatar Sep 16 '24 04:09 Prashant-Android

App can filter/examine each packet and determine/log

  • Destination IP address and port
  • Type of traffic (TCP/UDP)

// Handles packets destined for the virtual network private fun handleVirtualNetworkPacket(buffer: ByteBuffer, length: Int) { logMessage("Handling packet for virtual network") }

https://github.com/user-attachments/assets/f5231a54-803d-4923-b416-a93faf5fbdd1

Prashant-Android avatar Sep 17 '24 07:09 Prashant-Android