Esempio n. 1
0
class HealthWidget(Plugin):
    implements(apis.dashboard.IWidget)
    title = 'Monitoramento'
    icon = '/dl/health/icon.png'
    name = 'Health monitor'
    style = 'linear'

    def get_ui(self, cfg, id=None):
        self.mon = ComponentManager.get().find('health-monitor')
        text = { 'good': 'BOM', 'susp': 'ATENÇÂO', 'dang': 'PERIGO' }
        stat = { 'good': 'info', 'susp': 'warn', 'dang': 'err' }
        ostat = 'good'
        for m in sorted(self.mon.get(), key=lambda x:x.name):
            st = self.mon.get()[m]
            if st == 'susp' and ostat == 'good':
                ostat = st
            if st == 'dang':
                ostat = st

        ui = self.app.inflate('health:widget')
        ui.find('overall').text = text[ostat]
        ui.find('overall')['class'] = 'status-cell-%s'%stat[ostat]
        return ui

    def handle(self, event, params, cfg, vars=None):
        pass

    def get_config_dialog(self):
        pass

    def process_config(self, vars):
        pass
Esempio n. 2
0
class HDDTempWidget(Plugin):
    implements(apis.dashboard.IWidget)
    title = 'HDD Temperature'
    icon = '/dl/hddtemp/icon.png'
    name = 'HDD Temperature'
    style = 'linear'

    def get_ui(self, cfg, id=None):
        m = HDDTempMeter(self.app).prepare(cfg)
        self.title = cfg
        return UI.Label(text='%.2f °C'%m.get_value())

    def handle(self, event, params, cfg, vars=None):
        pass

    def get_config_dialog(self):
        m = HDDTempMeter(self.app)
        dlg = self.app.inflate('hddtemp:widget-config')
        for s in m.list_disks():
            dlg.append('list', UI.SelectOption(
                value=s,
                text=s,
            ))
        return dlg

    def process_config(self, vars):
        return vars.getvalue('disk', None)
Esempio n. 3
0
class URLHandler(object):
    """
    Base class that handles HTTP requests based on its methods decorated with
    :func:url
    """
    implements(IURLHandler)

    def _get_url_handler(self, uri):
        for cls in self.__class__.mro():
            if '_urls' in dir(cls):
                for uri_re in cls._urls.keys():
                    if uri_re.match(uri):
                        return cls._urls[uri_re]
        return None

    def match_url(self, req):
        """ Returns True if class (or any parent class) could handle URL
        """
        if self._get_url_handler(req.get('PATH_INFO')) is not None:
            return True
        return False

    def url_handler(self, req, start_response):
        handler = self._get_url_handler(req.get('PATH_INFO'))
        if handler is None:
            return
        try:
            handler = self.__getattribute__(handler)
        except AttributeError:
            return

        return handler(req, start_response)
Esempio n. 4
0
class CronConfig (Plugin):
    implements(IConfigurable)
    name = 'Cron'
    id = 'cron'
    
    def list_files(self):
        return ['/var/spool/cron/*/*']
Esempio n. 5
0
class SVWidget(Plugin):
    implements(apis.dashboard.IWidget)
    icon = '/dl/supervisor/icon.png'
    name = 'Supervisor process'
    title = None
    style = 'linear'

    def __init__(self):
        self.iface = None

    def get_ui(self, cfg, id=None):
        mgr = SVClient(self.app)
        running = False

        for x in mgr.status():
            if x['name'] == cfg and x['status'] == 'RUNNING':
                running = True

        self.title = cfg
        self.icon = '/dl/core/ui/stock/service-' + ('run.png'
                                                    if running else 'stop.png')

        ui = self.app.inflate('supervisor:widget')
        if running:
            ui.remove('start')
            ui.find('stop').set('id', id + '/stop')
            ui.find('restart').set('id', id + '/restart')
        else:
            ui.remove('stop')
            ui.remove('restart')
            ui.find('start').set('id', id + '/start')
        return ui

    def handle(self, event, params, cfg, vars=None):
        mgr = SVClient(self.app)
        if params[0] == 'start':
            mgr.start(cfg)
        if params[0] == 'stop':
            mgr.stop(cfg)
        if params[0] == 'restart':
            mgr.restart(cfg)

    def get_config_dialog(self):
        mgr = SVClient(self.app)
        dlg = self.app.inflate('supervisor:widget-config')
        for s in mgr.status():
            dlg.append('list',
                       UI.SelectOption(
                           value=s['name'],
                           text=s['name'],
                       ))
        return dlg

    def process_config(self, vars):
        return vars.getvalue('svc', None)
Esempio n. 6
0
class CoreFunctions(Plugin):
    implements(IXSLTFunctionProvider)

    def get_funcs(self):
        return {
            'attr': attr,
            'iif': iif,
            'b64': b64,
            'jsesc': jsesc,
            'idesc': idesc,
            'css': css,
            'id': id
        }
