Beispiel #1
0
    def __init__(self, refresh, vsrv_num, rule_num, vsrv_nam):
        CTK.Container.__init__(self)

        rule = Rule('vserver!%s!rule!%s!match' % (vsrv_num, rule_num))
        rule_nam = rule.GetName()
        self += CTK.RawHTML('<h2><a href="/vserver/%s">%s</a> &rarr; %s</h2>' %
                            (vsrv_num, CTK.escape_html(vsrv_nam), rule_nam))
Beispiel #2
0
        def __init__(self, refresh, right_box, vsrv_num):
            CTK.Container.__init__(self)
            url_base = '/vserver/%s/rule' % (vsrv_num)
            url_apply = URL_APPLY % (vsrv_num)

            # Build the panel list
            panel = SelectionPanel.SelectionPanel(reorder,
                                                  right_box.id,
                                                  url_base,
                                                  '',
                                                  container='rules_panel')
            self += panel

            # Build the Rule list
            rules = CTK.cfg.keys('vserver!%s!rule' % (vsrv_num))
            rules.sort(lambda x, y: cmp(int(x), int(y)))
            rules.reverse()

            for r in rules:
                rule = Rule('vserver!%s!rule!%s!match' % (vsrv_num, r))
                rule_name = rule.GetName()
                rule_name_esc = CTK.escape_html(rule_name)

                # Comment
                comment = []

                handler = CTK.cfg.get_val('vserver!%s!rule!%s!handler' %
                                          (vsrv_num, r))
                if handler:
                    desc = filter(lambda x: x[0] == handler, HANDLERS)[0][1]
                    comment.append(_(desc))

                auth = CTK.cfg.get_val('vserver!%s!rule!%s!auth' %
                                       (vsrv_num, r))
                if auth:
                    desc = filter(lambda x: x[0] == auth, VALIDATORS)[0][1]
                    comment.append(_(desc))

                for e in CTK.cfg.keys('vserver!%s!rule!%s!encoder' %
                                      (vsrv_num, r)):
                    val = CTK.cfg.get_val('vserver!%s!rule!%s!encoder!%s' %
                                          (vsrv_num, r, e))
                    if val == 'allow':
                        comment.append(e)
                    elif val == 'forbid':
                        comment.append("no %s" % (e))

                if CTK.cfg.get_val('vserver!%s!rule!%s!flcache' %
                                   (vsrv_num, r)) == "allow":
                    comment.append('Cache')

                if CTK.cfg.get_val('vserver!%s!rule!%s!timeout' %
                                   (vsrv_num, r)):
                    comment.append('Timeout')

                if CTK.cfg.get_val('vserver!%s!rule!%s!rate' % (vsrv_num, r)):
                    comment.append('Traffic')

                if int(
                        CTK.cfg.get_val(
                            'vserver!%s!rule!%s!no_log' %
                            (vsrv_num, r), "0")) > 0:
                    comment.append('No log')

                # List entry
                row_id = '%s_%s' % (r, vsrv_num)

                if r == rules[-1]:
                    content = [
                        CTK.Box({'class': 'name'}, CTK.RawHTML(rule_name_esc)),
                        CTK.Box({'class': 'comment'},
                                CTK.RawHTML(', '.join(comment)))
                    ]
                    panel.Add(row_id,
                              '/vserver/%s/rule/content/%s' % (vsrv_num, r),
                              content,
                              draggable=False)
                else:
                    # Remove
                    dialog = CTK.Dialog({
                        'title':
                        _('Do you really want to remove it?'),
                        'width':
                        480
                    })
                    dialog.AddButton(_('Cancel'), "close")
                    dialog.AddButton (_('Remove'), CTK.JS.Ajax (url_apply, async=False,
                                                                data    = {'vserver!%s!rule!%s'%(vsrv_num, r):''},
                                                                success = dialog.JS_to_close() + \
                                                                          refresh.JS_to_refresh()))
                    dialog += CTK.RawHTML(
                        _(NOTE_DELETE_DIALOG) % (rule_name_esc))
                    self += dialog
                    remove = CTK.ImageStock('del')
                    remove.bind('click', dialog.JS_to_show() + "return false;")

                    # Disable
                    is_disabled = bool(
                        int(
                            CTK.cfg.get_val(
                                'vserver!%s!rule!%s!disabled' % (vsrv_num, r),
                                "0")))
                    disclass = ('', 'rule-inactive')[is_disabled][:]

                    disabled = CTK.ToggleButtonOnOff(not is_disabled)
                    disabled.bind(
                        'changed',
                        CTK.JS.Ajax(
                            url_apply,
                            async=True,
                            data='{"vserver!%s!rule!%s!disabled": event.value}'
                            % (vsrv_num, r)))
