head	1.14;
access;
symbols
	TIGRIS_1_1_0RC2:1.6.6.2
	TIGRIS_1_1_0RC1:1.6.6.2
	TIGRIS_1_1:1.6.6.2.0.2
	TIGRIS_1_0_8:1.6.6.2
	TIGRIS_1_0_8RC3:1.6.6.2
	TIGRIS_1_0_8RC2:1.6.6.2
	TIGRIS_1_0_8RC1:1.6.6.2
	TIGRIS_1_0_7:1.6.6.1
	TIGRIS_1_0_7RC3:1.6.6.1
	TIGRIS_1_0_7RC2:1.6.6.1
	TIGRIS_1_0_7RC1:1.6.6.1
	TIGRIS_1_0_6:1.6
	TIGRIS_1_0_6RC5:1.6
	TIGRIS_1_0_6RC4:1.6
	TIGRIS_1_0_6RC3:1.6
	TIGRIS_1_0_6RC2:1.6
	TIGRIS_1_0_6RC1:1.6
	TIGRIS_1_0_5:1.6
	TIGRIS_1_0_5RC6:1.6
	TIGRIS_1_0_5RC5:1.6
	TIGRIS_1_0_5RC4:1.6
	TIGRIS_1_0_5RC3:1.6
	TIGRIS_1_0_5RC2:1.6
	TIGRIS_1_0_5RC1:1.6
	TIGRIS_1_0_4:1.6
	TIGRIS_1_0_3:1.6
	TIGRIS_1_0_2:1.6
	TIGRIS_1_0_1:1.6
	TIGRIS_1_0:1.6.0.6
	TIGRIS_1_0_0:1.6
	TIGRIS_1_0_0_RC1:1.6.0.2
	TIGRIS_0_9_2_4:1.2
	TIGRIS_0_9_2_3:1.2
	HELM_PEER_PORT_BRANCH:1.4.0.2
	TURBINE_PEER:1.4
	TIGRIS_0_9_2_1:1.4
	TIGRIS_0_9_2:1.2.0.2
	TIGRIS_0_9_0:1.1.1.1.0.4
	TIGRIS_0_8_4:1.1.1.1.0.2
	NEWHELM:1.1.1.1
	TIGRIS_NOV_12_2000:1.1.1;
locks; strict;
comment	@# @;


1.14
date	2001.07.19.19.36.30;	author dlr;	state Exp;
branches;
next	1.13;

1.13
date	2001.07.18.10.05.14;	author dlr;	state Exp;
branches;
next	1.12;

1.12
date	2001.07.17.00.32.06;	author dlr;	state Exp;
branches;
next	1.11;

1.11
date	2001.07.17.00.29.11;	author dlr;	state Exp;
branches;
next	1.10;

1.10
date	2001.07.07.01.16.30;	author edk;	state Exp;
branches;
next	1.9;

1.9
date	2001.06.19.02.08.17;	author stack;	state Exp;
branches;
next	1.8;

1.8
date	2001.06.18.18.39.42;	author stack;	state Exp;
branches;
next	1.7;

1.7
date	2001.05.23.01.50.20;	author dlr;	state Exp;
branches;
next	1.6;

1.6
date	2001.03.07.01.53.26;	author lucas;	state Exp;
branches
	1.6.6.1;
next	1.5;

1.5
date	2001.02.21.05.00.37;	author dlr;	state Exp;
branches;
next	1.4;

1.4
date	2001.01.26.18.29.08;	author edk;	state Exp;
branches
	1.4.2.1;
next	1.3;

1.3
date	2001.01.26.05.24.07;	author edk;	state dead;
branches;
next	1.2;

1.2
date	2001.01.08.23.25.03;	author dlr;	state Exp;
branches;
next	1.1;

1.1
date	2000.11.12.21.16.27;	author dlr;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2000.11.12.21.16.27;	author dlr;	state Exp;
branches;
next	;

