commit d909aa587d009047ba1bf0c8cc86a26b791cf90c
parent 5f2c8e45b03d594345aee3d1fb60339965f8e848
Author: Tomas Hlavaty <tom@logand.com>
Date: Sat, 1 Nov 2014 10:09:29 +0100
make-openssl-client and make-gnutls-client added
Diffstat:
M | net.lisp | | | 51 | +++++++++++++++++++++++++++++++++++++++++++++++++-- |
1 file changed, 49 insertions(+), 2 deletions(-)
diff --git a/net.lisp b/net.lisp
@@ -23,8 +23,10 @@
(defpackage :rw.net
(:use :cl)
(:export :curl
- :wget
- :download-rss))
+ :download-rss
+ :make-openssl-client
+ :make-gnutls-client
+ :wget))
(in-package :rw.net)
@@ -75,3 +77,48 @@
rss)))))
;;(download-rss "http://www.spiegel.de/international/index.rss")
+(defun make-openssl-client (host port &key starttls)
+ (rw.os:make-program :stream :stream "openssl"
+ `("s_client"
+ "-quiet"
+ "-no_ssl2" "-no_ssl3" "-no_tls1" "-no_tls1_1"
+ "-connect" ,(format nil "~a:~d" host port)
+ ,@ (ecase starttls
+ ((nil))
+ #+nil ;; TODO starttls
+ ((:smtp :pop3 :imap :ftp :xmpp)
+ `("-starttls" ,(string-downcase starttls)))))
+ nil))
+
+#+nil
+(rw.os:with-program-io (i o (make-openssl-client "wikipedia.org" 443))
+ (write-string "GET / HTTP/1.0" i)
+ (write-char #\return i)
+ (write-char #\linefeed i)
+ (write-char #\return i)
+ (write-char #\linefeed i)
+ (finish-output i)
+ (rw:till (rw:peek-reader (rw:char-reader o))))
+
+(defun make-gnutls-client (host port &key starttls) ;; TODO remove junk output
+ (rw.os:make-program :stream :stream "gnutls-cli"
+ `("--crlf"
+ "-p" ,(format nil "~d" port) ,host
+ ,@ (ecase starttls
+ ((nil))
+ #+nil ;; TODO starttls
+ ((:smtp :pop3 :imap :ftp #+nil :xmpp)
+ `("-starttls"
+ ,(format nil "-~(~a~)" starttls)))))
+ nil))
+
+;;- Simple Client Mode:
+#+nil
+(rw.os:with-program-io (i o (make-gnutls-client "wikipedia.org" 443))
+ (write-string "GET / HTTP/1.0" i)
+ (write-char #\return i)
+ (write-char #\linefeed i)
+ (write-char #\return i)
+ (write-char #\linefeed i)
+ (finish-output i)
+ (rw:till (rw:peek-reader (rw:char-reader o))))