#       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

base_url = http://localhost:8080

#lang = ru
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

# Used to retrieve project info from SFX for private projects
sfx.secret = my-secret-key

# Used for migrate urls to ForgeShortUrl
sfx.hostedapps_db.hostname = localhost
sfx.hostedapps_db.port = 3306
sfx.hostedapps_db.username = root
sfx.hostedapps_db.password = 0000

# 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.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

# 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/.*
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 = /tmp/git$path
scm.host.rw.git = /tmp/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/tmp/git$path
scm.host.ro.hg = /tmp/hg$path
scm.host.rw.hg = /tmp/hg$path
scm.host.ro.svn = file:///tmp/svn$path/
scm.host.rw.svn = file:///tmp/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.new_refresh = true

gitweb.cgi = /usr/lib/cgi-bin/gitweb.cgi

scm.repos.root = /tmp
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}

# 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 = false
activitystream.recording.enabled = false

# 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

# OpenID setup
openid.realm = http://localhost:8080/

# 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}

[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

[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

[handlers]
keys = console, stats, taskdstatus

[formatters]
keys = generic, stats

# If you create additional loggers, add them as a key to [loggers]
[logger_root]
level = INFO
handlers = console, stats

[logger_allura]
level = DEBUG
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_taskdstatus]
level = INFO
qualname = taskdstatus
handlers = taskdstatus

# 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

# 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