Esempio n. 7
0
class ServiceWidget(Plugin):
    implements(apis.dashboard.IWidget)
    icon = '/dl/services/icon.png'
    name = 'Service control'
    title = None
    style = 'linear'

    def __init__(self):
        self.iface = None

    def get_ui(self, cfg, id=None):
        mgr = self.app.get_backend(apis.services.IServiceManager)
        running = mgr.get_status(cfg) == 'running'
        self.title = cfg
        self.icon = '/dl/core/ui/stock/service-' + ('run.png'
                                                    if running else 'stop.png')

        ui = self.app.inflate('services:widget')
        if running:
            ui.remove('start')
            ui.find('stop').set('id', id + '/stop')
            ui.find('restart').set('id', id + '/restart')
        else:
            ui.remove('stop')
            ui.remove('restart')
            ui.find('start').set('id', id + '/start')
        return ui

    def handle(self, event, params, cfg, vars=None):
        mgr = self.app.get_backend(apis.services.IServiceManager)
        if params[0] == 'start':
            mgr.start(cfg)
        if params[0] == 'stop':
            mgr.stop(cfg)
        if params[0] == 'restart':
            mgr.restart(cfg)

    def get_config_dialog(self):
        mgr = self.app.get_backend(apis.services.IServiceManager)
        dlg = self.app.inflate('services:widget-config')
        for s in sorted(mgr.list_all()):
            dlg.append('list', UI.SelectOption(
                value=s.name,
                text=s.name,
            ))
        return dlg

    def process_config(self, vars):
        return vars.getvalue('svc', None)
Esempio n. 8
0
class PowerWidget(Plugin):
    implements(apis.dashboard.IWidget)
    title = 'Uptime'
    icon = '/dl/power/widget.png'
    name = 'Uptime'
    style = 'linear'

    def get_ui(self, cfg, id=None):
        return UI.Label(text=get_uptime())

    def handle(self, event, params, cfg, vars=None):
        pass

    def get_config_dialog(self):
        return None

    def process_config(self, vars):
        pass
Esempio n. 9
0
class PackageManagerProgress(Plugin):
    implements(IProgressBoxProvider)
    title = 'Packages'
    icon = '/dl/pkgman/icon.png'
    can_abort = True

    def __init__(self):
        self.mgr = self.app.get_backend(apis.pkgman.IPackageManager)

    def has_progress(self):
        try:
            return self.mgr.is_busy()
        except:
            return False

    def get_progress(self):
        return self.mgr.get_busy_status()

    def abort(self):
        self.mgr.abort()
Esempio n. 10
0
class ShellProgress(Plugin):
    implements(IProgressBoxProvider)
    title = 'Shell'
    icon = '/dl/shell/icon.png'
    can_abort = True

    def __init__(self):
        self.proc = self.app.session.get('ShellPlugin-_process')

    def has_progress(self):
        if self.proc is None:
            self.proc = self.app.session.get('ShellPlugin-_process')
            return False
        return self.proc.is_running()

    def get_progress(self):
        return self.proc.cmdline

    def abort(self):
        self.proc.kill()
Esempio n. 11
0
class MuninWidget(Plugin):
    implements(apis.dashboard.IWidget)
    title = 'Munin'
    icon = '/dl/munin/icon.png'
    name = 'Munin graph'
    style = 'normal'
    hidden = True

    def get_ui(self, cfg, id=None):
        self.title = cfg['title']
        return UI.Image(file=cfg['url'], width=330)

    def handle(self, event, params, cfg, vars=None):
        pass

    def get_config_dialog(self):
        return None

    def process_config(self, event, params, vars):
        pass
Esempio n. 12
0
class ConfMgrHook(Plugin):
    """
    Handy base class in case you don't want to reimplement all hook methods.
    """
    implements(IConfMgrHook)
    abstract = True

    def pre_load(self, cfg, path):
        pass

    def post_load(self, cfg, path, data):
        return data

    def pre_save(self, cfg, path, data):
        return data

    def post_save(self, cfg, path):
        pass

    def finished(self, cfg):
        pass
Esempio n. 13
0
class NetworkWidget(Plugin):
    implements(apis.dashboard.IWidget)
    icon = '/dl/network/down.png'
    name = 'Network monitor'
    title = None
    style = 'normal'

    def __init__(self):
        self.iface = None

    def get_ui(self, cfg, id=None):
        self.iface = cfg
        self.title = 'Network interface: %s' % cfg
        be = self.app.get_backend(INetworkConfig)
        if not cfg in be.interfaces:
            return UI.Label(text='Interface not found')
        i = be.interfaces[cfg]
        self.icon = '/dl/network/%s.png' % ('up' if i.up else 'down')

        ui = self.app.inflate('network:widget')
        ui.find('ip').set('text', be.get_ip(i))
        ui.find('in').set('text', str_fsize(be.get_rx(i)))
        ui.find('out').set('text', str_fsize(be.get_tx(i)))
        return ui

    def handle(self, event, params, cfg, vars=None):
        pass

    def get_config_dialog(self):
        be = self.app.get_backend(INetworkConfig)
        dlg = self.app.inflate('network:widget-config')
        for i in be.interfaces:
            dlg.append('list', UI.Radio(value=i, text=i, name='iface'))
        return dlg

    def process_config(self, vars):
        return vars.getvalue('iface', None)
Esempio n. 14
0
class NewsWidget(Plugin):
    implements(apis.dashboard.IWidget)
    title = 'Project news'
    icon = '/dl/core/ui/stock/news.png'
    name = 'Project news'
    style = 'normal'

    def get_ui(self, cfg, id=None):
        ui = self.app.inflate('core:news')
        feed = Updater.get().get_feed()
        if feed is not None:
            for i in feed[:3]:
                ui.append('list',
                          UI.CustomHTML(html='<li>%s</li>' % i['text']))
        return ui

    def handle(self, event, params, cfg, vars=None):
        pass

    def get_config_dialog(self):
        return None

    def process_config(self, event, params, vars):
        pass