wm withdraw .; wm withdraw .output; wm geom .konsola 840x442; kons_font 16 kons_font 13 lappend auto_path ./combat-tcl-ssl ~/tcl; package re combat # + to jest wersja combata z komenda socket zastapiona przez tls::socket !! set Combat::use_ssl 1 proc Combat::ssl_cli_passwd {} {return "qwerty"} # + obecna wersja iiop.tcl wymaga aby klient tez mial cert/priv i haslo ! ## dodajemy prot SSL/TLS do Combata... # + przed uruchomieniem wykonaj ". e_tls" # + konieczne bylo uzycie tls::handshake dla ser i kli, # bez tego gniazdka (bezp.) troche inaczje sie zachowuja !! # + problemy do rozwiazania: # brak nr portu w IOR od serwera z SSL... # source Hello3.tcl combat::ir add $_ir_Hello3 set o1 [corba::string_to_object file://[pwd]/Hello.IOR] #% _combat_obj_1 # ... # modyfikujemy ob. IOR tak, aby zawieral rzeczywisty nr portu... # proc err kod {catch $kod err; return $err} proc j ob {join [$ob configure] \n} proc znajdz_tag {li tag} { foreach e $li {if {[$e cget -tag]==$tag} {return $e}} error "nie znaleziono tagu $tag !!!" } set obj1 [Combat::CORBA::ORB::GetObjFromHandle $o1] set ior1 [$obj1 cget -ior] # + pobieramy obiekt IOR z handle $o1 $ior1 cget -type_id #% IDL:HelloApp/Hello:1.0 set prof1 [znajdz_tag [$ior1 cget -profiles] 0] # + znajdujemy profil z tagiem 0 $prof1 cget -port #% 0 set comp1 [znajdz_tag [$prof1 cget -components] 20] # + znajdujemy komponent z tagiem 20 binary scan [$comp1 cget -component_data] c* x1; set x1 #% 0 0 0 122 0 96 -116 63 set port1 [expr {([lindex $x1 end-1]&0xFF)*256+([lindex $x1 end]&0xFF)}] #% 35903 # + obliczamy nr portu (ostatnie 2 bajty w component_data) $prof1 configure -port $port1 #% # ... $o1 sayHello #% Hello world !!! $o1 podajLiczbe #% 2 #% 1 #% 0 $obj1 disconnect file chan sock* #% sock5 tls::status sock5 #% sha1_hash E74BA76019A6F63892141DFC9663F3ACBAE2126C subject {/C=Unknown/ST=Unknown/L=Unknown/O=JacORB/OU=Unknown/CN=JSSE SSL Demo Server} issuer {/C=Unknown/ST=Unknown/L=Unknown/O=JacORB/OU=Unknown/CN=JSSE SSL Demo Server} notBefore {Jul 6 08:22:02 2006 GMT} notAfter {Nov 10 01:53:46 2038 GMT} serial 1152174122 sbits 168 cipher EDH-DSS-DES-CBC3-SHA # ... if 0 { ## jak stworzyc i dodac komponene ssl (tag 20) do profilu?? # proc err kod {catch $kod err; return $err} proc j ob {join [$ob configure] \n} proc znajdz_tag {li tag} { foreach e $li {if {[$e cget -tag]==$tag} {return $e}} error "nie znaleziono tagu $tag !!!" } proc 2bajty n {list [expr {($n>>8) & 0xFF}] [expr {$n & 0xFF}]} set obj1 [Combat::CORBA::ORB::GetObjFromHandle $ref] set ior1 [$obj1 cget -ior] set prof1 [znajdz_tag [$ior1 cget -profiles] 0] set port1 [$prof1 cget -port] #% 38560 $prof1 configure -port 0 # + tego wymaga spec Corby... set xx1 "0 0 0 122 0 96 [2bajty $port1]" #% 0 0 0 122 0 96 150 160 Combat::IOP::TaggedComponent q1 q1 configure -tag 20 # + komponent ssl-owy q1 configure -component_data [binary form c* $xx1] set comps1 [$prof1 cget -components] lappend comps1 ::q1 $prof1 configure -components $comps1 # + dodalismy komponent q1 do profilu z tag=0 if 0 { j $obj1 j $ior1 j $prof1 itcl::body HelloWorld::sayHello {} { return "Jak sie masz ???" } } } # ... exit