1	# =====================================================================
     2	# viewSource.awk: RPC I/O function for rpclib/viewSource.
     3	#
     4	# Copyright (c) 2007,2008,2009,2010 Carlo Strozzi
     5	#
     6	# This program is free software; you can redistribute it and/or modify
     7	# it under the terms of the AFFERO General Public License as published 
     8	# by Affero, Inc.; version 1 dated March, 2002.
     9	#
    10	# This program is distributed in the hope that it will be useful,
    11	# but WITHOUT ANY WARRANTY; without even the implied warranty of
    12	# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13	# AFFERO General Public License for more details.
    14	#
    15	# You should be able to access an on-line copy of the AFFERO General 
    16	# Public License through the same Web server that runs this program.
    17	# If not, you can request a copy of the license by writing to Affero, 
    18	# Inc., 510 Third Street - Suite 225, San Francisco, CA 94107, USA.
    19	#
    20	# =====================================================================
    21	
    22	# =====================================================================
    23	# void _userproc(int mode)
    24	# =====================================================================
    25	
    26	function _userproc(mode,				       value) {
    27	
    28	   if (mode == _O_REQUEST) {				# request.
    29	
    30	      # target group
    31	      value = _request("1",1)
    32	
    33	      # group must not be null and it may not contain the
    34	      # unescaped ``.'' character.
    35	
    36	      if (value != _NULL && value !~ /\./) {
    37		 _rcset("cgi.group",unixify(value))
    38		 _rcset("cgi.group.literal",value)
    39	      }
    40	
    41	      value = _request("2",1)
    42	      if (value/=1) _rcset("cgi.source",value)
    43	
    44	      # The following test is necessary since the address could,
    45	      # at least in theory, have been set to any string by the
    46	      # remote user, due to how it is handled to cope with stunnel(8)
    47	      # and the lack of transproxy support in kernel 2.4.x.
    48	
    49	      if (_isipaddr(ENVIRON["REMOTE_ADDR"]) == _TRUE)
    50					value = ENVIRON["REMOTE_ADDR"]
    51	      else value = "0.0.0.0"
    52	
    53	      _rcset("REMOTE_ADDR",value)
    54	   }
    55	
    56	   else {						# response
    57	
    58	      # generic template conditionals.
    59	
    60	      ifsections()
    61	   }
    62	} 
    63	
    64	# EOF