/usr/lib/python2.7/dist-packages/Bcfg2/settings.py is in bcfg2 1.3.3-1ubuntu3.
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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 | """ Django settings for the Bcfg2 server """
import os
import sys
import Bcfg2.Options
try:
import django
HAS_DJANGO = True
except ImportError:
HAS_DJANGO = False
# required for reporting
try:
import south # pylint: disable=W0611
HAS_SOUTH = True
except ImportError:
HAS_SOUTH = False
DATABASES = dict()
# Django < 1.2 compat
DATABASE_ENGINE = None
DATABASE_NAME = None
DATABASE_USER = None
DATABASE_PASSWORD = None
DATABASE_HOST = None
DATABASE_PORT = None
DATABASE_OPTIONS = None
DATABASE_SCHEMA = None
TIME_ZONE = None
DEBUG = False
TEMPLATE_DEBUG = DEBUG
ALLOWED_HOSTS = ['*']
MEDIA_URL = '/site_media/'
def _default_config():
""" get the default config file. returns /etc/bcfg2-web.conf,
UNLESS /etc/bcfg2.conf exists AND /etc/bcfg2-web.conf does not
exist. """
optinfo = dict(cfile=Bcfg2.Options.CFILE,
web_cfile=Bcfg2.Options.WEB_CFILE)
setup = Bcfg2.Options.OptionParser(optinfo, quiet=True)
setup.parse(sys.argv[1:], do_getopt=False)
if (not os.path.exists(setup['web_cfile']) and
os.path.exists(setup['cfile'])):
return setup['cfile']
else:
return setup['web_cfile']
DEFAULT_CONFIG = _default_config()
def read_config(cfile=DEFAULT_CONFIG, repo=None, quiet=False):
""" read the config file and set django settings based on it """
# pylint: disable=W0602,W0603
global DATABASE_ENGINE, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, \
DATABASE_HOST, DATABASE_PORT, DATABASE_OPTIONS, DATABASE_SCHEMA, \
DEBUG, TEMPLATE_DEBUG, TIME_ZONE, MEDIA_URL
# pylint: enable=W0602,W0603
if not os.path.exists(cfile) and os.path.exists(DEFAULT_CONFIG):
print("%s does not exist, using %s for database configuration" %
(cfile, DEFAULT_CONFIG))
cfile = DEFAULT_CONFIG
optinfo = Bcfg2.Options.DATABASE_COMMON_OPTIONS
optinfo['repo'] = Bcfg2.Options.SERVER_REPOSITORY
# when setting a different config file, it has to be set in either
# sys.argv or in the OptionSet() constructor AS WELL AS the argv
# that's passed to setup.parse()
argv = [Bcfg2.Options.CFILE.cmd, cfile,
Bcfg2.Options.WEB_CFILE.cmd, cfile]
setup = Bcfg2.Options.OptionParser(optinfo, argv=argv, quiet=quiet)
setup.parse(argv)
if repo is None:
repo = setup['repo']
DATABASES['default'] = \
dict(ENGINE="django.db.backends.%s" % setup['db_engine'],
NAME=setup['db_name'],
USER=setup['db_user'],
PASSWORD=setup['db_password'],
HOST=setup['db_host'],
PORT=setup['db_port'],
OPTIONS=setup['db_options'],
SCHEMA=setup['db_schema'])
if HAS_DJANGO and django.VERSION[0] == 1 and django.VERSION[1] < 2:
DATABASE_ENGINE = setup['db_engine']
DATABASE_NAME = DATABASES['default']['NAME']
DATABASE_USER = DATABASES['default']['USER']
DATABASE_PASSWORD = DATABASES['default']['PASSWORD']
DATABASE_HOST = DATABASES['default']['HOST']
DATABASE_PORT = DATABASES['default']['PORT']
DATABASE_OPTIONS = DATABASES['default']['OPTIONS']
DATABASE_SCHEMA = DATABASES['default']['SCHEMA']
# dropping the version check. This was added in 1.1.2
TIME_ZONE = setup['time_zone']
DEBUG = setup['django_debug']
TEMPLATE_DEBUG = DEBUG
if DEBUG:
print("Warning: Setting web_debug to True causes extraordinary memory "
"leaks. Only use this setting if you know what you're doing.")
if setup['web_prefix']:
MEDIA_URL = setup['web_prefix'].rstrip('/') + MEDIA_URL
else:
MEDIA_URL = '/site_media/'
# initialize settings from /etc/bcfg2-web.conf or /etc/bcfg2.conf, or
# set up basic defaults. this lets manage.py work in all cases
read_config(quiet=True)
ADMINS = (('Root', 'root'))
MANAGERS = ADMINS
# Language code for this installation. All choices can be found here:
# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
# http://blogs.law.harvard.edu/tech/stories/storyReader$15
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# TODO - sanitize this
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'Bcfg2.Server',
)
if HAS_SOUTH:
INSTALLED_APPS = INSTALLED_APPS + (
'south',
'Bcfg2.Reporting',
)
if 'BCFG2_LEGACY_MODELS' in os.environ:
INSTALLED_APPS += ('Bcfg2.Server.Reports.reports',)
# Imported from Bcfg2.Server.Reports
MEDIA_ROOT = ''
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
STATIC_URL = '/media/'
#TODO - make this unique
# Make this unique, and don't share it with anybody.
SECRET_KEY = 'eb5+y%oy-qx*2+62vv=gtnnxg1yig_odu0se5$h0hh#pc*lmo7'
if HAS_DJANGO and django.VERSION[0] == 1 and django.VERSION[1] < 3:
CACHE_BACKEND = 'locmem:///'
else:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
if HAS_DJANGO and django.VERSION[0] == 1 and django.VERSION[1] < 2:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
)
else:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
#TODO - review these. auth and sessions aren't really used
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
)
# TODO - move this to a higher root and dynamically import
ROOT_URLCONF = 'Bcfg2.Reporting.urls'
# TODO - this isn't usable
# Authentication Settings
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend')
LOGIN_URL = '/login'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
TEMPLATE_DIRS = (
# App loaders should take care of this.. not sure why this is here
'/usr/share/python-support/python-django/django/contrib/admin/templates/',
)
# TODO - sanitize this
if HAS_DJANGO and django.VERSION[0] == 1 and django.VERSION[1] < 2:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request'
)
else:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request'
)
|