Autore Topic: VPN manager  (Letto 1627 volte)

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
VPN manager
« il: 26 Agosto 2011, 13:32:01 CEST »
0
Ciao a tutti,
sto scrivendo un'applicazione che fa uso della VPN per scaricare dei dati da un server.
Vorrei trovare il modo di attivare e disattivare una VPN a piacimento dalla mia applicazione, e non tramite il menu del sistema operativo (in modo che l'operazione non debba prevedere l'intervento dell'utente).
Mi pare di aver capito che il package android.net.vpn sia privato e non pubblico. Ho trovato questo esempio in rete:

Android example -  VpnTest.java - android, net, network, smalltest, string, vpnmanager

e vorrei testarlo. Il problema è che quando aggiungo questo file .java al mio progetto naturalmente, essendo il package privato, ottengo un "The import android.net.vpn cannot be resolved".

Suppongo di dover aggiungere qualcosa al mio file .classpath e poi scaricare da qualche parte questo android.net.vpn. Avete idea di come e da dove? Grazie mille!

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:VPN manager
« Risposta #1 il: 26 Agosto 2011, 15:09:52 CEST »
0
Citazione
requires android.net.vpn library, which is not in android.jar.
  built a custom android.net.vpn.jar using the source file in
  git clone git://android.git.kernel.org/platform/frameworks/base.git
  directory: vpn/java/android/net/vpn

Trovato a giro su internet dopo svariate ricerche...
Adesso dovrò ammattire per fare il build di questa roba...

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:VPN manager
« Risposta #2 il: 29 Agosto 2011, 11:13:14 CEST »
0
Pare che poter realizzare un'applicazione in grado di connettere e disconnettere connessioni VPN senza alcun intervento dell'utente sia un'impresa epica  :-(
Ci sono open issue conclamati come questo che non lasciano sperare niente di buono: Issue 8915 -
 android -
 
 Expose VPN Services API to be available to applications -
 Android - An Open Handset Alliance Project - Google Project Hosting
 

Qualcuno è mai riuscito a fare qualcosa del genere? Grazie!

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:VPN manager
« Risposta #3 il: 30 Agosto 2011, 10:54:28 CEST »
0
Ho contattato chi ha aperto l'Issue 8915 e mi sono state confermate le difficoltà che si incontrano nel tentare di effettuare connessione e disconnessione da codice di un profilo VPN (allo stato attuale). Vi riporto la risposta dello sviluppatore:

Citazione
The example I provided does not work in current Android versions. You can try using private APIs though. You can look into Android Gingerbread source code in /frameworks/base/vpn/java/android/net/vpn and /frameworks/base/packages/VpnServices to figure out the way to start VPN connection from your application. You may need to use Java reflection to access private APIs. As far as I know the VPN private API in Honeycomb has been changed and your solution for Gingerbread is not going to work on Android 3.0 and newer.

Non è per niente banale dunque.. se qualcuno si è già cimentato o fosse interessato a cimentarsi nell'impresa mi faccia sapere.. io in questo momento sviluppo per Gingerbread...

Offline nikoct86

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
Re:VPN manager
« Risposta #4 il: 03 Novembre 2011, 22:36:17 CET »
0
Ciao Ragazzi, spero di esservi utile!
Sono riuscito ad invocare un semplice metodo della classe VpnManager attraverso la java reflection, senza compilare nessuna libreria, penso che si possa fare lo stesso con tutti gli altri metodi.
Ecco qui:
Codice (Java): [Seleziona]
public void vpn(){

String VpnManagerClassName = "android.net.vpn.VpnManager";
       
        Class<?> VpnManagerClass = null;
               
        try {
                        VpnManagerClass = Class.forName(VpnManagerClassName);
                } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
        Constructor<?> constructor = VpnManagerClass.getConstructors()[0];
               
        Object VpnManager = null;
               
        try {
                        VpnManager = constructor.newInstance(this);
                } catch (IllegalArgumentException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                } catch (InstantiationException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                } catch (IllegalAccessException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                } catch (InvocationTargetException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
               
                Method[] m = VpnManagerClass.getDeclaredMethods();
               
                for(int i=0;i<m.length;i++){
                        Log.i("INFO", m[i].getName());
                       
                        if(m[i].getName().equals("startSettingsActivity")){
                       
                                try {
                                        m[i].setAccessible(true);
                                        m[i].invoke(VpnManager);
                                        break;
                                       
                                } catch (IllegalArgumentException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (IllegalAccessException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (InvocationTargetException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                }
         
    }

Offline paolone86

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung S5300
  • Play Store ID:
    Google Play
  • Sistema operativo:
    Windows XP
Re:VPN manager
« Risposta #5 il: 06 Agosto 2013, 17:30:08 CEST »
0
anche a me interessa fare una cosa del genere. qualcuno ha novità ?

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:VPN manager
« Risposta #6 il: 29 Agosto 2013, 12:54:49 CEST »
0
Servirebbe anche a me :( aspetto news grazie!
Chi non progetta la sicurezza , programma il fallimento! K.M