| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| # allura - Pylons development environment configuration |
| # |
| # The %(here)s variable will be replaced with the parent directory of this file |
| # |
| # This file is for deployment specific config options -- other configuration |
| # that is always required for the app is done in the config directory, |
| # and generally should not be modified by end users. |
| |
| [DEFAULT] |
| debug = true |
| # Uncomment and replace with the address which should receive any error reports |
| #email_to = you@yourdomain.com |
| smtp_server = localhost |
| smtp_port = 8826 |
| error_email_from = paste@localhost |
| ; Used to uniquify references to static resources, can be a timestamp or any unique value |
| ; This should be updated each time you deploy (or make significant changes, like new tools, new css) |
| build_key=1276635823 |
| |
| [server:main] |
| use = egg:Paste#http |
| host = 0.0.0.0 |
| port = 8080 |
| |
| [filter-app:profile] |
| use=egg:keas.profile#profiler |
| next=main |
| |
| [app:main] |
| use = egg:Allura |
| full_stack = true |
| site_name = Allura |
| |
| domain = localhost |
| base_url = http://localhost:8080 |
| |
| #lang = ru |
| cache_dir = %(here)s/data |
| |
| ; Docs at http://beaker.readthedocs.org/en/latest/configuration.html#session-options |
| ; and http://beaker.readthedocs.org/en/latest/modules/session.html#beaker.session.CookieSession |
| beaker.session.key = allura |
| beaker.session.type = cookie |
| beaker.session.httponly = true |
| ; set this to true if you use HTTPS. If you use force_ssl.logged_in, this will be set automatically when logged in and not when not. |
| beaker.session.secure = false |
| ; CHANGE THIS VALUE FOR YOUR SITE |
| beaker.session.validate_key = 714bfe3612c42390726f |
| |
| # Google Analytics account for tracking |
| # ga.account = UA-XXXXX-X |
| |
| registration.method = local |
| # theme = sftheme |
| theme = allura |
| show_export_control = false |
| |
| # auth.method = ldap |
| auth.method = local |
| auth.remember_for = 365 ; in days, for the "remember me" checkbox on login |
| # auth.login_url = /auth/ |
| # auth.logout_url = /auth/logout |
| # auth.login_fragment_url = /auth/login_fragment |
| |
| auth.min_password_len = 6 |
| auth.max_password_len = 30 |
| |
| # password expiration options (disabled if neither is set) |
| # auth.pwdexpire.days = 1 |
| # auth.pwdexpire.before = 1401949912 ; unix timestamp |
| |
| # if using LDAP, also run `pip install python-ldap` in your Allura environment |
| |
| auth.ldap.server = ldap://localhost |
| auth.ldap.suffix = ou=people,dc=localdomain |
| auth.ldap.admin_dn = cn=admin,dc=localdomain |
| auth.ldap.admin_password = secret |
| auth.ldap.schroot_name = scm |
| auth.ldap.password.algorithm = 6 |
| auth.ldap.password.rounds = 6000 |
| auth.ldap.password.salt_len = 16 |
| # "autoregister" allows users to log in to Allura with an existing LDAP account |
| # If using ldap, with autoregister, you should also set "allow_user_registration" |
| # to false below. |
| # Set "autoregister" to false to require user to register in Allura to create |
| # the LDAP record and Allura record for the user. |
| auth.ldap.autoregister = true |
| |
| auth.allow_user_registration = true |
| auth.allow_user_to_disable_account = true |
| auth.allow_edit_prefs = true |
| auth.allow_password_change = true |
| auth.allow_upload_ssh_key = false |
| auth.allow_user_messages_config = true |
| auth.allow_birth_date = true |
| auth.allow_non_primary_email_password_reset = true |
| auth.require_email_addr = true |
| |
| # In seconds |
| auth.recovery_hash_expiry_period = 600 |
| |
| user_prefs_storage.method = local |
| # user_prefs_storage.method = ldap |
| # If using ldap, you can specify which fields to use for a preference. |
| # Any fields not specified here will be stored locally in mongo |
| user_prefs_storage.ldap.fields.display_name = cn |
| |
| # Limit the number of emails a user can claim. |
| user_prefs.maximum_claimed_emails = 20 |
| |
| # Additional fields for admin project/user search |
| # Note: whitespace after comma is important! |
| # search.project.additional_search_fields = private, url, title |
| # search.user.additional_search_fields = email_addresses |
| |
| # Additional fields to show in the result of admin project/user search |
| # Note: whitespace after comma is important! |
| # search.project.additional_display_fields = private, url, title |
| # search.user.additional_display_fields = email_addresses |
| |
| ; To make all pages use ssl: (also set beaker.session.secure above) |
| ; force_ssl.pattern = . |
| ; To use ssl if and only if a user is logged in: |
| ; force_ssl.logged_in = true |
| ; If you set force_ssl.logged_in, you probably want some URLs to be ssl when logged out: |
| ; force_ssl.pattern = ^/auth|^/[a-z0-9-]+/import_project/ ; import_project uses a login overlay |
| ; And to permit some URLs to be accessed over http anyway: |
| ; no_redirect.pattern = ^/nf/\d+/_(ew|static)_/|^/rest/|^/nf/tool_icon_css|^/auth/refresh_repo |
| |
| |
| # Set the locations of some static resources. ("ew" stands for EasyWidgets library) |
| # script_name is the path that is handled by the application |
| # url_base is the prefix that references to the static resources should have |
| # If you use a CDN, put your CDN prefix in the url_base values |
| ew.script_name = /nf/%(build_key)s/_ew_/ |
| ew.url_base = /nf/%(build_key)s/_ew_/ |
| static.script_name = /nf/%(build_key)s/_static_/ |
| static.url_base = /nf/%(build_key)s/_static_/ |
| |
| ; Expires header for "static" resources served through allura (e.g. icons, attachments, /nf/tool_icon_css) |
| files_expires_header_secs = 1209600 ; 2 weeks |
| |
| ew.extra_headers = [ ('Access-Control-Allow-Origin', '*') ] |
| |
| ; If your environment (e.g. behind a server-side proxy) needs to look at an http header to get the actual remote addr |
| ;ip_address_header = X-Forwarded-For |
| |
| # SCM settings for local development |
| scm.host.ro.git = /srv/git$path |
| scm.host.rw.git = /srv/git$path |
| # remote access varies by configuration. If you are using a vagrant VM, this should work: |
| #scm.host.rw.git = ssh://vagrant@localhost:2222/srv/git$path |
| scm.host.ro.hg = /srv/hg$path |
| scm.host.rw.hg = /srv/hg$path |
| scm.host.ro.svn = file:///srv/svn$path/ |
| scm.host.rw.svn = file:///srv/svn$path/ |
| |
| # SCM settings for chroot + ldap configuration. See Allura/docs/scm_host.rst |
| # scm.host.ro.git = git://git.localhost$path |
| # scm.host.rw.git = ssh://$username@localhost:8022/scm-repo$path |
| # scm.host.ro.hg = http://hg.localhost$path |
| # scm.host.rw.hg = ssh://$username@localhost:8022/scm-repo$path |
| # scm.host.ro.svn = http://svn.localhost$path/ |
| # scm.host.rw.svn = svn+ssh://localhost:8022/scm-repo$path/ |
| |
| # SCM settings for https (sorry no docs for setting these up) |
| # these settings are currently required by the template, no matter what |
| scm.host.https.git = https://$username@localhost:8022/scm-repo$path |
| scm.host.https_anon.git = https://localhost:8022/scm-repo$path |
| scm.host.https.hg = https://$username@localhost:8022/scm-repo$path |
| scm.host.https_anon.hg = https://localhost:8022/scm-repo$path |
| scm.host.https.svn = https://localhost:8022/scm-repo$path/ |
| scm.host.https_anon.svn = https://localhost:8022/scm-repo$path/ |
| |
| scm.clone.git = git clone $source_url $dest_path |
| scm.clone.hg = hg clone $source_url $dest_path |
| scm.clone.ro.svn = svn checkout $source_url $dest_path |
| scm.clone.https_anon.svn = svn checkout $source_url $dest_path |
| scm.clone.svn = svn checkout --username=$username $source_url $dest_path |
| |
| scm.repos.root = /srv |
| scm.repos.tarball.enable = false |
| scm.repos.tarball.root = /usr/share/nginx/www/ |
| scm.repos.tarball.url_prefix = http://localhost/ |
| scm.repos.tarball.zip_binary = /usr/bin/zip |
| |
| bulk_export_path = /tmp/bulk_export/{nbhd}/{project} |
| bulk_export_filename = {project}-backup-{date:%Y-%m-%d-%H%M%S}.zip |
| bulk_export_download_instructions = Sample instructions for {project} |
| |
| importer_upload_path = /tmp/importer_upload/{nbhd}/{project} |
| |
| # GitHub importer keys. For github ticket import, it is best to set |
| # up an app at https://github.com/settings/applications Use the root URL |
| # of your Allura instance for both URLs, and enter client values here: |
| # github_importer.client_id = |
| # github_importer.client_secret = |
| |
| # space-separated list of tool names that are valid options |
| # for project admins to set for their 'support_page' field |
| # this field is not used by default in Allura, so this option |
| # is disabled by default |
| #support_tool_choices = wiki tickets discussion |
| |
| trovecategories.enableediting = true |
| |
| # ActivityStream |
| activitystream.master = mongodb://127.0.0.1:27017 |
| activitystream.database = activitystream |
| activitystream.activity_collection = activities |
| activitystream.node_collection = nodes |
| activitystream.timeline_collection = timelines |
| activitystream.enabled = true |
| activitystream.recording.enabled = true |
| |
| # Ming setup |
| # These don't necessarily have to be separate databases, they could |
| # be all in the same database if desired |
| ming.main.uri = mongodb://127.0.0.1:27017/allura |
| ming.main.auto_ensure_indexes = False |
| ming.project.uri = mongodb://127.0.0.1:27017/project-data |
| ming.project.auto_ensure_indexes = False |
| ming.task.uri = mongodb://127.0.0.1:27017/task |
| ming.task.auto_ensure_indexes = False |
| ming.zarkov.uri = mongodb://127.0.0.1:27017/zarkov |
| ming.zarkov.auto_ensure_indexes = False |
| |
| # Zarkov host setting, requires the zarkov and gevent libraries. |
| #zarkov.host = tcp://127.0.0.1:9000 |
| |
| stats.sample_rate = 1 |
| |
| # Async setup |
| monq.poll_interval=2 |
| amqp.enabled = false |
| # amqp.hostname = localhost |
| # amqp.port = 5672 |
| # amqp.userid = testuser |
| # amqp.password = testpw |
| # amqp.vhost = testvhost |
| |
| # SOLR setup |
| solr.server = http://localhost:8983/solr |
| # commit on every add/delete? |
| solr.commit = false |
| # commit add operations within N ms |
| solr.commitWithin = 10000 |
| # Use improved data types for labels and custom fields? |
| # New Allura deployments should leave this set to true. Existing deployments |
| # should set to false until existing data has been reindexed. Reindexing will |
| # convert existing label and custom field data to more appropriate solr types. |
| solr.use_new_types = true |
| |
| # Forgemail server |
| forgemail.host = 0.0.0.0 |
| forgemail.port = 8825 |
| forgemail.domain = .in.sf.net |
| forgemail.url = http://localhost:8080 |
| forgemail.return_path = noreply@sf.net |
| |
| # Specify the number of projects allowed to be created by a user |
| # depending on the age of their user account. |
| # Keys are number of seconds, values are max number of projects allowed |
| # (including the default user-project, so you probably want to add 1) |
| # This example allows for 1 project if the account is less than an hour old |
| # and 5 projects if the account is less than a day old. No limits after that |
| # project.rate_limits = {"3600": 2, "86400": 6} |
| |
| # Special Command settings |
| # no need to sleep in devel |
| ensure_index.sleep = 0 |
| |
| # set this to "false" if you are deploying to production and want performance improvements |
| auto_reload_templates = true |
| |
| # WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* |
| # Debug mode will enable the interactive debugging tool, allowing ANYONE to |
| # execute malicious code after an exception is raised. |
| #set debug = false |
| |
| # Enable or disable external RSS feed importing in ForgeBlog tool. |
| # Default is "false". This feature requires GPL library "html2text". Install it |
| # with following command: |
| # pip install -e git://github.com/brondsem/html2text.git#egg=html2text |
| forgeblog.exfeed = false |
| |
| short_url.url_pattern = {base_url}/{nbhd}/{project}/{mount_point}/{short_name} |
| |
| user_message.time_interval = 3600 |
| user_message.max_messages = 20 |
| |
| [app:tool_test] |
| use = egg:Allura |
| override_root=basetest_project_root ; TurboGears will use controllers/basetest_project_root.py as root controller |
| full_stack = true |
| |
| cache_dir = %(here)s/data |
| beaker.session.key = allura |
| beaker.session.type = cookie |
| beaker.session.validate_key = 714bfe3612c42390726f |
| |
| # Ming setup |
| ming.main.uri = mongo://127.0.0.1:27017/allura:test |
| |
| sqlalchemy.url = sqlite:///%(here)s/devdata.db |
| #echo shouldn't be used together with the logging module. |
| sqlalchemy.echo = false |
| sqlalchemy.echo_pool = false |
| sqlalchemy.pool_recycle = 3600 |
| |
| # Forgemail server |
| forgemail.host = 0.0.0.0 |
| forgemail.port = 8825 |
| forgemail.domain = .in.sf.net |
| forgemail.return_path = noreply@sourceforge.net |
| forgemail.url = http://localhost:8080 |
| |
| auth.method = local |
| registration.method = local |
| |
| # When rendering discussion post Markdown to html, if the render takes longer |
| # than `markdown_cache_threshold` (in seconds), the resulting html will be |
| # cached and served from cache on subsequent requests. Set to 0 to cache all |
| # posts. Remove entirely to cache nothing. |
| markdown_cache_threshold = .1 |
| # markdown text longer than max length will not be converted to html |
| markdown_render_max_length = 999999999 |
| |
| # If your site has docs about specific importers, you can add them here and |
| # they'll appear on the import forms |
| #doc.url.importers.Google Code = http://... |
| |
| [app:task] |
| use = main |
| override_root = task ; TurboGears will use controllers/task.py as root controller |
| |
| # Logging configuration |
| # Add additional loggers, handlers, formatters here |
| # Uses python's logging config file format |
| # http://docs.python.org/lib/logging-config-fileformat.html |
| |
| [loggers] |
| keys = root, allura, sqlalchemy, paste, amqp, pylons, taskdstatus, timermiddleware, tmw_details |
| |
| [handlers] |
| keys = console, stats, taskdstatus, timermiddleware |
| |
| [formatters] |
| keys = generic, stats, timermiddleware |
| |
| # If you create additional loggers, add them as a key to [loggers] |
| [logger_root] |
| level = INFO |
| handlers = console, stats |
| |
| [logger_allura] |
| level = INFO |
| handlers = |
| qualname = allura |
| |
| [logger_sqlalchemy] |
| level = INFO |
| handlers = |
| qualname = sqlalchemy.engine |
| # "level = INFO" logs SQL queries. |
| # "level = DEBUG" logs SQL queries and results. |
| # "level = WARN" logs neither. (Recommended for production systems.) |
| |
| [logger_paste] |
| level = INFO |
| qualname = paste |
| handlers = |
| |
| [logger_amqp] |
| level = INFO |
| qualname = amqplib |
| handlers = |
| |
| [logger_pylons] |
| level = INFO |
| qualname = pylons |
| handlers = |
| |
| [logger_tmw_details] |
| # DEBUG will include every instrumented call in our logging |
| level = INFO |
| qualname = timermiddleware |
| handlers = |
| |
| [logger_taskdstatus] |
| level = INFO |
| qualname = taskdstatus |
| handlers = taskdstatus |
| |
| [logger_timermiddleware] |
| level = INFO |
| handlers = timermiddleware |
| qualname = stats |
| propagate = 0 |
| |
| # If you create additional handlers, add them as a key to [handlers] |
| [handler_console] |
| class = StreamHandler |
| args = (sys.stderr,) |
| level = NOTSET |
| formatter = generic |
| |
| [handler_stats] |
| class = allura.lib.utils.StatsHandler |
| args = ('rtstats.log', 'allura', 1) |
| level = NOTSET |
| formatter = stats |
| |
| [handler_taskdstatus] |
| class = handlers.WatchedFileHandler |
| args = ('taskd_status.log', 'a') |
| level = NOTSET |
| formatter = generic |
| |
| [handler_timermiddleware] |
| class = handlers.WatchedFileHandler |
| # if you run 'paster serve' in allura/Allura/ then that's where this file will be |
| # you may want to hard-code a specific directory here. |
| args = ('stats.log', 'a') |
| level = NOTSET |
| formatter = timermiddleware |
| |
| # If you create additional formatters, add them as a key to [formatters] |
| [formatter_generic] |
| format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s |
| datefmt = %H:%M:%S |
| |
| [formatter_stats] |
| format = %(asctime)s %(created)d %(kwpairs)s |
| datefmt = %d/%b/%Y:%H:%M:%S UTC |
| |
| [formatter_timermiddleware] |
| format = {"time": "%(asctime)s,%(msecs)03d", "level": "%(levelname)-5.5s", "name": "%(name)s", "message": %(message)s} |
| datefmt = %Y-%m-%d %H:%M:%S |