/usr/share/cherokee/admin/plugins/method.py is in cherokee-admin 1.2.101-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | # Cheroke Admin: HTTP Method rule plug-in
#
# Authors:
# Taher Shihadeh <taher@octality.com>
#
# Copyright (C) 2009-2010 Alvaro Lopez Ortega
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
# License as published by the Free Software Foundation.
#
# 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., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#
import CTK
from Rule import RulePlugin
from util import *
URL_APPLY = '/plugin/method/apply'
METHODS = [
('', _('Choose')),
('get', 'GET'),
('post', 'POST'),
('head', 'HEAD'),
('put', 'PUT'),
('options', 'OPTIONS'),
('delete', 'DELETE'),
('trace', 'TRACE'),
('connect', 'CONNECT'),
('purge', 'PURGE'),
('copy', 'COPY'),
('lock', 'LOCK'),
('mkcol', 'MKCOL'),
('move', 'MOVE'),
('notify', 'NOTIFY'),
('poll', 'POLL'),
('propfind', 'PROPFIND'),
('proppatch', 'PROPPATCH'),
('search', 'SEARCH'),
('subscribe', 'SUBSCRIBE'),
('unlock', 'UNLOCK'),
('unsubscribe', 'UNSUBSCRIBE'),
('report', 'REPORT'),
('patch', 'PATCH'),
('version_control', 'VERSION_CONTROL'),
('checkout', 'CHECKOUT'),
('uncheckout', 'UNCHECKOUT'),
('checkin', 'CHECKIN'),
('update', 'UPDATE'),
('label', 'LABEL'),
('mkworkspace', 'MKWORKSPACE'),
('mkactivity', 'MKACTIVITY'),
('baseline_control', 'BASELINE_CONTROL'),
('merge', 'MERGE')
]
NOTE_METHOD = N_("The HTTP method that should match this rule.")
def commit():
# POST info
key = CTK.post.pop ('key', None)
vsrv_num = CTK.post.pop ('vsrv_num', None)
new_method = CTK.post.pop ('tmp!method', None)
# New entry
if new_method:
next_rule, next_pre = cfg_vsrv_rule_get_next ('vserver!%s'%(vsrv_num))
CTK.cfg['%s!match'%(next_pre)] = 'method'
CTK.cfg['%s!match!method'%(next_pre)] = new_method
return {'ret': 'ok', 'redirect': '/vserver/%s/rule/%s' %(vsrv_num, next_rule)}
# Modifications
return CTK.cfg_apply_post()
class Plugin_method (RulePlugin):
def __init__ (self, key, **kwargs):
RulePlugin.__init__ (self, key)
is_new = key.startswith('tmp')
idx = (1,0)[is_new]
# Set the first method is empty
if not CTK.cfg.get_val ('%s!method'%(key)):
CTK.cfg ['%s!method'%(key)] = METHODS[idx:][0][0]
table = CTK.PropsTable()
table.Add (_('Method'), CTK.ComboCfg('%s!method'%(key), METHODS[idx:], ({}, {'class': 'noauto'})[is_new]), _(NOTE_METHOD))
submit = CTK.Submitter (URL_APPLY)
submit += CTK.Hidden ('key', key)
submit += CTK.Hidden ('vsrv_num', kwargs.pop('vsrv_num', ''))
submit += table
self += submit
def GetName (self):
method = CTK.cfg.get_val ('%s!method' %(self.key), '')
return "%s %s" % (_('Method'), method.upper())
CTK.publish ("^%s"%(URL_APPLY), commit, method="POST")
|