Format: application/x-python-code
⬇ Download File (4.6 KB)
   1  o
   2  
   3  ��hq�@sHddlZddlZddlZddlmZddlmZeed�r!ddlZddl	Z	ddl
   4  Z
   5  ddlZddlZddl
   6  Z
   7  ddlmZGdd�de	j�Zdd	�ZGd
   8  d�de�Zdd
   9  �Zdd�Zdd�Zdd�ZdeiZedkr�ddlTeed�Zeddd�gZedejeded�Z e ge_!ddl"m#Z#e#d�Z$e$j%ddd d!d"�e&ee$ed#�dSdS)$�N)�isapicon)�SimpleExtensionZisapidllhandle)�InternalReloadExceptionc@s$eZdZdd�Zdd�Zdd�ZdS)�ReloadWatcherThreadcCs`d|_t|_|j�d�s|j�d�r|jdd�|_t�tj�|j�dt	j
  10  �|_tj
  11  �|�dS)NF�c�o�����)�change_detected�__file__�filename�endswith�	win32fileZFindFirstChangeNotification�os�path�dirname�win32conZFILE_NOTIFY_CHANGE_LAST_WRITE�handle�	threading�Thread�__init__��self�r�Hc:\Users\shubh\Videos\agent\nova\Lib\site-packages\isapi/samples/test.pyrs�zReloadWatcherThread.__init__c
  12  Cs�t�|j�tj}	zt�|jtj�}t�	|j�Wntj
  13  y5}z|jtjkr*�WYd}~dSd}~wwt�|j�tj}||krLt
  14  d�d|_|}q
  15  )N�z+Detected file change - flagging for reload.T)r�statr�ST_MTIME�
  16  win32event�WaitForSingleObjectr�INFINITEr
  17  ZFindNextChangeNotification�error�winerrorZERROR_INVALID_HANDLE�printr	)rZ	last_time�rc�detailsZ	this_timerrr�run)s"���zReloadWatcherThread.runcCst�|j�dS�N)r
  18  ZFindCloseChangeNotificationrrrrr�stop:szReloadWatcherThread.stopN)�__name__�
  19  __module__�__qualname__rr%r'rrrrrsrcCstd�|��dS)NzTransmit complete!)r"�close)�ecbZhFileZcbIOZerrCoderrr�TransmitFileCallback>sr-c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�	ExtensionzPython test ExtensioncCst�|_|j��dSr&)r�reload_watcher�startrrrrrHszExtension.__init__cCs�|jjr
  20  td�t�|�d��d�rJtjtjB}t	�
  21  ttjddtj
  22  |d�}tjtjBtjB}z|�t|t|�ddddd|�	WtjS|���|�ddd�td|d�td	|�d
  23  �|d�td|d�|��tjS)NzDoing reloadZUNICODE_URLztest.pyrz200 OKzContent-Type: text/html
  24  
  25  z<HTML><BODY>)�filezThe root of this site is at�/z</BODY></HTML>)r/r	r"rZGetServerVariablerrZFILE_FLAG_SEQUENTIAL_SCAN�FILE_FLAG_OVERLAPPEDr
  26  �
  27  CreateFiler
  28  �GENERIC_READ�
  29  OPEN_EXISTINGrZHSE_IO_ASYNCZHSE_IO_DISCONNECT_AFTER_SENDZHSE_IO_SEND_HEADERS�TransmitFiler-�int�CloseZSendResponseHeadersZMapURLToPathr+ZHSE_STATUS_SUCCESS)rr,Z
  30  file_flagsZhfile�flagsrrr�HttpExtensionProcLsV
  31  ��
  32  �����zExtension.HttpExtensionProccCs|j��dSr&)r/r')r�statusrrr�TerminateExtension�szExtension.TerminateExtensionN)r(r)r*�__doc__rr;r=rrrrr.Es
  33  6r.cCst�Sr&)r.rrrr�__ExtensionFactory__�sr?cCs|jr	|j|_dSdSr&)�description�Description��params�optionsrrr�PreInstallDirectory�s�rEcCst�td�td�dS)NzThe sample has been installed.z"Point your browser to /PyISAPITest�r"rBrrr�PostInstall�srGcCstd�dS)zQuery the status of somethingzEverything seems to be fine!NrF)rD�log�argrrr�status_handler�srJr<�__main__)�*)rGrL)r.�FlagsZPyISAPITest�replace)�NamerAZ
  34  ScriptMapsZScriptMapUpdateZ
  35  PreInstall)�OptionParser�z
  36  --description�storez3custom description to use for the virtual directory)�action�help)Z
  37  opt_parser�custom_arg_handlers)'rr�sysZisapirZisapi.simpler�hasattrZwin32traceutilrrrr
  38  r!rrrr-r.r?rErGrJrUr(Z
  39  isapi.installZISAPIParametersrCZScriptMapParams�smZVirtualDirParametersr>ZvdZVirtualDirs�optparserP�parser�
  40  add_optionZHandleCommandLinerrrr�<module>sZ
  41  "B
  42  ��
  43  ��