def test_generate_or_read_key_from_file(self): key_file = ".test_secret_key_store" key = secret_key.generate_or_read_from_file(key_file) # Consecutive reads should come from the already existing file: self.assertEqual(key, secret_key.generate_or_read_from_file(key_file)) # Key file only be read/writable by user: self.assertEqual(oct(os.stat(key_file).st_mode & 0o777), "0600") os.chmod(key_file, 0o777) self.assertRaises(secret_key.FilePermissionError, secret_key.generate_or_read_from_file, key_file) os.remove(key_file)
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import os from horizon.test.settings import * # noqa from horizon.utils import secret_key from openstack_dashboard import exceptions TEST_DIR = os.path.dirname(os.path.abspath(__file__)) ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, "..")) SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join(TEST_DIR, '.secret_key_store')) ROOT_URLCONF = 'openstack_dashboard.urls' TEMPLATE_DIRS = ( os.path.join(TEST_DIR, 'templates'), ) TEMPLATE_CONTEXT_PROCESSORS += ( 'openstack_dashboard.context_processors.openstack', ) INSTALLED_APPS = ( 'django.contrib.contenttypes', 'django.contrib.auth', 'django.contrib.sessions', 'django.contrib.staticfiles', 'django.contrib.messages',
# this is used to protect from client XSS attacks, but it's worth # enabling in our test setup to find any issues it might cause monkeypatch_escape() from openstack_dashboard.utils import settings as settings_utils TEST_DIR = os.path.dirname(os.path.abspath(__file__)) ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, "..")) MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media')) MEDIA_URL = '/media/' STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static')) STATIC_URL = '/static/' WEBROOT = '/' SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join(tempfile.gettempdir(), '.secret_key_store')) ROOT_URLCONF = 'openstack_dashboard.test.urls' TEMPLATES[0]['DIRS'] = [ os.path.join(TEST_DIR, 'templates') ] TEMPLATES[0]['OPTIONS']['context_processors'].append( 'openstack_dashboard.context_processors.openstack' ) CUSTOM_THEME_PATH = 'themes/default' # 'key', 'label', 'path' AVAILABLE_THEMES = [ (
# specific language governing permissions and limitations # under the License. import os from django.utils.translation import ugettext_lazy as _ from horizon.test.settings import * from horizon.utils.secret_key import generate_or_read_from_file from vsm_dashboard.exceptions import UNAUTHORIZED, RECOVERABLE, NOT_FOUND TEST_DIR = os.path.dirname(os.path.abspath(__file__)) ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, "..")) SECRET_KEY = generate_or_read_from_file(os.path.join(TEST_DIR, ".secret_key_store")) ROOT_URLCONF = "vsm_dashboard.urls" TEMPLATE_DIRS = (os.path.join(TEST_DIR, "templates"),) TEMPLATE_CONTEXT_PROCESSORS += ("vsm_dashboard.context_processors.openstack",) INSTALLED_APPS = ( "django.contrib.sessions", "django.contrib.staticfiles", "django.contrib.messages", "django.contrib.humanize", "django_nose", "openstack_auth", "compressor", "horizon", "vsm_dashboard",
# the database creation workflow if so desired. # HORIZON_CONFIG["password_autocomplete"] = "off" LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) # Set custom secret key: # You can either set it to a specific value or you can let horizon generate a # default secret key that is unique on this machine, e.i. regardless of the # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there # may be situations where you would want to set this explicitly, e.g. when # multiple dashboard instances are distributed on different machines (usually # behind a load-balancer). Either you have to make sure that a session gets all # requests routed to the same dashboard instance or you set the same SECRET_KEY # for all of them. from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file('/var/lib/horizon/.secret_key_store') # We recommend you use memcached for development; otherwise after every reload # of the django development server, you will have to login again. To use # memcached set CACHES to something like CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ {% for host in groups['memcached'] %}'{{ hostvars[host]['container_address'] }}:{{ memcached_port|default('11211') }}'{% if not loop.last %},{% endif %}{% endfor %} ] } } SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
# Setting this to True will disable the reveal button for password fields, # including on the login form. #HORIZON_CONFIG["disable_password_reveal"] = False LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) # Set custom secret key: # You can either set it to a specific value or you can let horizon generate a # default secret key that is unique on this machine, e.i. regardless of the # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, # there may be situations where you would want to set this explicitly, e.g. # when multiple dashboard instances are distributed on different machines # (usually behind a load-balancer). Either you have to make sure that a session # gets all requests routed to the same dashboard instance or you set the same # SECRET_KEY for all of them. SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join("/","var","lib","openstack-dashboard","secret-key", '.secret_key_store')) SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # We recommend you use memcached for development; otherwise after every reload # of the django development server, you will have to login again. To use # memcached set CACHES to something like #CACHES = { # 'default': { # 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', # 'LOCATION': '127.0.0.1:11211', # }, #} CACHES = { 'default': {
# Turn off browser autocompletion for the login form if so desired. # HORIZON_CONFIG["password_autocomplete"] = "off" LOCAL_PATH = '/tmp' # Set custom secret key: # You can either set it to a specific value or you can let horizion generate a # default secret key that is unique on this machine, e.i. regardless of the # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there # may be situations where you would want to set this explicitly, e.g. when # multiple dashboard instances are distributed on different machines (usually # behind a load-balancer). Either you have to make sure that a session gets all # requests routed to the same dashboard instance or you set the same SECRET_KEY # for all of them. from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join(LOCAL_PATH, '.secret_key_store')) # We recommend you use memcached for development; otherwise after every reload # of the django development server, you will have to login again. To use # memcached set CACHES to something like CACHES = { "default": { "BACKEND": "redis_cache.cache.RedisCache", "LOCATION": "127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "redis_cache.client.DefaultClient", 'DB': 1, "PICKLE_VERSION": 2, } } }
# HORIZON_CONFIG["password_autocomplete"] = "off" LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) # Set custom secret key: # You can either set it to a specific value or you can let horizon generate a # default secret key that is unique on this machine, e.i. regardless of the # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there # may be situations where you would want to set this explicitly, e.g. when # multiple dashboard instances are distributed on different machines (usually # behind a load-balancer). Either you have to make sure that a session gets all # requests routed to the same dashboard instance or you set the same SECRET_KEY # for all of them. from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join("/", "var", "lib", "openstack-dashboard", "secret-key", '.secret_key_store')) # We recommend you use memcached for development; otherwise after every reload # of the django development server, you will have to login again. To use # memcached set CACHES to something like # CACHES = { # 'default': { # 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', # 'LOCATION': '127.0.0.1:11211', # } #} CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211',
# this is used to protect from client XSS attacks, but it's worth # enabling in our test setup to find any issues it might cause monkeypatch_escape() from openstack_dashboard.utils import settings as settings_utils TEST_DIR = os.path.dirname(os.path.abspath(__file__)) ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, "..")) MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media')) MEDIA_URL = '/media/' STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static')) STATIC_URL = '/static/' WEBROOT = '/' SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join(tempfile.gettempdir(), '.secret_key_store')) ROOT_URLCONF = 'openstack_dashboard.test.urls' TEMPLATES[0]['DIRS'] = [ os.path.join(TEST_DIR, 'templates') ] TEMPLATES[0]['OPTIONS']['context_processors'].append( 'openstack_dashboard.context_processors.openstack' ) # 'key', 'label', 'path' AVAILABLE_THEMES = [ ( 'default', pgettext_lazy('Default style theme', 'Default'),
from horizon.utils import secret_key from openstack_dashboard import exceptions from openstack_dashboard.static_settings import find_static_files # noqa from openstack_dashboard.static_settings import get_staticfiles_dirs # noqa STATICFILES_DIRS = get_staticfiles_dirs() TEST_DIR = os.path.dirname(os.path.abspath(__file__)) ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, "..")) MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media')) MEDIA_URL = '/media/' STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static')) STATIC_URL = '/static/' WEBROOT = '/' SECRET_KEY = secret_key.generate_or_read_from_file( os.path.join(TEST_DIR, '.secret_key_store')) ROOT_URLCONF = 'openstack_dashboard.test.urls' TEMPLATE_DIRS = (os.path.join(TEST_DIR, 'templates'), ) TEMPLATE_CONTEXT_PROCESSORS += ( 'openstack_dashboard.context_processors.openstack', ) COMPRESS_OFFLINE = False INSTALLED_APPS = ( 'django.contrib.contenttypes', 'django.contrib.auth', 'django.contrib.sessions', 'django.contrib.staticfiles', 'django.contrib.messages', 'django.contrib.humanize',
from django.utils.translation import ugettext_lazy as _ from horizon.utils.secret_key import generate_or_read_from_file from openstack_dashboard.exceptions import UNAUTHORIZED, RECOVERABLE, NOT_FOUND socket.setdefaulttimeout(1) LOGIN_URL = '/auth/login/' LOGOUT_URL = '/auth/logout/' LOGIN_REDIRECT_URL = '/' ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) SECRET_KEY = generate_or_read_from_file(os.path.join(ROOT_PATH, '.secret_key_store')) DEBUG = False TEMPLATE_DEBUG = DEBUG TESTSERVER = 'http://testserver' USE_I18N = True USE_L10N = True USE_TZ = True DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3'}} DEFAULT_EXCEPTION_REPORTER_FILTER = 'horizon.exceptions.HorizonReporterFilter' INSTALLED_APPS = ( 'django.contrib.sessions',
import os from django.utils.translation import ugettext_lazy as _ from horizon.utils import secret_key from openstack_dashboard.settings import HORIZON_CONFIG DEBUG = False LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) SECRET_KEY = secret_key.generate_or_read_from_file('{{ secret_key }}') CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [{{memcached_servers}}] }, } EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' OPENSTACK_HOST = "{{ keystone_url }}" OPENSTACK_KEYSTONE_URL = "https://%s:5000/v3" % OPENSTACK_HOST OPENSTACK_KEYSTONE_BACKEND = { 'name': 'native', 'can_edit_user': True, 'can_edit_group': True, 'can_edit_project': True, 'can_edit_domain': True, 'can_edit_role': True, } OPENSTACK_HYPERVISOR_FEATURES = { 'can_set_mount_point': False, 'can_set_password': False, 'requires_keypair': False, 'enable_quotas': True } OPENSTACK_CINDER_FEATURES = {
LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) # Set custom secret key: # You can either set it to a specific value or you can let horizon generate a # default secret key that is unique on this machine, e.i. regardless of the # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, there # may be situations where you would want to set this explicitly, e.g. when # multiple dashboard instances are distributed on different machines (usually # behind a load-balancer). Either you have to make sure that a session gets all # requests routed to the same dashboard instance or you set the same SECRET_KEY # for all of them. {% if horizon_secret_key %} SECRET_KEY = "{{ horizon_secret_key }}" {% else %} from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file('/var/lib/horizon/.secret_key_store') {% endif %} # We recommend you use memcached for development; otherwise after every reload # of the django development server, you will have to login again. To use # memcached set CACHES to something like CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ {% for host in groups['memcached'] %}'{{ hostvars[host]['container_address'] }}:{{ memcached_port|default('11211') }}'{% if not loop.last %},{% endif %}{% endfor %} ] } }
'ajax_queue_limit': 10, 'auto_fade_alerts': { 'delay': 3000, 'fade_duration': 1500, 'types': ['alert-success', 'alert-info'] }, 'help_url': "http://docs.openstack.org", 'exceptions': {'recoverable': exceptions.RECOVERABLE, 'not_found': exceptions.NOT_FOUND, 'unauthorized': exceptions.UNAUTHORIZED}, } LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file('/var/lib/openstack-dashboard/secret_key') CACHES = { 'default': { 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION' : '127.0.0.1:11211', } } try: from ubuntu_theme import * except ImportError: pass LOGIN_URL='/auth/login/' LOGOUT_URL='/auth/logout/'
# Setting this to True will disable the reveal button for password fields, # including on the login form. #HORIZON_CONFIG["disable_password_reveal"] = False LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) # Set custom secret key: # You can either set it to a specific value or you can let horizon generate a # default secret key that is unique on this machine, e.i. regardless of the # amount of Python WSGI workers (if used behind Apache+mod_wsgi): However, # there may be situations where you would want to set this explicitly, e.g. # when multiple dashboard instances are distributed on different machines # (usually behind a load-balancer). Either you have to make sure that a session # gets all requests routed to the same dashboard instance or you set the same # SECRET_KEY for all of them. SECRET_KEY = secret_key.generate_or_read_from_file( '/var/lib/openstack-dashboard/secret_key') # We recommend you use memcached for development; otherwise after every reload # of the django development server, you will have to login again. To use # memcached set CACHES to something like CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', }, } #CACHES = { # 'default': { # 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
INSTALLED_APPS = list(INSTALLED_APPS) # Make sure it's mutable settings.update_dashboards([ openstack_dashboard.enabled, openstack_dashboard.local.enabled, ], HORIZON_CONFIG, INSTALLED_APPS) # Ensure that we always have a SECRET_KEY set, even when no local_settings.py # file is present. See local_settings.py.example for full documentation on the # horizon.utils.secret_key module and its use. if not SECRET_KEY: if not LOCAL_PATH: LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'local') from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store')) from openstack_dashboard import policy POLICY_CHECK_FUNCTION = policy.check # Add HORIZON_CONFIG to the context information for offline compression COMPRESS_OFFLINE_CONTEXT = { 'STATIC_URL': STATIC_URL, 'HORIZON_CONFIG': HORIZON_CONFIG } if DEBUG: logging.basicConfig(level=logging.DEBUG) # during django reloads and an active user is logged in, the monkey # patch below will not otherwise be applied in time - resulting in developers
from django.utils.translation import ugettext_lazy as _ from horizon.utils.secret_key import generate_or_read_from_file from openstack_dashboard.exceptions import UNAUTHORIZED, RECOVERABLE, NOT_FOUND socket.setdefaulttimeout(1) LOGIN_URL = '/auth/login/' LOGOUT_URL = '/auth/logout/' LOGIN_REDIRECT_URL = '/' ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) SECRET_KEY = generate_or_read_from_file( os.path.join(ROOT_PATH, '.secret_key_store')) DEBUG = False TEMPLATE_DEBUG = DEBUG TESTSERVER = 'http://testserver' USE_I18N = True USE_L10N = True USE_TZ = True DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3'}} DEFAULT_EXCEPTION_REPORTER_FILTER = 'horizon.exceptions.HorizonReporterFilter' INSTALLED_APPS = ('django.contrib.sessions', 'django.contrib.staticfiles', 'django.contrib.messages', 'django.contrib.humanize',