|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /usr/share/doc/m2crypto-0.16/demo/ssl/ |
Upload File : |
#!/usr/bin/python
"""Another multi-threading SSL 'echo' server.
Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved."""
from M2Crypto import Rand, SSL, threading
import echod_lib
import thread
from socket import *
buffer='Ye Newe Threading Echo Servre\r\n'
def echo_handler(sslctx, sock, addr):
sslconn = SSL.Connection(sslctx, sock)
sslconn.setup_addr(addr)
sslconn.setup_ssl()
sslconn.set_accept_state()
sslconn.accept_ssl()
sslconn.write(buffer)
while 1:
try:
buf = sslconn.read()
if not buf:
break
sslconn.write(buf)
except SSL.SSLError, what:
if str(what) == 'unexpected eof':
break
else:
raise
except:
break
# Threading servers need this.
sslconn.set_shutdown(SSL.SSL_RECEIVED_SHUTDOWN|SSL.SSL_SENT_SHUTDOWN)
sslconn.close()
if __name__=='__main__':
threading.init()
Rand.load_file('../randpool.dat', -1)
ctx=echod_lib.init_context('sslv23', 'server.pem', 'ca.pem',
SSL.verify_peer | SSL.verify_fail_if_no_peer_cert)
ctx.set_tmp_dh('dh1024.pem')
sock = socket(AF_INET, SOCK_STREAM)
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
sock.bind(('', 9999))
sock.listen(5)
while 1:
conn, addr = sock.accept()
thread.start_new_thread(echo_handler, (ctx, conn, addr))
Rand.save_file('../randpool.dat')
threading.cleanup()