## Copyright (C) 2001-2005 Red Hat, Inc.
## Copyright (C) 2001-2005 Harald Hoyer
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
from netconfpkg.NCDevice import Device, ConfDevice
from netconfpkg.NCDeviceFactory import getDeviceFactory
from netconfpkg.NCDialup import IsdnDialup
from netconfpkg.NC_functions import (_, ISDN, generic_run_dialog,
getDeviceType)
from netconfpkg.gdt import gdtstruct_properties
_devIsdnDialog = None
_devIsdnWizard = None
class DevIsdn(Device):
gdtstruct_properties([
('Dialup', IsdnDialup, "Test doc string"),
])
def __init__(self):
super(DevIsdn, self).__init__()
self.Type = ISDN
self.Dialup = IsdnDialup()
def load(self, name): # pylint: disable-msg=W0613
Device.load(self, name)
conf = ConfDevice(name)
self.Dialup.load(conf, self)
def save(self):
super(DevIsdn, self).save()
conf = ConfDevice(self.DeviceId)
self.Dialup.save(conf, self.DeviceId, self.oldname)
conf.write()
def createDialup(self):
if (self.Dialup == None) \
or not isinstance(self.Dialup, IsdnDialup):
self.Dialup = IsdnDialup()
return self.Dialup
def getDialog(self):
dialog = _devIsdnDialog(self)
if hasattr(dialog, "xml"):
return dialog.xml.get_widget("Dialog")
return dialog
def getWizard(self):
return _devIsdnWizard
def isType(self, device):
if device.Type == ISDN:
return True
if getDeviceType(device.Device) == ISDN:
return True
return False
def getHWDevice(self):
# FIXME: Support more than one ISDN Card
return "ISDN Card 0"
def activate(self, dialog = None):
command = '/bin/sh'
param = [ command,
"-c",
"/sbin/ifup %s; /usr/sbin/userisdnctl %s dial" % \
(self.DeviceId, self.DeviceId) ]
try:
(ret, msg) = generic_run_dialog(\
command,
param,
catchfd = (1, 2),
title = _('Network device activating...'),
label = _('Activating network device %s, '
'please wait...') % (self.DeviceId),
errlabel = _('Cannot activate '
'network device %s!\n') % (self.DeviceId),
dialog = dialog)
except RuntimeError, msg:
ret = -1
return ret, msg
def deactivate(self, dialog = None):
command = '/bin/sh'
param = [ command,
"-c",
"/usr/sbin/userisdnctl %s hangup ;/sbin/ifdown %s;" % \
(self.DeviceId, self.DeviceId) ]
try:
(ret, msg) = generic_run_dialog(\
command,
param,
catchfd = (1, 2),
title = _('Network device deactivating...'),
label = _('Deactivating network device %s, '
'please wait...') % (self.DeviceId),
errlabel = _('Cannot deactivate '
'network device %s!\n') % (self.DeviceId),
dialog = dialog)
except RuntimeError, msg:
ret = -1
return ret, msg
def setDevIsdnDialog(dialog):
global _devIsdnDialog # pylint: disable-msg=W0603
_devIsdnDialog = dialog
def setDevIsdnWizard(wizard):
global _devIsdnWizard # pylint: disable-msg=W0603
_devIsdnWizard = wizard
def register_plugin():
df = getDeviceFactory()
df.register(DevIsdn, ISDN)
__author__ = "Harald Hoyer "