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