1.4.2.1
date	2001.01.28.01.02.18;	author dlr;	state dead;
branches;
next	;

1.6.6.1
date	2001.06.19.15.40.40;	author stack;	state Exp;
branches;
next	1.6.6.2;

1.6.6.2
date	2001.07.07.01.15.11;	author edk;	state Exp;
branches;
next	;


desc
@@


1.14
log
@Removed Joist references.
@
text
@/* ================================================================
 * Copyright (c) 2000 Collab.Net.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if
 * any, must include the following acknowlegement: "This product includes
 * software developed by Collab.Net <http://www.Collab.Net/>."
 * Alternately, this acknowlegement may appear in the software itself, if
 * and wherever such third-party acknowlegements normally appear.
 * 
 * 4. The hosted project names must not be used to endorse or promote
 * products derived from this software without prior written
 * permission. For written permission, please contact info@@collab.net.
 * 
 * 5. Products derived from this software may not use the "Tigris" or 
 * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without 
 * prior written permission of Collab.Net.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by many
 * individuals on behalf of Collab.Net.
 */ 
package org.tigris.helm.publish.filters;

import java.util.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.turbine.util.Log;

import HTTPClient.*;

import org.tigris.helm.publish.*;
import org.tigris.helm.om.*;

/** A Noodle prefilter that adds Helm information headers.
* 
* First check for presence of Helm headers in the incoming
* http request.  If present, remove them.  Next add this
* set of headers at least to the header list:
* <pre>
*    helm-HELM_DOMAIN.NAME
*    helm-HELM_PROJECT.PROJECT_ID
*    helm-HELM_PROJECT.NAME
*    joist-User.name         
*    joist-User.userID
*    joist-User.loginID
* </pre>
* We purge them to foil any attempts at passing Helm 
* CGIs spoofed data.
* <p>
* Modelled on org.tigris.helm.publish.filter.CopyAllHeaders.
*
* @@author <a href="mailto:stack@@collab.net">St.Ack</a>
* @@version $Id: HelmHeaders.java,v 1.13 2001/07/18 10:05:14 dlr Exp $
* @@see org.tigris.helm.publish.filter.CopyAllHeaders
* @@see <a href="http://projects.collab.net/project/eng/stack/projects/securenoodle/">SecureNoodle: Problem Statement, Requirements, Survey, Decisions and Testing</a>
*/
public class HelmHeaders 
    implements NoodleFilter
{
    /** Debug flag.
    */
    public static final boolean debug = true;
    
    
    /** Not an internal Helm header regular expression.
    */
    private gnu.regexp.RE reInternalHelmHeader 
        = null;
        
        
    /** Header field for helm Domain name
    */
    private static final String HELM_HELM_DOMAIN_NAME
       = "helm-HELM_DOMAIN.NAME";
       
  
     /** Header field for helm project id
    */
    private static final String HELM_HELM_PROJECT_PROJECT_ID
       = "helm-HELM_PROJECT.PROJECT_ID";
       
       
     /** Header field for helm project name
    */
    private static final String HELM_HELM_PROJECT_PROJECT_NAME
       = "helm-HELM_PROJECT.NAME";    
       
       
     /** Header field for joist user name
    */
    private static final String JOIST_USER_NAME
       = "joist-User.name";       
       
     
     /** Header field for joist user id
    */
    private static final String JOIST_USER_ID
       = "joist-User.userID";   
       
       
    /** Header field for joist user loginID
    */
    private static final String JOIST_USER_LOGIN_ID
       = "joist-User.loginID";  
       
       
    /** Key to pull currentDomain object from 
    * the template context.
    */
    private static final String CURRENT_DOMAIN_KEY
        = "currentDomain";
        
        
    /** Key to pull currentProject object from 
    * the template context.
    */
    private static final String CURRENT_PROJECT_KEY
        = "currentProject";
        
        
    /** Key to pull loginUser object from 
    * the template context.
    */
    private static final String LOGIN_USER_KEY
        = "loginUser";

        
    /** Constructor
    */
    public HelmHeaders()
        throws gnu.regexp.REException
    {
        // See http://projects.collab.net/project/eng/stack/projects/securenoodle/index.html#headers
        //
        reInternalHelmHeader 
            = new gnu.regexp.RE( "^helm-|^joist-|^accept-encoding$" );
    }
    
    
    /** Do filtering.
    * 
    * First look for presence in incoming request for headers
    * that fit our pattern.  If they exist, purge them.  Maybe
    * an attempted security violation.  Thereafter, add in 
    * Helm CGI info.
    *
    * @@param noodleData This is an instance of HelmNoodleData.
    *
    * @@exception Exception
    */
    public void doProcess(NoodleData noodleData)
        throws Exception
    {
        HttpServletRequest req = noodleData.getRequest();

        // Get all the headers from the request.
        // Make sure none match our regular expression pattern.
        // If they do, don't pass them through.
        //
        String header = null;
        String value = null;
        NVPair tmp = null;
        
        label_header_loop: for( Enumeration e = req.getHeaderNames(); 
                                    e.hasMoreElements(); )
        {       
            header = ( ( String )e.nextElement() ).trim();
            if( header.equalsIgnoreCase( "connection" ) )
            {
                // RFC2068 14.10 is explicit that proxies should not 
                // propagate 'Connection:' headers.  A propagated 
                // 'Connection: close' was causing HN to throw an 
                // IOException.
                //
                continue;
            }
            value = req.getHeader( header );
            if( value == null ) // make sure they have a value
                value = "";
            if( reInternalHelmHeader.getMatch( header ) != null )
            {
                // Do not add header/value pairs that match our RE.
                //
                Log.info( "Purged header <"
                            + header 
                            + "> and value <"
                            + value
                            + " from incoming client headers" );
                continue label_header_loop;
            }    
            tmp = new NVPair( header, value );
            noodleData.getHeadersToSend().addElement( tmp );
        }
        
        
        addHelmHeaders( 
            ( org.tigris.helm.publish.HelmNoodleData )noodleData );
    }
    
    
    /** Add the Helm headers to the incoming request
    * @@param inNoodleData Current request noodle data.
    */
    private void addHelmHeaders( org.tigris.helm.publish.HelmNoodleData inNoodleData )
    {
        String strPtr = null; // General string pointer. Reused.
        Object objPtr = null; // General object pointer.  Reused.
        NVPair headerPtr = null; // Pointer to NVPair class. Reused.
         
        org.apache.velocity.context.Context context 
            = inNoodleData.getContext();  
            
        addHELM_HELM_DOMAIN_NAME( context, inNoodleData );
        addHELM_HELM_PROJECT( context, inNoodleData );
        addJOIST_USER( context, inNoodleData );
    }
    
    
    /** Add HELM_HELM_DOMAIN_NAME header if i can find data to add.
    * @@param inContext Current template context
    * @@param inNoodleData Current request noodle data. 
    */
    private void addHELM_HELM_DOMAIN_NAME( 
        org.apache.velocity.context.Context inContext,
        org.tigris.helm.publish.HelmNoodleData inNoodleData )
    {
        String strPtr = null; 
        Object objPtr = null;
        NVPair headerPtr = null;

        if( ( objPtr = inContext.get( CURRENT_DOMAIN_KEY ) ) != null )
        {
            strPtr = ( (Domain)objPtr ).getName();
            addHeader( inNoodleData, 
                        HELM_HELM_DOMAIN_NAME, 
                        strPtr );
        }
        
        return;
    }
    
    
    /** Add HELM_HELM_PROJECT_PROJECT_ID and HELM_HELM_PROJECT_PROJECT_NAME headers.
    * Adds nothing if no project associated w/ current request.
    *
    * @@param inContext Current template context
    * @@param inNoodleData Current request noodle data. 
    */
    private void addHELM_HELM_PROJECT( 
        org.apache.velocity.context.Context inContext,
        org.tigris.helm.publish.HelmNoodleData inNoodleData )
    {
        String strPtr = null; 
        Object objPtr = null;
        
        if( ( objPtr = inContext.get( CURRENT_PROJECT_KEY ) ) != null )
        {
            Project project = (Project)objPtr;
            strPtr = project.getID();
            addHeader( inNoodleData, 
                       HELM_HELM_PROJECT_PROJECT_ID, 
                       strPtr );
            strPtr = project.getName();
            addHeader( inNoodleData, 
                       HELM_HELM_PROJECT_PROJECT_NAME, 
                       strPtr );
        }
        
        return;
    }
    
    
    /** Add JOIST_USER_NAME, JOIST_USER_ID and JOIST_USER_LOGIN_ID headers.
    *
    * @@param inContext Current template context
    * @@param inNoodleData Current request noodle data. 
    */
    private void addJOIST_USER( 
        org.apache.velocity.context.Context inContext,
        org.tigris.helm.publish.HelmNoodleData inNoodleData )
    {
        String strPtr = null; 
        Object objPtr = null;
        
        if( ( objPtr = inContext.get( LOGIN_USER_KEY ) ) != null )
        {
            User user = (User)objPtr;
            strPtr = user.getID();
            addHeader( inNoodleData, 
                       JOIST_USER_ID, 
                       strPtr );
            strPtr = user.getRealName();
            addHeader( inNoodleData, 
                       JOIST_USER_NAME, 
                       strPtr );
            strPtr = user.getLoginName();
            addHeader( inNoodleData, 
                       JOIST_USER_LOGIN_ID, 
                       strPtr );
        }
        
        return;
    }
    
    
    /** Add a key value pair as a header.
    * @@param inNoodleData Current request noodle data.   
    * @@param inKey Header fieldname
    * @@param inValue Header Value.  Do not add if null. 
    */
    private void addHeader( 
        org.tigris.helm.publish.HelmNoodleData inNoodleData,
        String inKey, 
        String inValue )
    {
        NVPair headerPtr = null;
        
        if( inValue != null && inValue.length() > 0 )
        {
            headerPtr = new NVPair( inKey, inValue );
            inNoodleData.getHeadersToSend().addElement( headerPtr );
            if( debug )
                Log.debug( "ADDED HEADER: " 
                    + inKey 
                    + ", VALUE: " 
                    + inValue );
        }
    }
}    
@


