MobileBlur

Hex Artifact Content
Login

Artifact bfc5478b7689825f452563ee3142500dd4a52db2:


0000: 22 22 22 0a 77 65 62 32 70 79 20 68 61 6e 64 6c  """.web2py handl
0010: 65 72 20 66 6f 72 20 69 73 61 70 69 2d 77 73 67  er for isapi-wsg
0020: 69 20 66 6f 72 20 49 49 53 2e 20 52 65 71 75 69  i for IIS. Requi
0030: 72 65 73 3a 0a 68 74 74 70 3a 2f 2f 63 6f 64 65  res:.http://code
0040: 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 70 2f 69 73  .google.com/p/is
0050: 61 70 69 2d 77 73 67 69 2f 0a 22 22 22 0a 23 20  api-wsgi/.""".# 
0060: 54 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 74 20  The entry point 
0070: 66 6f 72 20 74 68 65 20 49 53 41 50 49 20 65 78  for the ISAPI ex
0080: 74 65 6e 73 69 6f 6e 2e 0a 64 65 66 20 5f 5f 45  tension..def __E
0090: 78 74 65 6e 73 69 6f 6e 46 61 63 74 6f 72 79 5f  xtensionFactory_
00a0: 5f 28 29 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20  _():.    import 
00b0: 6f 73 0a 20 20 20 20 69 6d 70 6f 72 74 20 73 79  os.    import sy
00c0: 73 0a 20 20 20 20 70 61 74 68 20 3d 20 6f 73 2e  s.    path = os.
00d0: 70 61 74 68 2e 64 69 72 6e 61 6d 65 28 6f 73 2e  path.dirname(os.
00e0: 70 61 74 68 2e 61 62 73 70 61 74 68 28 5f 5f 66  path.abspath(__f
00f0: 69 6c 65 5f 5f 29 29 0a 20 20 20 20 6f 73 2e 63  ile__)).    os.c
0100: 68 64 69 72 28 70 61 74 68 29 0a 20 20 20 20 73  hdir(path).    s
0110: 79 73 2e 70 61 74 68 20 3d 20 5b 70 61 74 68 5d  ys.path = [path]
0120: 2b 5b 70 20 66 6f 72 20 70 20 69 6e 20 73 79 73  +[p for p in sys
0130: 2e 70 61 74 68 20 69 66 20 6e 6f 74 20 70 3d 3d  .path if not p==
0140: 70 61 74 68 5d 0a 20 20 20 20 69 6d 70 6f 72 74  path].    import
0150: 20 67 6c 75 6f 6e 2e 6d 61 69 6e 0a 20 20 20 20   gluon.main.    
0160: 69 6d 70 6f 72 74 20 69 73 61 70 69 5f 77 73 67  import isapi_wsg
0170: 69 0a 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f  i.    applicatio
0180: 6e 3d 67 6c 75 6f 6e 2e 6d 61 69 6e 2e 77 73 67  n=gluon.main.wsg
0190: 69 62 61 73 65 0a 20 20 20 20 72 65 74 75 72 6e  ibase.    return
01a0: 20 69 73 61 70 69 5f 77 73 67 69 2e 49 53 41 50   isapi_wsgi.ISAP
01b0: 49 54 68 72 65 61 64 50 6f 6f 6c 48 61 6e 64 6c  IThreadPoolHandl
01c0: 65 72 28 61 70 70 6c 69 63 61 74 69 6f 6e 29 0a  er(application).
01d0: 0a 23 20 49 53 41 50 49 20 69 6e 73 74 61 6c 6c  .# ISAPI install
01e0: 61 74 69 6f 6e 3a 0a 69 66 20 5f 5f 6e 61 6d 65  ation:.if __name
01f0: 5f 5f 3d 3d 27 5f 5f 6d 61 69 6e 5f 5f 27 3a 0a  __=='__main__':.
0200: 20 20 20 20 69 6d 70 6f 72 74 20 73 79 73 0a 20      import sys. 
0210: 20 20 20 69 66 20 6c 65 6e 28 73 79 73 2e 61 72     if len(sys.ar
0220: 67 76 29 3c 32 3a 0a 20 20 20 20 20 20 20 20 70  gv)<2:.        p
0230: 72 69 6e 74 20 22 55 53 41 47 45 3a 20 70 79 74  rint "USAGE: pyt
0240: 68 6f 6e 20 69 73 61 70 69 77 73 67 69 68 61 6e  hon isapiwsgihan
0250: 64 6c 65 72 2e 70 79 20 69 6e 73 74 61 6c 6c 20  dler.py install 
0260: 2d 2d 73 65 72 76 65 72 3d 53 69 74 65 6e 61 6d  --server=Sitenam
0270: 65 22 0a 20 20 20 20 20 20 20 20 73 79 73 2e 65  e".        sys.e
0280: 78 69 74 28 30 29 0a 20 20 20 20 66 72 6f 6d 20  xit(0).    from 
0290: 69 73 61 70 69 2e 69 6e 73 74 61 6c 6c 20 69 6d  isapi.install im
02a0: 70 6f 72 74 20 49 53 41 50 49 50 61 72 61 6d 65  port ISAPIParame
02b0: 74 65 72 73 0a 20 20 20 20 66 72 6f 6d 20 69 73  ters.    from is
02c0: 61 70 69 2e 69 6e 73 74 61 6c 6c 20 69 6d 70 6f  api.install impo
02d0: 72 74 20 53 63 72 69 70 74 4d 61 70 50 61 72 61  rt ScriptMapPara
02e0: 6d 73 0a 20 20 20 20 66 72 6f 6d 20 69 73 61 70  ms.    from isap
02f0: 69 2e 69 6e 73 74 61 6c 6c 20 69 6d 70 6f 72 74  i.install import
0300: 20 56 69 72 74 75 61 6c 44 69 72 50 61 72 61 6d   VirtualDirParam
0310: 65 74 65 72 73 0a 20 20 20 20 66 72 6f 6d 20 69  eters.    from i
0320: 73 61 70 69 2e 69 6e 73 74 61 6c 6c 20 69 6d 70  sapi.install imp
0330: 6f 72 74 20 48 61 6e 64 6c 65 43 6f 6d 6d 61 6e  ort HandleComman
0340: 64 4c 69 6e 65 0a 0a 20 20 20 20 70 61 72 61 6d  dLine..    param
0350: 73 20 3d 20 49 53 41 50 49 50 61 72 61 6d 65 74  s = ISAPIParamet
0360: 65 72 73 28 29 0a 20 20 20 20 73 6d 20 3d 20 5b  ers().    sm = [
0370: 20 53 63 72 69 70 74 4d 61 70 50 61 72 61 6d 73   ScriptMapParams
0380: 28 45 78 74 65 6e 73 69 6f 6e 3d 22 2a 22 2c 20  (Extension="*", 
0390: 46 6c 61 67 73 3d 30 29 20 5d 0a 20 20 20 20 76  Flags=0) ].    v
03a0: 64 20 3d 20 56 69 72 74 75 61 6c 44 69 72 50 61  d = VirtualDirPa
03b0: 72 61 6d 65 74 65 72 73 28 4e 61 6d 65 3d 22 61  rameters(Name="a
03c0: 70 70 6e 61 6d 65 22 2c 0a 20 20 20 20 20 20 20  ppname",.       
03d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03e0: 20 20 20 20 20 20 20 44 65 73 63 72 69 70 74 69         Descripti
03f0: 6f 6e 20 3d 20 22 57 65 62 32 70 79 20 69 6e 20  on = "Web2py in 
0400: 50 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20  Python",.       
0410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0420: 20 20 20 20 20 20 20 53 63 72 69 70 74 4d 61 70         ScriptMap
0430: 73 20 3d 20 73 6d 2c 0a 20 20 20 20 20 20 20 20  s = sm,.        
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0450: 20 20 20 20 20 20 53 63 72 69 70 74 4d 61 70 55        ScriptMapU
0460: 70 64 61 74 65 20 3d 20 22 72 65 70 6c 61 63 65  pdate = "replace
0470: 22 29 0a 20 20 20 20 70 61 72 61 6d 73 2e 56 69  ").    params.Vi
0480: 72 74 75 61 6c 44 69 72 73 20 3d 20 5b 76 64 5d  rtualDirs = [vd]
0490: 0a 20 20 20 20 48 61 6e 64 6c 65 43 6f 6d 6d 61  .    HandleComma
04a0: 6e 64 4c 69 6e 65 28 70 61 72 61 6d 73 29 0a 0a  ndLine(params)..