aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDima Krasner <dima@dimakrasner.com>2015-09-24 20:38:25 +0300
committerSteve Bennett <steveb@workware.net.au>2016-02-01 10:47:13 +1000
commitb7dae50e44da0e637399d89fdedee25c41f28019 (patch)
treece039973911c0d56d51afef4bfea910e3385d142 /examples
parent25352b050457afb555f4970e04f3a6a47556448f (diff)
downloadjimtcl-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.client11
-rw-r--r--examples/ssl.server40
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