Appcelerator Titanium script to rotate admob and iAds on iOS applications
Ads-auto-switcher-for-Titanium
ads.js is a script that allows you to use both iAds and Admob at the same place within a ©Titanium iOS project.
It works with ti.admob module (1.1) :
With this script, per default, Admob is always shown, while iAds is shown (on top of admob) and hidden during some seconds.
The script manages to move or to resize an UI object when ads are visible.
Be carefull with admob when closing a window. The module ti.admob is not
really good to stop a refreshing admob..![]()
ads.js is freely available on gitbub
MAJ on github, ads 1.23, now compatible with ti.admob 1.2.
How To use :
-
// This inits an ad positionned at top = 0.
-
// The tableview name tableViewObj
-
// will be moved down at top = 50 when an ad is visible.
-
Ti.include('ads.js');
-
ads.admobPublisherId = 'myadmobKey';
-
ads.iAdsShowHide = "iAdsShowHide.xx";
-
ads.init(tableViewObj,0,0,'top');
-
ads.showAdvert();
-
-
// This example inits only iAds on a fixed position at top = 0
-
Ti.include('ads.js');
-
ads.iAdsShowHide = 'iAdsShowHide.View';
-
ads.admobPublisherId = 'admob-ad-number';
-
ads.iadsTopInit = 50;
-
ads.useAdmob = false;
-
ads.iadsStartDelay = 0;
-
ads.init(null,0,50,1,'');
-
ads.showAdvert();
-
-
// This example inits admob, then iAds after 10sec.
-
// It resizes a textarea object from 165 to 115 pixels height, putting
-
// the ads at top position = 430.
-
Ti.include('ads.js');
-
ads.iAdsShowHide = 'iAdsShowHide.viewQRC';
-
ads.iadsStartDelay = 100000;
-
ads.iadsTopInit = 480 + 50;
-
ads.admobTopInit = 480 + 50;
-
ads.admobPublisherId = 'admob-key';
-
ads.init(myTxtArea,430,165,1,'height');
-
setTimeout(ads.showAdvert, 1000);
Full script for ads.js 1.22
-
-
var ads = {};
-
(function() {
-
// The object to be moved/resized when an ad is visible
-
ads.obj2Move = {};
-
// Top position (px) of the object when no ads on screen (typeMove = 'top')
-
// || Top ads position (typeMove = 'height')
-
ads.topPos = 0;
-
// Max height (px) for the object when no ads (don't mind when typeMove = 'top'
-
ads.objHmax = 460;
-
// Top margin (px) for the object to move (optional)
-
ads.objMargin = 0;
-
// Type of move for the object (top/height/'').
-
// - top : To move the top position of the object
-
// - height : To resize the height of the object,
-
// - '' : To have a fixed ads position. (If so, also set obj2Move = null)
-
ads.typeMove = 'top';
-
// Milliseconds before starting iads
-
ads.iadsStartDelay = 30000;
-
// Initial top position for the iads banner
-
ads.iadsTopInit = -50;
-
// Initial top position for the admob banner
-
ads.admobTopInit = -50;
-
// The event's name to be fired. It's recommanded to use one per ads's instance.
-
ads.iAdsShowHide = 'iAdsShowHide';
-
// Required : your admob id
-
ads.admobPublisherId = null;
-
// To enabled or not admob. Don't forget to change ads.iadsStartDelay if no admob
-
ads.useAdmob = true;
-
// admob's backgroundColor
-
ads.adBackgroundColor = "#FDFEFD";
-
// iAds's border color
-
ads.iAdsBorderColor = '#FDFEFD';
-
// iAds's backgroundColor
-
ads.iAdsBackgroundColor = '#FDFEFD';
-
// How long iAds is visible (milliseconds)
-
ads.iAdsTimeToShow = 14000;
-
// How long iAds is hidden (milliseconds)
-
ads.iAdsTimeToHide = 30000;
-
-
// init values
-
ads.iAdsVisible = false;
-
ads.adMobVisible = false;
-
ads.admob = null;
-
// ----------------------------------------------------------------------------
-
-
// ----------------------------------------------------------------------------
-
// Minimal values to init
-
ads.init = function(obj,objTopPos,objHmax,typeMove) {
-
ads.obj2Move = obj;
-
ads.topPos = objTopPos;
-
ads.objHmax = objHmax;
-
ads.typeMove = typeMove;
-
};
-
// ----------------------------------------------------------------------------
-
-
// ----------------------------------------------------------------------------
-
ads.showiAds = function() {
-
var firstRun = true;
-
if (parseFloat(Titanium.Platform.version) >= 3.2) {
-
Ti.API.info('ads.showiAds - build iads');
-
var iads = Ti.UI.iOS.createAdView({
-
width: 'auto',
-
height: 'auto',
-
top: ads.iadsTopInit,
-
borderColor: ads.iAdsBorderColor,
-
backgroundColor: ads.iAdsBackgroundColor
-
});
-
iads.addEventListener('load', function(){
-
Ti.API.info("ads.showiAds - iads loaded. First Run ? :"+firstRun);
-
ads.iAdsVisible = true;
-
if (firstRun) {
-
Ti.API.info("ads.showiAds - First iAds run : True");
-
iads.fireEvent(ads.iAdsShowHide);
-
firstRun = false;
-
}
-
else {
-
Ti.API.info("ads.showiAds - First iAds run ? : False");
-
setTimeout(function() { iads.fireEvent(ads.iAdsShowHide); Ti.API.info("ads.showiAds - iads loaded, firing iAdsShowHide to hide iAds");}, ads.iAdsTimeToShow);
-
}
-
});
-
iads.addEventListener('error', function(e){
-
Ti.API.info("ads.showiAds - iads error :"+e.message+ " --- adMobVisible="+ads.adMobVisible);
-
if (ads.iAdsVisible && ads.typeMove != '') {
-
if (ads.adMobVisible) {
-
if (ads.typeMove === 'top') {
-
ads.obj2Move.animate({top:ads.topPos+50+ads.objMargin,duration:250});
-
} else {
-
ads.obj2Move.animate({height:ads.objHmax-50,duration:250});
-
}
-
}
-
else {
-
if (ads.typeMove === 'top') {
-
ads.obj2Move.animate({top:ads.topPos+ads.objMargin,duration:250});
-
} else {
-
ads.obj2Move.animate({height:ads.objHmax,duration:250});
-
}
-
}
-
}
-
ads.iAdsVisible = false;
-
});
-
iads.addEventListener(ads.iAdsShowHide, function(){
-
Ti.API.info("ads.showiAds - Receive iAdsShowHide. ads.iAdsVisible :"+ads.iAdsVisible + " -- iads.visible: "+iads.visible+ " -- ads.adMobVisible: "+ads.adMobVisible);
-
if (ads.iAdsVisible && iads.visible) {
-
if (ads.adMobVisible === false) {
-
// if admob's not visible, it's better to let iAds on screen. Then retry after 20s
-
setTimeout(function() { iads.fireEvent(ads.iAdsShowHide); Ti.API.info("admob not visible, let iads for 20s more"); }, 20000);
-
}
-
else {
-
if (ads.typeMove != '') {
-
if (ads.typeMove === 'top') {
-
ads.obj2Move.animate({top:ads.topPos+50+ads.objMargin,duration:500});
-
} else {
-
ads.obj2Move.animate({height:ads.objHmax-50,duration:500});
-
}
-
}
-
iads.animate({top:ads.iadsTopInit, duration:500}, function() { iads.hide(); Ti.API.info("ads.showiAds - hide iads"); });
-
// hide iAds for X s
-
setTimeout(function() { iads.fireEvent(ads.iAdsShowHide); Ti.API.info("ads.showiAds - fire iAdsShowHide to show iAds"); }, ads.iAdsTimeToHide);
-
}
-
}
-
else {
-
if (ads.adMobVisible === false && ads.typeMove != '') {
-
if (ads.typeMove === 'top') {
-
ads.obj2Move.animate({top:ads.topPos+50+ads.objMargin,duration:500});
-
} else {
-
ads.obj2Move.animate({height:ads.objHmax-50,duration:500});
-
}
-
}
-
iads.show();
-
Ti.API.info("ads.showiAds - iads show");
-
iads.animate({top:ads.topPos, duration:500});
-
setTimeout(function() { iads.fireEvent(ads.iAdsShowHide); Ti.API.info("ads.showiAds - fire iAdsShowHide to hide iAds"); }, ads.iAdsTimeToShow);
-
}
-
});
-
Titanium.UI.currentWindow.add(iads);
-
}
-
};
-
// ----------------------------------------------------------------------------
-
-
// ----------------------------------------------------------------------------
-
ads.buildAdmob = function() {
-
if (ads.admob === null) {
-
Ti.API.info("ads.buildAdmob - try buildAdmob");
-
ads.admob = Ti.Admob.createView({
-
publisherId: ads.admobPublisherId, // required
-
top: ads.admobTopInit,
-
left: 0,
-
width: 320, // required
-
height: 50, // required
-
testing: false,
-
adBackgroundColor: ads.adBackgroundColor,
-
refreshAd:15.0 //not working with actual ti.admob module (1.1), set refresh time within admob site
-
});
-
ads.admob.addEventListener('didFailToReceiveAd', function() {
-
ads.admob = null;
-
if (!ads.iAdsVisible && ads.typeMove != '') {
-
if (ads.typeMove === 'top') {
-
ads.obj2Move.animate({top:ads.topPos+ads.objMargin,duration:250});
-
} else {
-
ads.obj2Move.animate({height:ads.objHmax,duration:250});
-
}
-
}
-
ads.adMobVisible = false;
-
setTimeout(ads.buildAdmob, 10000);
-
Ti.API.info("ads.buildAdmob - admob error : didFailToReceiveAd. Retry in 10s. adMobVisible:"+ads.adMobVisible);
-
});
-
ads.admob.addEventListener('didReceiveAd', function() {
-
Ti.API.info("ads.buildAdmob - admob event : didReceiveAd");
-
ads.showAdmob();
-
});
-
Titanium.UI.currentWindow.add(ads.admob);
-
}
-
};
-
// ----------------------------------------------------------------------------
-
-
// ----------------------------------------------------------------------------
-
ads.showAdmob = function() {
-
if (ads.adMobVisible === false) {
-
try {
-
if (!ads.iAdsVisible && ads.typeMove != '') {
-
if (ads.typeMove === 'top') {
-
ads.obj2Move.animate({top:ads.topPos+50+ads.objMargin,duration:500});
-
} else {
-
ads.obj2Move.animate({height:ads.objHmax-50,duration:500});
-
}
-
}
-
ads.adMobVisible = true;
-
ads.admob.animate({top:ads.topPos,duration:500});
-
}
-
catch (e) {
-
ads.adMobVisible = false;
-
Ti.API.info("ads.showAdmob - catch admob error showAdmob");
-
setTimeout(ads.buildAdmob, 10000);
-
}
-
}
-
};
-
// ----------------------------------------------------------------------------
-
-
// ----------------------------------------------------------------------------
-
ads.showAdvert = function() {
-
if (Titanium.Network.online) {
-
if (ads.useAdmob) {
-
ads.buildAdmob();
-
}
-
setTimeout(ads.showiAds, ads.iadsStartDelay);
-
}
-
else { // No internet connection. Retry in 30sec
-
setTimeout(ads.showAdvert, 30000);
-
}
-
};
-
// ----------------------------------------------------------------------------
-
-
})();
Les meilleurs tweaks cydia utiles pour iPhone jailbreaké (MAJ 13/02/12)
Voici une petite liste (non) exhaustive de quelques petits tweaks pour votre iPhone/iPoad... Bien sur, je parle de tweaks et autres applis.. trouvés sur cydia, donc jailbreak... Je ne parle pas ici des tweaks évidents selon moi, comme sbsetings, lockinfo ou intelliscreenX.. Juste de p'tits trucs qui devraient être déjà intégrés par Apple!
Tous ces tweak sont compatibles iOS 5.0.1 pour le moment, et souvent l'étaient déjà sous iOS 4.x.
Action Menu
Description : Ajoute des actions sur la barre de copier/coller
Author : Ryan Petrich
http://rpetri.ch/cydia/actionmenu/
Activator
Description : Ou comment "vraiment" utiliser le multitouch du device!!
http://rpetri.ch/cydia/activator/
Repo : http://rpetri.ch/repo/
Delete Word
Description : Comme sur un ordi, shift+delete supprime le mot entier
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=deletewordData
FolderEnhancer (payant)
Description : Quitte à avoir des dossiers dans iOS, autant en avoir des vrais!
http://moreinfo.thebigboss.org/moreinfo/user_depictions/ashikase/jp.ashikase.folderenhancer/
iAppLocker
Description : Permet de protéger par code le lancement d'applis. Pas le meilleur, mais gratuit et simple.
http://modmyi.com/info/iapplocker.php
iPhoneDelivery
Description : iOS 5.. mais toujours pas les accusés de reception pour les sms... délirant!
http//code.google.com/p/iphone-delivery-report/
Repo : http://iphonedelivery.advinux.com/cydia/
ManualCorrect
Description : Change le comportement de l'autocorrection. Il faut taper sur la proposition pour qu'elle s'insère! Tellement plus pratique que de supporter des corrections trop souvent hasardeuses..
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=manualcorrectData
NCQuickDismiss
Description : Ajoute un bouton pour faire disparaitre les notifications (celles qui apparaissent en haut de l'écran) plus rapidement.
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=ncquickdismissDp
PreventSleep
Description : Toggle device from entering sleep mode.
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=preventsleepData
Pull To Dismiss
Description : Faire disparaitre le clavier grace à un glissement vers le bas (très utile dans les mails par ex)
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=pulltodismissDp
SnoozeOrStop
Description : Quand on est pas bien reveillé le matin.. peu s'avérer utile ![]()
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=snoozeorstopData
SwipeToMoveCursor (voir aussi SwipeShiftCaret)
Description : Comme son nom l'indique, un tweak qui permet de se déplacer dans un texte en cours d'écriture via des swipes à gauche ou à droite..
Attention, ce tweak ajoute aussi un tas de raccourcis clavier, comme qqv etc. Voir les commentaires de ce post.
http://hitoriblog.com/depiction/SwipeToMoveCursor.html
Homepage (en Japonais) : http://hitoriblog.com/?p=2327
Repo : http://hitoriblog.com/apt/
SwitcherCleaner
Description : Montre uniquement dans la barre des taches, les applis ouvertes, et ajoute par défaut le bouton pour les fermer!
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=switchercleanerDp
MAJ 13/02/12
SwipeNav
Description : Ce tweak vous permet de naviguer de facon "naturelle" entre les pages d'une application. Il permet de passer d'une page à l'autre simplement via un swipe sur l'écran.
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=swipenavData
SwipeShiftCaret
Description : Equivalent à "SwipeToMoveCursor" mais en plus simple, et surtout plus récent.
http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=swipeshiftcaretDp
Les plateformes de téléchargement : Seedbox et direct download.
L'arrivée d'Hadopi et ses emules dans le monde, ont sans doute favorisé l'arrivée d'un nouveau type de service en ligne : Les plateformes de téléchargement.
Ces sociétés mettent à dispo, sous forme d'une application web le plus souvent, le moyen de récupérer tous types de contenus, via des torrents ou du direct download (megaupload, fileserve etc).
Vous donnez le lien ou le fichier torrent, et le service s'occupe du reste pour vous! Bien sur, ces sociétés ont des comptes premiums sur les site de direct download. Donc pas d'attente et gros débit..
Elles conservent ensuite sur le cloud les dits fichiers, afin que l'on puisse les récupérer plus tard, voir même les regarder en streaming pour les fichiers vidéos.
J'ai déjà eu l'occasion d'en tester 3 rapidement :
http://www.streamshark.net/
http://fetch.io
http://put.io/
J'ai une petite préférence pour fetch.io... mais c'est vraiment subjectif ![]()
Tous offrent la possibilité de tester leur service pendant quelques jours, avec en général un quotat de téléchargement et d'espace de stockage limité.
Ensuite, il faut passer à la caisse... et acheter de la bande passante et du stockage. Les prix sont assez similaires d'une plateforme à l'autre. Les tarifs commencent à moins de 5€ par mois! (Le prix d'une pseudo license globale...
)
Et les débits pour ensuite récupérer ses fichiers plus que correct.. ![]()
Cerise sur le gateau, en général, le service se charge également de recoller les morceaux d'un fichier (file.r01, r02... etc)
Ce genre de services, moyennant un petit pécule, peut se rendre très utile.. à garder sous le coude!
Si vous en connaissez d'autres, faites les connaitre en commentaire.
(re)connexion automatique à un VPN sous Ubuntu
En ces temps peu glorieux d'Hadopi et tous ses dérivés... un bon moyen de pouvoir surfer sans être espionné, est d'utiliser un VPN.
Pour ma part, j'ai été confronté à des problèmes de déconnexions intempestives, sans reconnexion automatique. Ce qui peut être parfois gênant...
Voilà donc un (bon) moyen de palier ce problème. Ce n'est surement pas la meilleure solution, et je ne suis pas un fou de linux.. mais au moins, elle me satisfait!
Cette solution se compose de 2 fichiers. Un "check_vpn" qui se charge de lancer le script principal à intervalles définis. Et "vpn_restart.py", script en python qui relance la connexion si celle ci déconnectée.
check_vpn
-
-
while [ 1 ]; do
-
echo -n $(date) "## "
-
sudo /home/bsoft/Bureau/vpn_restart.py #où le script est installé
-
sleep 60 #en secondes, temps de boucle du script
-
done
vpn_restart.py
-
#http://ubuntuforums.org/showthread.php?t=1316314
-
import sys
-
import os
-
import dbus
-
import gobject
-
from dbus.mainloop.glib import DBusGMainLoop
-
-
# The uuid of the VPN connection to activate
-
VPN_CONNECTION_UUID = "20d3d577-51b4-435c-b408-2a3f3c8a5463"
-
-
# The uuid of the connection that needs to be active to start the VPN connection
-
ACTIVE_CONNECTION_UUID = "recupere via get_active_conn(bus)"
-
-
# Mon conn ID
-
CONN_ID = "Auto eth0"
-
# Mon conn['type']
-
CONN_TYPE = "802-3-ethernet"
-
-
# some service, path and interface constants
-
NM_DBUS_SERVICE = "org.freedesktop.NetworkManager"
-
NM_DBUS_PATH = "/org/freedesktop/NetworkManager"
-
NM_DBUS_INTERFACE = "org.freedesktop.NetworkManager"
-
NM_DBUS_IFACE_CONNECTION_ACTIVE = "org.freedesktop.NetworkManager.Connection.Active"
-
NM_DBUS_SERVICE_SYSTEM_SETTINGS = "org.freedesktop.NetworkManagerSystemSettings"
-
NM_DBUS_SERVICE_USER_SETTINGS = "org.freedesktop.NetworkManagerUserSettings"
-
NM_DBUS_IFACE_SETTINGS = "org.freedesktop.NetworkManagerSettings"
-
NM_DBUS_PATH_SETTINGS = "/org/freedesktop/NetworkManagerSettings"
-
NM_DBUS_IFACE_SETTINGS_CONNECTION = "org.freedesktop.NetworkManagerSettings.Connection"
-
-
DBusGMainLoop(set_as_default=True)
-
-
nm_dbus_settings_services = (NM_DBUS_SERVICE_SYSTEM_SETTINGS, NM_DBUS_SERVICE_USER_SETTINGS)
-
-
def get_connections(bus, service):
-
proxy = bus.get_object(service, NM_DBUS_PATH_SETTINGS)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS)
-
return iface.ListConnections()
-
-
def get_connection_by_uuid(bus, uuid):
-
for service in nm_dbus_settings_services:
-
for c in get_connections(bus, service):
-
proxy = bus.get_object(service, c)
-
iface = dbus.Interface(proxy, dbus_interface = NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
if settings['connection']['uuid'] == uuid:
-
return (c, service)
-
return None
-
-
def list_uuids(bus):
-
for service in nm_dbus_settings_services:
-
for c in get_connections(bus, service):
-
proxy = bus.get_object(service, c)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
conn = settings['connection']
-
print "%s: %s - %s (%s)" % (service, conn['uuid'], conn['id'], conn['type'])
-
-
# recupere l'uuid de la connexion active via CONN_ID et CONN_TYPE
-
def get_active_conn(bus):
-
for service in nm_dbus_settings_services:
-
for c in get_connections(bus, service):
-
proxy = bus.get_object(service, c)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
conn = settings['connection']
-
if conn['id'] == CONN_ID and conn['type'] == CONN_TYPE:
-
return conn['uuid']
-
-
def get_active_connection_path(bus, uuid):
-
proxy = bus.get_object(NM_DBUS_SERVICE, NM_DBUS_PATH)
-
iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
active_connections = iface.Get(NM_DBUS_INTERFACE, 'ActiveConnections')
-
connection_and_service = get_connection_by_uuid(bus, uuid)
-
if connection_and_service == None:
-
return None
-
for a in active_connections:
-
proxy = bus.get_object(NM_DBUS_SERVICE, a)
-
iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
path = iface.Get(NM_DBUS_IFACE_CONNECTION_ACTIVE, 'Connection')
-
service = iface.Get(NM_DBUS_IFACE_CONNECTION_ACTIVE, 'ServiceName')
-
if service != connection_and_service[1]:
-
continue
-
proxy = bus.get_object(connection_and_service[1], path)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION)
-
settings = iface.GetSettings()
-
if settings['connection']['uuid'] == uuid:
-
return a
-
return None
-
-
def activate_connection(bus, vpn_connection, active_connection):
-
def reply_handler(opath):
-
print "<<SUCCESS>>"
-
sys.exit(0)
-
def error_handler(*args):
-
print "<<FAILURE>>"
-
sys.exit(1)
-
proxy = bus.get_object(NM_DBUS_SERVICE, NM_DBUS_PATH)
-
iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_INTERFACE)
-
iface.ActivateConnection(NM_DBUS_SERVICE_USER_SETTINGS,
-
vpn_connection[0],
-
dbus.ObjectPath("/"),
-
active_connection,
-
reply_handler=reply_handler,
-
error_handler=error_handler)
-
-
bus = dbus.SystemBus()
-
-
print "connections:"
-
list_uuids(bus)
-
-
ACTIVE_CONNECTION_UUID = get_active_conn(bus)
-
-
if len(VPN_CONNECTION_UUID) < 1 or len(ACTIVE_CONNECTION_UUID) < 1:
-
print "you need to set the uuids"
-
sys.exit(0)
-
-
vpn_connection = get_connection_by_uuid(bus, VPN_CONNECTION_UUID)
-
if not vpn_connection:
-
print "Configured VPN connection is not known to NM, check VPN_CONNECTION_UUID."
-
sys.exit(1)
-
-
active_connection = get_connection_by_uuid(bus, ACTIVE_CONNECTION_UUID)
-
if not active_connection:
-
print "Configured active connection is not known to NM, check ACTIVE_CONNECTION_UUID."
-
sys.exit(1)
-
-
if get_active_connection_path(bus, VPN_CONNECTION_UUID) != None:
-
print "VPN connection already activated"
-
sys.exit(0)
-
-
active_connection_path = get_active_connection_path(bus, ACTIVE_CONNECTION_UUID)
-
if not active_connection_path:
-
print "The required connection isn't active at the moment"
-
sys.exit(0)
-
-
print "connecting to:\n '%s'\nwith active connection:\n '%s'" % (vpn_connection, active_connection)
-
-
activate_connection(bus, vpn_connection, active_connection_path)
-
-
loop = gobject.MainLoop()
-
loop.run()
Le script python peut très facilement être amélioré. On peut imaginer par exemple de fermer certaines applications lorsque la connexion VPN est morte..
Pour faire fonctionner le tout, il suffit de copier le script python où vous voulez.
Puis, de copier en admin (sudo) le script check_vpn dans /etc/init.d
Il faut le rendre exécutable (chmod u+x nom_du_fichier)
Puis il faut créer un lien symbolique du script dans /etc/rc2.d afin que celui ci démarre automatique avec le système.
ln -s /etc/init.d/check_vpn /etc/rc2.d/S88check_vpn
Et voilà!
Chez moi, sous Ubuntu 9.04, ca fonctionne très bien. Il faut bien entendu au préalable avoir une connexion VPN de configurée dans le network manager.

