Skip to content

Commit

Permalink
OK, almost works
Browse files Browse the repository at this point in the history
  • Loading branch information
tualatrix committed May 7, 2011
1 parent 38601a7 commit bbb1b01
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 12 deletions.
56 changes: 44 additions & 12 deletions vpn-indicator
Expand Up @@ -2,6 +2,7 @@

import os
import glob
import time

import dbus
import gobject
Expand Down Expand Up @@ -128,6 +129,16 @@ class VpnIndicator(appindicator.Indicator):

menu.append(gtk.SeparatorMenuItem())

start_menu = gtk.MenuItem('Start')
start_menu.connect('activate', self.on_start_menu_activated)
menu.append(start_menu)

stop_menu = gtk.MenuItem('Stop')
stop_menu.connect('activate', self.on_stop_menu_activated)
menu.append(stop_menu)

menu.append(gtk.SeparatorMenuItem())

log_menu = gtk.MenuItem('Status...')
log_menu.connect('activate', self.on_log_menu_activated)
menu.append(log_menu)
Expand All @@ -149,18 +160,38 @@ class VpnIndicator(appindicator.Indicator):
def on_quit_menu_activated(self, widget):
gtk.main_quit()

def on_vpnmenu_activated(self, widget, buf):
if self.is_vpn_connected() and widget.get_active():
short_name = os.path.splitext(os.path.basename(buf))[0]
dialog = gtk.MessageDialog(buttons=gtk.BUTTONS_YES_NO)
print self._current_config
dialog.set_markup('<b><big>VPN "%s" is connected</big></b>\n\nWould you like to turn off it, then connect to "%s"?' % (
self._current_config, short_name))
dialog.run()
dialog.destroy()
return
self.daemon.load_config(buf, dbus_interface='me.imtx.vpndaemon')
# self.daemon.connect_vpn(buf, dbus_interface='me.imtx.vpndaemon')
def on_start_menu_activated(self, widget):
self.daemon.start_vpn(dbus_interface='me.imtx.vpndaemon')

def on_stop_menu_activated(self, widget):
self.daemon.stop_vpn(dbus_interface='me.imtx.vpndaemon')


def on_vpnmenu_activated(self, widget, config_path):
if widget.get_active():
short_name = os.path.splitext(os.path.basename(config_path))[0]

if self.is_vpn_connected():
dialog = gtk.MessageDialog(buttons=gtk.BUTTONS_YES_NO)
dialog.set_markup('<b><big>VPN "%s" is connected</big></b>\n\nWould you like to turn off it, then connect to "%s"?' % (
self._current_config, short_name))
response = dialog.run()
dialog.destroy()
if response == gtk.RESPONSE_YES:
self.do_start_vpn(config_path)
return True
else:
self.do_start_vpn(config_path)

def do_start_vpn(self, config_path):
self.daemon.load_config(config_path, dbus_interface='me.imtx.vpndaemon')
self.daemon.stop_vpn(dbus_interface='me.imtx.vpndaemon')
while True:
if not self.is_vpn_runned():
self.daemon.start_vpn(dbus_interface='me.imtx.vpndaemon')
break
else:
time.sleep(1)

def _init_daemon(self):
try:
Expand All @@ -170,6 +201,7 @@ class VpnIndicator(appindicator.Indicator):
print e
self.daemon = None


if __name__ == "__main__":
VpnIndicator()
gtk.main()
10 changes: 10 additions & 0 deletions vpn-indicator-daemon
Expand Up @@ -14,6 +14,16 @@ class Daemon(dbus.service.Object):
def load_config(self, path):
os.system('ln -sf %s /etc/openvpn/openvpn.conf' % path)

@dbus.service.method(INTERFACE,
in_signature='', out_signature='')
def stop_vpn(self):
os.system('service openvpn stop')

@dbus.service.method(INTERFACE,
in_signature='', out_signature='')
def start_vpn(self):
os.system('service openvpn start')

@dbus.service.method(INTERFACE,
in_signature='', out_signature='')
def exit(self):
Expand Down

0 comments on commit bbb1b01

Please sign in to comment.