Patch title: Release 85 bulk changes
Abstract:
File: /pliant/util/remote/remote.page
Key:
    Removed line
    Added line
   
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/protocol/dns/name.pli"
module "/pliant/protocol/http/site.pli"
module "/pliant/util/network/ping.pli"
module "/pliant/util/encoding/base64.pli"
module "common.pli"


para
  note "Remote execution global settings for this computer"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/protocol/dns/name.pli"
module "/pliant/protocol/http/site.pli"
module "/pliant/util/network/ping.pli"
module "/pliant/util/encoding/base64.pli"
module "common.pli"


para
  note "Remote execution global settings for this computer"
    if not allowed:"administrator"
      read_only_mode := true
    read_only not allowed:"administrator"
    title "This computer remote execution settings"
    header "Remote settings"
      table columns 3 border 0
        cell [Remote execution service:]
        cell
          var Str remote := this_computer "pliant" "remote" 
          select "" remote
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the remote execution service on 
    if allowed:"administrator"
      button "Update"
        this_computer "pliant" "remote" "service" := remote
        goto_backward

para
  input "Computer: " (var Str host) noeol
  page button "Test remote access"
    var CBool ok := true
    if name_secret_database:data:host:computer_fullname:priv
      text "This computer has no private key !" ; eol
      ok := false
    eif name_database:data:host:computer_fullname:public_key
      text "This computer has no public key !" ; eol
      ok := false
    if site:host:public_key<>"" and name_database:data:host:
      text "'"+host+"' is defined both as a web site and as 
      ok := false
    eif name_database:data:host:host:public_key=""
      text "This computer does not know '"+host+"' public ke
      ok := false
    if net_ping:host=failure
      text "Cannot access '"+host+"' through the network !" 
      ok := false
    else
      var Int port := name_database:data:host:host:remote_po
      (var Stream s) open "tcp://"+host+"/client/"+string:(s
      if s=failure
        text "Remote execution service is not running on "+h
        ok := false
        var Int port := name_database:data:host:host:http_po
        s open "tcp://"+host+"/client/"+(string 500+(shunt p
        if s=failure
          text "Neither is Pliant HTTP server secured channe
      if s=success
        s writeline "server-site: "+base64_encode:host
        s writeline "client-site: "+base64_encode:computer_f
        s writeline "query-server-key"
        s writeline "query-client-key"
        s writeline ""
        while { var Str l := s readline ; l<>"" }
          console l eol
          l parse "server-key" ":" any:(var Str server_publi
          l parse "client-key" ":" any:(var Str client_publi
        if server_public_key=name_database:data:host:host:pu
          void
        eif name_database:data:host:host:public_key=""
          text "'"+host+"' says that it's public key is: " ;
          fixed text:server_public_key ; eol
        eif server_public_key=""
          text "'"+host+"' does not seem to have a public ke
          ok := false
        else
          text "The public key of '"+host+"' on this compute
          text "'"+host+"' says that it's public key is: " ;
          fixed text:server_public_key ; eol
          ok := false
        if client_public_key=name_database:data:host:compute
          void
        eif name_database:data:host:computer_fullname:public
          void # this computer has no public key
        eif client_public_key=""
          text "'"+host+"' does not seem to know this comput
          ok := false
        else
          text "The public key of this computer on '"+host+"
          text "The right one is: " ; eol
          fixed (text name_database:data:host:computer_fulln
          ok := false
    if ok
      [Everything seems to be ok.]
    title "This computer remote execution settings"
    header "Remote settings"
      table columns 3 border 0
        cell [Remote execution service:]
        cell
          var Str remote := this_computer "pliant" "remote" 
          select "" remote
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the remote execution service on 
    if allowed:"administrator"
      button "Update"
        this_computer "pliant" "remote" "service" := remote
        goto_backward

para
  input "Computer: " (var Str host) noeol
  page button "Test remote access"
    var CBool ok := true
    if name_secret_database:data:host:computer_fullname:priv
      text "This computer has no private key !" ; eol
      ok := false
    eif name_database:data:host:computer_fullname:public_key
      text "This computer has no public key !" ; eol
      ok := false
    if site:host:public_key<>"" and name_database:data:host:
      text "'"+host+"' is defined both as a web site and as 
      ok := false
    eif name_database:data:host:host:public_key=""
      text "This computer does not know '"+host+"' public ke
      ok := false
    if net_ping:host=failure
      text "Cannot access '"+host+"' through the network !" 
      ok := false
    else
      var Int port := name_database:data:host:host:remote_po
      (var Stream s) open "tcp://"+host+"/client/"+string:(s
      if s=failure
        text "Remote execution service is not running on "+h
        ok := false
        var Int port := name_database:data:host:host:http_po
        s open "tcp://"+host+"/client/"+(string 500+(shunt p
        if s=failure
          text "Neither is Pliant HTTP server secured channe
      if s=success
        s writeline "server-site: "+base64_encode:host
        s writeline "client-site: "+base64_encode:computer_f
        s writeline "query-server-key"
        s writeline "query-client-key"
        s writeline ""
        while { var Str l := s readline ; l<>"" }
          console l eol
          l parse "server-key" ":" any:(var Str server_publi
          l parse "client-key" ":" any:(var Str client_publi
        if server_public_key=name_database:data:host:host:pu
          void
        eif name_database:data:host:host:public_key=""
          text "'"+host+"' says that it's public key is: " ;
          fixed text:server_public_key ; eol
        eif server_public_key=""
          text "'"+host+"' does not seem to have a public ke
          ok := false
        else
          text "The public key of '"+host+"' on this compute
          text "'"+host+"' says that it's public key is: " ;
          fixed text:server_public_key ; eol
          ok := false
        if client_public_key=name_database:data:host:compute
          void
        eif name_database:data:host:computer_fullname:public
          void # this computer has no public key
        eif client_public_key=""
          text "'"+host+"' does not seem to know this comput
          ok := false
        else
          text "The public key of this computer on '"+host+"
          text "The right one is: " ; eol
          fixed (text name_database:data:host:computer_fulln
          ok := false
    if ok
      [Everything seems to be ok.]