Mercurial > hg
annotate contrib/win32/hgwebdir_wsgi.py @ 37518:092eff6833a7
lfs: infer the blob store URL from paths.default
If `lfs.url` is specified, it takes precedence. However, now that we support
serving blobs via hgweb, we shouldn't *require* this setting. Less
configuration is better (things will work out of the box once this is sorted
out), and git has similar functionality.
This is not a complete solution- it isn't able to infer the blob store from an
explicitly supplied path, and it should consider `paths.default-push` for push.
The pull solution for that is a bit hacky, and this alone is an improvement for
the vast majority of cases.
Even though there are only a handful of references to the saved remote store,
the location of them makes things complicated.
1) downloading files on demand in the revlog flag processor
2) copying to readonlyvfs with bundlerepo
3) downloading in the file prefetch hook
4) the canupload()/skipdownload() checks
5) uploading blobs
Since revlog doesn't have a repo or ui reference, we can't avoid creating a
remote store when the extension is loaded. While the long term goal is to make
sure the prefetch hook is invoked early for every command for efficiency, this
handling in the flag processor is needed as a last ditch fetch.
In order to support the clone command, the remote store needs to be created
later than when the extension loads, since `paths.default` isn't set until just
before the files are checked out. Therefore, this patch changes the prefetch
hook to ignore the saved reference, and build a new one.
The canupload()/skipdownload() checks simply check if the stored instance is a
`_nullremote`. Since this can only be set via `lfs.url` (which is reflected in
the saved reference), checking only the instance created when the extension
loaded is fine.
The blob uploading function is called from several places:
1) a prepush hook
2) when writing a new bundle
3) from infinitepush
The prepush hook gets an exchange.pushop, so it has a path to where the push is
going. The bundle writer and infinitepush don't. Further, bundle creation for
things like strip and amend are causing blobs to be uploaded. This seems wrong,
but I don't want to side track this sorting that out, so punt on trying to
handle explicit push paths or `paths.default-push`.
I also think that sending blobs to a remote store when pushing to a local repo
is wrong. This functionality predates the usercache, so perhaps that's the
reason for it. I've got some patches floating around to stop sending blobs
remotely in this case, and instead write directly to the other repo's blob
store. But the tests for corruption handling weren't happy with this change,
and I don't have time to rewrite them. So exclude filesystem based paths from
this for now.
I don't think there's much of a chance to implement `paths.remote:lfsurl` style
configs, given how early these are resolved vs how late the remote store is
created. But git has it, so I threw a TODO in there, in case anyone has ideas.
I have no idea why this is now doing http auth twice when it wasn't before. I
don't think the original blobstore's url is ever being used in these cases.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 07 Apr 2018 22:22:20 -0400 |
parents | aa1d56003872 |
children | d22198b4b3dd |
rev | line source |
---|---|
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
1 # An example WSGI script for IIS/isapi-wsgi to export multiple hgweb repos |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
2 # Copyright 2010-2016 Sune Foldager <cyano@me.com> |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
3 # |
10578
36715cd6ee3d
win32/hgwebdir_wsgi: clarify copyright license
Martin Geisler <mg@lazybytes.net>
parents:
10572
diff
changeset
|
4 # This software may be used and distributed according to the terms of the |
36715cd6ee3d
win32/hgwebdir_wsgi: clarify copyright license
Martin Geisler <mg@lazybytes.net>
parents:
10572
diff
changeset
|
5 # GNU General Public License version 2 or any later version. |
36715cd6ee3d
win32/hgwebdir_wsgi: clarify copyright license
Martin Geisler <mg@lazybytes.net>
parents:
10572
diff
changeset
|
6 # |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
7 # Requirements: |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
8 # - Python 2.7, preferably 64 bit |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
9 # - PyWin32 for Python 2.7 (32 or 64 bit) |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
10 # - Mercurial installed from source (python setup.py install) or download the |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
11 # python module installer from https://www.mercurial-scm.org/wiki/Download |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
12 # - IIS 7 or newer |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
13 # |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
14 # |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
15 # Installation and use: |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
16 # |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
17 # - Download or clone the isapi-wsgi source and run python setup.py install. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
18 # https://github.com/hexdump42/isapi-wsgi |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
19 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
20 # - Create a directory to hold the shim dll, config files etc. This can reside |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
21 # inside the standard IIS directory, C:\inetpub, or anywhere else. Copy this |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
22 # script there. |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
23 # |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
24 # - Run this script (i.e. python hgwebdir_wsgi.py) to get a shim dll. The |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
25 # shim is identical for all scripts, so you can just copy and rename one |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
26 # from an earlier run, if you wish. The shim needs to reside in the same |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
27 # directory as this script. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
28 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
29 # - Start IIS manager and create a new app pool: |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
30 # .NET CLR Version: No Managed Code |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
31 # Advanced Settings: Enable 32 Bit Applications, if using 32 bit Python. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
32 # You can adjust the identity and maximum worker processes if you wish. This |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
33 # setup works fine with multiple worker processes. |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
34 # |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
35 # - Create an IIS application where your hgwebdir is to be served from. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
36 # Assign it the app pool you just created and point its physical path to the |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
37 # directory you created. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
38 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
39 # - In the application, remove all handler mappings and setup a wildcard script |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
40 # handler mapping of type IsapiModule with the shim dll as its executable. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
41 # This file MUST reside in the same directory as the shim. The easiest way |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
42 # to do all this is to close IIS manager, place a web.config file in your |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
43 # directory and start IIS manager again. The file should contain: |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
44 # |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
45 # <?xml version="1.0" encoding="UTF-8"?> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
46 # <configuration> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
47 # <system.webServer> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
48 # <handlers accessPolicy="Read, Script"> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
49 # <clear /> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
50 # <add name="hgwebdir" path="*" verb="*" modules="IsapiModule" |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
51 # scriptProcessor="C:\your\directory\_hgwebdir_wsgi.dll" |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
52 # resourceType="Unspecified" requireAccess="None" |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
53 # preCondition="bitness64" /> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
54 # </handlers> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
55 # </system.webServer> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
56 # </configuration> |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
57 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
58 # Where "bitness64" should be replaced with "bitness32" for 32 bit Python. |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
59 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
60 # - Edit ISAPI And CGI Restrictions on the web server (global setting). Add a |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
61 # restriction pointing to your shim dll and allow it to run. |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
62 # |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
63 # - Create a configuration file in your directory and adjust the configuration |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
64 # variables below to match your needs. Example configuration: |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
65 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
66 # [web] |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
67 # style = gitweb |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
68 # push_ssl = false |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
69 # allow_push = * |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
70 # encoding = utf8 |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
71 # |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
72 # [server] |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
73 # validate = true |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
74 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
75 # [paths] |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
76 # repo1 = c:\your\directory\repo1 |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
77 # repo2 = c:\your\directory\repo2 |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
78 # |
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
79 # - Restart the web server and see if things are running. |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
80 # |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
81 |
29385
aa1d56003872
py3: shift from __future__ import absolute import to beginning (issue5269)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28521
diff
changeset
|
82 from __future__ import absolute_import |
aa1d56003872
py3: shift from __future__ import absolute import to beginning (issue5269)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28521
diff
changeset
|
83 |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
84 # Configuration file location |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
85 hgweb_config = r'c:\your\directory\wsgi.config' |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
86 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
87 # Global settings for IIS path translation |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
88 path_strip = 0 # Strip this many path elements off (when using url rewrite) |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
89 path_prefix = 1 # This many path elements are prefixes (depends on the |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
90 # virtual path of the IIS application). |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
91 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
92 import sys |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
93 |
10586
efd3b71fc293
win32/hgwebdir_wsgi: clarify documentation and clean up script a bit
Sune Foldager <cryo@cyanite.org>
parents:
10578
diff
changeset
|
94 # Adjust python path if this is not a system-wide install |
28187
d3da97e58d42
hgwebdir_wsgi: update script and expand help
Sune Foldager <sune.foldager@edlund.dk>
parents:
22198
diff
changeset
|
95 #sys.path.insert(0, r'C:\your\custom\hg\build\lib.win32-2.7') |
10586
efd3b71fc293
win32/hgwebdir_wsgi: clarify documentation and clean up script a bit
Sune Foldager <cryo@cyanite.org>
parents:
10578
diff
changeset
|
96 |
efd3b71fc293
win32/hgwebdir_wsgi: clarify documentation and clean up script a bit
Sune Foldager <cryo@cyanite.org>
parents:
10578
diff
changeset
|
97 # Enable tracing. Run 'python -m win32traceutil' to debug |
14974
a2aa75118837
win32/hgwebdir_wsgi: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
10586
diff
changeset
|
98 if getattr(sys, 'isapidllhandle', None) is not None: |
10586
efd3b71fc293
win32/hgwebdir_wsgi: clarify documentation and clean up script a bit
Sune Foldager <cryo@cyanite.org>
parents:
10578
diff
changeset
|
99 import win32traceutil |
22198
77142de48ae4
cleanup: make sure we always access members of imported modules
Mads Kiilerich <madski@unity3d.com>
parents:
17424
diff
changeset
|
100 win32traceutil.SetupForPrint # silence unused import warning |
10586
efd3b71fc293
win32/hgwebdir_wsgi: clarify documentation and clean up script a bit
Sune Foldager <cryo@cyanite.org>
parents:
10578
diff
changeset
|
101 |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
102 import isapi_wsgi |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
103 from mercurial.hgweb.hgwebdir_mod import hgwebdir |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
104 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
105 # Example tweak: Replace isapi_wsgi's handler to provide better error message |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
106 # Other stuff could also be done here, like logging errors etc. |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
107 class WsgiHandler(isapi_wsgi.IsapiWsgiHandler): |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
108 error_status = '500 Internal Server Error' # less silly error message |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
109 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
110 isapi_wsgi.IsapiWsgiHandler = WsgiHandler |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
111 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
112 # Only create the hgwebdir instance once |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
113 application = hgwebdir(hgweb_config) |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
114 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
115 def handler(environ, start_response): |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
116 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
117 # Translate IIS's weird URLs |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
118 url = environ['SCRIPT_NAME'] + environ['PATH_INFO'] |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
119 paths = url[1:].split('/')[path_strip:] |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
120 script_name = '/' + '/'.join(paths[:path_prefix]) |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
121 path_info = '/'.join(paths[path_prefix:]) |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
122 if path_info: |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
123 path_info = '/' + path_info |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
124 environ['SCRIPT_NAME'] = script_name |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
125 environ['PATH_INFO'] = path_info |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
126 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
127 return application(environ, start_response) |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
128 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
129 def __ExtensionFactory__(): |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
130 return isapi_wsgi.ISAPISimpleHandler(handler) |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
131 |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
132 if __name__=='__main__': |
22198
77142de48ae4
cleanup: make sure we always access members of imported modules
Mads Kiilerich <madski@unity3d.com>
parents:
17424
diff
changeset
|
133 from isapi.install import ISAPIParameters, HandleCommandLine |
10572
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
134 params = ISAPIParameters() |
704af22f4907
add wsgi script for Microsoft IIS with isapi-wsgi
Sune Foldager <cryo@cyanite.org>
parents:
diff
changeset
|
135 HandleCommandLine(params) |