Posted to tcl by jima at Thu Nov 19 13:42:24 GMT 2015view raw
- package require http
- package require -exact tls 1.6
- proc JIMA_TLS {args} {
- puts JIMA_TLS($args)
- }
- set ::caFile caFile
- set ::certFile certFile
- set ::keyFile keyFile
- http::register https 443 [
- list ::tls::socket -cafile {} -certfile {} -keyfile {} -require 0 -request 0 -ssl3 0 -ssl2 0 -tls1 1 -tls1.1 1 -tls1.2 1 -command JIMA_TLS
- ]
- # Procedure called whenever a new connection is made by a client.
- proc on_connect {newsock clientAddress clientPort} {
- # This is the place to add checks disallowing connections based
- # upon the hostname/ipaddress of the peer.
- fconfigure $newsock -blocking 0
- fileevent $newsock readable [list handleInput $newsock]
- }
- # Procedure called whenever input arrives on a connection.
- proc handleInput {f} {
- # Delete the handler if the input was exhausted.
- if {[eof $f]} {
- fileevent $f readable {}
- close $f
- return
- }
- # Read and handle the incoming information. Here we just log it to
- # stdout.
- set tok [http::geturl https://www.google.es]
- set data [http::data $tok]
- set code [http::code $tok]
- http::cleanup $tok
- puts $f $code
- close $f
- return
- }
- # Server
- ::tls::socket -server on_connect -cafile $::caFile -certfile $::certFile -keyfile $::keyFile -require 0 -request 0 -ssl3 0 -ssl2 0 -tls1 1 -tls1.1 1 -tls1.2 1 -command JIMA_TLS 8080
- vwait forever