Patch title: Release 96 bulk changes
Abstract:
File: /pliant/graphic/ui/server/main.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/stream.pli"
module "/pliant/util/pml/multiplexer.pli"
module "/pliant/util/pml/io.pli"
module "context.pli"
module "instructions.pli"
module "/pliant/language/context.pli"

# module "/pliant/protocol/dns/name.pli"
module "/pliant/fullpliant/user.pli"
module "/pliant/protocol/common/misc.pli"
module "/pliant/language/type/text/language.pli"
module "/pliant/language/schedule/threads_engine.pli"

constant trace true
constant trace2 false


function ui_server_instruction_prototype context fun
  arg_rw UIServerContext context ; arg Function fun
  indirect

function ui_service stream
  arg_rw Stream stream
  var Link:UIServerContext context :> new UIServerContext
  context connection :> stream
  context env :> new Dictionary
  context env_sem :> new Sem
  var Str ip := stream safe_query "remote_ip_address"
  if ip="loopback"
    context user_is_admin := true
  eif (stream safe_query "remote_class")="user"
    context user_name := stream safe_query "remote_name"
    context user_auth_level := 3
  if context:user_name<>""
    var Data:User u :> user context:user_name
    if u:language<>""
      var Int index := language_index u:language
      if index<>undefined
        current_thread_header language_index := index
    each r u:right
      if (string context:user_auth_level)>=r:auth and (ip is_inside_ip_domain r:ip) and (r:server="" or (" "+r:server+" " search " "+computer_fullname+" " -1)<>(-1))
        context:user_rights kmap r:right CBool := true
        if r:right="administrator"
          context user_is_admin := true
  if trace2
    console "ui connection begin" eol
  while stream:iavailable
    # if (stream ipick open (var Ident id))
    #   console "query " (cast id Str) eol
    if not (stream ipick open (var Ident instruction))
      if trace
        console "corrupted connection" eol
      return
    if trace2
      console "process instruction " (cast instruction Str) eol
    var Pointer:Arrow pfun :> ui_server_instructions first (cast instruction Str)
    if pfun=null
      if trace
        console "unsupported instruction " (cast instruction Str) eol
      return
    ui_server_instruction_prototype context (pfun map Function)
  if trace2
    console "ui connection end" eol


function ui_server
  multiplexer_service "ui" (the_function ui_service Stream)


export ui_server