HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/usr/lib/python3/dist-packages/twisted/protocols/__pycache__/dict.cpython-38.pyc
U


W[*�@s�dZddlmZddlmZmZddlmZddlm	Z	dd�Z
dd	�Zd
d�Zdd
�Z
Gdd�d�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�dej�Zdd�Zdd�ZdS)zE
Dict client protocol implementation.

@author: Pavel Pergamenshchik
�)�basic)�defer�protocol)�log)�BytesIOcCs�|dkrdS|dd�dkr"d}nd}d}t|�}|dkrD|�d�|�d�}|dkrv|dkr�|�d�||��fSnf|dkr�|�d�}|dkr�d|fSnB|dkr�|dkr�||��fSd|fSn|d	kr�|dkr�||��fS||7}qDdS)
zQChew one dqstring or atom from beginning of line and return (param, remaningline)�)Nrr��"��\N� )r�read)�line�mode�res�io�a�r�8/usr/lib/python3/dist-packages/twisted/protocols/dict.py�
parseParams4





rcCstdd�|�S)zMunch a string into an 'atom'cSs|tttd�dddg�kS)N�!�"�'�\)�map�chr�range)�xrrr�<lambda>5rzmakeAtom.<locals>.<lambda>)�filter�rrrr�makeAtom2sr!cCsNtd�dddg}g}|D]$}t|�|kr4|�d�|�|�qd�|�}|S)Nrrrrrr)r�ord�append�join)�sZ	mustquote�result�crrr�makeWord9s

r(cCsHt|�dkr|dkrdSt|�dkr@|dd�dkr@|dd�}|SdS)Nr�.rr
s..)�lenr rrr�	parseTextEs
r+c@seZdZdZdd�ZdS)�
DefinitionzA word definitioncCs||_||_||_||_dS�N)�name�db�dbdesc�text)�selfr.r/r0r1rrr�__init__QszDefinition.__init__N)�__name__�
__module__�__qualname__�__doc__r3rrrrr,Osr,c@seZdZdZdZdZdZdZdZdZ	dd�Z
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#d8d9�Z$d:d;�Z%d<d=�Z&d>d?�Z'dS)@�
DictClientzdict (RFC2229) clientNicCsd|_d|_dSr-)�datar&�r2rrrr3cszDictClient.__init__cCsd|_d|_dS)NZconn�command)�staterr:rrr�connectionMadehszDictClient.connectionMadecCs,t|�|jdkrtd��tj�||�dS)z3Throw up if the line is longer than 1022 charactersr
z(DictClient tried to send a too long lineN)r*�
MAX_LENGTH�
ValueErrorr�LineReceiver�sendLine�r2rrrrrAmszDictClient.sendLinecCs�z|�d�}Wntk
r$YdSX|jdkr6d}nNt|�dkrht�d|�|�d�|j��dSt	|dd��}|dd�}t
|d||jf|j�}||�dS)Nzutf-8r1�z-DictClient got invalid line from server -- %szInvalid line from server�zdictCode_%s_%s)
�decode�UnicodeErrorrr*r�msg�
protocolError�	transportZLoseConnection�int�getattrr<�dictCode_default)r2r�code�methodrrr�lineReceivedts


