82 |
82 |
83 # Configuration file location |
83 # Configuration file location |
84 hgweb_config = r'c:\your\directory\wsgi.config' |
84 hgweb_config = r'c:\your\directory\wsgi.config' |
85 |
85 |
86 # Global settings for IIS path translation |
86 # Global settings for IIS path translation |
87 path_strip = 0 # Strip this many path elements off (when using url rewrite) |
87 path_strip = 0 # Strip this many path elements off (when using url rewrite) |
88 path_prefix = 1 # This many path elements are prefixes (depends on the |
88 path_prefix = 1 # This many path elements are prefixes (depends on the |
89 # virtual path of the IIS application). |
89 # virtual path of the IIS application). |
90 |
90 |
91 import sys |
91 import sys |
92 |
92 |
93 # Adjust python path if this is not a system-wide install |
93 # Adjust python path if this is not a system-wide install |
94 #sys.path.insert(0, r'C:\your\custom\hg\build\lib.win32-2.7') |
94 # sys.path.insert(0, r'C:\your\custom\hg\build\lib.win32-2.7') |
95 |
95 |
96 # Enable tracing. Run 'python -m win32traceutil' to debug |
96 # Enable tracing. Run 'python -m win32traceutil' to debug |
97 if getattr(sys, 'isapidllhandle', None) is not None: |
97 if getattr(sys, 'isapidllhandle', None) is not None: |
98 import win32traceutil |
98 import win32traceutil |
99 win32traceutil.SetupForPrint # silence unused import warning |
99 |
|
100 win32traceutil.SetupForPrint # silence unused import warning |
100 |
101 |
101 import isapi_wsgi |
102 import isapi_wsgi |
102 from mercurial.hgweb.hgwebdir_mod import hgwebdir |
103 from mercurial.hgweb.hgwebdir_mod import hgwebdir |
103 |
104 |
104 # Example tweak: Replace isapi_wsgi's handler to provide better error message |
105 # Example tweak: Replace isapi_wsgi's handler to provide better error message |
105 # Other stuff could also be done here, like logging errors etc. |
106 # Other stuff could also be done here, like logging errors etc. |
106 class WsgiHandler(isapi_wsgi.IsapiWsgiHandler): |
107 class WsgiHandler(isapi_wsgi.IsapiWsgiHandler): |
107 error_status = '500 Internal Server Error' # less silly error message |
108 error_status = '500 Internal Server Error' # less silly error message |
|
109 |
108 |
110 |
109 isapi_wsgi.IsapiWsgiHandler = WsgiHandler |
111 isapi_wsgi.IsapiWsgiHandler = WsgiHandler |
110 |
112 |
111 # Only create the hgwebdir instance once |
113 # Only create the hgwebdir instance once |
112 application = hgwebdir(hgweb_config) |
114 application = hgwebdir(hgweb_config) |
|
115 |
113 |
116 |
114 def handler(environ, start_response): |
117 def handler(environ, start_response): |
115 |
118 |
116 # Translate IIS's weird URLs |
119 # Translate IIS's weird URLs |
117 url = environ['SCRIPT_NAME'] + environ['PATH_INFO'] |
120 url = environ['SCRIPT_NAME'] + environ['PATH_INFO'] |
123 environ['SCRIPT_NAME'] = script_name |
126 environ['SCRIPT_NAME'] = script_name |
124 environ['PATH_INFO'] = path_info |
127 environ['PATH_INFO'] = path_info |
125 |
128 |
126 return application(environ, start_response) |
129 return application(environ, start_response) |
127 |
130 |
|
131 |
128 def __ExtensionFactory__(): |
132 def __ExtensionFactory__(): |
129 return isapi_wsgi.ISAPISimpleHandler(handler) |
133 return isapi_wsgi.ISAPISimpleHandler(handler) |
130 |
134 |
131 if __name__=='__main__': |
135 |
|
136 if __name__ == '__main__': |
132 from isapi.install import ISAPIParameters, HandleCommandLine |
137 from isapi.install import ISAPIParameters, HandleCommandLine |
|
138 |
133 params = ISAPIParameters() |
139 params = ISAPIParameters() |
134 HandleCommandLine(params) |
140 HandleCommandLine(params) |