portal Michała Hanćkowiaka
Begin main content
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

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...