Mercurial > kallithea
annotate setup.py @ 6532:33b71a130b16
templates: properly escape inline JavaScript values
TLDR: Kallithea has issues with escaping values for use in inline JS.
Despite judicious poking of the code, no actual security vulnerabilities
have been found, just lots of corner-case bugs. This patch fixes those,
and hardens the code against actual security issues.
The long version:
To embed a Python value (typically a 'unicode' plain-text value) in a
larger file, it must be escaped in a context specific manner. Example:
>>> s = u'<script>alert("It\'s a trap!");</script>'
1) Escaped for insertion into HTML element context
>>> print cgi.escape(s)
<script>alert("It's a trap!");</script>
2) Escaped for insertion into HTML element or attribute context
>>> print h.escape(s)
<script>alert("It's a trap!");</script>
This is the default Mako escaping, as usually used by Kallithea.
3) Encoded as JSON
>>> print json.dumps(s)
"<script>alert(\"It's a trap!\");</script>"
4) Escaped for insertion into a JavaScript file
>>> print '(' + json.dumps(s) + ')'
("<script>alert(\"It's a trap!\");</script>")
The parentheses are not actually required for strings, but may be needed
to avoid syntax errors if the value is a number or dict (object).
5) Escaped for insertion into a HTML inline <script> element
>>> print h.js(s)
("\x3cscript\x3ealert(\"It's a trap!\");\x3c/script\x3e")
Here, we need to combine JS and HTML escaping, further complicated by
the fact that "<script>" tag contents can either be parsed in XHTML mode
(in which case '<', '>' and '&' must additionally be XML escaped) or
HTML mode (in which case '</script>' must be escaped, but not using HTML
escaping, which is not available in HTML "<script>" tags). Therefore,
the XML special characters (which can only occur in string literals) are
escaped using JavaScript string literal escape sequences.
(This, incidentally, is why modern web security best practices ban all
use of inline JavaScript...)
Unsurprisingly, Kallithea does not do (5) correctly. In most cases,
Kallithea might slap a pair of single quotes around the HTML escaped
Python value. A typical benign example:
$('#child_link').html('${_('No revisions')}');
This works in English, but if a localized version of the string contains
an apostrophe, the result will be broken JavaScript. In the more severe
cases, where the text is user controllable, it leaves the door open to
injections. In this example, the script inserts the string as HTML, so
Mako's implicit HTML escaping makes sense; but in many other cases, HTML
escaping is actually an error, because the value is not used by the
script in an HTML context.
The good news is that the HTML escaping thwarts attempts at XSS, since
it's impossible to inject syntactically valid JavaScript of any useful
complexity. It does allow JavaScript errors and gibberish to appear on
the page, though.
In these cases, the escaping has been fixed to use either the new 'h.js'
helper, which does JavaScript escaping (but not HTML escaping), OR the
new 'h.jshtml' helper (which does both), in those cases where it was
unclear if the value might be used (by the script) in an HTML context.
Some of these can probably be "relaxed" from h.jshtml to h.js later, but
for now, using h.jshtml fixes escaping and doesn't introduce new errors.
In a few places, Kallithea JSON encodes values in the controller, then
inserts the JSON (without any further escaping) into <script> tags. This
is also wrong, and carries actual risk of XSS vulnerabilities. However,
in all cases, security vulnerabilities were narrowly avoided due to other
filtering in Kallithea. (E.g. many special characters are banned from
appearing in usernames.) In these cases, the escaping has been fixed
and moved to the template, making it immediately visible that proper
escaping has been performed.
Mini-FAQ (frequently anticipated questions):
Q: Why do everything in one big, hard to review patch?
Q: Why add escaping in specific case FOO, it doesn't seem needed?
Because the goal here is to have "escape everywhere" as the default
policy, rather than identifying individual bugs and fixing them one
by one by adding escaping where needed. As such, this patch surely
introduces a lot of needless escaping. This is no different from
how Mako/Pylons HTML escape everything by default, even when not
needed: it's errs on the side of needless work, to prevent erring
on the side of skipping required (and security critical) work.
As for reviewability, the most important thing to notice is not where
escaping has been introduced, but any places where it might have been
missed (or where h.jshtml is needed, but h.js is used).
Q: The added escaping is kinda verbose/ugly.
That is not a question, but yes, I agree. Hopefully it'll encourage us
to move away from inline JavaScript altogether. That's a significantly
larger job, though; with luck this patch will keep us safe and secure
until such a time as we can implement the real fix.
Q: Why not use Mako filter syntax ("${val|h.js}")?
Because of long-standing Mako bug #140, preventing use of 'h' in
filters.
Q: Why not work around bug #140, or even use straight "${val|js}"?
Because Mako still applies the default h.escape filter before the
explicitly specified filters.
Q: Where do we go from here?
Longer term, we should stop doing variable expansions in script blocks,
and instead pass data to JS via e.g. data attributes, or asynchronously
using AJAX calls. Once we've done that, we can remove inline JavaScript
altogether in favor of separate script files, and set a strict Content
Security Policy explicitly blocking inline scripting, and thus also the
most common kind of cross-site scripting attack.
author | Søren Løvborg <sorenl@unity3d.com> |
---|---|
date | Tue, 28 Feb 2017 17:19:00 +0100 |
parents | 1f43d08ce5a8 |
children | 2c3d30095d5e |
rev | line source |
---|---|
4267
bf011c9f7f58
minor fixes - mainly wording
Mads Kiilerich <madski@unity3d.com>
parents:
4253
diff
changeset
|
1 #!/usr/bin/env python2 |
4005
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
2 # -*- coding: utf-8 -*- |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
3 import os |
553
65c27fd21769
small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents:
552
diff
changeset
|
4 import sys |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
5 import platform |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
6 |
6033 | 7 if sys.version_info < (2, 6) or sys.version_info >= (3,): |
4522
a9a1560dad79
setup: clarify that we only support 2.6 and 2.7
Mads Kiilerich <madski@unity3d.com>
parents:
4503
diff
changeset
|
8 raise Exception('Kallithea requires python 2.6 or 2.7') |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
9 |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
10 |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
11 here = os.path.abspath(os.path.dirname(__file__)) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
12 |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
13 |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
14 def _get_meta_var(name, data, callback_handler=None): |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
15 import re |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
16 matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
17 if matches: |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
18 if not callable(callback_handler): |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
19 callback_handler = lambda v: v |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
20 |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
21 return callback_handler(eval(matches.groups()[0])) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
22 |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
23 _meta = open(os.path.join(here, 'kallithea', '__init__.py'), 'rb') |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
24 _metadata = _meta.read() |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
25 _meta.close() |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
26 |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
27 callback = lambda V: ('.'.join(map(str, V[:3])) + '.'.join(V[3:])) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
28 __version__ = _get_meta_var('VERSION', _metadata, callback) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
29 __license__ = _get_meta_var('__license__', _metadata) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
30 __author__ = _get_meta_var('__author__', _metadata) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
31 __url__ = _get_meta_var('__url__', _metadata) |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
32 # defines current platform |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
33 __platform__ = platform.system() |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
34 |
3892
3a1cf70e0f42
Fix check statements from () which had no effect really
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
35 is_windows = __platform__ in ['Windows'] |
1078
2d7a94f3eaae
added docs to manifest, updated setup script
Marcin Kuzminski <marcin@python-works.com>
parents:
1069
diff
changeset
|
36 |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
37 requirements = [ |
6017
7894a440e134
db: add Alembic "migration environment"
Søren Løvborg <sorenl@unity3d.com>
parents:
6016
diff
changeset
|
38 "alembic>=0.8.0,<0.9", |
6045
9ec73e01e5b1
setup: support later waitress versions
domruf <dominikruf@gmail.com>
parents:
6037
diff
changeset
|
39 "waitress>=0.8.8,<1.0", |
6484
1f43d08ce5a8
setup: bump WebOb to >=1.7
Mads Kiilerich <mads@kiilerich.com>
parents:
6483
diff
changeset
|
40 "webob>=1.7,<2", |
5356
f6fcb21db7b3
pylons: support Pylons 1.0.2
Mads Kiilerich <madski@unity3d.com>
parents:
5004
diff
changeset
|
41 "Pylons>=1.0.0,<=1.0.2", |
6480
de37fcbce8c5
setup: really support latest Beaker version (1.8.1) after 5a5bab2b773c
Mads Kiilerich <mads@kiilerich.com>
parents:
6459
diff
changeset
|
42 "Beaker>=1.7.0,<2", |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
43 "WebHelpers==1.3", |
4418
ed11cb3e905e
Support using newer versions of formencode.
Jelmer Vernooij <jelmer@samba.org>
parents:
4416
diff
changeset
|
44 "formencode>=1.2.4,<=1.2.6", |
6024
1a080d4e926e
db: use consistent key/index/constraint names when creating database
Søren Løvborg <sorenl@unity3d.com>
parents:
6017
diff
changeset
|
45 "SQLAlchemy>=1.0,<1.1", |
4414
8c2e96646545
Loosen dependency on Mako to include mako 1.0.
Jelmer Vernooij <jelmer@samba.org>
parents:
4267
diff
changeset
|
46 "Mako>=0.9.0,<=1.0.0", |
2715
298bac3757a7
requirements updates
Marcin Kuzminski <marcin@python-works.com>
parents:
2685
diff
changeset
|
47 "pygments>=1.5", |
6483
5cf18f89ab3e
setup: bump whoosh and bcrypt minimum versions
Mads Kiilerich <mads@kiilerich.com>
parents:
6480
diff
changeset
|
48 "whoosh>=2.5.0,<=2.5.7", |
6174
4f2e231df222
celery: upgrade to Celery 3
Mads Kiilerich <madski@unity3d.com>
parents:
6173
diff
changeset
|
49 "celery>=3.1,<3.2", |
6459
175813f77851
setup: bump babel version to <2.4
Andrew Shadura <andrew@shadura.me>
parents:
6458
diff
changeset
|
50 "babel>=0.9.6,<2.4", |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
51 "python-dateutil>=1.5.0,<2.0.0", |
3000
4034eb731b33
bumped dependencies versions
Marcin Kuzminski <marcin@python-works.com>
parents:
2999
diff
changeset
|
52 "markdown==2.2.1", |
6458
d1d9d249846b
setup: don't constrain docutils version
Andrew Shadura <andrew@shadura.me>
parents:
6456
diff
changeset
|
53 "docutils>=0.8.1", |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4084
diff
changeset
|
54 "URLObject==2.3.4", |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4084
diff
changeset
|
55 "Routes==1.13", |
6006
b5859022ac69
setup: bump dulwich dependency to 0.14.1
Andrew Shadura <andrew@shadura.me>
parents:
6000
diff
changeset
|
56 "dulwich>=0.14.1", |
6455
f19d8fd8e35a
hg: support Mercurial 4.1
Mads Kiilerich <mads@kiilerich.com>
parents:
6174
diff
changeset
|
57 "mercurial>=2.9,<4.2", |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
58 ] |
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
59 |
2772
d4f6dc38d625
fixed condition for installing unittests2
Marcin Kuzminski <marcin@python-works.com>
parents:
2715
diff
changeset
|
60 if sys.version_info < (2, 7): |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4084
diff
changeset
|
61 requirements.append("importlib==1.0.1") |
3230
bda2bd2558b1
added argparse for python version <2.7
Marcin Kuzminski <marcin@python-works.com>
parents:
3130
diff
changeset
|
62 requirements.append("argparse") |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
63 |
4820
953ee49f3b30
setup: remove duplicate logic for mercurial dependency
Sean Farley <sean.michael.farley@gmail.com>
parents:
4560
diff
changeset
|
64 if not is_windows: |
6483
5cf18f89ab3e
setup: bump whoosh and bcrypt minimum versions
Mads Kiilerich <mads@kiilerich.com>
parents:
6480
diff
changeset
|
65 requirements.append("bcrypt>=3.1.0") |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
66 |
1456
880a39e5d8df
fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents:
1449
diff
changeset
|
67 dependency_links = [ |
880a39e5d8df
fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents:
1449
diff
changeset
|
68 ] |
880a39e5d8df
fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents:
1449
diff
changeset
|
69 |
1966 | 70 classifiers = [ |
4246
cc48c1541c7e
Fixes for pypi - increment version to 0.0
Mads Kiilerich <madski@unity3d.com>
parents:
4245
diff
changeset
|
71 'Development Status :: 4 - Beta', |
1966 | 72 'Environment :: Web Environment', |
73 'Framework :: Pylons', | |
74 'Intended Audience :: Developers', | |
75 'License :: OSI Approved :: GNU General Public License (GPL)', | |
76 'Operating System :: OS Independent', | |
77 'Programming Language :: Python', | |
78 'Programming Language :: Python :: 2.6', | |
79 'Programming Language :: Python :: 2.7', | |
4246
cc48c1541c7e
Fixes for pypi - increment version to 0.0
Mads Kiilerich <madski@unity3d.com>
parents:
4245
diff
changeset
|
80 'Topic :: Software Development :: Version Control', |
1966 | 81 ] |
572
a60cd29ba7e2
more docs update
Marcin Kuzminski <marcin@python-works.com>
parents:
565
diff
changeset
|
82 |
1118
b0e2c949c34b
Fixed Windows installation based on work of Mantis406 fork: "Replace py-bcrypt to make Windows installation easier"
Marcin Kuzminski <marcin@python-works.com>
parents:
1103
diff
changeset
|
83 |
1792 | 84 # additional files from project that goes somewhere in the filesystem |
85 # relative to sys.prefix | |
553
65c27fd21769
small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents:
552
diff
changeset
|
86 data_files = [] |
65c27fd21769
small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents:
552
diff
changeset
|
87 |
4212
24c0d584ba86
General renaming to Kallithea
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4189
diff
changeset
|
88 description = ('Kallithea is a fast and powerful management tool ' |
4937
326a9336fbe5
spelling: use correct Git capitalisation where appropriate
Andrew Shadura <andrew@shadura.me>
parents:
4830
diff
changeset
|
89 'for Mercurial and Git with a built in push/pull server, ' |
3310
faad9dd06b58
fixed broken syntax in setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
3305
diff
changeset
|
90 'full text search and code-review.') |
4005
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
91 |
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
92 keywords = ' '.join([ |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
93 'kallithea', 'mercurial', 'git', 'code review', |
4005
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
94 'repo groups', 'ldap', 'repository management', 'hgweb replacement', |
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
95 'hgwebdir', 'gitweb replacement', 'serving hgweb', |
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
96 ]) |
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
97 |
1792 | 98 # long description |
4005
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
99 README_FILE = 'README.rst' |
553
65c27fd21769
small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents:
552
diff
changeset
|
100 try: |
6037
7c732f2047f8
docs: drop empty Changelog in the documentation
Mads Kiilerich <madski@unity3d.com>
parents:
6033
diff
changeset
|
101 long_description = open(README_FILE).read() |
5374
d69aa464f373
cleanup: consistently use 'except ... as ...:'
Mads Kiilerich <madski@unity3d.com>
parents:
5357
diff
changeset
|
102 except IOError as err: |
4005
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
103 sys.stderr.write( |
6037
7c732f2047f8
docs: drop empty Changelog in the documentation
Mads Kiilerich <madski@unity3d.com>
parents:
6033
diff
changeset
|
104 "[WARNING] Cannot find file specified as long_description (%s)\n" |
7c732f2047f8
docs: drop empty Changelog in the documentation
Mads Kiilerich <madski@unity3d.com>
parents:
6033
diff
changeset
|
105 % README_FILE |
4005
266a3cbc0302
Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
106 ) |
565
ad2e97c6f17f
small fix for setup
Marcin Kuzminski <marcin@python-works.com>
parents:
564
diff
changeset
|
107 long_description = description |
552
2642f128ad46
removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
108 |
6033 | 109 import setuptools |
5501
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
110 |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
111 # monkey patch setuptools to use distutils owner/group functionality |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
112 from setuptools.command import sdist |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
113 sdist_org = sdist.sdist |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
114 class sdist_new(sdist_org): |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
115 def initialize_options(self): |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
116 sdist_org.initialize_options(self) |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
117 self.owner = self.group = 'root' |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
118 sdist.sdist = sdist_new |
c79e4f89bfd3
setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents:
5461
diff
changeset
|
119 |
6033 | 120 packages = setuptools.find_packages(exclude=['ez_setup']) |
0 | 121 |
6033 | 122 setuptools.setup( |
4212
24c0d584ba86
General renaming to Kallithea
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4189
diff
changeset
|
123 name='Kallithea', |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
124 version=__version__, |
565
ad2e97c6f17f
small fix for setup
Marcin Kuzminski <marcin@python-works.com>
parents:
564
diff
changeset
|
125 description=description, |
552
2642f128ad46
removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
126 long_description=long_description, |
1078
2d7a94f3eaae
added docs to manifest, updated setup script
Marcin Kuzminski <marcin@python-works.com>
parents:
1069
diff
changeset
|
127 keywords=keywords, |
1205
f4807acf643d
added __license__ into main of rhodecode, PEP8ify
Marcin Kuzminski <marcin@python-works.com>
parents:
1204
diff
changeset
|
128 license=__license__, |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
129 author=__author__, |
4245
3315e9263a53
Use Conservancy's Kallithea Committee address as author_email.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4212
diff
changeset
|
130 author_email='kallithea@sfconservancy.org', |
1456
880a39e5d8df
fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents:
1449
diff
changeset
|
131 dependency_links=dependency_links, |
2563
9382e88eae22
removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents:
2379
diff
changeset
|
132 url=__url__, |
552
2642f128ad46
removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
133 install_requires=requirements, |
572
a60cd29ba7e2
more docs update
Marcin Kuzminski <marcin@python-works.com>
parents:
565
diff
changeset
|
134 classifiers=classifiers, |
6026
dd676fdeda0f
setup: move test dependencies to dev_requirements.txt to make them optional
Mads Kiilerich <madski@unity3d.com>
parents:
6024
diff
changeset
|
135 setup_requires=['PasteScript>=1.6.3'], |
552
2642f128ad46
removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
136 data_files=data_files, |
553
65c27fd21769
small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents:
552
diff
changeset
|
137 packages=packages, |
127
20dc7a5eb748
Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents:
0
diff
changeset
|
138 include_package_data=True, |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
139 message_extractors={'kallithea': [ |
0 | 140 ('**.py', 'python', None), |
141 ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}), | |
1143
0e6035a85980
added changes made in production branch back into beta
Marcin Kuzminski <marcin@python-works.com>
parents:
1118
diff
changeset
|
142 ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}), |
0 | 143 ('public/**', 'ignore', None)]}, |
127
20dc7a5eb748
Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents:
0
diff
changeset
|
144 zip_safe=False, |
20dc7a5eb748
Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents:
0
diff
changeset
|
145 paster_plugins=['PasteScript', 'Pylons'], |
20dc7a5eb748
Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents:
0
diff
changeset
|
146 entry_points=""" |
2379
7ac09514a178
created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
2289
diff
changeset
|
147 [console_scripts] |
4189
9793473d74be
Rename helper tools (and fix inconsistent naming)
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4186
diff
changeset
|
148 kallithea-api = kallithea.bin.kallithea_api:main |
9793473d74be
Rename helper tools (and fix inconsistent naming)
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4186
diff
changeset
|
149 kallithea-gist = kallithea.bin.kallithea_gist:main |
9793473d74be
Rename helper tools (and fix inconsistent naming)
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4186
diff
changeset
|
150 kallithea-config = kallithea.bin.kallithea_config:main |
2379
7ac09514a178
created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
2289
diff
changeset
|
151 |
0 | 152 [paste.app_factory] |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
153 main = kallithea.config.middleware:make_app |
0 | 154 |
155 [paste.app_install] | |
156 main = pylons.util:PylonsInstaller | |
683
341beaa9edba
Implemented whoosh index building as paster command.
Marcin Kuzminski <marcin@python-works.com>
parents:
682
diff
changeset
|
157 |
341beaa9edba
Implemented whoosh index building as paster command.
Marcin Kuzminski <marcin@python-works.com>
parents:
682
diff
changeset
|
158 [paste.global_paster_command] |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
159 setup-db=kallithea.lib.paster_commands.setup_db:Command |
4560
b1679034b6c4
cleanup-repos: reintroduce paster command
Mads Kiilerich <madski@unity3d.com>
parents:
4554
diff
changeset
|
160 cleanup-repos=kallithea.lib.paster_commands.cleanup:Command |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
161 update-repoinfo=kallithea.lib.paster_commands.update_repoinfo:Command |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
162 make-rcext=kallithea.lib.paster_commands.make_rcextensions:Command |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
163 repo-scan=kallithea.lib.paster_commands.repo_scan:Command |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
164 cache-keys=kallithea.lib.paster_commands.cache_keys:Command |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
165 ishell=kallithea.lib.paster_commands.ishell:Command |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4185
diff
changeset
|
166 make-index=kallithea.lib.paster_commands.make_index:Command |
6016
c436f337e253
paster: add informational/dummy "upgrade-db" command
Søren Løvborg <sorenl@unity3d.com>
parents:
6014
diff
changeset
|
167 upgrade-db=kallithea.lib.dbmigrate:UpgradeDb |
6173
cf73bd884a53
celeryd: move the celeryd paster command to the place where paster commands live
Mads Kiilerich <madski@unity3d.com>
parents:
6137
diff
changeset
|
168 celeryd=kallithea.lib.paster_commands.celeryd:Command |
4554
2dad9708c89f
paster: add install-iis command to automate IIS handler generation
Henrik Stuart <hg@hstuart.dk>
parents:
4522
diff
changeset
|
169 install-iis=kallithea.lib.paster_commands.install_iis:Command |
0 | 170 """, |
171 ) |