Patch title: Release 90 bulk changes
Abstract:
File: /protocol/ftp/server.pli
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


method env assign_rights uname ip rights
  arg_rw FtpEnv env ; arg Str uname ip ; arg_rw Str rights
  var Data:User u :> user uname
  each r u:right
    if (string env:user_auth_level)>=r:auth and (ip is_inside_ip_domain r:ip) and (r:server="" or (" "+r:server+" " search " "+computer_fullname+" " -1)<>(-1))
      env:rights kmap r:right CBool := true
      rights += " "+r:right

method env assign_user
  arg_rw FtpEnv env
  env rights := var Dictionary empty_dictionary
  var Str ruser := env:command safe_query "remote_user"
  if ruser<>""
    env user := ruser
    env user_auth_level := 3
    env site :> site (env:command safe_query "local_user")
  else
    part scan_for_site
      each s site
        if s:protocol="FTP" and (s:computer<>"" or s:ip<>"")
          if (env try_site s)=success
            leave scan_for_site
      each s site
        if s:ip<>""
          if (env try_site s)=success
            leave scan_for_site
      each s site
        if s:computer<>""
          if (env try_site s)=success
            leave scan_for_site
      each s site
        if (env try_site s)=success
          leave scan_for_site
      return
  var Str rights
  var Str ip := env:command query "remote_ip_address"
method env assign_user
  arg_rw FtpEnv env
  env rights := var Dictionary empty_dictionary
  var Str ruser := env:command safe_query "remote_user"
  if ruser<>""
    env user := ruser
    env user_auth_level := 3
    env site :> site (env:command safe_query "local_user")
  else
    part scan_for_site
      each s site
        if s:protocol="FTP" and (s:computer<>"" or s:ip<>"")
          if (env try_site s)=success
            leave scan_for_site
      each s site
        if s:ip<>""
          if (env try_site s)=success
            leave scan_for_site
      each s site
        if s:computer<>""
          if (env try_site s)=success
            leave scan_for_site
      each s site
        if (env try_site s)=success
          leave scan_for_site
      return
  var Str rights
  var Str ip := env:command query "remote_ip_address"
  for (var Int lap) (shunt env:user<>"" 1 0) 0 step -1
    var Data:User u :> user (shunt lap=0 "anonymous" env:use
    each r u:right
      if (string env:user_auth_level)>=r:auth and (ip is_ins
        env:rights kmap r:right CBool := true
        rights += " "+r:right
  env assign_rights "anonymous" ip rights
  each t (user env:user):template
    env assign_rights t ip rights
  if env:user<>""
    env assign_rights env:user ip rights
  env:log trace "user " env:user " " env:user_auth_level " :
  if env:user<>""
    if not (login_record env:user ip "FTP "+(string env:user
      env user := ""
      env user_auth_level := 0
      env rights := var Dictionary empty_dictionary



  env:log trace "user " env:user " " env:user_auth_level " :
  if env:user<>""
    if not (login_record env:user ip "FTP "+(string env:user
      env user := ""
      env user_auth_level := 0
      env rights := var Dictionary empty_dictionary