From: Sergey Matveev Date: Tue, 25 Oct 2022 14:51:53 +0000 (+0300) Subject: Tcl example client X-Git-Tag: v2.0.0~4 X-Git-Url: http://www.git.stargrave.org/?p=paster.git;a=commitdiff_plain;h=555cda2fa68b061949ba57637eb60b916fb60b3c Tcl example client --- diff --git a/contrib/paster.tcl b/contrib/paster.tcl new file mode 100755 index 0000000..7ef8f0b --- /dev/null +++ b/contrib/paster.tcl @@ -0,0 +1,41 @@ +#!/usr/bin/env tclsh + +set Host paster.example.com +set Port 2021 +set GnuTLS 1 + +set fn [lindex $argv 0] +set size 0 +if {($argc > 0) && [file exists $fn]} { + set ext [file extension $fn] + set fd [open $fn {RDONLY BINARY}] + set size [file size $fn] +} else { + chan configure stdin -encoding binary -translation binary + set data [read stdin] + set size [string length $data] + if {$argc > 0} {set ext $fn} +} + +if $GnuTLS { + set sock [open "|gnutls-cli --logfile=/dev/null -p $Port $Host" {RDWR BINARY}] +} { + set sock [socket $Host $Port] + chan configure $sock -encoding binary -translation binary +} +puts -nonewline $sock "d" +if {[info exists ext]} { + set ext [string trimleft $ext .] + puts -nonewline $sock [string cat "1:e" [string length $ext] ":$ext"] +} +puts -nonewline $sock "1:v$size:" +if {[info exists fd]} { + fcopy $fd $sock + close $fd +} { + puts -nonewline $sock $data +} +puts -nonewline $sock "e" +flush $sock +while {[gets $sock line] >= 0} { puts $line } +close $sock