zDictClient.lineReceivedcCs&t�d|�|�d�|j��dS)zUnknown messagez3DictClient got unexpected message from server -- %szUnexpected server messageN)rrGrHrI�loseConnectionrBrrrrL�s
zDictClient.dictCode_defaultcCsdS)z*We are about to get kicked off, do nothingNrrBrrr�dictCode_221_ready�szDictClient.dictCode_221_readycCsd|_|��dS)zGreeting message�readyN)r<�
dictConnectedrBrrr�dictCode_220_conn�szDictClient.dictCode_220_conncCs|�d�|j��dS)Nz
Access denied�rHrIrPr:rrr�dictCode_530_conn�s
zDictClient.dictCode_530_conncCs|�d�|j��dS)NzServer temporarily unavailablerUr:rrr�dictCode_420_conn�s
zDictClient.dictCode_420_conncCs|�d�|j��dS)Nz(Server shutting down at operator requestrUr:rrr�dictCode_421_conn�s
zDictClient.dictCode_421_conncCsR|jdkstd��d|_d|_d|_dt|�d��t|�d��f}|�|�dS)zSend a dict DEFINE commandrRz4DictClient.sendDefine called when not in ready stateN�definezDEFINE %s %s�UTF-8)r<�AssertionErrorr&r9r!�encoder(rA)r2�database�wordr;rrr�
sendDefine�s zDictClient.sendDefinecCsR|jdkstd��d|_d|_d|_dt|�t|�t|�f}|�|�d��dS)zSend a dict MATCH commandrRz3DictClient.sendMatch called when not in ready stateN�matchzMATCH %s %s %srZ)r<r[r&r9r!rAr\)r2r]�strategyr^r;rrr�	sendMatch�szDictClient.sendMatchcCsd|_|�d�dS�zInvalid databaserRN�r�defineFailedrBrrr�dictCode_550_define�szDictClient.dictCode_550_definecCsd|_|�d�dSrc�r�matchFailedrBrrr�dictCode_550_match�szDictClient.dictCode_550_matchcCsd|_|�d�dS)zInvalid strategyrRNrgrBrrr�dictCode_551_match�szDictClient.dictCode_551_matchcCsd|_|�d�dS�zNo matchrRNrdrBrrr�dictCode_552_define�szDictClient.dictCode_552_definecCsd|_|�d�dSrkrgrBrrr�dictCode_552_match�szDictClient.dictCode_552_matchcCs
g|_dS)zn definitions retrievedN)r&rBrrr�dictCode_150_define�szDictClient.dictCode_150_definecCsld|_t|�\}}t|�\}}t|�\}}|r6|r6|sL|�d�|j��n|j�t|||g��g|_dS)zDefinition text followsr1zInvalid server responseN)	rrrHrIrPr&r#r,r9)r2rr^r/r0rrr�dictCode_151_define�s
zDictClient.dictCode_151_definecCsd|_g|_g|_dS)zn matches found, text followsr1N)rr&r9rBrrr�dictCode_152_match�szDictClient.dictCode_152_matchcCs<t|�}|dkr,d|_|j|jd_d|_n|j�|�dS)z"A line of definition text receivedNr;���)r+rr9r&r1r#)r2rrrrr�dictCode_text_define�szDictClient.dictCode_text_definecCsDdd�}t|�}|dkr4d|_t||j�|_d|_n|j�|�dS)zOne line of match text receivedcSs t|�\}}t|�\}}||fSr-)r)r%Zp1�tZp2rrr�lsz)DictClient.dictCode_text_match.<locals>.lNr;)r+rrr9r&r#)r2rrtrrrr�dictCode_text_match�szDictClient.dictCode_text_matchcCs |j}d|_d|_|�|�dS��okNrR)r&r<�
defineDone�r2rrsrrr�dictCode_250_define
szDictClient.dictCode_250_definecCs |j}d|_d|_|�|�dSrv)r&r<�	matchDoneryrrr�dictCode_250_matchszDictClient.dictCode_250_matchcCsdS)z5override to catch unexpected dict protocol conditionsNr�r2�reasonrrrrHszDictClient.protocolErrorcCsdS)zCoverride to be notified when the server is ready to accept commandsNrr:rrrrS"szDictClient.dictConnectedcCsdS)z8override to catch reasonable failure responses to DEFINENrr}rrrre'szDictClient.defineFailedcCsdS)z#override to catch successful DEFINENr�r2r&rrrrx,szDictClient.defineDonecCsdS)z6override to catch resonable failure responses to MATCHNrr}rrrrh1szDictClient.matchFailedcCsdS)z"override to catch successful MATCHNrrrrrr{6szDictClient.matchDone)(r4r5r6r7r9r>r<rr&�factoryr3r=rArOrLrQrTrVrWrXr_rbrfrirjrlrmrnrorprrrurzr|rHrSrerxrhr{rrrrr8YsJ
	r8c@seZdZdS)�InvalidResponseN)r4r5r6rrrrr�<sr�c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�
DictLookupzNUtility class for a single dict transaction. To be used with DictLookupFactorycCs(|jjs$|jj�t|��|j��dSr-)r��done�d�errbackr��
clientDoner}rrrrHDszDictLookup.protocolErrorcCs>|jjdkrt|j|jj�n|jjdkr:t|j|jj�dS)NrYr`)r��	queryTypeZapplyr_�paramrbr:rrrrSJszDictLookup.dictConnectedcCs&|jj�g�|j��|j��dSr-�r�r��callbackr�rIrPr}rrrreQs
zDictLookup.defineFailedcCs&|jj�|�|j��|j��dSr-r�rrrrrxWs
zDictLookup.defineDonecCs&|jj�g�|j��|j��dSr-r�r}rrrrh]s
zDictLookup.matchFailedcCs&|jj�|�|j��|j��dSr-r�rrrrr{cs
zDictLookup.matchDoneN)
r4r5r6r7rHrSrerxrhr{rrrrr�Asr�c@s@eZdZdZeZdZdd�Zdd�Zdd�Z	d	d
�Z
dd�ZdS)
�DictLookupFactoryz-Utility factory for a single dict transactionNcCs||_||_||_d|_dS)Nr)r�r�r�r�)r2r�r�r�rrrr3oszDictLookupFactory.__init__cCsd|_|`dS)zCalled by client when done.rN)r�r�r:rrrr�vszDictLookupFactory.clientDonecCs|j�|�dSr-)r�r��r2Z	connector�errorrrr�clientConnectionFailed|sz(DictLookupFactory.clientConnectionFailedcCs|js|j�|�dSr-)r�r�r�r�rrr�clientConnectionLost�sz&DictLookupFactory.clientConnectionLostcCs|��}||_|Sr-)rr�)r2Zaddr�prrr�
buildProtocol�szDictLookupFactory.buildProtocol)r4r5r6r7r�rr�r3r�r�r�r�rrrrr�jsr�cCs6t��}td||f|�}ddlm}|�|||�|S)z"Look up a word using a dict serverrYr��reactor�rZDeferredr��twisted.internetr�Z
connectTCP)�host�portr]r^r�r�r�rrrrY�s
rYcCs8t��}td|||f|�}ddlm}|�|||�|S)z Match a word using a dict serverr`rr�r�)r�r�r]rar^r�r�r�rrrr`�s
r`N)r7Ztwisted.protocolsrr�rrZtwisted.pythonrrrrr!r(r+r,r@r8�	Exceptionr�r�Z
ClientFactoryr�rYr`rrrr�<module>s "

d)"