Patch title: Release 94 bulk changes
Abstract:
File: /pliant/util/crypto/proxy.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "channel.pli"
module "/pliant/fullpliant/user.pli"
module "/pliant/protocol/http/site.pli"
module "/pliant/protocol/dns/name.pli"
module "/pliant/admin/md5.pli"
module "/pliant/util/crypto/cipher.pli"
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "channel.pli"
module "/pliant/fullpliant/user.pli"
module "/pliant/protocol/http/site.pli"
module "/pliant/protocol/dns/name.pli"
module "/pliant/admin/md5.pli"
module "/pliant/util/crypto/cipher.pli"
module "/pliant/language/type/text/str8.pli"


function proxy user password site -> status
  arg Str user password site ; arg ExtendedStatus status
  stop := true
  (var Stream s) open "tcp://127.0.0.1/client/"+string:secur
  s close
  if not (site parse any:(var Str host) ":" (var Int port))
    host := site
    var Data:NameHost h :> name_database:data:host site
    if exists:h
      port := h http_port
    else
      var Data:Site si :> site_database:data:site site
      if exists:si and si:port=defined
        port := si port
      eif exists:si and si:computer<>"" and exists:(name_dat
        port := (name_database:data:host si:computer) http_p
      else
        port := 80
  proxy_current_site := ""
  if site=""
    return success
  sem request


function proxy user password site -> status
  arg Str user password site ; arg ExtendedStatus status
  stop := true
  (var Stream s) open "tcp://127.0.0.1/client/"+string:secur
  s close
  if not (site parse any:(var Str host) ":" (var Int port))
    host := site
    var Data:NameHost h :> name_database:data:host site
    if exists:h
      port := h http_port
    else
      var Data:Site si :> site_database:data:site site
      if exists:si and si:port=defined
        port := si port
      eif exists:si and si:computer<>"" and exists:(name_dat
        port := (name_database:data:host si:computer) http_p
      else
        port := 80
  proxy_current_site := ""
  if site=""
    return success
  sem request
  var CBool ok :=  user_secret_database:data:user:user:key_m
  var CBool ok := user_secret_database:data:user:user:key_md5="" or user_secret_database:data:user:user:key_md5=string_md5_hexa_signature:(uncipher (straight_to_Str user_secret_database:data:user:user:private_key) password)
  if not ok
    sleep 2
    sem release
    return (failure "Password for '"+user+"' is wrong.")
  sem release
  proxy_current_site := host
  thread
    proxy "tcp:/server/"+string:secured_proxy_tcp_port "zcha
  status := success

export proxy proxy_current_site secured_proxy_tcp_port
  if not ok
    sleep 2
    sem release
    return (failure "Password for '"+user+"' is wrong.")
  sem release
  proxy_current_site := host
  thread
    proxy "tcp:/server/"+string:secured_proxy_tcp_port "zcha
  status := success

export proxy proxy_current_site secured_proxy_tcp_port