diff options
author | Dima Krasner <dima@dimakrasner.com> | 2015-09-24 20:38:25 +0300 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2016-02-01 10:47:13 +1000 |
commit | b7dae50e44da0e637399d89fdedee25c41f28019 (patch) | |
tree | ce039973911c0d56d51afef4bfea910e3385d142 /examples | |
parent | 25352b050457afb555f4970e04f3a6a47556448f (diff) | |
download | jimtcl-b7dae50e44da0e637399d89fdedee25c41f28019.zip jimtcl-b7dae50e44da0e637399d89fdedee25c41f28019.tar.gz jimtcl-b7dae50e44da0e637399d89fdedee25c41f28019.tar.bz2 |
aio: add OpenSSL/LibreSSL bindings.
Example usage:
set s [socket stream.server 127.0.0.1:8443]
set c [[$s accept] ssl -server certificate.pem key.pem]
puts [$c gets]
Diffstat (limited to 'examples')
-rw-r--r-- | examples/ssl.client | 11 | ||||
-rw-r--r-- | examples/ssl.server | 40 |
2 files changed, 51 insertions, 0 deletions
diff --git a/examples/ssl.client b/examples/ssl.client new file mode 100644 index 0000000..f0699b4 --- /dev/null +++ b/examples/ssl.client @@ -0,0 +1,11 @@ +# Example of sending via a ssl encrypted, connected tcp socket + +load_ssl_certs /etc/ssl/certs +set s [[socket stream 127.0.0.1:20000] ssl] +$s verify + +foreach i [range 1 20] { + $s puts "1 << $i" + + puts [$s gets] +} diff --git a/examples/ssl.server b/examples/ssl.server new file mode 100644 index 0000000..cc162a2 --- /dev/null +++ b/examples/ssl.server @@ -0,0 +1,40 @@ +# Example of a ssl encrypted, tcp server which sends a response + +# Listen on port 20000. No host specified means 0.0.0.0 +set s [socket stream.server 20000] + +$s readable { + # Clean up children + os.wait -nohang 0 + set sock [[$s accept addr] ssl -server certificate.pem key.pem] + puts "Client address: $addr" + + # Make this server forking so we can accept multiple + # simultaneous connections + if {[os.fork] == 0} { + $s close + + $sock buffering line + + # Get the request (max 80 chars) - need the source address + while {[$sock gets buf] >= 0} { + set buf [string trim $buf] + puts -nonewline "read '$buf'" + + try { + set result "$buf = [expr $buf]" + } on error {msg} { + set result "Error: $buf => $msg" + } + + puts ", sending '$result'" + + # Send the result back to where it came from + $sock puts $result + } + } + + $sock close +} + +vwait done |