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> → %s</h2>' % (vsrv_num, CTK.escape_html(vsrv_nam), rule_nam))
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)))
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]