#       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
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
use_queue = true
site_name = Allura

domain = forge-allura.apache.org
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
; 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.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

# 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


# Set the locations of some static resources
#  script_name is the path that is handled by the application
#  url_base is the prefix that references to the static resources should have
no_redirect.pattern = ^/nf/\d+/_(ew|static)_/.*|^/rest/.*
# Pages that must always be SSL even when logged out, such as ones using the login overlay
force_ssl.pattern = ^/[a-z0-9-]+/import_project/
# to make all pages use ssl, even when not logged in:
# force_ssl.pattern = .

ew.script_name = /nf/%(build_key)s/_ew_/
ew.url_base = /nf/%(build_key)s/_ew_/
# ew.url_base = ://a.fsdn.com/allura/nf/%(build_key)s/_ew_/
static.script_name = /nf/%(build_key)s/_static_/
static.url_base = /nf/%(build_key)s/_static_/
# static.url_base = ://a.fsdn.com/allura/nf/%(build_key)s/_static_/
# cdn.url_base = //a.fsdn.com/allura

ew.extra_headers = [ ('Access-Control-Allow-Origin', '*') ]

# 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

# If you'd like to fine-tune the individual locations of the cache data dirs
# for the Cache data, or the Session saves, un-comment the desired settings
# here:
#beaker.cache.data_dir = %(here)s/data/cache
#beaker.session.data_dir = %(here)s/data/sessions

# pick the form for your database
# %(here) may include a ':' character on Windows environments; this can
# invalidate the URI when specifying a SQLite db via path name
# sqlalchemy.url=postgres://username:password@hostname:port/databasename
# sqlalchemy.url=mysql://username:password@hostname:port/databasename


# If you have sqlite, here's a simple default to get you started
# in development

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

# 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
full_stack = true

cache_dir = %(here)s/data
beaker.session.key = allura
beaker.session.type = cookie
beaker.session.secret = 61ece7db-ba8d-49fe-a923-ab444741708c
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

# 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