1.13
log
@Ported Joist Redirect*Exception to Helm.
@
text
@d76 1
a76 1
* Modelled on org.joist.publish.filter.CopyAllHeaders.
d79 2
a80 2
* @@version $Id: HelmHeaders.java,v 1.12 2001/07/17 00:32:06 dlr Exp $
* @@see org.joist.publish.filter.CopyAllHeaders
@


1.12
log
@Purged deprecated code.
@
text
@d79 1
a79 1
* @@version $Id: HelmHeaders.java,v 1.11 2001/07/17 00:29:11 dlr Exp $
d223 1
a223 1
            ( org.tigris.helm.publish.HelmNoodleData )noodleData );        
@


1.11
log
@Removed HelmHeaders Joist dependency by moving some files which I had previously overlooked from Joist into Helm.  Provided better JavaDoc for the NoodleFilter class.
@
text
@d53 2
d57 2
a58 1
import org.joist.publish.*;
a59 1
import org.tigris.helm.om.*;
d79 1
a79 1
* @@version $Id: HelmHeaders.java,v 1.10 2001/07/07 01:16:30 edk Exp $
a85 7
    /** Logging object.
    * @@see <a href="http://www.webmacro.org/api/index.html">WebMacro API</a>
    */
    static private org.webmacro.util.Log log 
        = new org.webmacro.util.Log( "NdlFltr", "HelmNoodleFilter" );
    
    