Beispiel #3
0
    def _get_row (self, vsrv_num, r):
        rule = Rule ('vserver!%s!rule!%s!match'%(vsrv_num, r))
        rule_name = rule.GetName()
        link = RuleLink (vsrv_num, r, CTK.RawHTML ('<span title="%s">%s</span>' %(rule_name, rule_name)))

        handler, auth, root, secure, enc, exp, flcache, timeout, shaping, log, final, active = [None for x in range(12)]

        tmp = CTK.cfg.get_val ('vserver!%s!rule!%s!handler'%(vsrv_num, r), '')
        if tmp:
            handler = CTK.RawHTML (_(filter (lambda x: x[0] == tmp, HANDLERS)[0][1]))

        tmp = CTK.cfg.get_val ('vserver!%s!rule!%s!auth'%(vsrv_num, r), '')
        if tmp:
            auth = CTK.RawHTML (_(filter (lambda x: x[0] == tmp, VALIDATORS)[0][1]))

        tmp = (CTK.cfg.get_val ('vserver!%s!rule!%s!document_root'%(vsrv_num, r)))
        if tmp:
            root = CTK.ImageStock('tick', {'alt': tmp, 'title':tmp})

        tmp = bool (int (CTK.cfg.get_val ('vserver!%s!rule!%s!only_secure'%(vsrv_num, r), "0")))
        if tmp:
            tmp = _('Only accept Secure Connections')
            secure = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})

        tmp =  CTK.cfg.keys ('vserver!%s!rule!%s!encoder'%(vsrv_num, r))
        if tmp:
            diz = [_('Encoding enabled')]
            for e in tmp:
                val = CTK.cfg.get_val ('vserver!%s!rule!%s!encoder!%s'%(vsrv_num, r, e))
                if val == 'allow':
                    diz.append (e)
                elif val == 'forbid':
                    diz.append ("%s %s"%(_('no'), e))
            txt = ', '.join(diz)
            enc = CTK.ImageStock('tick', {'alt': txt, 'title':txt})

        tmp = CTK.cfg.get_val ('vserver!%s!rule!%s!expiration' %(vsrv_num, r))
        if tmp:
            tmp = tmp.capitalize()
            exp = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})

        tmp = CTK.cfg.get_val ('vserver!%s!rule!%s!timeout' %(vsrv_num, r))
        if tmp:
            tmp += _(' seconds')
            timeout = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})

        tmp = CTK.cfg.get_val ('vserver!%s!rule!%s!rate' %(vsrv_num, r))
        if tmp:
            tmp += _(' bytes per second')
            shaping = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})

        tmp = not bool (int (CTK.cfg.get_val ('vserver!%s!rule!%s!no_log' %(vsrv_num, r), "0")))
        if tmp:
            tmp = _('Logging enabled for this rule')
            log = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})

        tmp = bool (int (CTK.cfg.get_val('vserver!%s!rule!%s!match!final'%(vsrv_num,r), "1")))
        if tmp:
            tmp   = _('Prevents further rule evaluation')
            final = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})

        tmp = CTK.cfg.get_val('vserver!%s!rule!%s!flcache'%(vsrv_num,r))
        if tmp in ('allow', '1'):
            tmp     = _('Content can be cached')
            flcache = CTK.ImageStock('tick', {'alt': tmp, 'title': tmp})
        elif tmp in ('forbid', '0'):
            tmp     = _('Forbids content caching')
            flcache = CTK.ImageStock ('forbid', {'alt': tmp, 'title': tmp})

        return [link, handler, auth, root, secure, enc, flcache, exp, timeout, shaping, log, final]