web-dev-qa-db-fra.com

Android: Exemple de code pour utiliser sa propre connexion VPN dans Android 4.0 à l'aide de l'API VPNService

Je suis nouveau sur Android et j'essaie d'établir et de me connecter à nos propres vpn (Pas les fournisseurs par défaut vpn c'est-à-dire PPTP , L2TP etc qui est présent dans le Android Setting -> Wireless and Networks) par programmation.

Mon scénario est, j'ai un bouton et quand je clique sur le bouton, je dois configurer mon propre vpn et un lien (disons www.google.com) devrait passer par ce VPN que j'avais configuré .

Existe-t-il un exemple de code?

19
Sudarshan

Je ne sais pas pourquoi j'ai googlé mille fois, mais je n'ai pas la recherche de github. À la recherche des âges maintenant, j'en ai finalement trouvé un écrit magnifiquement. Le code est littéralement beau ce qui est rare:

https://github.com/hexene/LocalVPN

Le projet n'utilise pas NDK ou tout code natif, purement Java, ce qui en fait un début parfait pour un projet simple (pas qu'il ne sera pas bon pour complexe). Et le workflow est assez simple:

  • Lorsqu'une application fait une demande sortante (demande de Android OS à un serveur sur Internet), la demande arrive LocalVPNService.class
  • Dans LocalVPNService, le paquet TCP/UDP est étudié et les IP source et de destination sont extraites (Packet.class Est utilisé pour cela).
  • LocalVPNService établit une connexion au nom de l'application qui démarre la demande et appelle VpnService.protect() sur une connexion nouvellement créée pour éviter les boucles.
  • Les connexions sont ensuite passées aux gestionnaires qui passent simplement des octets de/vers les deux connexions dans une boucle. Les threads pour UDP/TCP In/Out sont gérés dans différentes classes de travail et threads.

Comme vous pouvez le voir, l'hexène a déjà fait tout le travail et le levage de charges lourdes.

Toutes les classes référencées ci-dessus se trouvent dans le répertoire des projets. J'ai jeté un coup d'œil au code source de github, le flux de travail discuté ici n'est peut-être pas précis.

32
hkoosha

Vous pouvez vous référer à l'exemple d'application ToyVpn qui est fourni avec votre Android SDK. Alors allez simplement aux exemples et référez-vous à cette application. Voir aussi ceci

En plus de cela, vous pouvez télécharger le code source d'Openvpn. Voici le lien pour ça

https: //github.com/kghost/ics-openvpn

Merci

8
Juned
4
gunwin