a86 1
    * @@see <a href="http://www.webmacro.org/api/index.html">WebMacro API</a>
d134 1
a134 1
    * the webmacro context.
d141 1
a141 1
    * the webmacro context.
d148 1
a148 1
    * the webmacro context.
d210 1
a210 1
                log.info( "Purged header <"
d246 1
a246 1
    * @@param inContext Current webmacro context
d272 1
a272 1
    * @@param inContext Current webmacro context
d301 1
a301 1
    * @@param inContext Current webmacro context
a331 1
    
d349 1
a349 1
                log.debug( "ADDED HEADER: " 
@


1.10
log
@remove accept-encoding header since we can't handle encodings other than
the default currently
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.9 2001/06/19 02:08:17 stack Exp $
a83 6
    /** Class version string
    */
    private static final String versionID 
        = "$Id: HelmHeaders.java,v 1.9 2001/06/19 02:08:17 stack Exp $";


@


1.9
log
@Use equalsIgnoreCase instead of doing a toLower and then the compare
(Thanks to DLR review).
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.8 2001/06/18 18:39:42 stack Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.8 2001/06/18 18:39:42 stack Exp $";
d174 1
a174 1
            = new gnu.regexp.RE( "^helm-|^joist-" );
@


1.8
log
@RFC2068 14.10 is explicit that proxies should not propagate 'Connection'
headers.  A propagated 'Connection: close' was causing HN to throw IOEs.
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.7 2001/05/23 01:50:20 dlr Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.7 2001/05/23 01:50:20 dlr Exp $";
d206 1
a206 1
            if( ( header.toLowerCase( ) ).equals( "connection" ) )
@


1.7
log
@Ported Helm from WebMacro to Velocity.
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.6 2001/03/07 01:53:26 lucas Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.6 2001/03/07 01:53:26 lucas Exp $";
d206 9
@


1.6
log
@Corrected regex madness for Torque upgrade.  -dlr
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.5 2001/02/21 05:00:37 dlr Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.5 2001/02/21 05:00:37 dlr Exp $";
d239 1
a239 1
        org.webmacro.servlet.WebContext context 
d253 1
a253 1
        org.webmacro.servlet.WebContext inContext,
d279 1
a279 1
        org.webmacro.servlet.WebContext inContext,
d308 1
a308 1
        org.webmacro.servlet.WebContext inContext,
@


1.6.6.1
log
@Stop the carrying of 'Connection: close' headers across Noodle.
'RFC2068 14.10 Connection' has explicit wording that Proxy's should not
propagate 'Connection' headers (This fixes issue where people behind
forward proxies could not view static content on tigris.org).

Noodle was copying the client request headers to the proxy request twice:
once in the joist filter CopyAllHeaders and again in the helm filter,
HelmHeaders.  Cut out the joist CopyAllHeaders filter to get rid of
the double headers (Also means I only have to filter in one place for
'Connection' headers).

Reviewed by:  Jason Robbins
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.6 2001/03/07 01:53:26 lucas Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.6 2001/03/07 01:53:26 lucas Exp $";
a205 9
            if( header.equalsIgnoreCase( "connection" ) )
            {
                // RFC2068 14.10 is explicit that proxies should not 
                // propagate 'Connection:' headers.  A propagated 
                // 'Connection: close' was causing HN to throw an 
                // IOException.
                //
                continue;
            }
@


1.6.6.2
log
@remove accept-encoding header since we can't handle encodings other than
the default currently
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.6.6.1 2001/06/19 15:40:40 stack Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.6.6.1 2001/06/19 15:40:40 stack Exp $";
d174 1
a174 1
            = new gnu.regexp.RE( "^helm-|^joist-|^accept-encoding$" );
@


1.5
log
@Corrected compile time errors caused by move to Turbine Peer system.
@
text
@a57 1

d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.4 2001/01/26 18:29:08 edk Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.4 2001/01/26 18:29:08 edk Exp $";
@


1.4
log
@readding all the files as part of the process of returning to the way
things were as of tuesday
@
text
@a49 1
// Java Servlet Classes
d53 2
d57 1
a57 1
import HTTPClient.*;
d78 1
a78 1
* @@version $Id: HelmHeaders.java,v 1.2 2001/01/08 23:25:03 dlr Exp $
d88 1
a88 1
        = "$Id: HelmHeaders.java,v 1.2 2001/01/08 23:25:03 dlr Exp $";
d169 1
a169 1
    public HelmHeaders( )
d193 1
a193 1
        HttpServletRequest req = noodleData.getRequest( );
d203 2
a204 2
        label_header_loop: for( Enumeration e = req.getHeaderNames( ); 
                                    e.hasMoreElements( ); )
d206 1
a206 1
            header = ( ( String )e.nextElement( ) ).trim( );
d222 1
a222 1
            noodleData.getHeadersToSend( ).addElement( tmp );
d241 1
a241 1
            = inNoodleData.getContext( );  
d263 1
a263 1
            strPtr = ( ( org.tigris.helm.domain.Domain )objPtr ).getName( );
d288 9
a296 18
            try 
            {
                org.tigris.helm.project.Project project 
                    = ( org.tigris.helm.project.Project )objPtr;
                strPtr = project.getID( );
                addHeader( inNoodleData, 
                            HELM_HELM_PROJECT_PROJECT_ID, 
                            strPtr );
                strPtr = project.getName( );
                addHeader( inNoodleData, 
                            HELM_HELM_PROJECT_PROJECT_NAME, 
                            strPtr );
            }
            
            catch( com.workingdogs.village.DataSetException exception )
            {   
                log.info( exception.toString( ) );
            }
d317 13
a329 22
            try
            {
                org.tigris.helm.domain.User user 
                    = ( org.tigris.helm.domain.User )objPtr;
                strPtr = user.getID( );
                addHeader( inNoodleData, 
                            JOIST_USER_ID, 
                            strPtr );
                strPtr = user.getName( );
                addHeader( inNoodleData, 
                            JOIST_USER_NAME, 
                            strPtr );
                strPtr = user.getLoginID( );
                addHeader( inNoodleData, 
                            JOIST_USER_LOGIN_ID, 
                            strPtr );
            }
            
            catch( com.workingdogs.village.DataSetException exception )
            {   
                log.info( exception.toString( ) );
            }
d349 1
a349 1
        if( inValue != null && inValue.length( ) > 0 )
d352 1
a352 1
            inNoodleData.getHeadersToSend( ).addElement( headerPtr );
@


1.4.2.1
log
@Porting to the Turbine Peer system.  -dlr and leonardr
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.4 2001/01/26 18:29:08 edk Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.4 2001/01/26 18:29:08 edk Exp $";
@


1.3
log
@revert this stuff to its state as of 2001/01/24 12:42:00 GMT -- with
the following exceptions, which have some different modifications so
they'll work with changes which have happened in joist:

ProjectNewsEdit.java
SkinManager.java
SkinStyleElementValueManager.java
StyleElementManager.java
StyleManager.java

it compiles.  i dunno if it works, though.
@
text
@@


1.2
log
@Corrected a bunch of regressions to previous User instantion method.  Deprecated User's getUserID() method in favor of getID() for better conformance with BusinessObject interface and orthoginality with other business objects.  Added a guest user and interface.  Added some JavaDoc to User.
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.1.1.1 2000/11/12 21:16:27 dlr Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.1.1.1 2000/11/12 21:16:27 dlr Exp $";
@


1.1
log
@Initial revision
@
text
@d77 1
a77 1
* @@version $Id: HelmHeaders.java,v 1.3 2000/11/05 03:28:25 stack Exp $
d87 1
a87 1
        = "$Id: HelmHeaders.java,v 1.3 2000/11/05 03:28:25 stack Exp $";
d329 1
a329 1
                strPtr = user.getUserID( );
@


1.1.1.1
log
@Merging newhelm tree into helm, as per IZ issue #557.  Previous major version of helm is tagged TIGRIS_NOV_11_2000.
@
text
@@
