a ze@sdZddlZdadaddZGdddZGdddZdd d Zejdfd d Z d dZ ddZ ddZ ddZ ddZddZejZejZejZejZejZejZdZdZeedrejZdS)z8Mock socket module used by the smtpd and smtplib tests. NcCs|adSN) _reply_data)linerD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/mock_socket.py reply_withsrc@s*eZdZdZddZd ddZddZd S) MockFilez8Mock file object returned by MockSocket.makefile(). cCs ||_dSr)lines)selfr rrr__init__szMockFile.__init__cCs>|jdd}|dkr:|jd||d|d|}|S)Nr )r popinsert)r limitresultrrrreadlines  zMockFile.readlinecCsdSrrr rrrcloseszMockFile.closeN)r )__name__ __module__ __qualname____doc__r rrrrrrrs rc@seZdZdZd+ddZddZd,ddZd d Zd d Zd dZ ddZ d-ddZ ddZ ddZ ddZddZddZd.dd Zd/d!d"Zd0d#d$Zd%d&Zd'd(Zd)d*ZdS)1 MockSocketz8Mock socket object used by smtpd and smtplib tests. NcCs6||_g|_g|_tr&|jtdad|_d|_dSr)familyoutputr rappendconntimeout)r rrrrr &s zMockSocket.__init__cCs|j|dSr)r r)r rrrr queue_recv1szMockSocket.queue_recvcCs|jdd}|S)Nrr )r r)r bufsizeflagsdatarrrrecv4szMockSocket.recvcCsdSNrrrrrrfileno8szMockSocket.filenocCs|durt|_n||_dSr)_defaulttimeoutr)r rrrr settimeout;szMockSocket.settimeoutcCs|jSrrrrrr gettimeoutAszMockSocket.gettimeoutcCsdSrr)r leveloptnamevaluerrr setsockoptDszMockSocket.setsockoptcCsdSr%r)r r+r,buflenrrr getsockoptGszMockSocket.getsockoptcCsdSrr)r addressrrrbindJszMockSocket.bindcCst|_|jdfS)Nc)rrrrrracceptMszMockSocket.acceptcCsdS)N)z0.0.0.0rrrrrr getsocknameQszMockSocket.getsocknamecCsdSrr)r flagrrr setblockingTszMockSocket.setblockingcCsdSrr)r backlogrrrlistenWszMockSocket.listenrr cCst|j}|Sr)rr )r moder!handlerrrmakefileZs zMockSocket.makefilecCs||_|j|t|SrZlastrrlenr r#r"rrrsendall^s zMockSocket.sendallcCs||_|j|t|Srr>r@rrrsendcs zMockSocket.sendcCsdS)N)z peer-addressz peer-portrrrrr getpeernamehszMockSocket.getpeernamecCsdSrrrrrrrkszMockSocket.closecCsdSrr)r hostrrrconnectnszMockSocket.connect)N)N)N)r:r )N)N)rrrrr r r$r&r(r*r.r0r2r4r5r7r9r=rArBrCrrErrrrr#s(      rcCst|Sr)r)rtypeprotorrrsocketrsrHcCsLzt|d}Wnty&tYn0t}|tjur>t}|||S)N)int ValueErrorerrorr socket_module_GLOBAL_DEFAULT_TIMEOUTgetdefaulttimeoutr()r1rsource_addressZint_portmsrrrcreate_connectionus    rRcCs|adSrr'r)rrrsetdefaulttimeoutsrTcCstSrrSrrrrrOsrOcCsdSNrrrrrgetfqdnsrWcCsdSrrrrrr gethostnamesrXcCsdSrUr)namerrr gethostbynamesrZcOstj|i|Sr)rM getaddrinfo)argskwrrrr[sr[AF_UNIX)NNN)rrHrMr'rrrrrNrRrTrOrWrXrZr[gaierrorrLAF_INETAF_INET6 SOCK_STREAM SOL_SOCKET SO_REUSEADDRhasattrr^rrrrs4O