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