Patch title: Release 87 bulk changes
Abstract:
File: /pliant/protocol/http/site.page
Key:
    Removed line
    Added line
   
module "/pliant/util/crypto/rsa.pli"
module "/pliant/util/crypto/legal.pli"
module "/pliant/admin/file.pli"
module "/pliant/language/context.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/fullpliant/user.pli"
module "/pliant/protocol/dns/name.pli"
module "site.pli"
module "/pliant/language/stream.pli"
module "/pliant/util/network/ping.pli"
module "/pliant/util/encoding/base64.pli"


table columns 4
  cell header
    [Site name]
  cell header
    [Status]
  cell header
    [Abstract]
  cell
    void
  each s site
    var Str id := keyof s
    if (s:computer="" or s:computer=computer_fullname) and s
      cell color (color hsl 120 25 80)
        link id "http://"+id+"/"
        if (id search ":" -1)<>(-1)
          eol ; highlight "you should not specify "+(id (id 
    eif s:computer="" or s:computer=computer_fullname 
      cell color (color hsl 120 10 80)
        link id "http://"+id+"/"
        if (id search ":" -1)<>(-1)
          eol ; highlight "you should not specify "+(id (id 
    else
      cell
        link id "http://"+id+"/"
        if (id search ":" -1)<>(-1)
          eol ; highlight "you should not specify "+(id (id 
    cell
      small
        text s:root
        if s:computer<>""
          text "[lf]on "+s:computer
        var Int bits := rsa_nbbits s:public_key
        if bits=defined
          if site_secret_database:data:site:id:private_key<>
            bold
              text "[lf]"+string:bits+" bits"
            if (site_secret_database:data:site:id:private_ke
              fixed [  ] ; highlight "key is corrupted !"
          else
            font color (color hsl 0 0 50)
              text "[lf]"+string:bits+" bits"
    cell
      text s:abstract
      if s:docurl<>""
        small
          eol ; link "Site extensive technical documentation
    cell
      page button "Edit"
        read_only not allowed:"administrator"
        title "Site '"+id+"'"
        table columns 3 border 0
          cell
            [Site name:]
          cell
            fixed text:id
          cell
            [The site name is the name a client on the inter
          cell
            [Serveur name:]
          cell
            input "" s:computer
          cell
            [The full name (including the domain) of the ser
            [If you leave this field blank, it means that th
          cell
            [IP and port:]
          cell
            input "" s:ip length 15 noeol ; input " " s:port
          cell
            [The IP address and the port the site serveur is
            [Most of you can leave this field blank.] ; eol
            note "more details"
              title "IP and port fields"
              para
                [When a client connects to an HTTP server, i
                [Very old or nonstandard browsers may not pr
                [It will possible to safely decide if and on
                [So, if you don't specify an IP and port, st
              para
                [If you use ] ; link "FullPliant" "/pliant/l
                [If no IP is specifyed, then the IP of the c
          cell
            [Forward:]
          cell
            input "" s:forward
          cell
            [A request will be automatically forwarded to th
            [An example could be:] ; eol
            fixed [tcp://mycomputer.mydomain.org/client/8080
          cell
            [Protocol:]
          cell
            select "" s:protocol
module "/pliant/util/crypto/rsa.pli"
module "/pliant/util/crypto/legal.pli"
module "/pliant/admin/file.pli"
module "/pliant/language/context.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/fullpliant/user.pli"
module "/pliant/protocol/dns/name.pli"
module "site.pli"
module "/pliant/language/stream.pli"
module "/pliant/util/network/ping.pli"
module "/pliant/util/encoding/base64.pli"


table columns 4
  cell header
    [Site name]
  cell header
    [Status]
  cell header
    [Abstract]
  cell
    void
  each s site
    var Str id := keyof s
    if (s:computer="" or s:computer=computer_fullname) and s
      cell color (color hsl 120 25 80)
        link id "http://"+id+"/"
        if (id search ":" -1)<>(-1)
          eol ; highlight "you should not specify "+(id (id 
    eif s:computer="" or s:computer=computer_fullname 
      cell color (color hsl 120 10 80)
        link id "http://"+id+"/"
        if (id search ":" -1)<>(-1)
          eol ; highlight "you should not specify "+(id (id 
    else
      cell
        link id "http://"+id+"/"
        if (id search ":" -1)<>(-1)
          eol ; highlight "you should not specify "+(id (id 
    cell
      small
        text s:root
        if s:computer<>""
          text "[lf]on "+s:computer
        var Int bits := rsa_nbbits s:public_key
        if bits=defined
          if site_secret_database:data:site:id:private_key<>
            bold
              text "[lf]"+string:bits+" bits"
            if (site_secret_database:data:site:id:private_ke
              fixed [  ] ; highlight "key is corrupted !"
          else
            font color (color hsl 0 0 50)
              text "[lf]"+string:bits+" bits"
    cell
      text s:abstract
      if s:docurl<>""
        small
          eol ; link "Site extensive technical documentation
    cell
      page button "Edit"
        read_only not allowed:"administrator"
        title "Site '"+id+"'"
        table columns 3 border 0
          cell
            [Site name:]
          cell
            fixed text:id
          cell
            [The site name is the name a client on the inter
          cell
            [Serveur name:]
          cell
            input "" s:computer
          cell
            [The full name (including the domain) of the ser
            [If you leave this field blank, it means that th
          cell
            [IP and port:]
          cell
            input "" s:ip length 15 noeol ; input " " s:port
          cell
            [The IP address and the port the site serveur is
            [Most of you can leave this field blank.] ; eol
            note "more details"
              title "IP and port fields"
              para
                [When a client connects to an HTTP server, i
                [Very old or nonstandard browsers may not pr
                [It will possible to safely decide if and on
                [So, if you don't specify an IP and port, st
              para
                [If you use ] ; link "FullPliant" "/pliant/l
                [If no IP is specifyed, then the IP of the c
          cell
            [Forward:]
          cell
            input "" s:forward
          cell
            [A request will be automatically forwarded to th
            [An example could be:] ; eol
            fixed [tcp://mycomputer.mydomain.org/client/8080
          cell
            [Protocol:]
          cell
            select "" s:protocol
              option "All" ""
              option "" ""
              option "HTTP" "HTTP"
              option "FTP" "FTP"
              option "proxy" "proxy"
          cell
            [If you don't select 'All', then the site can be
          cell
            [From IPs:]
          cell
            input "" s:from_ip
          cell
            [Restricts the set of IPs allowed to use the ser
          cell
            [Public key:]
          cell
            input "" s:public_key length 30 noeol
            if allowed:"administrator"
              button "Generate"
                title "Generate a public/private key pair fo
                var Int bits := min max_legal_key_bits 1024
                input "Number of bits: " bits length 4 noeol
                button "Generate now"
                  var DateTime start := datetime
                  rsa_generate "site:"+id bits ""
                  console "generated a " bits " bits key in 
                  goto_backward
                if max_legal_key_bits<10000
                  para
                    [This software cannot generate more than
                    [If you live in a country where cryptogr
                para
                  [Generating a long key pair will take a ve
                  [Let's say one hour for a 1024 bits key on
                  [If the key length is double, then the con
                para
                  [The public key will be stored in] ; fixed
                  [and the private key will be stored in] ; 
                  [You can publish the] ; fixed [ security:/
                  table columns 1 border 0
                    cell color (color hsl 0 10 80)
                      [Anybody that knows or can read the co
              var Int bits := rsa_nbbits s:public_key
              if bits=defined
                small
                  eol ; [The current key is ] ; text string:
          cell
            [The server key is used to prove the server iden
            [You need to generate a key if you want to enabl
          cell
            [Site root path:]
          cell
            input "" s:root length 40
          cell
            [Keep in mind that a Pliant path starting with] 
            [Futhermore, a Pliant path must end with a] ; fi
          cell
            [Style:]
          cell
            input "" s:style length 40
          cell
            [The style will define the vocabulary that you c
            small
              [The default is] ; fixed [ /pliant/protocol/ht
          cell
            [Style options:]
          cell
            text_input "" s:style_options columns 60 rows 10
          cell
            [Enables you to customize the style.] ; eol
            note "more details"
              execute_dynamic_page "/pliant/protocol/http/st
              option "HTTP" "HTTP"
              option "FTP" "FTP"
              option "proxy" "proxy"
          cell
            [If you don't select 'All', then the site can be
          cell
            [From IPs:]
          cell
            input "" s:from_ip
          cell
            [Restricts the set of IPs allowed to use the ser
          cell
            [Public key:]
          cell
            input "" s:public_key length 30 noeol
            if allowed:"administrator"
              button "Generate"
                title "Generate a public/private key pair fo
                var Int bits := min max_legal_key_bits 1024
                input "Number of bits: " bits length 4 noeol
                button "Generate now"
                  var DateTime start := datetime
                  rsa_generate "site:"+id bits ""
                  console "generated a " bits " bits key in 
                  goto_backward
                if max_legal_key_bits<10000
                  para
                    [This software cannot generate more than
                    [If you live in a country where cryptogr
                para
                  [Generating a long key pair will take a ve
                  [Let's say one hour for a 1024 bits key on
                  [If the key length is double, then the con
                para
                  [The public key will be stored in] ; fixed
                  [and the private key will be stored in] ; 
                  [You can publish the] ; fixed [ security:/
                  table columns 1 border 0
                    cell color (color hsl 0 10 80)
                      [Anybody that knows or can read the co
              var Int bits := rsa_nbbits s:public_key
              if bits=defined
                small
                  eol ; [The current key is ] ; text string:
          cell
            [The server key is used to prove the server iden
            [You need to generate a key if you want to enabl
          cell
            [Site root path:]
          cell
            input "" s:root length 40
          cell
            [Keep in mind that a Pliant path starting with] 
            [Futhermore, a Pliant path must end with a] ; fi
          cell
            [Style:]
          cell
            input "" s:style length 40
          cell
            [The style will define the vocabulary that you c
            small
              [The default is] ; fixed [ /pliant/protocol/ht
          cell
            [Style options:]
          cell
            text_input "" s:style_options columns 60 rows 10
          cell
            [Enables you to customize the style.] ; eol
            note "more details"
              execute_dynamic_page "/pliant/protocol/http/st
          cell
            [Default page:]
          cell
            input "" s:default length 40
          cell
            [What virtual tree page will be called if the requested URL does not resolve.] ; eol
            [The true file extension is .page, but here you have to use .html anyway.]
        table columns 2 border 0
          cell [Abstract:]
          cell (text_input "" s:abstract rows 5 columns 60)
        table columns 2 border 0
          cell [Abstract:]
          cell (text_input "" s:abstract rows 5 columns 60)
        table columns 10
        table columns 8
          cell header [Area ID]
          cell header [Path]
          cell header [Area ID]
          cell header [Path]
          cell header [Extension]
          cell header [Mode]
          cell header [Read]
          cell header [Write]
          cell header [Root path]
          cell header [Style]
          cell header [Style options]
          cell header [Forward]
          cell header
            small
              [Must be unique, but does not have any meaning
          cell header
            small
              [A path must end with a] ; fixed [ / ] ; [sign
          cell header
            small
          cell header [Read]
          cell header [Write]
          cell header [Root path]
          cell header [Style]
          cell header [Style options]
          cell header [Forward]
          cell header
            small
              [Must be unique, but does not have any meaning
          cell header
            small
              [A path must end with a] ; fixed [ / ] ; [sign
          cell header
            small
              [If specifyed, only files with the correspondi
              [An extension is something like] ; fixed [ .jp
          cell header
            void
          cell header
            small
              [The right a user need to own in order to acce
              [An empty field means that the operation is no
              [If a user is granted the right you specify he
              link "more details" "/pliant/protocol/http/" s
          cell header
            small
              [The right a user need to own in order to uplo
              [If a user is granted the right you specify he
          cell header
            small
              [If specifyed, this area will not use the gene
          cell header
            small
              [If specifyed, this area will not use the gene
          cell header
            small
              [Will add extra options that are specific to t
              [The right a user need to own in order to acce
              [An empty field means that the operation is no
              [If a user is granted the right you specify he
              link "more details" "/pliant/protocol/http/" s
          cell header
            small
              [The right a user need to own in order to uplo
              [If a user is granted the right you specify he
          cell header
            small
              [If specifyed, this area will not use the gene
          cell header
            small
              [If specifyed, this area will not use the gene
          cell header
            small
              [Will add extra options that are specific to t
          cell void
          cell header
            small
              [If specified, the connection will be forwarded to the specified remote TCP port.]
          var CBool ok := false
          each a s:area
          var CBool ok := false
          each a s:area
            if a:path="/" and a:extension="" and a:read<>""
            if a:path="/" and a:read<>""
              ok := true
            cell
              text keyof:a
            cell
              input "" a:path length 30
            cell
              ok := true
            cell
              text keyof:a
            cell
              input "" a:path length 30
            cell
              input "" a:extension length 6
            cell
              select "" a:mode
                option "" ""
                option "Static" "static"
                option "Dynamic" "dynamic"
                option "Open" "open"
            cell
              input "" a:read length 16 noeol
              note "*"
                title "List of users with '"+a:read+"' right
                table columns 4
                  cell header [User]
                  cell header [Authentification mechanism]
                  cell header [Client IP]
                  cell header [Computers names]
                  each u user
                    each r u:right
                      if r:right=a:read
                        read_only
                          cell (text keyof:u)
                          cell
                            select "" r:auth
                              option "None" "0"
                              option "Clear password" "1"
                              option "Chalenge password" "2"
                              option "Strong crypto" "3"
                          cell
                            input "" r:ip length 16
                          cell
                            input "" r:server length 16
              if a:read="read" or a:read="write"
                eol ; highlight "You should not use 'read' o
            cell
              input "" a:write length 16
              if a:write="read" or a:write="write"
                highlight "You should not use 'read' or 'wri
            cell
              input "" a:root
            cell
              input "" a:style
            cell
              text a:style_options
              if a:style_options<>""
                eol
              button "edit"
                title "Style options for site '"+keyof:s+"' 
                text_input "Style options: " a:style_options
                button "update"
                  goto_backward
            cell
              input "" a:forward
        if not ok
          [You have to create at least one area with path] ;
        if allowed:"administrator"
          input "Area ID: " (var Str aid) noeol
          button "Create the new area" noeol
            s:area create aid
            reload_page
          button "Delete the area"
            s:area delete aid
            reload_page
          button "Update site informations"
            goto_backward


              input "" a:read length 16 noeol
              note "*"
                title "List of users with '"+a:read+"' right
                table columns 4
                  cell header [User]
                  cell header [Authentification mechanism]
                  cell header [Client IP]
                  cell header [Computers names]
                  each u user
                    each r u:right
                      if r:right=a:read
                        read_only
                          cell (text keyof:u)
                          cell
                            select "" r:auth
                              option "None" "0"
                              option "Clear password" "1"
                              option "Chalenge password" "2"
                              option "Strong crypto" "3"
                          cell
                            input "" r:ip length 16
                          cell
                            input "" r:server length 16
              if a:read="read" or a:read="write"
                eol ; highlight "You should not use 'read' o
            cell
              input "" a:write length 16
              if a:write="read" or a:write="write"
                highlight "You should not use 'read' or 'wri
            cell
              input "" a:root
            cell
              input "" a:style
            cell
              text a:style_options
              if a:style_options<>""
                eol
              button "edit"
                title "Style options for site '"+keyof:s+"' 
                text_input "Style options: " a:style_options
                button "update"
                  goto_backward
            cell
              input "" a:forward
        if not ok
          [You have to create at least one area with path] ;
        if allowed:"administrator"
          input "Area ID: " (var Str aid) noeol
          button "Create the new area" noeol
            s:area create aid
            reload_page
          button "Delete the area"
            s:area delete aid
            reload_page
          button "Update site informations"
            goto_backward