Mercurial > p > roundup > code
annotate roundup/scripts/roundup_server.py @ 8522:82fc69e6d9d7
refactor/bug: handle case where netrc returns None.
pyrefly flagged this. Python 3.14 (and 2.7) says authenticators()
returns None if there is no matching host. Also the original
exceptions IOError and TypeError appear to not be valid in this
context.
Rewrite to scope FileNotFoundError if .netrc is missing to just the
one method call. Handle rest of flow with if/else not exception
jump.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 19 Feb 2026 22:15:12 -0500 |
| parents | a2c376d0f110 |
| children | 5fbf6451a782 |
| rev | line source |
|---|---|
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
2 # This module is free software, and you may redistribute it and/or modify |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
3 # under the same terms as Python, so long as this copyright message and |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
4 # disclaimer are retained in their original form. |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
5 # |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
6 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
7 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
8 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
9 # POSSIBILITY OF SUCH DAMAGE. |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
10 # |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
11 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
12 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
13 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
14 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
15 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
2308
e21c3a447a62
translate "cannot fork" error message
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2287
diff
changeset
|
16 # |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1953
diff
changeset
|
17 |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1953
diff
changeset
|
18 """Command-line script that runs a server over roundup.cgi.client. |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
19 """ |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
20 from __future__ import print_function |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1953
diff
changeset
|
21 __docformat__ = 'restructuredtext' |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
22 |
| 6972 | 23 import base64 # decode icon |
| 24 import errno | |
| 25 import getopt | |
| 26 import io | |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
27 import logging |
| 6972 | 28 import os |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
29 import re |
| 6972 | 30 import socket |
| 31 import sys # modify sys.path when running in source tree | |
| 32 import time | |
| 33 import traceback | |
| 34 import zlib # decompress icon | |
|
5410
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
35 |
|
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
36 try: |
|
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
37 # Python 3. |
|
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
38 import socketserver |
|
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
39 except ImportError: |
|
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
40 # Python 2. |
|
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
41 import SocketServer as socketserver |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
42 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
43 try: |
|
5405
56cc58d20add
Python 3 preparation: use imp.reload instead of reload as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5403
diff
changeset
|
44 # Python 2. |
|
56cc58d20add
Python 3 preparation: use imp.reload instead of reload as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5403
diff
changeset
|
45 reload |
|
56cc58d20add
Python 3 preparation: use imp.reload instead of reload as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5403
diff
changeset
|
46 except NameError: |
|
56cc58d20add
Python 3 preparation: use imp.reload instead of reload as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5403
diff
changeset
|
47 # Python 3. |
|
6322
ff6580ee3882
Remove import of reload from imp (deprecated module), use importlib
John Rouillard <rouilj@ieee.org>
parents:
6295
diff
changeset
|
48 from importlib import reload |
|
5405
56cc58d20add
Python 3 preparation: use imp.reload instead of reload as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5403
diff
changeset
|
49 |
|
56cc58d20add
Python 3 preparation: use imp.reload instead of reload as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5403
diff
changeset
|
50 try: |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
51 from OpenSSL import SSL |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
52 except ImportError: |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
53 SSL = None |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
54 |
| 6972 | 55 # --- patch sys.path to make sure 'import roundup' finds correct version |
| 56 import os.path as osp | |
|
5800
1a835db41674
Call cgi.escape only on python 2. Replace with html.escapeif it can be
John Rouillard <rouilj@ieee.org>
parents:
5712
diff
changeset
|
57 |
| 6972 | 58 thisdir = osp.dirname(osp.abspath(__file__)) |
| 59 rootdir = osp.dirname(osp.dirname(thisdir)) | |
| 60 if (osp.exists(thisdir + '/__init__.py') and | |
| 61 osp.exists(rootdir + '/roundup/__init__.py')): | |
| 62 # the script is located inside roundup source code | |
| 63 sys.path.insert(0, rootdir) | |
| 64 # --/ | |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
65 |
| 6972 | 66 import roundup.instance # noqa: E402 |
| 67 | |
| 68 # python version_check raises exception if imported for wrong python version | |
| 69 from roundup import configuration, version_check # noqa: F401,E402 | |
| 70 from roundup import __version__ as roundup_version # noqa: E402 | |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
71 # Roundup modules of use here |
| 6972 | 72 from roundup.anypy import http_, urllib_ # noqa: E402 |
| 73 from roundup.anypy.html import html_escape # noqa: E402 | |
| 74 from roundup.anypy.strings import s2b, StringIO # noqa: E402 | |
| 75 from roundup.cgi import cgitb, client # noqa: E402 | |
| 76 from roundup.cgi.PageTemplates.PageTemplate import PageTemplate # noqa: E402 | |
| 77 from roundup.i18n import _ # noqa: E402 | |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
78 |
|
2181
740102dfad1d
favicon generation stuff
Richard Jones <richard@users.sourceforge.net>
parents:
2180
diff
changeset
|
79 # "default" favicon.ico |
|
740102dfad1d
favicon generation stuff
Richard Jones <richard@users.sourceforge.net>
parents:
2180
diff
changeset
|
80 # generate by using "icotool" and tools/base64 |
|
6295
bc2b00afa980
Replace depricated base64.decodestring with base64.b64decode.
John Rouillard <rouilj@ieee.org>
parents:
6133
diff
changeset
|
81 favico = zlib.decompress(base64.b64decode(b''' |
|
2180
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
82 eJztjr1PmlEUh59XgVoshdYPWorFIhaRFq0t9pNq37b60lYSTRzcTFw6GAfj5gDYaF0dTB0MxMSE |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
83 gQQd3FzKJiEC0UCIUUN1M41pV2JCXySg/0ITn5tfzvmdc+85FwT56HSc81UJjXJsk1UsNcsSqCk1 |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
84 BS64lK+vr7OyssLJyQl2ux2j0cjU1BQajYZIJEIwGMRms+H3+zEYDExOTjI2Nsbm5iZWqxWv18vW |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
85 1hZDQ0Ok02kmJiY4Ojpienqa3d1dxsfHUSqVeDwe5ufnyeVyrK6u4nK5ODs7Y3FxEYfDwdzcHCaT |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
86 icPDQ5LJJIIgMDIyQj6fZ39/n+3tbdbW1pAkiYWFBWZmZtjb2yMejzM8PEwgEMDn85HNZonFYqjV |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
87 asLhMMvLy2QyGfR6PaOjowwODmKxWDg+PkalUhEKhSgUCiwtLWE2m9nZ2UGhULCxscHp6SmpVIpo |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
88 NMrs7CwHBwdotVoSiQRXXPG/IzY7RHtt922xjFRb01H1XhKfPBNbi/7my7rrLXJ88eppvxwEfV3f |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
89 NY3Y6exofVdsV3+2wnPFDdPjB83n7xuVpcFvygPbGwxF31LZIKrQDfR2Xvh7lmrX654L/7bvlnng |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
90 bn3Zuj8M9Hepux6VfZtW1yA6K7cfGqVu8TL325u+fHTb71QKbk+7TZQ+lTc6RcnpqW8qmVQBoj/g |
|
58b6d1747973
Web interface tweaks.
Richard Jones <richard@users.sourceforge.net>
parents:
2176
diff
changeset
|
91 23eo0sr/NIGvB37K+lOWXMvJ+uWFeKGU/03Cb7n3D4M3wxI= |
|
1611
db8545f10476
initial attempt at favicon support, complete failure
Richard Jones <richard@users.sourceforge.net>
parents:
1606
diff
changeset
|
92 '''.strip())) |
|
db8545f10476
initial attempt at favicon support, complete failure
Richard Jones <richard@users.sourceforge.net>
parents:
1606
diff
changeset
|
93 |
|
2637
11811b313459
The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
94 DEFAULT_PORT = 8080 |
|
11811b313459
The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
95 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
96 # See what types of multiprocess server are available |
|
2848
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
97 # Note: the order is important. Preferred multiprocess type |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
98 # is the last element of this list. |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
99 # "debug" means "none" + no tracker/template cache |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
100 MULTIPROCESS_TYPES = ["debug", "none"] |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
101 try: |
| 6972 | 102 import threading # noqa: F401 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
103 except ImportError: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
104 pass |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
105 else: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
106 MULTIPROCESS_TYPES.append("thread") |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
107 if hasattr(os, 'fork'): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
108 MULTIPROCESS_TYPES.append("fork") |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
109 DEFAULT_MULTIPROCESS = MULTIPROCESS_TYPES[-1] |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
110 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
111 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
112 def auto_ssl(): |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
113 print(_('WARNING: generating temporary SSL certificate')) |
| 6972 | 114 import OpenSSL, random # noqa: E401 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
115 pkey = OpenSSL.crypto.PKey() |
|
6420
5d6b6e948e17
Upgrade SSL params for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6322
diff
changeset
|
116 pkey.generate_key(OpenSSL.crypto.TYPE_RSA, 2048) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
117 cert = OpenSSL.crypto.X509() |
|
5386
fc97f1f4a7e3
Python 3 preparation: use sys.maxsize instead of sys.maxint.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
118 cert.set_serial_number(random.randint(0, sys.maxsize)) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
119 cert.gmtime_adj_notBefore(0) |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
120 cert.gmtime_adj_notAfter(60 * 60 * 24 * 365) # one year |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
121 cert.get_subject().CN = '*' |
| 6972 | 122 cert.get_subject().O = 'Roundup Dummy Certificate' # noqa: E741 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
123 cert.get_issuer().CN = 'Roundup Dummy Certificate Authority' |
| 6972 | 124 cert.get_issuer().O = 'Self-Signed' # noqa: E741 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
125 cert.set_pubkey(pkey) |
|
6420
5d6b6e948e17
Upgrade SSL params for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6322
diff
changeset
|
126 cert.sign(pkey, 'sha512') |
|
6502
7fb13dc67a41
roundup-server native SSL support only TLS 1.2.
John Rouillard <rouilj@ieee.org>
parents:
6436
diff
changeset
|
127 ctx = SSL.Context(OpenSSL.SSL.TLSv1_2_METHOD) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
128 ctx.use_privatekey(pkey) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
129 ctx.use_certificate(cert) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
130 |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
131 return ctx |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
132 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
133 |
|
5409
277e91bf7936
Python 3 preparation: update BaseHTTPServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5405
diff
changeset
|
134 class SecureHTTPServer(http_.server.HTTPServer): |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
135 def __init__(self, server_address, HandlerClass, ssl_pem=None): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
136 assert SSL, "pyopenssl not installed" |
|
5409
277e91bf7936
Python 3 preparation: update BaseHTTPServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5405
diff
changeset
|
137 http_.server.HTTPServer.__init__(self, server_address, HandlerClass) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
138 self.socket = socket.socket(self.address_family, self.socket_type) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
139 if ssl_pem: |
|
6502
7fb13dc67a41
roundup-server native SSL support only TLS 1.2.
John Rouillard <rouilj@ieee.org>
parents:
6436
diff
changeset
|
140 ctx = SSL.Context(SSL.TLSv1_2_METHOD) |
|
8031
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
141 try: |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
142 ctx.use_privatekey_file(ssl_pem) |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
143 except SSL.Error: |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
144 print(_("Unable to find/use key from file: %(pemfile)s") % {"pemfile": ssl_pem}) |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
145 print(_("Does it have a private key surrounded by '-----BEGIN PRIVATE KEY-----' and\n '-----END PRIVATE KEY-----' markers?")) |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
146 exit() |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
147 try: |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
148 ctx.use_certificate_file(ssl_pem) |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
149 except SSL.Error: |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
150 print(_("Unable to find/use certificate from file: %(pemfile)s") % {"pemfile": ssl_pem}) |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
151 print(_("Does it have a certificate surrounded by '-----BEGIN CERTIFICATE-----' and\n '-----END CERTIFICATE-----' markers?")) |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
152 exit() |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
153 else: |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
154 ctx = auto_ssl() |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
155 self.ssl_context = ctx |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
156 self.socket = SSL.Connection(ctx, self.socket) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
157 self.server_bind() |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
158 self.server_activate() |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
159 |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
160 def get_request(self): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
161 (conn, info) = self.socket.accept() |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
162 if self.ssl_context: |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
163 |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
164 class RetryingFile(object): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
165 """ SSL.Connection objects can return Want__Error |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
166 on recv/write, meaning "try again". We'll handle |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
167 the try looping here """ |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
168 def __init__(self, fileobj): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
169 self.__fileobj = fileobj |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
170 |
|
3891
410cae6ab7dd
need to pass arguments to wrapper readline for SSL servers
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3890
diff
changeset
|
171 def readline(self, *args): |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
172 """ SSL.Connection can return WantRead """ |
|
4273
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
173 while True: |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
174 try: |
|
4273
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
175 return self.__fileobj.readline(*args) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
176 except SSL.WantReadError: |
|
4276
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
177 time.sleep(.1) |
|
6834
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
178 except SSL.ZeroReturnError: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
179 # Raised here on every request. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
180 # SSL connection has been closed. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
181 # But maybe not the underlying socket. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
182 # FIXME: Does this lead to a socket leak?? |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
183 # if so how to fix? |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
184 pass |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
185 |
|
4258
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
186 def read(self, *args): |
|
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
187 """ SSL.Connection can return WantRead """ |
|
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
188 while True: |
|
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
189 try: |
|
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
190 return self.__fileobj.read(*args) |
|
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
191 except SSL.WantReadError: |
|
4276
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
192 time.sleep(.1) |
|
6834
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
193 except SSL.ZeroReturnError: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
194 # Put here to match readline() handling above. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
195 # Even though this never was the source of the |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
196 # exception logged during use. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
197 # SSL connection has been closed. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
198 # But maybe not the underlying socket. |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
199 # FIXME: Does this lead to a socket leak?? |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
200 # if so how to fix? |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
201 pass |
|
4258
6432c9bfd385
Fix bug with SSL-connection and XMLRPC...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3919
diff
changeset
|
202 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
203 def __getattr__(self, attrib): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
204 return getattr(self.__fileobj, attrib) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
205 |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
206 class ConnFixer(object): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
207 """ wraps an SSL socket so that it implements makefile |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
208 which the HTTP handlers require """ |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
209 def __init__(self, conn): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
210 self.__conn = conn |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
211 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
212 def makefile(self, mode, bufsize): |
|
6834
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
213 fo = None |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
214 try: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
215 # see below of url used for this |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
216 fo = socket.SocketIO(self.__conn, mode) |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
217 except AttributeError: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
218 # python 2 in use |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
219 buffer = socket._fileobject(self.__conn, mode, bufsize) |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
220 |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
221 if fo: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
222 # python3 set up buffering |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
223 # verify mode is rb and bufsize is -1 |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
224 # implement subset of socket::makefile |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
225 # https://bugs.launchpad.net/python-glanceclient/+bug/1812525 |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
226 if mode == 'rb' and bufsize == -1: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
227 buffering = io.DEFAULT_BUFFER_SIZE |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
228 buffer = io.BufferedReader(fo, buffering) |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
229 else: |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
230 buffer = fo |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
231 |
|
5129fc03dc1f
issue2551137, 2551138 - roundup-server SSL issues.
John Rouillard <rouilj@ieee.org>
parents:
6743
diff
changeset
|
232 return RetryingFile(buffer) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
233 |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
234 def __getattr__(self, attrib): |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
235 return getattr(self.__conn, attrib) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
236 |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
237 conn = ConnFixer(conn) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
238 return (conn, info) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
239 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
240 |
|
5409
277e91bf7936
Python 3 preparation: update BaseHTTPServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5405
diff
changeset
|
241 class RoundupRequestHandler(http_.server.BaseHTTPRequestHandler): |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
242 TRACKER_HOMES = {} |
|
2848
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
243 TRACKERS = None |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
244 LOG_IPADDRESS = 1 |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
245 DEBUG_MODE = False |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
246 CONFIG = None |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
247 |
|
2848
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
248 def get_tracker(self, name): |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
249 """Return a tracker instance for given tracker name""" |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
250 # Note: try/except KeyError works faster that has_key() check |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
251 # if the key is usually found in the dictionary |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
252 # |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
253 # Return cached tracker instance if we have a tracker cache |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
254 if self.TRACKERS: |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
255 try: |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
256 return self.TRACKERS[name] |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
257 except KeyError: |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
258 pass |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
259 # No cached tracker. Look for home path. |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
260 try: |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
261 tracker_home = self.TRACKER_HOMES[name] |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
262 except KeyError: |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
263 raise client.NotFound |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
264 # open the instance |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
265 tracker = roundup.instance.open(tracker_home) |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
266 # and cache it if we have a tracker cache |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
267 if self.TRACKERS: |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
268 self.TRACKERS[name] = tracker |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
269 return tracker |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
270 |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
271 def run_cgi(self): |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
272 """ Execute the CGI command. Wrap an innner call in an error |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
273 handler so all errors can be caught. |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
274 """ |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
275 try: |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
276 self.inner_run_cgi() |
|
992
6003d6fa02a5
new CGI frontend support
Richard Jones <richard@users.sourceforge.net>
parents:
661
diff
changeset
|
277 except client.NotFound: |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
278 self.send_error(404, self.path) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5201
diff
changeset
|
279 except client.Unauthorised as message: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
280 self.send_error(403, '%s (%s)' % (self.path, message)) |
| 6972 | 281 except Exception: |
|
1939
1303c208419d
some updates that were sitting on disk
Richard Jones <richard@users.sourceforge.net>
parents:
1914
diff
changeset
|
282 exc, val, tb = sys.exc_info() |
|
2191
f7f6b6981a13
sqlite backend uses the global lock again
Richard Jones <richard@users.sourceforge.net>
parents:
2186
diff
changeset
|
283 if hasattr(socket, 'timeout') and isinstance(val, socket.timeout): |
|
2200
25b95aa44d60
socket timeout error logging can fail
Richard Jones <richard@users.sourceforge.net>
parents:
2191
diff
changeset
|
284 self.log_error('timeout') |
|
8269
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
285 self.send_response(408) |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
286 self.send_header('Content-Type', 'text/html') |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
287 |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
288 output = s2b('''<body><p>Connection timed out</p></body>''') |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
289 # Close connection |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
290 self.send_header('Content-Length', len(output)) |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
291 self.end_headers() |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
292 self.wfile.write(output) |
|
341841a9edc5
Handle timeout exception in roundup-server better.
John Rouillard <rouilj@ieee.org>
parents:
8256
diff
changeset
|
293 self.close_connection = True |
|
1939
1303c208419d
some updates that were sitting on disk
Richard Jones <richard@users.sourceforge.net>
parents:
1914
diff
changeset
|
294 else: |
|
1303c208419d
some updates that were sitting on disk
Richard Jones <richard@users.sourceforge.net>
parents:
1914
diff
changeset
|
295 self.send_response(400) |
|
1303c208419d
some updates that were sitting on disk
Richard Jones <richard@users.sourceforge.net>
parents:
1914
diff
changeset
|
296 self.send_header('Content-Type', 'text/html') |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
297 if self.DEBUG_MODE: |
|
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
298 try: |
|
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
299 reload(cgitb) |
|
7112
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
300 output = s2b(cgitb.breaker()) + s2b(cgitb.html()) |
| 6972 | 301 except Exception: |
|
5418
55f09ca366c4
Python 3 preparation: StringIO.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5410
diff
changeset
|
302 s = StringIO() |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
303 traceback.print_exc(None, s) |
|
7112
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
304 output = b"<pre>%s</pre>" % s2b( |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
305 html_escape(s.getvalue())) |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
306 else: |
|
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
307 # user feedback |
|
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
308 ts = time.ctime() |
|
7112
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
309 output = ( |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
310 s2b('''<body><p>%s: An error occurred. Please check |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
311 the server log for more information.</p></body>''' % |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
312 ts) |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
313 ) |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
314 # out to the logfile |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
315 print('EXCEPTION AT', ts) |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
316 traceback.print_exc() |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
317 |
|
7112
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
318 # complete output to user. |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
319 self.send_header('Content-Length', len(output)) |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
320 self.end_headers() |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
321 self.wfile.write(output) |
|
c0d030bd472e
Fix: Send Content-Length header to client from top Exception handler
John Rouillard <rouilj@ieee.org>
parents:
6972
diff
changeset
|
322 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
323 do_GET = do_POST = do_HEAD = do_PUT = do_DELETE = \ |
| 6972 | 324 do_PATCH = do_OPTIONS = run_cgi |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
325 |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
326 def index(self): |
|
1251
347657425a10
Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents:
1249
diff
changeset
|
327 ''' Print up an index of the available trackers |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
328 ''' |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5386
diff
changeset
|
329 keys = list(self.TRACKER_HOMES.keys()) |
|
3205
dbd6ba721943
if there is only one tracker, redirect from trackers list to the tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3112
diff
changeset
|
330 if len(keys) == 1: |
|
dbd6ba721943
if there is only one tracker, redirect from trackers list to the tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3112
diff
changeset
|
331 self.send_response(302) |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5398
diff
changeset
|
332 self.send_header('Location', urllib_.quote(keys[0]) + '/index') |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
333 self.send_header('Content-Length', 0) |
|
3849
9d37a6779530
End headers when redirecting to tracker. Closes [SF#1706114].
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3787
diff
changeset
|
334 self.end_headers() |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
335 return |
|
3880
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
336 |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
337 self.send_response(200) |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
338 self.send_header('Content-Type', 'text/html; charset=utf-8') |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
339 output = [] |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
340 |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
341 w = self.wfile.write |
|
3880
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
342 |
|
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
343 if self.CONFIG and self.CONFIG['TEMPLATE']: |
|
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
344 template = open(self.CONFIG['TEMPLATE']).read() |
|
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
345 pt = PageTemplate() |
|
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
346 pt.write(template) |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
347 extra = {'trackers': self.TRACKERS, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
348 'nothing': None, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
349 'true': 1, |
| 6972 | 350 'false': 0} |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
351 output.append(s2b(pt.pt_render(extra_context=extra))) |
|
3880
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
352 else: |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
353 output.append(s2b(_( |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
354 '<html><head><title>Roundup trackers index</title></head>\n' |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
355 '<body><h1>Roundup trackers index</h1><ol>\n'))) |
|
3880
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
356 keys.sort() |
|
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
357 for tracker in keys: |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
358 output.append(s2b('<li><a href="%(tracker_url)s/index">%(tracker_name)s</a>\n' % { |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5398
diff
changeset
|
359 'tracker_url': urllib_.quote(tracker), |
|
5800
1a835db41674
Call cgi.escape only on python 2. Replace with html.escapeif it can be
John Rouillard <rouilj@ieee.org>
parents:
5712
diff
changeset
|
360 'tracker_name': html_escape(tracker)})) |
|
8038
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
361 output.append(b'</ol></body></html>\n') |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
362 |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
363 write_output = b"\n".join(output) |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
364 self.send_header('Content-Length', len(write_output)) |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
365 self.end_headers() |
|
5a122373641a
fix: roundup-server Content-Length when generating index
John Rouillard <rouilj@ieee.org>
parents:
8031
diff
changeset
|
366 w(write_output) |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
367 |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
368 def inner_run_cgi(self): |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
369 ''' This is the inner part of the CGI handling |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
370 ''' |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
371 |
|
4912
a0a7a6ca1586
roundup_server: Code untangle - init `rest` variable when necessary
anatoly techtonik <techtonik@gmail.com>
parents:
4911
diff
changeset
|
372 # self.path is /some/path?with&all=stuff |
|
a0a7a6ca1586
roundup_server: Code untangle - init `rest` variable when necessary
anatoly techtonik <techtonik@gmail.com>
parents:
4911
diff
changeset
|
373 if self.path == '/favicon.ico': |
|
4911
0997d4d8e76c
roundup_server: Code cleanup - move favicon object into its section
anatoly techtonik <techtonik@gmail.com>
parents:
4769
diff
changeset
|
374 # file-like object for the favicon.ico file information |
|
0997d4d8e76c
roundup_server: Code cleanup - move favicon object into its section
anatoly techtonik <techtonik@gmail.com>
parents:
4769
diff
changeset
|
375 favicon_fileobj = None |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
376 |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
377 # check to see if a custom favicon was specified, and set |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
378 # favicon_fileobj to the input file |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
379 if self.CONFIG is not None: |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
380 favicon_filepath = os.path.abspath(self.CONFIG['FAVICON']) |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
381 |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
382 if os.access(favicon_filepath, os.R_OK): |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
383 favicon_fileobj = open(favicon_filepath, 'rb') |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
384 |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
385 if favicon_fileobj is None: |
|
5418
55f09ca366c4
Python 3 preparation: StringIO.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5410
diff
changeset
|
386 favicon_fileobj = io.BytesIO(favico) |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
387 |
|
2176
adaf2a92153c
added favicon
Richard Jones <richard@users.sourceforge.net>
parents:
2021
diff
changeset
|
388 self.send_response(200) |
|
adaf2a92153c
added favicon
Richard Jones <richard@users.sourceforge.net>
parents:
2021
diff
changeset
|
389 self.send_header('Content-Type', 'image/x-icon') |
|
6528
6cf050b43eaf
Send content-length for /favico.ico
John Rouillard <rouilj@ieee.org>
parents:
6514
diff
changeset
|
390 self.send_header('Content-Length', len(favico)) |
| 6529 | 391 self.send_header('Cache-Control', "public, max-age=86400") |
|
2176
adaf2a92153c
added favicon
Richard Jones <richard@users.sourceforge.net>
parents:
2021
diff
changeset
|
392 self.end_headers() |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
393 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
394 # this bufsize is completely arbitrary, I picked 4K because |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
395 # it sounded good. if someone knows of a better buffer size, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
396 # feel free to plug it in. |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
397 bufsize = 4 * 1024 |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
398 Processing = True |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
399 while Processing: |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
400 data = favicon_fileobj.read(bufsize) |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
401 if len(data) > 0: |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
402 self.wfile.write(data) |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
403 else: |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
404 Processing = False |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
405 |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
406 favicon_fileobj.close() |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
407 |
|
2176
adaf2a92153c
added favicon
Richard Jones <richard@users.sourceforge.net>
parents:
2021
diff
changeset
|
408 return |
|
1611
db8545f10476
initial attempt at favicon support, complete failure
Richard Jones <richard@users.sourceforge.net>
parents:
1606
diff
changeset
|
409 |
|
8210
4ed886dc2558
fix(web): issue2551381 - roundup-server parses multiple '?" incorrectly.
John Rouillard <rouilj@ieee.org>
parents:
8170
diff
changeset
|
410 i = self.path.find('?') |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
411 if i >= 0: |
|
4912
a0a7a6ca1586
roundup_server: Code untangle - init `rest` variable when necessary
anatoly techtonik <techtonik@gmail.com>
parents:
4911
diff
changeset
|
412 # rest starts with /, query is without ? |
|
a0a7a6ca1586
roundup_server: Code untangle - init `rest` variable when necessary
anatoly techtonik <techtonik@gmail.com>
parents:
4911
diff
changeset
|
413 rest, query = self.path[:i], self.path[i+1:] |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
414 else: |
|
4912
a0a7a6ca1586
roundup_server: Code untangle - init `rest` variable when necessary
anatoly techtonik <techtonik@gmail.com>
parents:
4911
diff
changeset
|
415 rest = self.path |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
416 query = '' |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
417 |
|
1473
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
418 # no tracker - spit out the index |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
419 if rest == '/': |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
420 self.index() |
|
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
421 return |
|
1473
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
422 |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
423 # figure the tracker |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
424 l_path = rest.split('/') |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5398
diff
changeset
|
425 tracker_name = urllib_.unquote(l_path[1]).lower() |
|
1473
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
426 |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
427 # handle missing trailing '/' |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
428 if len(l_path) == 2: |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
429 self.send_response(301) |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
430 # redirect - XXX https?? |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
431 protocol = 'http' |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
432 url = '%s://%s%s/' % (protocol, self.headers['host'], rest) |
|
4913
8f6cfe824c9f
roundup_server: Fix endless redirect on http://localhost:8917/demo?anything
anatoly techtonik <techtonik@gmail.com>
parents:
4912
diff
changeset
|
433 if query: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
434 url += '?' + query |
|
8322
a2c376d0f110
fix: fix possible HTTP Response Splitting in roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8297
diff
changeset
|
435 |
|
a2c376d0f110
fix: fix possible HTTP Response Splitting in roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8297
diff
changeset
|
436 # Do not allow literal \n or \r in URL to prevent |
|
a2c376d0f110
fix: fix possible HTTP Response Splitting in roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8297
diff
changeset
|
437 # HTTP Response Splitting |
|
a2c376d0f110
fix: fix possible HTTP Response Splitting in roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8297
diff
changeset
|
438 url = re.sub("[\r\n]", "", url) |
|
1473
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
439 self.send_header('Location', url) |
|
8000
683af7c57ce5
fix: add content-length to 301 response
John Rouillard <rouilj@ieee.org>
parents:
7750
diff
changeset
|
440 self.send_header('Content-Length', 17) |
|
1473
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
441 self.end_headers() |
|
5431
4c724ad7b849
Python 3 preparation: write bytes to socket in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5426
diff
changeset
|
442 self.wfile.write(b'Moved Permanently') |
|
1473
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
443 return |
|
21a80a8dfc6d
fix (again?) trailing / redirect [SF#692910]
Richard Jones <richard@users.sourceforge.net>
parents:
1469
diff
changeset
|
444 |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
445 # figure out what the rest of the path is |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
446 if len(l_path) > 2: |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
447 rest = '/'.join(l_path[2:]) |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
448 else: |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
449 rest = '/' |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
450 |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
451 # Set up the CGI environment |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
452 env = {} |
|
1251
347657425a10
Nicer display of tracker list in roundup-server [SF#619769]
Richard Jones <richard@users.sourceforge.net>
parents:
1249
diff
changeset
|
453 env['TRACKER_NAME'] = tracker_name |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
454 env['REQUEST_METHOD'] = self.command |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5398
diff
changeset
|
455 env['PATH_INFO'] = urllib_.unquote(rest) |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
456 if query: |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
457 env['QUERY_STRING'] = query |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
458 if hasattr(self.headers, 'get_content_type'): |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
459 # Python 3. We need the raw header contents. |
|
5667
5ad31de777a8
Prevent env['CONTENT_TYPE'] from being None. FieldStorage's content
John Rouillard <rouilj@ieee.org>
parents:
5624
diff
changeset
|
460 content_type = self.headers.get('content-type') |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
461 elif self.headers.typeheader is None: |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
462 # Python 2. |
|
5667
5ad31de777a8
Prevent env['CONTENT_TYPE'] from being None. FieldStorage's content
John Rouillard <rouilj@ieee.org>
parents:
5624
diff
changeset
|
463 content_type = self.headers.type |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
464 else: |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
465 # Python 2. |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
466 content_type = self.headers.typeheader |
|
5667
5ad31de777a8
Prevent env['CONTENT_TYPE'] from being None. FieldStorage's content
John Rouillard <rouilj@ieee.org>
parents:
5624
diff
changeset
|
467 if content_type: |
|
5ad31de777a8
Prevent env['CONTENT_TYPE'] from being None. FieldStorage's content
John Rouillard <rouilj@ieee.org>
parents:
5624
diff
changeset
|
468 env['CONTENT_TYPE'] = content_type |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
469 length = self.headers.get('content-length') |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
470 if length: |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
471 env['CONTENT_LENGTH'] = length |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
472 if hasattr(self.headers, 'get_all'): |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
473 # Python 3. |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
474 ch = self.headers.get_all('cookie', []) |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
475 else: |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
476 # Python 2. |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
477 ch = self.headers.getheaders('cookie') |
|
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
478 co = list(filter(None, ch)) |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
479 if co: |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
480 env['HTTP_COOKIE'] = ', '.join(co) |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
481 env['HTTP_AUTHORIZATION'] = self.headers.get('authorization') |
|
6436
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
482 # self.CONFIG['INCLUDE_HEADERS'] is a list. |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
483 for h in self.CONFIG['INCLUDE_HEADERS']: |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
484 env[h] = self.headers.get(h, None) |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
485 # if header is MISSING |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
486 if env[h] is None: |
|
7574
dba4b1b25528
flake8: add space between del and (
John Rouillard <rouilj@ieee.org>
parents:
7387
diff
changeset
|
487 del (env[h]) |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
488 env['SCRIPT_NAME'] = '' |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
489 env['SERVER_NAME'] = self.server.server_name |
|
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
490 env['SERVER_PORT'] = str(self.server.server_port) |
|
4290
236939e4137b
- small typo
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4276
diff
changeset
|
491 try: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
492 env['HTTP_HOST'] = self.headers['host'] |
|
4290
236939e4137b
- small typo
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4276
diff
changeset
|
493 except KeyError: |
|
236939e4137b
- small typo
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4276
diff
changeset
|
494 env['HTTP_HOST'] = '' |
|
5303
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
495 # https://tools.ietf.org/html/draft-ietf-appsawg-http-forwarded-10 |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
496 # headers. |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
497 xfh = self.headers.get('X-Forwarded-Host', None) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
498 if xfh: |
|
5303
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
499 # If behind a proxy, this is the hostname supplied |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
500 # via the Host header to the proxy. Used by core code. |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
501 # Controlled by the CSRF settings. |
|
5624
b3618882f906
issue2551023: Fix CSRF headers for use with wsgi and cgi. The
John Rouillard <rouilj@ieee.org>
parents:
5608
diff
changeset
|
502 env['HTTP_X_FORWARDED_HOST'] = xfh |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
503 xff = self.headers.get('X-Forwarded-For', None) |
|
5303
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
504 if xff: |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
505 # xff is a list of ip addresses for original client/proxies: |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
506 # X-Forwarded-For: clientIP, proxy1IP, proxy2IP |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
507 # May not be trustworthy. Do not use in core without |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
508 # config option to control its use. |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
509 # Made available for extensions if the user trusts it. |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
510 # E.g. you may wish to disable recaptcha validation extension |
|
7701
5a35cfee727a
doc: use 'TEST-NET' IPv4 or IPv6 IP address ranges from RFC 6890
John Rouillard <rouilj@ieee.org>
parents:
7655
diff
changeset
|
511 # if the ip of the client matches 198.51.100.X |
|
5624
b3618882f906
issue2551023: Fix CSRF headers for use with wsgi and cgi. The
John Rouillard <rouilj@ieee.org>
parents:
5608
diff
changeset
|
512 env['HTTP_X_FORWARDED_FOR'] = xff |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
513 xfp = self.headers.get('X-Forwarded-Proto', None) |
|
5303
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
514 if xfp: |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
515 # xfp is the protocol (http/https) seen by proxies in the |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
516 # path of the request. I am not sure if there is only |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
517 # one value or multiple, but I suspect multiple |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
518 # is possible so: |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
519 # X-Forwarded-Proto: https, http |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
520 # is expected if the path is: |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
521 # client -> proxy1 -> proxy2 -> back end server |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
522 # an proxy1 is an SSL terminator. |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
523 # May not be trustworthy. Do not use in core without |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
524 # config option to control its use. |
|
5017c3422334
Pass X-Forwarded-For and X-Forwarded-Proto headers as
John Rouillard <rouilj@ieee.org>
parents:
5266
diff
changeset
|
525 # Made available for extensions if the user trusts it. |
|
5624
b3618882f906
issue2551023: Fix CSRF headers for use with wsgi and cgi. The
John Rouillard <rouilj@ieee.org>
parents:
5608
diff
changeset
|
526 env['HTTP_X_FORWARDED_PROTO'] = xfp |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
527 if 'CGI_SHOW_TIMING' in os.environ: |
|
2943
996e2bab8d8a
propagate CGI_SHOW_TIMING from os.environ to request environment
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2852
diff
changeset
|
528 env['CGI_SHOW_TIMING'] = os.environ['CGI_SHOW_TIMING'] |
|
3574
7bf2b4523b75
fix failure with browsers not sending "Accept-Language" header [SF#1435335]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3438
diff
changeset
|
529 env['HTTP_ACCEPT_LANGUAGE'] = self.headers.get('accept-language') |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
530 referer = self.headers.get('Referer') |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
531 if referer: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
532 env['HTTP_REFERER'] = referer |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
533 origin = self.headers.get('Origin') |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
534 if origin: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
535 env['HTTP_ORIGIN'] = origin |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
536 xrw = self.headers.get('x-requested-with') |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5102
diff
changeset
|
537 if xrw: |
|
5624
b3618882f906
issue2551023: Fix CSRF headers for use with wsgi and cgi. The
John Rouillard <rouilj@ieee.org>
parents:
5608
diff
changeset
|
538 env['HTTP_X_REQUESTED_WITH'] = xrw |
|
5432
fec18298ae02
Python 3 preparation: HTTP headers handling in roundup_server.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5431
diff
changeset
|
539 range = self.headers.get('range') |
|
4475
207499c0a3ed
Range support in roundup-server so large files can be served...
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents:
4344
diff
changeset
|
540 if range: |
|
207499c0a3ed
Range support in roundup-server so large files can be served...
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents:
4344
diff
changeset
|
541 env['HTTP_RANGE'] = range |
|
6646
98a9df71e24c
If-Range doesn't work with roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
6529
diff
changeset
|
542 if_range = self.headers.get('if-range') |
|
98a9df71e24c
If-Range doesn't work with roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
6529
diff
changeset
|
543 if range: |
|
98a9df71e24c
If-Range doesn't work with roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
6529
diff
changeset
|
544 env['HTTP_IF_RANGE'] = if_range |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
545 |
|
2848
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
546 # do the roundup thing |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
547 tracker = self.get_tracker(tracker_name) |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
548 tracker.Client(tracker, self, env).main() |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
549 |
|
1735
141d5a0869fa
roundup-server now logs IP addresses by default [SF#778795]
Richard Jones <richard@users.sourceforge.net>
parents:
1632
diff
changeset
|
550 def address_string(self): |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
551 """Get IP address of client from: |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
552 left most element of X-Forwarded-For header element if set |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
553 client ip address otherwise. |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
554 if returned string is from X-Forwarded-For append + to string. |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
555 """ |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
556 from_forwarded_header="" |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
557 forwarded_for = None |
|
8256
3a04ff6f1004
fix: crash when logging ip if roundup-server times out
John Rouillard <rouilj@ieee.org>
parents:
8210
diff
changeset
|
558 |
|
3a04ff6f1004
fix: crash when logging ip if roundup-server times out
John Rouillard <rouilj@ieee.org>
parents:
8210
diff
changeset
|
559 # if connection timed out, there is no headers property |
|
3a04ff6f1004
fix: crash when logging ip if roundup-server times out
John Rouillard <rouilj@ieee.org>
parents:
8210
diff
changeset
|
560 if hasattr(self, 'headers') and ('X-FORWARDED-FOR' in self.headers): |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
561 forwarded_for = re.split(r'[,\s]', |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
562 self.headers['X-FORWARDED-FOR'], |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
563 maxsplit=1)[0] |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
564 from_forwarded_header="+" |
|
1735
141d5a0869fa
roundup-server now logs IP addresses by default [SF#778795]
Richard Jones <richard@users.sourceforge.net>
parents:
1632
diff
changeset
|
565 if self.LOG_IPADDRESS: |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
566 return "%s%s" % (forwarded_for or self.client_address[0], |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
567 from_forwarded_header) |
|
1735
141d5a0869fa
roundup-server now logs IP addresses by default [SF#778795]
Richard Jones <richard@users.sourceforge.net>
parents:
1632
diff
changeset
|
568 else: |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
569 if forwarded_for: |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
570 host = forwarded_for |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
571 else: |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
572 host, port = self.client_address |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
573 return "%s%s" % (socket.getfqdn(host), from_forwarded_header) |
|
1632
eb4d04a9d647
added Windows Service mode for roundup-server...
Richard Jones <richard@users.sourceforge.net>
parents:
1611
diff
changeset
|
574 |
|
2021
f4a16b186efc
proper fix this time
Richard Jones <richard@users.sourceforge.net>
parents:
2020
diff
changeset
|
575 def log_message(self, format, *args): |
|
f4a16b186efc
proper fix this time
Richard Jones <richard@users.sourceforge.net>
parents:
2020
diff
changeset
|
576 ''' Try to *safely* log to stderr. |
|
f4a16b186efc
proper fix this time
Richard Jones <richard@users.sourceforge.net>
parents:
2020
diff
changeset
|
577 ''' |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
578 if self.CONFIG['LOGHTTPVIALOGGER']: |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
579 logger = logging.getLogger('roundup.http') |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
580 |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
581 logger.info("%s - - [%s] %s" % |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
582 (self.address_string(), |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
583 self.log_date_time_string(), |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
584 format % args)) |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
585 else: |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
586 try: |
|
5409
277e91bf7936
Python 3 preparation: update BaseHTTPServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5405
diff
changeset
|
587 http_.server.BaseHTTPRequestHandler.log_message(self, |
| 6972 | 588 format, *args) |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
589 except IOError: |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
590 # stderr is no longer viable |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
591 pass |
|
2021
f4a16b186efc
proper fix this time
Richard Jones <richard@users.sourceforge.net>
parents:
2020
diff
changeset
|
592 |
|
3736
a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents:
3733
diff
changeset
|
593 def start_response(self, headers, response): |
|
a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents:
3733
diff
changeset
|
594 self.send_response(response) |
|
a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents:
3733
diff
changeset
|
595 for key, value in headers: |
|
a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents:
3733
diff
changeset
|
596 self.send_header(key, value) |
|
a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents:
3733
diff
changeset
|
597 self.end_headers() |
|
a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents:
3733
diff
changeset
|
598 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
599 |
|
1871
db97431125a5
Print a nicer error message (without usage)...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1868
diff
changeset
|
600 def error(): |
|
db97431125a5
Print a nicer error message (without usage)...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1868
diff
changeset
|
601 exc_type, exc_value = sys.exc_info()[:2] |
|
7750
216662fbaaee
fix(i18n): fix incorrect lookup of some translations
John Rouillard <rouilj@ieee.org>
parents:
7701
diff
changeset
|
602 return _('Error: %(type)s: %(value)s') % {'type': exc_type, |
|
216662fbaaee
fix(i18n): fix incorrect lookup of some translations
John Rouillard <rouilj@ieee.org>
parents:
7701
diff
changeset
|
603 'value': exc_value} |
|
1871
db97431125a5
Print a nicer error message (without usage)...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1868
diff
changeset
|
604 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
605 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
606 def setgid(group): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
607 if group is None: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
608 return |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
609 if not hasattr(os, 'setgid'): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
610 return |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
611 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
612 # if root, setgid to the running user |
|
3279
6e7462bbafde
fix setgid typo [SF#1171346]
Richard Jones <richard@users.sourceforge.net>
parents:
3277
diff
changeset
|
613 if os.getuid(): |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
614 print(_('WARNING: ignoring "-g" argument, not root')) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
615 return |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
616 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
617 try: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
618 import grp |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
619 except ImportError: |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
620 raise ValueError(_("Can't change groups - no grp module")) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
621 try: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
622 try: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
623 gid = int(group) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
624 except ValueError: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
625 gid = grp.getgrnam(group)[2] |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
626 else: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
627 grp.getgrgid(gid) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
628 except KeyError: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
629 raise ValueError(_("Group %(group)s doesn't exist") % locals()) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
630 os.setgid(gid) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
631 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
632 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
633 def setuid(user): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
634 if not hasattr(os, 'getuid'): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
635 return |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
636 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
637 # People can remove this check if they're really determined |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
638 if user is None: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
639 if os.getuid(): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
640 return |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
641 raise ValueError(_("Can't run as root!")) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
642 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
643 if os.getuid(): |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
644 print(_('WARNING: ignoring "-u" argument, not root')) |
|
3733
2addec69757a
fix: setuid called when run by non-root
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3609
diff
changeset
|
645 return |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
646 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
647 try: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
648 import pwd |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
649 except ImportError: |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
650 raise ValueError(_("Can't change users - no pwd module")) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
651 try: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
652 try: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
653 uid = int(user) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
654 except ValueError: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
655 uid = pwd.getpwnam(user)[2] |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
656 else: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
657 pwd.getpwuid(uid) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
658 except KeyError: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
659 raise ValueError(_("User %(user)s doesn't exist") % locals()) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
660 os.setuid(uid) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
661 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
662 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
663 class TrackerHomeOption(configuration.FilePathOption): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
664 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
665 # Tracker homes do not need any description strings |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
666 def format(self): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
667 return "%(name)s = %(value)s\n" % { |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
668 "name": self.setting, |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
669 "value": self.value2str(self._value), |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
670 } |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
671 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
672 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
673 class ServerConfig(configuration.Config): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
674 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
675 SETTINGS = ( |
| 6972 | 676 ("main", ( |
|
4489
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
677 (configuration.Option, "host", "localhost", |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
678 "Host name of the Roundup web server instance.\n" |
|
4489
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
679 "If left unconfigured (no 'host' setting) the default\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
680 "will be used.\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
681 "If empty, listen on all network interfaces.\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
682 "If you want to explicitly listen on all\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
683 "network interfaces, the address 0.0.0.0 is a more\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
684 "explicit way to achieve this, the use of an empty\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
685 "string for this purpose is deprecated and will go away\n" |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
686 "in a future release."), |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
687 (configuration.IntegerNumberOption, "port", DEFAULT_PORT, |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
688 "Port to listen on."), |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
689 (configuration.NullableFilePathOption, "favicon", "favicon.ico", |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
690 "Path to favicon.ico image file." |
|
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
691 " If unset, built-in favicon.ico is used."), |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
692 (configuration.NullableOption, "user", "", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
693 "User ID as which the server will answer requests.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
694 "In order to use this option, " |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
695 "the server must be run initially as root.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
696 "Availability: Unix."), |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
697 (configuration.NullableOption, "group", "", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
698 "Group ID as which the server will answer requests.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
699 "In order to use this option, " |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
700 "the server must be run initially as root.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
701 "Availability: Unix."), |
|
7387
46f92ac4e170
- issue2551275 - Allow configuring max_children in roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
7112
diff
changeset
|
702 (configuration.IntegerNumberOption, "max_children", 40, |
|
46f92ac4e170
- issue2551275 - Allow configuring max_children in roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
7112
diff
changeset
|
703 "Maximum number of children to spawn using fork " |
|
46f92ac4e170
- issue2551275 - Allow configuring max_children in roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
7112
diff
changeset
|
704 "multiprocess mode."), |
|
3787
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
705 (configuration.BooleanOption, "nodaemon", "no", |
|
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
706 "don't fork (this overrides the pidfile mechanism)'"), |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
707 (configuration.BooleanOption, "log_hostnames", "no", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
708 "Log client machine names instead of IP addresses " |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
709 "(much slower)"), |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
710 (configuration.BooleanOption, "loghttpvialogger", "no", |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
711 "Have http(s) request logging done via python logger module.\n" |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
712 "If set to yes the python logging module is used with " |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
713 "qualname\n'roundup.http'. Otherwise logging is done to " |
|
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
714 "stderr or the file\nspecified using the -l/logfile option."), |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
715 (configuration.BooleanOption, "log_proxy_header", "no", |
|
8170
bf4a5bd5aa9f
fix formatting of config.ini help text for roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
8169
diff
changeset
|
716 "Use first element of reverse proxy header X-Forwarded-For\n" |
|
bf4a5bd5aa9f
fix formatting of config.ini help text for roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
8169
diff
changeset
|
717 "as client IP address. This appends a '+' sign to the logged\n" |
|
bf4a5bd5aa9f
fix formatting of config.ini help text for roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
8169
diff
changeset
|
718 "host ip/name. Use only if server is accessible only via\n" |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
719 "trusted reverse proxy."), |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
720 (configuration.NullableFilePathOption, "pidfile", "", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
721 "File to which the server records " |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
722 "the process id of the daemon.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
723 "If this option is not set, " |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
724 "the server will run in foreground\n"), |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
725 (configuration.NullableFilePathOption, "logfile", "", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
726 "Log file path. If unset, log to stderr."), |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
727 (configuration.Option, "multiprocess", DEFAULT_MULTIPROCESS, |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
728 "Set processing of each request in separate subprocess.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
729 "Allowed values: %s." % ", ".join(MULTIPROCESS_TYPES)), |
|
3880
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
730 (configuration.NullableFilePathOption, "template", "", |
|
2359d6304a4f
Allow template for tracker index page
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3849
diff
changeset
|
731 "Tracker index template. If unset, built-in will be used."), |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
732 (configuration.BooleanOption, "ssl", "no", |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
733 "Enable SSL support (requires pyopenssl)"), |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
734 (configuration.NullableFilePathOption, "pem", "", |
|
8031
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
735 "PEM file used for SSL. The PEM file must include\n" |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
736 "both the private key and certificate with appropriate\n" |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
737 'headers (i.e. "-----BEGIN PRIVATE KEY-----",\n' |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
738 '"-----END PRIVATE KEY-----" and ' |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
739 '"-----BEGIN CERTIFICATE-----",\n' |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
740 '"-----END CERTIFICATE-----". A temporary self-signed\n' |
|
0f5d31be5418
issue2551219 - use of PEM file with roundup-server
John Rouillard <rouilj@ieee.org>
parents:
8000
diff
changeset
|
741 "certificate will be used if left blank."), |
|
6436
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
742 (configuration.WordListOption, "include_headers", "", |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
743 "Comma separated list of extra headers that should\n" |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
744 "be copied into the CGI environment.\n" |
|
6514
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
745 "E.G. if you want to access the REMOTE_USER and\n" |
|
6436
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
746 "X-Proxy-User headers in the back end,\n" |
|
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
747 "set to the value REMOTE_USER,X-Proxy-User."), |
|
6514
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
748 (configuration.HttpVersionOption, "http_version", "HTTP/1.1", |
|
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
749 "Change to HTTP/1.0 if needed. This disables keepalive."), |
|
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
750 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
751 )), |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
752 ("trackers", (), "Roundup trackers to serve.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
753 "Each option in this section defines single Roundup tracker.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
754 "Option name identifies the tracker and will appear in the URL.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
755 "Option value is tracker home directory path.\n" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
756 "The path may be either absolute or relative\n" |
|
5102
96dc9f07340a
issue2161722: oudated docs
John Rouillard <rouilj@ieee.org>
parents:
4913
diff
changeset
|
757 "to the directory containing this config file."), |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
758 ) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
759 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
760 # options recognized by config |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
761 OPTIONS = { |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
762 "host": "n:", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
763 "port": "p:", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
764 "group": "g:", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
765 "user": "u:", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
766 "logfile": "l:", |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
767 "pidfile": "d:", |
|
3784
93dfda74a763
allow use of roundup-server pidfile without forking [SF#1614753]
Richard Jones <richard@users.sourceforge.net>
parents:
3736
diff
changeset
|
768 "nodaemon": "D", |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
769 "log_hostnames": "N", |
|
7387
46f92ac4e170
- issue2551275 - Allow configuring max_children in roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
7112
diff
changeset
|
770 "max_children": "m:", |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
771 "multiprocess": "t:", |
|
3884
1165f2204542
Ooops...not sure where those tabs came from. Making them spaces.
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3883
diff
changeset
|
772 "template": "i:", |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
773 "loghttpvialogger": 'L', |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
774 "log_proxy_header": 'P', |
|
3884
1165f2204542
Ooops...not sure where those tabs came from. Making them spaces.
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3883
diff
changeset
|
775 "ssl": "s", |
|
1165f2204542
Ooops...not sure where those tabs came from. Making them spaces.
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3883
diff
changeset
|
776 "pem": "e:", |
|
6436
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
777 "include_headers": "I:", |
|
6514
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
778 "http_version": 'V:', |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
779 } |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
780 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
781 def __init__(self, config_file=None): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
782 configuration.Config.__init__(self, config_file, self.SETTINGS) |
|
3022
9523de67ecad
merge from maint-0-8
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2943
diff
changeset
|
783 self.sections.append("trackers") |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
784 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
785 def _adjust_options(self, config): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
786 """Add options for tracker homes""" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
787 # return early if there are no tracker definitions. |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
788 # trackers must be specified on the command line. |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
789 if not config.has_section("trackers"): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
790 return |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
791 # config defaults appear in all sections. |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
792 # filter them out. |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5386
diff
changeset
|
793 defaults = list(config.defaults().keys()) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
794 for name in config.options("trackers"): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
795 if name not in defaults: |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
796 self.add_option(TrackerHomeOption(self, "trackers", name)) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
797 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
798 def getopt(self, args, short_options="", long_options=(), |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
799 config_load_options=("C", "config"), **options): |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
800 options.update(self.OPTIONS) |
| 6972 | 801 return configuration.Config.getopt( |
| 802 self, args, short_options, long_options, | |
| 803 config_load_options, **options) | |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
804 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
805 def _get_name(self): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
806 return "Roundup server" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
807 |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
808 def trackers(self): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
809 """Return tracker definitions as a list of (name, home) pairs""" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
810 trackers = [] |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
811 for option in self._get_section_options("trackers"): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
812 trackers.append((option, os.path.abspath( |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
813 self["TRACKERS_" + option.upper()]))) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
814 return trackers |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
815 |
|
3112
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
816 def set_logging(self): |
|
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
817 """Initialise logging to the configured file, if any.""" |
|
5523
fb9abb842f36
Fix roundup-server logging for Python 3.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5432
diff
changeset
|
818 # appending, line-buffered (Python 3 does not allow unbuffered |
|
fb9abb842f36
Fix roundup-server logging for Python 3.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5432
diff
changeset
|
819 # text files) |
|
fb9abb842f36
Fix roundup-server logging for Python 3.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5432
diff
changeset
|
820 sys.stdout = sys.stderr = open(self["LOGFILE"], 'a', 1) |
|
3112
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
821 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
822 def get_server(self): |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
823 """Return HTTP server object to run""" |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
824 # we don't want the cgi module interpreting the command-line args ;) |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
825 sys.argv = sys.argv[:1] |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
826 |
|
2848
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
827 # preload all trackers unless we are in "debug" mode |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
828 tracker_homes = self.trackers() |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
829 if self["MULTIPROCESS"] == "debug": |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
830 trackers = None |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
831 else: |
|
2852
37e6ebd5ba29
when preloading trackers (not running in 'debug' mode)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2848
diff
changeset
|
832 trackers = dict([(name, roundup.instance.open(home, optimize=1)) |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
833 for (name, home) in tracker_homes]) |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
834 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
835 # build customized request handler class |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
836 class RequestHandler(RoundupRequestHandler): |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
837 LOG_IPADDRESS = not self["LOG_HOSTNAMES"] |
|
2848
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
838 TRACKER_HOMES = dict(tracker_homes) |
|
e8cb25c30ac9
added multiprocess mode "debug" - run single process...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2843
diff
changeset
|
839 TRACKERS = trackers |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
840 DEBUG_MODE = self["MULTIPROCESS"] == "debug" |
|
3438
4963c853d51b
added favicon config option (patch [SF#1355661])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3428
diff
changeset
|
841 CONFIG = self |
|
3277
3084b07ec266
send errors in the web interface to a logfile by default.
Richard Jones <richard@users.sourceforge.net>
parents:
3205
diff
changeset
|
842 |
|
4276
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
843 def setup(self): |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
844 if self.CONFIG["SSL"]: |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
845 # perform initial ssl handshake. This will set |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
846 # internal state correctly so that later closing SSL |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
847 # socket works (with SSL end-handshake started) |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
848 self.request.do_handshake() |
|
6514
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
849 RoundupRequestHandler.protocol_version = \ |
| 6972 | 850 self.CONFIG["HTTP_VERSION"] |
|
4276
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
851 RoundupRequestHandler.setup(self) |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
852 |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
853 def finish(self): |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
854 RoundupRequestHandler.finish(self) |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
855 if self.CONFIG["SSL"]: |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
856 self.request.shutdown() |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
857 self.request.close() |
|
0c024cf74252
Correct initial- and end-handshakes for SSL
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4273
diff
changeset
|
858 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
859 if self["SSL"]: |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
860 base_server = SecureHTTPServer |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
861 else: |
|
4273
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
862 # time out after a minute if we can |
|
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
863 # This sets the socket to non-blocking. SSL needs a blocking |
|
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
864 # socket, so we do this only for non-SSL connections. |
|
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
865 if hasattr(socket, 'setdefaulttimeout'): |
|
0a684518d609
More SSL fixes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4258
diff
changeset
|
866 socket.setdefaulttimeout(60) |
|
5409
277e91bf7936
Python 3 preparation: update BaseHTTPServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5405
diff
changeset
|
867 base_server = http_.server.HTTPServer |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
868 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
869 # obtain request server class |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
870 if self["MULTIPROCESS"] not in MULTIPROCESS_TYPES: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
871 print(_("Multiprocess mode \"%s\" is not available, " |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
872 "switching to single-process") % self["MULTIPROCESS"]) |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
873 self["MULTIPROCESS"] = "none" |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
874 server_class = base_server |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
875 elif self["MULTIPROCESS"] == "fork": |
|
5410
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
876 class ForkingServer(socketserver.ForkingMixIn, |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
877 base_server): |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
878 pass |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
879 server_class = ForkingServer |
|
7387
46f92ac4e170
- issue2551275 - Allow configuring max_children in roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
7112
diff
changeset
|
880 server_class.max_children = self["MAX_CHILDREN"] |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
881 elif self["MULTIPROCESS"] == "thread": |
|
5410
d0816d50ee8f
Python 3 preparation: update SocketServer import.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5409
diff
changeset
|
882 class ThreadingServer(socketserver.ThreadingMixIn, |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
883 base_server): |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
884 pass |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
885 server_class = ThreadingServer |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
886 else: |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
887 server_class = base_server |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
888 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
889 # obtain server before changing user id - allows to |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
890 # use port < 1024 if started as root |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
891 try: |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
892 args = ((self["HOST"], self["PORT"]), RequestHandler) |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
893 kwargs = {} |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
894 if self["SSL"]: |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
895 kwargs['ssl_pem'] = self["PEM"] |
|
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
896 httpd = server_class(*args, **kwargs) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5201
diff
changeset
|
897 except socket.error as e: |
|
5712
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
898 if e.args[0] == errno.EADDRINUSE: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
899 raise socket.error(_("Unable to bind to port %s, " |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
900 "port already in use.") % self["PORT"]) |
|
6743
d659cfa8439c
Make roundup-server EACCES errors clearer
John Rouillard <rouilj@ieee.org>
parents:
6718
diff
changeset
|
901 if e.args[0] == errno.EACCES: |
| 6972 | 902 raise socket.error(_( |
| 903 "Unable to bind to port %(port)s, " | |
| 904 "access not allowed, " | |
|
7750
216662fbaaee
fix(i18n): fix incorrect lookup of some translations
John Rouillard <rouilj@ieee.org>
parents:
7701
diff
changeset
|
905 "errno: %(errno)s %(msg)s") % { |
| 6972 | 906 "port": self["PORT"], |
| 907 "errno": e.args[0], | |
| 908 "msg": e.args[1]} | |
|
7750
216662fbaaee
fix(i18n): fix incorrect lookup of some translations
John Rouillard <rouilj@ieee.org>
parents:
7701
diff
changeset
|
909 ) |
| 6972 | 910 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
911 raise |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
912 # change user and/or group |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
913 setgid(self["GROUP"]) |
|
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
914 setuid(self["USER"]) |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
915 # return the server |
|
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
916 return httpd |
|
2230
ca2664e095be
disable forking server when os.fork() not available [SF#938586]
Richard Jones <richard@users.sourceforge.net>
parents:
2200
diff
changeset
|
917 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
918 |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
919 try: |
|
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
920 import win32serviceutil |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
921 except ImportError: |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
922 RoundupService = None |
|
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
923 else: |
|
2230
ca2664e095be
disable forking server when os.fork() not available [SF#938586]
Richard Jones <richard@users.sourceforge.net>
parents:
2200
diff
changeset
|
924 |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
925 # allow the win32 |
|
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
926 import win32service |
|
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
927 |
|
5266
e9158c0a6eba
Python 2 and 3 support. Convert Exception to BaseException scripts.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
928 class SvcShutdown(BaseException): |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
929 pass |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
930 |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
931 class RoundupService(win32serviceutil.ServiceFramework): |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
932 |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
933 _svc_name_ = "roundup" |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
934 _svc_display_name_ = "Roundup Bug Tracker" |
|
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
935 |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
936 running = 0 |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
937 server = None |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
938 |
|
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
939 def SvcDoRun(self): |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
940 import servicemanager |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
941 self.ReportServiceStatus(win32service.SERVICE_START_PENDING) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
942 config = ServerConfig() |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
943 (optlist, args) = config.getopt(sys.argv[1:]) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
944 if not config["LOGFILE"]: |
| 6972 | 945 servicemanager.LogMsg( |
| 946 servicemanager.EVENTLOG_ERROR_TYPE, | |
| 947 servicemanager.PYS_SERVICE_STOPPED, | |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
948 (self._svc_display_name_, "\r\nMissing logfile option")) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
949 self.ReportServiceStatus(win32service.SERVICE_STOPPED) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
950 return |
|
3112
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
951 config.set_logging() |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
952 self.server = config.get_server() |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
953 self.running = 1 |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
954 self.ReportServiceStatus(win32service.SERVICE_RUNNING) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
955 servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
956 servicemanager.PYS_SERVICE_STARTED, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
957 (self._svc_display_name_, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
958 " at %s:%s" % (config["HOST"], |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
959 config["PORT"]))) |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
960 while self.running: |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
961 self.server.handle_request() |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
962 servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
963 servicemanager.PYS_SERVICE_STOPPED, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
964 (self._svc_display_name_, "")) |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
965 self.ReportServiceStatus(win32service.SERVICE_STOPPED) |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
966 |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
967 def SvcStop(self): |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
968 self.running = 0 |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
969 # make dummy connection to self to terminate blocking accept() |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
970 addr = self.server.socket.getsockname() |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
971 if addr[0] == "0.0.0.0": |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
972 addr = ("127.0.0.1", addr[1]) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
973 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
974 sock.connect(addr) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
975 sock.close() |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
976 self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
977 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
978 |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
979 def usage(message=''): |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
980 if RoundupService: |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
981 os_part = \ |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
982 ""''' -c <Command> Windows Service options. |
|
2521
8822780fa519
mark non-windows usage part for translation;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2483
diff
changeset
|
983 If you want to run the server as a Windows Service, you |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
984 must use configuration file to specify tracker homes. |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
985 Logfile option is required to run Roundup Tracker service. |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
986 Typing "roundup-server -c help" shows Windows Services |
|
2521
8822780fa519
mark non-windows usage part for translation;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2483
diff
changeset
|
987 specifics.''' |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
988 else: |
|
2521
8822780fa519
mark non-windows usage part for translation;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2483
diff
changeset
|
989 os_part = ""''' -u <UID> runs the Roundup web server as this UID |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
990 -g <GID> runs the Roundup web server as this GID |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
991 -d <PIDfile> run the server in the background and write the server's PID |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
992 to the file indicated by PIDfile. The -l option *must* be |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
993 specified if -d is used. |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
994 -D run the server in the foreground even when -d is used.''' |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
995 if message: |
|
6514
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
996 message += '\n\n' |
|
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
997 print(_('''\n%(message)sUsage: roundup-server [options] [name=tracker home]* |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
998 |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
999 Options: |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1000 -v print the Roundup version number and exit |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1001 -h print this text and exit |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1002 -S create or update configuration file and exit |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1003 -C <fname> use configuration file <fname> |
|
4489
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
1004 -n <name> set the host name of the Roundup web server instance, |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
1005 specifies on which network interfaces to listen for |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
1006 connections, defaults to localhost, use 0.0.0.0 to bind |
|
47bd330e3d17
Fix documentation for roundup-server about the 'host' parameter...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4475
diff
changeset
|
1007 to all network interfaces |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1008 -p <port> set the port to listen on (default: %(port)s) |
|
6436
1f2f7c0b8968
issue2550837 - New option for web auth (also http header passing)
John Rouillard <rouilj@ieee.org>
parents:
6420
diff
changeset
|
1009 -I <header1[,header2]*> list of headers to pass to the backend |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1010 -l <fname> log to the file indicated by fname instead of stderr/stdout |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1011 -N log client machine names instead of IP addresses (much slower) |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
1012 -i <fname> set tracker index template |
|
7387
46f92ac4e170
- issue2551275 - Allow configuring max_children in roundup-server.
John Rouillard <rouilj@ieee.org>
parents:
7112
diff
changeset
|
1013 -m <children> maximum number of children to spawn in fork multiprocess mode |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
1014 -s enable SSL |
|
5323
762222535a0b
Allow http request logs to be logged using the python logging module
John Rouillard <rouilj@ieee.org>
parents:
5303
diff
changeset
|
1015 -L http request logging uses python logging (roundup.http) |
|
8169
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
1016 -P log client address/name using reverse proxy X-Forwarded-For |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
1017 header and not the connection IP (which is the reverse proxy). |
|
627c5d6a0551
allow roundup-server to log real client IP behind reverse proxy
John Rouillard <rouilj@ieee.org>
parents:
8038
diff
changeset
|
1018 Appends a '+' sign to the logged address/name. |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
1019 -e <fname> PEM file containing SSL key and certificate |
|
2843
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1020 -t <mode> multiprocess mode (default: %(mp_def)s). |
|
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1021 Allowed values: %(mp_types)s. |
|
6514
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
1022 -V <version> set HTTP version (default: HTTP/1.1). |
|
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
1023 Allowed values: HTTP/1.0, HTTP/1.1. |
|
a036712c96f4
Enable HTTP/1.1 support for roundup-server
John Rouillard <rouilj@ieee.org>
parents:
6502
diff
changeset
|
1024 |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1025 %(os_part)s |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1026 |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1027 Long options: |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1028 --version print the Roundup version number and exit |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1029 --help print this text and exit |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1030 --save-config create or update configuration file and exit |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1031 --config <fname> use configuration file <fname> |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1032 All settings of the [main] section of the configuration file |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1033 also may be specified in form --<name>=<value> |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1034 |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1035 Examples: |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1036 |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1037 roundup-server -S -C /opt/roundup/etc/roundup-server.ini \\ |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1038 -n localhost -p 8917 -l /var/log/roundup.log \\ |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1039 support=/var/spool/roundup-trackers/support |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1040 |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1041 roundup-server -C /opt/roundup/etc/roundup-server.ini |
|
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1042 |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1043 roundup-server support=/var/spool/roundup-trackers/support |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1044 |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1045 roundup-server -d /var/run/roundup.pid -l /var/log/roundup.log \\ |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1046 support=/var/spool/roundup-trackers/support |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1047 |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1048 Configuration file format: |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1049 Roundup Server configuration file has common .ini file format. |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1050 Configuration file created with 'roundup-server -S' contains |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1051 detailed explanations for each option. Please see that file |
|
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1052 for option descriptions. |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1053 |
|
2483
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1054 How to use "name=tracker home": |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1055 These arguments set the tracker home(s) to use. The name is how the |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1056 tracker is identified in the URL (it's the first part of the URL path). |
|
55b496fb7b5b
better roundup-server usage string [SF#973352]
Richard Jones <richard@users.sourceforge.net>
parents:
2481
diff
changeset
|
1057 The tracker home is the directory that was identified when you did |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1058 "roundup-admin init". You may specify any number of these name=home |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1059 pairs on the command-line. Make sure the name part doesn't include |
|
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1060 any url-unsafe characters like spaces, as these confuse IE. |
|
2843
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1061 ''') % { |
|
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1062 "message": message, |
|
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1063 "os_part": os_part, |
|
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1064 "port": DEFAULT_PORT, |
|
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1065 "mp_def": DEFAULT_MULTIPROCESS, |
|
46ad912ddd2b
describe -t option in help; remove unused win32 imports
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2842
diff
changeset
|
1066 "mp_types": ", ".join(MULTIPROCESS_TYPES), |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1067 }) |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1068 |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1069 |
|
3784
93dfda74a763
allow use of roundup-server pidfile without forking [SF#1614753]
Richard Jones <richard@users.sourceforge.net>
parents:
3736
diff
changeset
|
1070 def writepidfile(pidfile): |
|
93dfda74a763
allow use of roundup-server pidfile without forking [SF#1614753]
Richard Jones <richard@users.sourceforge.net>
parents:
3736
diff
changeset
|
1071 ''' Write a pidfile (only). Do not daemonize. ''' |
|
93dfda74a763
allow use of roundup-server pidfile without forking [SF#1614753]
Richard Jones <richard@users.sourceforge.net>
parents:
3736
diff
changeset
|
1072 pid = os.getpid() |
|
93dfda74a763
allow use of roundup-server pidfile without forking [SF#1614753]
Richard Jones <richard@users.sourceforge.net>
parents:
3736
diff
changeset
|
1073 if pid: |
|
3787
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1074 pidfile = open(pidfile, 'w') |
|
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1075 pidfile.write(str(pid)) |
|
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1076 pidfile.close() |
|
3784
93dfda74a763
allow use of roundup-server pidfile without forking [SF#1614753]
Richard Jones <richard@users.sourceforge.net>
parents:
3736
diff
changeset
|
1077 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1078 |
|
1072
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1079 def daemonize(pidfile): |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1080 ''' Turn this process into a daemon. |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1081 - make sure the sys.std(in|out|err) are completely cut off |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1082 - make our parent PID 1 |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1083 |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1084 Write our new PID to the pidfile. |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1085 |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1086 From A.M. Kuuchling (possibly originally Greg Ward) with |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1087 modification from Oren Tirosh, and finally a small mod from me. |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1088 ''' |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1089 # Fork once |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1090 if os.fork() != 0: |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1091 os._exit(0) |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1092 |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1093 # Create new session |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1094 os.setsid() |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1095 |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1096 # Second fork to force PPID=1 |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1097 pid = os.fork() |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1098 if pid: |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1099 pidfile = open(pidfile, 'w') |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1100 pidfile.write(str(pid)) |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1101 pidfile.close() |
|
2186
3f89c8ffe4f1
version info in scripts
Richard Jones <richard@users.sourceforge.net>
parents:
2181
diff
changeset
|
1102 os._exit(0) |
|
1072
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1103 |
|
2186
3f89c8ffe4f1
version info in scripts
Richard Jones <richard@users.sourceforge.net>
parents:
2181
diff
changeset
|
1104 os.chdir("/") |
|
1072
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1105 |
|
3112
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1106 # close off std(in|out|err), redirect to devnull so the file |
|
1072
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1107 # descriptors can't be used again |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1108 devnull = os.open('/dev/null', 0) |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1109 os.dup2(devnull, 0) |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1110 os.dup2(devnull, 1) |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1111 os.dup2(devnull, 2) |
|
88ded00fa0e0
better daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
1047
diff
changeset
|
1112 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1113 |
|
2637
11811b313459
The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1114 undefined = [] |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1115 |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1116 |
|
2637
11811b313459
The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1117 def run(port=undefined, success_message=None): |
|
1249
6c24a86a12ae
Fixes for SourceForge tracker bugs.
Richard Jones <richard@users.sourceforge.net>
parents:
1183
diff
changeset
|
1118 ''' Script entry point - handle args and figure out what to to. |
|
6c24a86a12ae
Fixes for SourceForge tracker bugs.
Richard Jones <richard@users.sourceforge.net>
parents:
1183
diff
changeset
|
1119 ''' |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1120 config = ServerConfig() |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
1121 # additional options |
|
5957
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1122 short_options = "hvSc" |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1123 try: |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1124 (optlist, args) = config.getopt(sys.argv[1:], |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1125 short_options, |
|
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1126 ("help", "version", "save-config",)) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5201
diff
changeset
|
1127 except (getopt.GetoptError, configuration.ConfigurationError) as e: |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1128 usage(str(e)) |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1129 return |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1130 |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1131 # if running in windows service mode, don't do any other stuff |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1132 if ("-c", "") in optlist: |
|
5957
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1133 global RoundupService |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1134 if not RoundupService: |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1135 RoundupService = True # make sure usage displays -c help text |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1136 error_m = """ |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1137 ERROR: -c is not available because roundup couldn't import |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1138 win32serviceutil from pywin32. See Installation docs |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1139 for pywin32 details. |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1140 """ |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1141 usage(error_m) |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1142 return |
|
f822a91b3778
Better error message running with -c and pywin32 is not importable.
John Rouillard <rouilj@ieee.org>
parents:
5837
diff
changeset
|
1143 |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1144 # acquire command line options recognized by service |
|
2842
98e2e7b57101
roundup service name changed to single word "roundup"...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2840
diff
changeset
|
1145 short_options = "cC:" |
|
2840
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1146 long_options = ["config"] |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1147 for (long_name, short_name) in config.OPTIONS.items(): |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1148 short_options += short_name |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1149 long_name = long_name.lower().replace("_", "-") |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1150 if short_name[-1] == ":": |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1151 long_name += "=" |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1152 long_options.append(long_name) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1153 optlist = getopt.getopt(sys.argv[1:], short_options, long_options)[0] |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1154 svc_args = [] |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1155 for (opt, arg) in optlist: |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1156 if opt in ("-C", "-l"): |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1157 # make sure file name is absolute |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1158 svc_args.extend((opt, os.path.abspath(arg))) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1159 elif opt in ("--config", "--logfile"): |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1160 # ditto, for long options |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1161 svc_args.append("=".join(opt, os.path.abspath(arg))) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1162 elif opt != "-c": |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1163 svc_args.extend(opt) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1164 RoundupService._exe_args_ = " ".join(svc_args) |
|
a212699c21f2
windows service part rewritten to take in account command line options;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2838
diff
changeset
|
1165 # pass the control to serviceutil |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
1166 win32serviceutil.HandleCommandLine(RoundupService, |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1167 argv=sys.argv[:1] + args) |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
1168 return |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
1169 |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1170 # add tracker names from command line. |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1171 # this is done early to let '--save-config' handle the trackers. |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1172 if args: |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1173 for arg in args: |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1174 try: |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1175 name, home = arg.split('=') |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1176 except ValueError: |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
1177 raise ValueError(_("Instances must be name=home")) |
|
2772
52460ff89e10
fix: tracker definitions from the command line...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2771
diff
changeset
|
1178 config.add_option(TrackerHomeOption(config, "trackers", name)) |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1179 config["TRACKERS_" + name.upper()] = home |
|
2308
e21c3a447a62
translate "cannot fork" error message
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2287
diff
changeset
|
1180 |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1181 # handle remaining options |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1182 if optlist: |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1183 for (opt, _arg) in optlist: |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1184 if opt in ("-h", "--help"): |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1185 usage() |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1186 elif opt in ("-v", "--version"): |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1187 print('%s (python %s)' % (roundup_version, |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1188 sys.version.split()[0])) |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1189 elif opt in ("-S", "--save-config"): |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1190 config.save() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1191 print(_("Configuration saved to %s") % config.filepath) |
|
2771
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1192 # any of the above options prevent server from running |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1193 return |
|
d385f6c1d4ed
let config handle command line options.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2676
diff
changeset
|
1194 |
|
2774
22c381f3f448
respect function argument 'port' in run()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2773
diff
changeset
|
1195 # port number in function arguments overrides config and command line |
|
22c381f3f448
respect function argument 'port' in run()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2773
diff
changeset
|
1196 if port is not undefined: |
|
22c381f3f448
respect function argument 'port' in run()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2773
diff
changeset
|
1197 config.PORT = port |
|
22c381f3f448
respect function argument 'port' in run()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2773
diff
changeset
|
1198 |
|
3112
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1199 if config["LOGFILE"]: |
|
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1200 config["LOGFILE"] = os.path.abspath(config["LOGFILE"]) |
|
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1201 # switch logging from stderr/stdout to logfile |
|
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1202 config.set_logging() |
|
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1203 if config["PIDFILE"]: |
|
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1204 config["PIDFILE"] = os.path.abspath(config["PIDFILE"]) |
|
8297
03513f5066f3
fix: issue2551238 - roundup-server should exit with error ...
John Rouillard <rouilj@ieee.org>
parents:
8269
diff
changeset
|
1205 if not (config["LOGFILE"] or config["LOGHTTPVIALOGGER"]): |
|
03513f5066f3
fix: issue2551238 - roundup-server should exit with error ...
John Rouillard <rouilj@ieee.org>
parents:
8269
diff
changeset
|
1206 print(_("If you specify a PID file you must use -l or -L.")) |
|
03513f5066f3
fix: issue2551238 - roundup-server should exit with error ...
John Rouillard <rouilj@ieee.org>
parents:
8269
diff
changeset
|
1207 sys.exit(1) |
|
3112
a7657b3cd22a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3022
diff
changeset
|
1208 |
|
2632
9c55f2bc5961
roundup-server now has a configuration file (-C option)
Richard Jones <richard@users.sourceforge.net>
parents:
2592
diff
changeset
|
1209 # fork the server from our parent if a pidfile is specified |
|
2838
91b2d50f0b1a
eliminate as many pychecker warnings as possible:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2835
diff
changeset
|
1210 if config["PIDFILE"]: |
|
1843
d31a25046136
support setgid and running on port < 1024 (patch [SF#777528])
Richard Jones <richard@users.sourceforge.net>
parents:
1831
diff
changeset
|
1211 if not hasattr(os, 'fork'): |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1212 print(_("Sorry, you can't run the server as a daemon" |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1213 " on this Operating System")) |
|
1409
8dc60d87ab42
Fixed a backlog of bug reports, and worked on python 2.3 compatibility:
Richard Jones <richard@users.sourceforge.net>
parents:
1367
diff
changeset
|
1214 sys.exit(0) |
|
1632
eb4d04a9d647
added Windows Service mode for roundup-server...
Richard Jones <richard@users.sourceforge.net>
parents:
1611
diff
changeset
|
1215 else: |
|
3787
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1216 if config['NODAEMON']: |
|
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1217 writepidfile(config["PIDFILE"]) |
|
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1218 else: |
|
f623bdafe44b
expand tabs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3784
diff
changeset
|
1219 daemonize(config["PIDFILE"]) |
|
1953
800b226bba58
fix roundup win service
Richard Jones <richard@users.sourceforge.net>
parents:
1939
diff
changeset
|
1220 |
|
2835
9a6b451b1ba6
implement threading server;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2774
diff
changeset
|
1221 # create the server |
|
5712
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
1222 try: |
|
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
1223 httpd = config.get_server() |
|
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
1224 except Exception as e: |
|
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
1225 # capture all exceptions and pretty print them |
|
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
1226 print(e) |
|
320a1692a473
Fix exception handling code for case where port already in use.
John Rouillard <rouilj@ieee.org>
parents:
5667
diff
changeset
|
1227 sys.exit(2) |
|
1047
1890c611de08
add daemonification
Richard Jones <richard@users.sourceforge.net>
parents:
992
diff
changeset
|
1228 |
|
1868
1545a36ae887
Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1867
diff
changeset
|
1229 if success_message: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1230 print(success_message) |
|
1868
1545a36ae887
Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1867
diff
changeset
|
1231 else: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1232 print(_('Roundup server started on %(HOST)s:%(PORT)s') |
|
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1233 % config) |
|
1868
1545a36ae887
Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1867
diff
changeset
|
1234 |
|
1311
7c9fda4a6692
handle KeyboardInterrupt nicely
Richard Jones <richard@users.sourceforge.net>
parents:
1299
diff
changeset
|
1235 try: |
|
7c9fda4a6692
handle KeyboardInterrupt nicely
Richard Jones <richard@users.sourceforge.net>
parents:
1299
diff
changeset
|
1236 httpd.serve_forever() |
|
7c9fda4a6692
handle KeyboardInterrupt nicely
Richard Jones <richard@users.sourceforge.net>
parents:
1299
diff
changeset
|
1237 except KeyboardInterrupt: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5356
diff
changeset
|
1238 print('Keyboard Interrupt: exiting') |
|
7655
91fad2d2c4b3
fix: exit quickly on keyboard interrupt
John Rouillard <rouilj@ieee.org>
parents:
7574
diff
changeset
|
1239 try: |
|
91fad2d2c4b3
fix: exit quickly on keyboard interrupt
John Rouillard <rouilj@ieee.org>
parents:
7574
diff
changeset
|
1240 httpd.socket.shutdown(socket.SHUT_RDWR) |
|
91fad2d2c4b3
fix: exit quickly on keyboard interrupt
John Rouillard <rouilj@ieee.org>
parents:
7574
diff
changeset
|
1241 except OSError: |
|
91fad2d2c4b3
fix: exit quickly on keyboard interrupt
John Rouillard <rouilj@ieee.org>
parents:
7574
diff
changeset
|
1242 # forced shutdown can throw an error. |
|
91fad2d2c4b3
fix: exit quickly on keyboard interrupt
John Rouillard <rouilj@ieee.org>
parents:
7574
diff
changeset
|
1243 # we don't care as we are going away. |
|
91fad2d2c4b3
fix: exit quickly on keyboard interrupt
John Rouillard <rouilj@ieee.org>
parents:
7574
diff
changeset
|
1244 pass |
|
6718
06d750efbc50
Fix ResourceWarning error due to unclosed socket on exit from roundup_server.
John Rouillard <rouilj@ieee.org>
parents:
6646
diff
changeset
|
1245 httpd.socket.close() |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1246 |
|
6040
d5c51d1ef09c
flake8 whitespace format fixes.
John Rouillard <rouilj@ieee.org>
parents:
5957
diff
changeset
|
1247 |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1248 if __name__ == '__main__': |
|
593
2256f81293c1
Conversion to generated script stubs
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
592
diff
changeset
|
1249 run() |
|
592
326388b8604a
Moved scripts from top-level dir to roundup.scripts subpackage
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1250 |
|
3883
679118b572d5
add SSL to roundup-server via pyopenssl
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3880
diff
changeset
|
1251 # vim: sts=4 sw=4 et si |
