(use openssl srfi-1 posix srfi-12 ports environments) (define *theenv* (environment-copy (scheme-report-environment 5) #t)) (environment-extend! *theenv* 'uptime 100) (environment-extend! *theenv* 'get-uptime (lambda() (* 20 5))) (define *standard-output* (open-output-file* fileno/stdout)) (define *ctx* (ssl-make-client-context 'tls)) (ssl-load-certificate-chain! *ctx* "clientcert.pem") (ssl-load-verify-root-certificates! *ctx* "servercert.pem") (ssl-load-private-key! *ctx* "client.key") (ssl-set-verify! *ctx* #t) (define (parseit p) (with-input-from-port p (lambda () (let ((buffer (apply string-append (read-lines p 1)))) ;; XXX man kann nicht auf eof warten.. (display buffer (current-error-port)) (let ((sexpr (handle-exceptions exn (if ((condition-predicate 'syntax) exn) #t (abort exn)) (with-input-from-string buffer read)))) (if (not (list? sexpr)) #t sexpr)))))) (define (getcommands) (let-values (((inport outport) (ssl-connect "localhost" 4443 *ctx*))) (display "got tls!") (newline) (let ((ret (parseit inport))) (write (eval ret *theenv*) outport)) (close-output-port outport) (close-input-port inport))) (getcommands)