/usr/share/cherokee/admin/plugins/mysql.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 | # -*- coding: utf-8 -*-
#
# Cherokee-admin
#
# Authors:
# Alvaro Lopez Ortega <alvaro@alobbs.com>
#
# Copyright (C) 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
import Auth
import validations
from util import *
from consts import *
URL_APPLY = '/plugin/mysql/apply'
HELPS = [('modules_validators_mysql', "MySQL")]
NOTE_HOST = N_('MySQL server IP address.')
NOTE_PORT = N_('Server port to connect to.')
NOTE_UNIX = N_('Full path of Unix socket to communicate with the data base.')
NOTE_USER = N_('User name for connecting to the database.')
NOTE_PASSWD = N_('Password for connecting to the database.')
NOTE_DB = N_('Database name containing the user/password pair list.')
NOTE_SQL = N_('SQL command to execute. ${user} is replaced with the user name.')
NOTE_HASH = N_('Choose an encryption type for the password. Only suitable for the "Basic" authentication mechanism.')
HASHES = [
('', N_('None')),
('md5', N_('MD5')),
('sha1', N_('SHA1')),
('sha512', N_('SHA512'))
]
# Only allow to set a hash type when using 'basic'
BASIC_HASH_HACK = """
function mysql_hash_set_disabled() {
var methods = $('#auth_method').val();
if ((methods == "basic") || (methods == undefined)) {
$('#mysql_hash').removeAttr("disabled");
} else {
$('#mysql_hash').attr("disabled", true);
}
}
$('#auth_method').bind('change', function() {
mysql_hash_set_disabled();
});
mysql_hash_set_disabled();
"""
class Plugin_mysql (Auth.PluginAuth):
def __init__ (self, key, **kwargs):
Auth.PluginAuth.__init__ (self, key, **kwargs)
self.AddCommon (supported_methods=('basic','digest'))
table = CTK.PropsTable()
table.Add (_('Host'), CTK.TextCfg("%s!host"%(self.key), True), _(NOTE_HOST))
table.Add (_('Port'), CTK.TextCfg("%s!port"%(self.key), True), _(NOTE_PORT))
table.Add (_('Unix Socket'), CTK.TextCfg("%s!unix_socket"%(self.key), True), _(NOTE_UNIX))
table.Add (_('DB User'), CTK.TextCfg("%s!user"%(self.key), False), _(NOTE_USER))
table.Add (_('DB Password'), CTK.TextCfg("%s!passwd"%(self.key), True), _(NOTE_PASSWD))
table.Add (_('Database'), CTK.TextCfg("%s!database"%(self.key), False), _(NOTE_DB))
table.Add (_('SQL Query'), CTK.TextCfg("%s!query"%(self.key), False), _(NOTE_SQL))
table.Add (_('Password Hash'), CTK.ComboCfg("%s!hash"%(self.key), trans_options(HASHES), {'id': 'mysql_hash'}), _(NOTE_HASH))
submit = CTK.Submitter (URL_APPLY)
submit += table
self += CTK.RawHTML ("<h2>%s</h2>" % (_('MySQL Connection')))
self += CTK.Indenter (submit)
self += CTK.RawHTML (js=BASIC_HASH_HACK)
# Publish
VALS = [("%s!passwdfile"%(self.key), validations.is_local_file_exists)]
CTK.publish ('^%s'%(URL_APPLY), CTK.cfg_apply_post, validation=VALS, method="POST")
|