[Fedora-directory-commits] ldapserver/ldap/cm fedora-patch.inf, 1.1.2.17, 1.1.2.18 redhat-patch.inf, 1.1.2.18, 1.1.2.19
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/cm
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv12586
Modified Files:
Tag: Directory71RtmBranch
fedora-patch.inf redhat-patch.inf
Log Message:
Resolves: #203670
Summary: Tracking bug for Directory Server 7.1 SP 4
Description: updating patch info file to include the following patches:
240583, 428764 + libdb42
Index: fedora-patch.inf
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/cm/Attic/fedora-patch.inf,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -r1.1.2.17 -r1.1.2.18
--- fedora-patch.inf 14 Jan 2008 19:26:47 -0000 1.1.2.17
+++ fedora-patch.inf 16 Jan 2008 01:55:56 -0000 1.1.2.18
@@ -49,11 +49,12 @@
base: ...
file: 147585: plugins/slapd/slapi/examples/testpreop.c
-file: 164834,165641,166229,173687,175063,202890,247725,297221,196523,208058,311851: bin/slapd/server/ns-slapd
-file: 155276,164834,164843,165641,166229,173687,175063,179135,179137,202890,247725,297221,240897: bin/slapd/server/libslapd.*
+file: 164834,165641,166229,173687,175063,202890,247725,297221,196523,208058,311851,240583: bin/slapd/server/ns-slapd
+file: 155276,164834,164843,165641,166229,173687,175063,179135,179137,202890,247725,297221,240897,428764: bin/slapd/server/libslapd.*
file: 204808: bin/slapd/server/migratecred
file: 204808: bin/slapd/server/mmldif
file: 204808: bin/slapd/server/pwdhash
+file: xxxxxx: bin/slapd/server/libdb42.*
file: 151678: bin/slapd/admin/bin/ds_newinst
file: 151678: bin/slapd/admin/bin/ds_create
file: 155276,164843,165641,165827,165862,166012,175063,175897,179135,179137,179810,189264,192901,231507,183222,314851,171081,243820,219586: lib/libback-ldbm.*
Index: redhat-patch.inf
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/cm/Attic/redhat-patch.inf,v
retrieving revision 1.1.2.18
retrieving revision 1.1.2.19
diff -u -r1.1.2.18 -r1.1.2.19
--- redhat-patch.inf 14 Jan 2008 19:26:47 -0000 1.1.2.18
+++ redhat-patch.inf 16 Jan 2008 01:55:56 -0000 1.1.2.19
@@ -49,11 +49,12 @@
base: /share/builds/products/server/directry/7.1
file: 147585: plugins/slapd/slapi/examples/testpreop.c
-file: 164834,165641,166229,173687,175063,202890,247725,297221,196523,208058,311851: bin/slapd/server/ns-slapd
-file: 155276,164834,164843,165641,166229,173687,175063,179135,179137,202890,247725,297221,240897: bin/slapd/server/libslapd.*
+file: 164834,165641,166229,173687,175063,202890,247725,297221,196523,208058,311851,240583: bin/slapd/server/ns-slapd
+file: 155276,164834,164843,165641,166229,173687,175063,179135,179137,202890,247725,297221,240897,428764: bin/slapd/server/libslapd.*
file: 204808: bin/slapd/server/migratecred
file: 204808: bin/slapd/server/mmldif
file: 204808: bin/slapd/server/pwdhash
+file: xxxxxx: bin/slapd/server/libdb42.*
file: 151678: bin/slapd/admin/bin/ds_newinst
file: 151678: bin/slapd/admin/bin/ds_create
file: 155276,164843,165641,165827,165862,166012,175063,175897,179135,179137,179810,189264,192901,231507,183222,314851,171081,243820,219586: lib/libback-ldbm.*
16 years, 3 months
[Fedora-directory-commits] ldapserver/ldap/servers/slapd filterentry.c, 1.4, 1.4.2.1
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv12525
Modified Files:
Tag: Directory71RtmBranch
filterentry.c
Log Message:
Resolves: #428764
Summary: memory leaks in extensible filter code
Description: applied the patch to Directory71RtmBranch
Index: filterentry.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/filterentry.c,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- filterentry.c 19 Apr 2005 22:07:36 -0000 1.4
+++ filterentry.c 16 Jan 2008 01:50:17 -0000 1.4.2.1
@@ -436,6 +436,7 @@
bv.bv_len = strlen(val);
bvec[0] = &bv;
attrlist_merge (&dnAttrs, type, bvec);
+ slapi_ch_free_string( &type );
}
}
ldap_value_free (avas);
@@ -500,7 +501,7 @@
/* B) Also check the DN attributes for the attribute value */
Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e));
rc= test_ava_filter( callers_pb, e, dnattrs, &a, LDAP_FILTER_EQUALITY, 0 /* Don't Verify Access */ , 0 /* don't just verify access */, access_check_done );
- slapi_attr_free( &dnattrs );
+ attrlist_free( dnattrs );
}
}
else
@@ -515,7 +516,7 @@
/* D & F) Also check the DN attributes for the attribute value */
Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e));
mrf->mrf_match (mrf->mrf_object, e, dnattrs);
- slapi_attr_free( &dnattrs );
+ attrlist_free( dnattrs );
}
}
}
@@ -568,7 +569,7 @@
/* B) Also check the DN attributes for the attribute value */
Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e));
rc= test_ava_filter( callers_pb, e, dnattrs, &a, LDAP_FILTER_EQUALITY, 0 /* Don't Verify Access */ , 0 /* don't just verify access */, access_check_done );
- slapi_attr_free( &dnattrs );
+ attrlist_free( dnattrs );
}
}
else
@@ -583,7 +584,7 @@
/* D & F) Also check the DN attributes for the attribute value */
Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e));
mrf->mrf_match (mrf->mrf_object, e, dnattrs);
- slapi_attr_free( &dnattrs );
+ attrlist_free( dnattrs );
}
}
}
16 years, 3 months
[Fedora-directory-commits] ldapserver/ldap/servers/slapd saslbind.c, 1.9.2.5, 1.9.2.6
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10342/ldap/servers/slapd
Modified Files:
Tag: Directory71RtmBranch
saslbind.c
Log Message:
Resolves: #240583
Summary: add SASL support for LDCLT and Rsearch tools
Description: applied the patch to Directory71RtmBranch
- SASL Mutex Support
- switched cyrus sasl version to v2.1.22
Index: saslbind.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/saslbind.c,v
retrieving revision 1.9.2.5
retrieving revision 1.9.2.6
diff -u -r1.9.2.5 -r1.9.2.6
--- saslbind.c 10 Jan 2008 01:12:18 -0000 1.9.2.5
+++ saslbind.c 15 Jan 2008 21:19:20 -0000 1.9.2.6
@@ -60,37 +60,33 @@
* utility functions needed by the sasl library
*/
-int sasl_os_gethost(char *buf, int len)
-{
- int rc;
-
- rc = gethostname(buf, len);
- LDAPDebug(LDAP_DEBUG_TRACE, "sasl_os_gethost %s\n", buf, 0, 0);
- return ( rc == 0 ? SASL_OK : SASL_FAIL );
-}
-
-void *sasl_mutex_alloc(void)
+void *nssasl_mutex_alloc(void)
{
return PR_NewLock();
}
-int sasl_mutex_lock(void *mutex)
+int nssasl_mutex_lock(void *mutex)
{
PR_Lock(mutex);
return SASL_OK;
}
-int sasl_mutex_unlock(void *mutex)
+int nssasl_mutex_unlock(void *mutex)
{
if (PR_Unlock(mutex) == PR_SUCCESS) return SASL_OK;
return SASL_FAIL;
}
-void sasl_mutex_free(void *mutex)
+void nssasl_mutex_free(void *mutex)
{
PR_DestroyLock(mutex);
}
+void nssasl_free(void *ptr)
+{
+ slapi_ch_free(&ptr);
+}
+
/*
* sasl library callbacks
*/
@@ -542,6 +538,20 @@
LDAPDebug(LDAP_DEBUG_TRACE, "sasl service fqdn is: %s\n",
serverfqdn, 0, 0);
+ /* Set SASL memory allocation callbacks */
+ sasl_set_alloc(
+ (sasl_malloc_t *)slapi_ch_malloc,
+ (sasl_calloc_t *)slapi_ch_calloc,
+ (sasl_realloc_t *)slapi_ch_realloc,
+ (sasl_free_t *)nssasl_free );
+
+ /* Set SASL mutex callbacks */
+ sasl_set_mutex(
+ (sasl_mutex_alloc_t *)nssasl_mutex_alloc,
+ (sasl_mutex_lock_t *)nssasl_mutex_lock,
+ (sasl_mutex_unlock_t *)nssasl_mutex_unlock,
+ (sasl_mutex_free_t *)nssasl_mutex_free);
+
result = sasl_server_init(ids_sasl_callbacks, "iDS");
if (result != SASL_OK) {
16 years, 3 months
[Fedora-directory-commits] ldapserver component_versions.mk, 1.35.2.10, 1.35.2.11 internal_comp_deps.mk, 1.24.2.3, 1.24.2.4
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10342
Modified Files:
Tag: Directory71RtmBranch
component_versions.mk internal_comp_deps.mk
Log Message:
Resolves: #240583
Summary: add SASL support for LDCLT and Rsearch tools
Description: applied the patch to Directory71RtmBranch
- SASL Mutex Support
- switched cyrus sasl version to v2.1.22
Index: component_versions.mk
===================================================================
RCS file: /cvs/dirsec/ldapserver/Attic/component_versions.mk,v
retrieving revision 1.35.2.10
retrieving revision 1.35.2.11
diff -u -r1.35.2.10 -r1.35.2.11
--- component_versions.mk 26 Jul 2006 06:17:58 -0000 1.35.2.10
+++ component_versions.mk 15 Jan 2008 21:19:19 -0000 1.35.2.11
@@ -198,7 +198,7 @@
SASL_VERSDIR=cyrus
endif
ifndef SASL_RELDATE
- SASL_RELDATE=v2.1.20
+ SASL_RELDATE=v2.1.22/20080115.1
endif
# jakarta/axis for DSMLGW
Index: internal_comp_deps.mk
===================================================================
RCS file: /cvs/dirsec/ldapserver/Attic/internal_comp_deps.mk,v
retrieving revision 1.24.2.3
retrieving revision 1.24.2.4
diff -u -r1.24.2.3 -r1.24.2.4
--- internal_comp_deps.mk 26 May 2006 23:43:39 -0000 1.24.2.3
+++ internal_comp_deps.mk 15 Jan 2008 21:19:19 -0000 1.24.2.4
@@ -255,8 +255,8 @@
endif # LDAPSDK_SOURCE_ROOT
ifndef SASL_SOURCE_ROOT
-#SASL_RELEASE = $(COMPONENTS_DIR_DEV)/sasl/$(SASL_VERSDIR)/$(SASL_RELDATE)/$(NSOBJDIR_NAME)
-SASL_RELEASE = $(COMPONENTS_DIR)/sasl/$(SASL_VERSDIR)/$(SASL_RELDATE)/$(NSOBJDIR_NAME)
+SASL_RELEASE = $(COMPONENTS_DIR_DEV)/sasl/$(SASL_VERSDIR)/$(SASL_RELDATE)/$(NSOBJDIR_NAME)
+#SASL_RELEASE = $(COMPONENTS_DIR)/sasl/$(SASL_VERSDIR)/$(SASL_RELDATE)/$(NSOBJDIR_NAME)
SASL_DEP = $(SASL_INCLUDE)/sasl.h
ifndef SASL_PULL_METHOD
SASL_PULL_METHOD = $(COMPONENT_PULL_METHOD)
16 years, 3 months
[Fedora-directory-commits] dsgw cgiutil.c, 1.2, 1.3 dnedit.c, 1.2, 1.3 doauth.c, 1.1.1.1, 1.2 dsgwutil.c, 1.4, 1.5 entrydisplay.c, 1.1.1.1, 1.2
by Doctor Conrad
Author: rmeggins
Update of /cvs/dirsec/dsgw
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15920/dsgw
Modified Files:
cgiutil.c dnedit.c doauth.c dsgwutil.c entrydisplay.c
Log Message:
Still need to unescape some form vars
The edit CGI requires the template name to be prefixed with tmplname=
Index: cgiutil.c
===================================================================
RCS file: /cvs/dirsec/dsgw/cgiutil.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- cgiutil.c 14 Jan 2008 22:58:30 -0000 1.2
+++ cgiutil.c 15 Jan 2008 18:23:43 -0000 1.3
@@ -192,9 +192,8 @@
void
dsgw_form_unescape(char *str)
{
- /* this is now a no-op - get/post_begin already unescapes
- the values - we must use get/post_begin rather than
- parsing URL/post arguments */
+ form_unescape(str);
+
return;
}
@@ -480,3 +479,11 @@
ucnv_reset(utf8Converter);
return -1;
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: dnedit.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dnedit.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dnedit.c 14 Jan 2008 22:58:30 -0000 1.2
+++ dnedit.c 15 Jan 2008 18:23:43 -0000 1.3
@@ -391,7 +391,7 @@
"<FRAMESET BORDER=1 FRAMEBORDER=1 ROWS=230,*,0,0 "
"SCROLLING=\"NO\" NORESIZE onLoad=\"genOutputFrame"
"(this.outputFrame, this.dnlist);\">\n" );
- dsgw_emitf( " <FRAME SRC=\"%s?%s&dn=%s&context=%s&DNATTR=%s&"
+ dsgw_emitf( " <FRAME SRC=\"%s?tmplname=%s&dn=%s&context=%s&DNATTR=%s&"
"DNDESC=%s\" NAME=\"controlFrame\" SCROLLING=\"no\">\n",
dsgw_getvp( DSGW_CGINUM_EDIT ), tmplname, edn, context, attrname,
attrdesc );
Index: doauth.c
===================================================================
RCS file: /cvs/dirsec/dsgw/doauth.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- doauth.c 1 Jun 2006 19:43:46 -0000 1.1.1.1
+++ doauth.c 15 Jan 2008 18:23:43 -0000 1.2
@@ -202,7 +202,7 @@
if( password_expiring != -1 ) {
if ( encodeddn != NULL && strlen( encodeddn ) > 0 ) {
- dsgw_emitf( "var editdesturl = '%s?passwd&dn=%s&context=%s';\n",
+ dsgw_emitf( "var editdesturl = '%s?tmplname=passwd&dn=%s&context=%s';\n",
dsgw_getvp( DSGW_CGINUM_EDIT ), encodeddn, context );
} else {
dsgw_emitf( "var editdesturl=null;\n" );
@@ -415,3 +415,11 @@
fflush( stdout );
return;
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 4
+ End:
+*/
Index: dsgwutil.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dsgwutil.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- dsgwutil.c 14 Jan 2008 22:58:30 -0000 1.4
+++ dsgwutil.c 15 Jan 2008 18:23:43 -0000 1.5
@@ -1037,7 +1037,7 @@
"<!-- Hide from non-JavaScript browsers\n" );
if ( encodeddn != NULL && strlen( encodeddn ) > 0 ) {
- dsgw_emitf( "var editdesturl = '%s?passwd&dn=%s&context=%s';\n",
+ dsgw_emitf( "var editdesturl = '%s?tmplname=passwd&dn=%s&context=%s';\n",
dsgw_getvp( DSGW_CGINUM_EDIT ), encodeddn, context );
} else {
dsgw_emitf( "var editdesturl=null;\n" );
Index: entrydisplay.c
===================================================================
RCS file: /cvs/dirsec/dsgw/entrydisplay.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- entrydisplay.c 1 Jun 2006 19:43:38 -0000 1.1.1.1
+++ entrydisplay.c 15 Jan 2008 18:23:43 -0000 1.2
@@ -831,7 +831,7 @@
if ( tip->dsti_entrydn != NULL ) {
encodeddn = dsgw_strdup_escaped( tip->dsti_entrydn );
dsgw_emits( "function EditEntryAs(template)\n{\n" );
- dsgw_emitf( " newurl = '%s?' + template + '&context=%s&dn=%s';\n",
+ dsgw_emitf( " newurl = '%s?tmplname=' + template + '&context=%s&dn=%s';\n",
dsgw_getvp( DSGW_CGINUM_EDIT ), context, encodeddn );
dsgw_emits( "\twindow.location.href = newurl;\n}\n" );
}
@@ -2857,7 +2857,7 @@
"document.writeln( \\'<FONT SIZE=+1>\\' + dsmodify_info +"
" \\'</FONT>\\' );"
" else "
- "parent.document.location.href=\\'%s?%s"
+ "parent.document.location.href=\\'%s?tmplname=%s"
"&context=%s&dn=\\' + dsmodify_dn + \\'&info=\\' + escape(dsmodify_info)\">\n",
dsgw_getvp( DSGW_CGINUM_EDIT ), template, context );
}
16 years, 3 months
[Fedora-directory-commits] dsgw dosearch.c,1.2,1.3
by Doctor Conrad
Author: rmeggins
Update of /cvs/dirsec/dsgw
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv17549
Modified Files:
dosearch.c
Log Message:
Check ldapquery for NULL
Index: dosearch.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dosearch.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dosearch.c 14 Jan 2008 22:58:30 -0000 1.2
+++ dosearch.c 14 Jan 2008 23:34:27 -0000 1.3
@@ -82,12 +82,14 @@
!strcmp(varname, "dn") || !strcmp(varname, "context")) {
continue;
}
- ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(varname) + 1));
- PL_strcat(ldapquery, varname);
- if (val && *val) {
- ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(val) + 2));
- PL_strcat(ldapquery, "=");
- PL_strcat(ldapquery, val);
+ if (ldapquery != NULL) {
+ ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(varname) + 1));
+ PL_strcat(ldapquery, varname);
+ if (val && *val) {
+ ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(val) + 2));
+ PL_strcat(ldapquery, "=");
+ PL_strcat(ldapquery, val);
+ }
}
}
@@ -346,3 +348,11 @@
ldap_unbind( ld );
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
16 years, 3 months
[Fedora-directory-commits] dsgw/html eduser.html,1.1.1.1,1.2
by Doctor Conrad
Author: rmeggins
Update of /cvs/dirsec/dsgw/html
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv9445/dsgw/html
Modified Files:
eduser.html
Log Message:
Initial pass at using adminutil for CGI code
Fix resource file usage
Add uri mappings for legacy urls
Index: eduser.html
===================================================================
RCS file: /cvs/dirsec/dsgw/html/eduser.html,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- eduser.html 1 Jun 2006 19:43:48 -0000 1.1.1.1
+++ eduser.html 14 Jan 2008 22:58:30 -0000 1.2
@@ -57,6 +57,6 @@
<td width=33% align=center><input type=submit value="Edit User"></td>
<td width=34% align=center><input type=reset value="Reset"></td>
<td width=33% align=center><input type=button value=" Help " onclick="var hwin=window.open('', 'infowin_httpd',
-'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?!usradd';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?usradd'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
+'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?tutor=!usradd';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?tutor=usradd'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
</tr></table></center>
</form>
16 years, 3 months
[Fedora-directory-commits] dsgw Makefile.am, 1.5, 1.6 auth.c, 1.1.1.1, 1.2 cgiutil.c, 1.1.1.1, 1.2 config.c, 1.3, 1.4 csearch.c, 1.1.1.1, 1.2 dnedit.c, 1.1.1.1, 1.2 dosearch.c, 1.1.1.1, 1.2 dsgw-httpd.conf.in, 1.3, 1.4 dsgw.h, 1.3, 1.4 dsgwgetlang.c, 1.2, 1.3 dsgwutil.c, 1.3, 1.4 edit.c, 1.1.1.1, 1.2 emitf.c, 1.1.1.1, 1.2 error.c, 1.1.1.1, 1.2 htmlout.c, 1.1.1.1, 1.2 htmlparse.c, 1.1.1.1, 1.2 lang.c, 1.1.1.1, 1.2 newentry.c, 1.1.1.1, 1.2 search.c, 1.1.1.1, 1.2 tutor.c, 1.1.1.1, 1.2 unauth.c, 1.1.1.1, 1.2 ut
by Doctor Conrad
Author: rmeggins
Update of /cvs/dirsec/dsgw
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv9445/dsgw
Modified Files:
Makefile.am auth.c cgiutil.c config.c csearch.c dnedit.c
dosearch.c dsgw-httpd.conf.in dsgw.h dsgwgetlang.c dsgwutil.c
edit.c emitf.c error.c htmlout.c htmlparse.c lang.c newentry.c
search.c tutor.c unauth.c utf8compare.c aclocal.m4 configure
missing install-sh depcomp config.sub config.guess compile
Makefile.in
Log Message:
Initial pass at using adminutil for CGI code
Fix resource file usage
Add uri mappings for legacy urls
Index: Makefile.am
===================================================================
RCS file: /cvs/dirsec/dsgw/Makefile.am,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Makefile.am 14 Jan 2008 22:31:17 -0000 1.5
+++ Makefile.am 14 Jan 2008 22:58:30 -0000 1.6
@@ -180,9 +180,9 @@
#nodist_context_SCRIPTS = setup-dirsrv-gw
# add more here for localized bundles
-nodist_property_DATA = dsgw_root.res
+nodist_property_DATA = root.res en.res en_US.res
-MOSTLYCLEANFILES = dsgw.conf dsgw_root.res dsgw.properties setup dsgw-httpd.conf
+MOSTLYCLEANFILES = dsgw.conf root.res dsgw.properties setup dsgw-httpd.conf en.res en_US.res
# Resource Bundle Compiler
if WINNT
@@ -194,13 +194,13 @@
# The root resource bundle is based on English (en) locale;
# This bundle must be always distributed and there is no need to have
# *_en.properties resource bundle source files.
-RESOURCE_BUNDLES_ROOT = dsgw_root.res
+RESOURCE_BUNDLES_ROOT = root.res
# French resource bundles (for the French localization in the future)
-RESOURCE_BUNDLES_FR = dsgw_fr.res
+RESOURCE_BUNDLES_FR = fr.res
# German resource bundles (for the German localization in the future)
-RESOURCE_BUNDLES_DE = dsgw_de.res
+RESOURCE_BUNDLES_DE = de.res
# By default create only the default root bundle (english).
# Other locales should be created during the localization process.
@@ -212,14 +212,17 @@
dsgw.properties: ./propmaker dbtdsgw.h
./propmaker $@
-dsgw_root.res : dsgw.properties
- $(ICU_GENRB) -s. -d. --encoding 8859-1 --package-name dsgw $+
+root.res : dsgw.properties
+ $(ICU_GENRB) -s. -d. --encoding 8859-1 $+
-%_fr.res : %_fr.properties
- $(ICU_GENRB) -s. -d. --encoding 8859-2 --package-name dsgw $+
+fr.res : fr.properties
+ $(ICU_GENRB) -s. -d. --encoding 8859-2 $+
-%_de.res : %_de.properties
- $(ICU_GENRB) -s. -d. --encoding 8859-2 --package-name dsgw $+
+de.res : de.properties
+ $(ICU_GENRB) -s. -d. --encoding 8859-2 $+
+
+en.res en_US.res : root.res
+ cp -p $< $@
# these are for the config files and scripts that we need to generate and replace
# the paths and other tokens with the real values set during configure/make
Index: auth.c
===================================================================
RCS file: /cvs/dirsec/dsgw/auth.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- auth.c 1 Jun 2006 19:43:39 -0000 1.1.1.1
+++ auth.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -54,31 +54,6 @@
) {
int reqmethod;
char *binddn = NULL;
- char *qs = NULL;
-
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*Get the context.*/
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
- /*Get the dn*/
- if ( !strncasecmp( p, "dn=", 3 )) {
- binddn = dsgw_ch_strdup( p + 3 );
- dsgw_form_unescape( binddn );
- continue;
- }
- }
- free( qs ); qs = NULL;
- }
reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
@@ -89,6 +64,7 @@
if ( reqmethod == DSGW_METHOD_POST ) {
post_request();
} else {
+ binddn = dsgw_get_cgi_var("dn", DSGW_CGIVAR_OPTIONAL);
get_request(binddn);
}
Index: cgiutil.c
===================================================================
RCS file: /cvs/dirsec/dsgw/cgiutil.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- cgiutil.c 1 Jun 2006 19:43:44 -0000 1.1.1.1
+++ cgiutil.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -35,6 +35,15 @@
* Copyright (C) 2005 Red Hat, Inc.
* All rights reserved.
--- END COPYRIGHT BLOCK --- */
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
+
/*
* cgiutil.c -- CGI-related utility functions -- HTTP gateway
*
@@ -49,12 +58,6 @@
#include <unicode/ucnv.h>
#include <unicode/ustring.h>
-/* globals */
-static char **formvars = NULL;
-
-/* functions */
-static char **dsgw_string_to_vec(char *in);
-
static void
dsgw_vec_convert (char** vec)
/* Convert input from the charset named in it (if any) to UTF_8.
@@ -135,8 +138,8 @@
int
dsgw_post_begin(FILE *in)
{
- char *ct, *vars = NULL, *tmp = NULL;
- int cl;
+ char *ct, *tmp = NULL;
+ char **vars = NULL;
if (( ct = getenv( "CONTENT_TYPE" )) == NULL ||
strcasecmp( ct, "application/x-www-form-urlencoded" ) != 0 ||
@@ -144,26 +147,20 @@
return( DSGW_ERR_BADFORMDATA );
}
- cl = atoi(tmp);
-
- vars = (char *)dsgw_ch_malloc(cl+1);
-
- if ( fread(vars, 1, cl, in) != cl ) {
+ if (0 != post_begin(in)) {
return( DSGW_ERR_BADFORMDATA );
}
- vars[cl] = '\0';
#ifdef DSGW_DEBUG
dsgw_log ("vars=\"%s\"\n", vars);
#endif
- formvars = dsgw_string_to_vec (vars);
- free( vars );
- dsgw_vec_convert (formvars);
+ vars = get_input_ptr();
+ dsgw_vec_convert (vars); /* convert to utf8 */
#ifdef DSGW_DEBUG
- dsgw_logstringarray( "formvars", formvars );
+ dsgw_logstringarray( "formvars", vars );
if (0) {
- char** var = formvars;
+ char** var = vars;
if (var) {
printf ("Content-type: text/html;charset=UTF-8\n\n<HTML><BODY>\n");
for (; *var; ++var) {
@@ -178,37 +175,27 @@
return( 0 );
}
+void
+dsgw_get_begin(char *qs)
+{
+ char **vars = NULL;
+
+ get_begin(qs);
+ vars = get_input_ptr();
+ dsgw_vec_convert (vars); /* convert to utf8 */
+
+ return;
+}
+
/* Unescape the %xx variables as they're sent in. */
void
dsgw_form_unescape(char *str)
{
- register int x = 0, y = 0;
- int l = strlen(str);
- char digit;
-
- while(x < l) {
- if((str[x] == '%') && (x < (l - 2))) {
- ++x;
- digit = (str[x] >= 'A' ?
- ((str[x] & 0xdf) - 'A')+10 : (str[x] - '0'));
- digit *= 16;
-
- ++x;
- digit += (str[x] >= 'A' ?
- ((str[x] & 0xdf) - 'A')+10 : (str[x] - '0'));
-
- str[y] = digit;
- }
- else if(str[x] == '+') {
- str[y] = ' ';
- } else {
- str[y] = str[x];
- }
- x++;
- y++;
- }
- str[y] = '\0';
+ /* this is now a no-op - get/post_begin already unescapes
+ the values - we must use get/post_begin rather than
+ parsing URL/post arguments */
+ return;
}
@@ -216,22 +203,11 @@
char *
dsgw_get_cgi_var(char *varname, int required)
{
- register int x = 0;
- int len = strlen(varname);
- char *ans = NULL;
-
- while(formvars != NULL && formvars[x]) {
- /* We want to get rid of the =, so len, len+1 */
- if((!strncmp(formvars[x], varname, len)) &&
- (*(formvars[x]+len) == '=')) {
- ans = dsgw_ch_strdup(formvars[x] + len + 1);
- if(!strcmp(ans, "")) {
- free(ans);
- ans = NULL;
- }
- break;
- } else
- x++;
+ char *ans = get_cgi_var(varname, NULL, NULL);
+ if (!ans) { /* try all uppercase varname */
+ char *upvarname = dsgw_utf8StrToUpper(varname);
+ ans = get_cgi_var(upvarname, NULL, NULL);
+ PL_strfree(upvarname);
}
if ( required == DSGW_CGIVAR_REQUIRED && ans == NULL ) {
@@ -311,43 +287,6 @@
}
-/* Convert the input from stdin to a usable variable vector. */
-static char **
-dsgw_string_to_vec(char *in)
-{
- char **ans;
- int vars = 0;
- register int x = 0;
- char *tmp;
-
- while(in[x])
- if(in[x++]=='=')
- vars++;
-
- ans = (char **) dsgw_ch_malloc((sizeof(char *)) * (vars+1));
- if (ans) {
- x=0;
- /* strtok() is not MT safe, but it is okay to call here because it is used in monothreaded env */
- tmp = strtok(in, "&");
- if (tmp && *tmp && strchr(tmp, '=')) {
- ans[x]=dsgw_ch_strdup(tmp);
- dsgw_form_unescape(ans[x++]);
-
- while((x <= vars) && (tmp = strtok(NULL, "&"))) {
- if ( strchr( tmp, '=' ) == NULL ) {
- break;
- }
- ans[x] = dsgw_ch_strdup(tmp);
- dsgw_form_unescape(ans[x++]);
- }
- }
- ans[x] = NULL;
- }
-
- return(ans);
-}
-
-
/*
* Step through all the CGI POSTed variables. A malloc'd copy of the variable
* name is returned and *valuep is set to point to the value (not malloc'd).
@@ -361,6 +300,7 @@
{
char *name;
int namelen;
+ char **formvars = get_input_ptr();
if ( formvars == NULL || formvars[ *indexp ] == NULL ) {
return( NULL );
Index: config.c
===================================================================
RCS file: /cvs/dirsec/dsgw/config.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- config.c 14 Jan 2008 22:31:17 -0000 1.3
+++ config.c 14 Jan 2008 22:58:30 -0000 1.4
@@ -35,8 +35,9 @@
* Copyright (C) 2005 Red Hat, Inc.
* All rights reserved.
--- END COPYRIGHT BLOCK --- */
+
/*
- * config.c -- parse config file for directory server gateway
+ * Config.c -- parse config file for directory server gateway
*/
@@ -119,7 +120,6 @@
gc->gc_docdir = DSGW_DOCDIR_HTTP;
gc->gc_tmpldir = DSGW_TMPLDIR_HTTP; /* may be overridden below */
gc->gc_urlpfxmain = DSGW_URLPREFIX_MAIN_HTTP; /* may be overridden below */
- /*gc->gc_urlpfxcgi = DSGW_URLPREFIX_CGI_HTTP;*/
gc->gc_urlpfxcgi = CGIURIBASE; /* may be overridden below */
gc->gc_binddn = gc->gc_bindpw = "";
gc->gc_charset = NULL; /* implicitly ISO-8859-1 */
@@ -216,21 +216,17 @@
fname = dsgw_ch_malloc( len+MAXPATHLEN );
if ( GetFileForLanguage( path, gc->gc_ClientLanguage, fname ) < 0 ) {
if (context == NULL) {
- PR_snprintf( fname, len+MAXPATHLEN, "%s%s", DSGW_CONFIGDIR_HTTP,
+ PR_snprintf( fname, len+MAXPATHLEN, "%s/%s", DSGW_CONFIGDIR_HTTP,
DSGW_CONFIGFILE);
} else {
- PR_snprintf( fname, len+MAXPATHLEN, "%s%s.conf",
+ PR_snprintf( fname, len+MAXPATHLEN, "%s/%s.conf",
DSGW_CONTEXTDIR_HTTP, context);
}
}
free( path );
if (context != NULL) {
- char urlpfx[MAXPATHLEN];
- /*set the urlpfxmain to be "lang?context=CONTEXT&file="*/
- /*sprintf(urlpfx, "%slang?context=%s&file=", DSGW_URLPREFIX_CGI_HTTP, context);*/
- PR_snprintf(urlpfx, MAXPATHLEN, "%s?context=%s&file=", dsgw_getvp(DSGW_CGINUM_LANG), context);
- gc->gc_urlpfxmain = dsgw_ch_strdup( urlpfx );
+ gc->gc_urlpfxmain = PR_smprintf("%s?context=%s&file=", dsgw_getvp(DSGW_CGINUM_LANG), context);
}
read_dsgwconfig( fname, NULL, gc->gc_admserv, 0 );
@@ -1197,7 +1193,7 @@
* Description: context is the name of the config file
* that is passed into the CGI.
* Let's say context = pb
- * then it gets translated into: ../context/pb.conf
+ * then it gets translated into: CONTEXTDIR/pb.conf
* so we have to make sure that context
* only contains numbers or letters, and nothing else
*
@@ -1500,3 +1496,11 @@
}
return result;
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: csearch.c
===================================================================
RCS file: /cvs/dirsec/dsgw/csearch.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- csearch.c 1 Jun 2006 19:43:40 -0000 1.1.1.1
+++ csearch.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -54,41 +54,8 @@
#endif
{
int reqmethod;
- char *qs = NULL;
char *fname = NULL;
- /* Parse out the file=blah.html from the query string*/
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
- if ( !strncasecmp( p, "file=", 5 )) {
- fname = dsgw_ch_strdup( p + 5 );
- dsgw_form_unescape( fname );
- continue;
- }
- }
- free( qs ); qs = NULL;
- }
-
-
reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
dsgw_send_header();
@@ -102,6 +69,7 @@
#endif
if ( reqmethod == DSGW_METHOD_POST || reqmethod == DSGW_METHOD_GET ) {
+ fname = dsgw_get_cgi_var("file", DSGW_CGIVAR_OPTIONAL);
get_request(fname);
}
Index: dnedit.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dnedit.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- dnedit.c 1 Jun 2006 19:43:46 -0000 1.1.1.1
+++ dnedit.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -48,7 +48,7 @@
int main(int argc, char *argv[] )
#endif /* DSGW_DEBUG */
{
- char *tmplname, *attrname, *attrdesc, *qs, *dn, *edn;
+ char *tmplname, *attrname, *attrdesc, *dn, *edn;
char *attrs[ 2 ], **attrvals, **xdn, *avedn, *js0, *js1;
LDAP *ld;
LDAPMessage *msgp;
@@ -67,53 +67,6 @@
* for keeping backward compatibility.
*/
tmplname = attrname = attrdesc = dn = edn = NULL;
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- char *p, *q;
- q = qs + strlen( qs );
- while ((( p = strrchr( qs, '&' )) != NULL ) || ( q - qs > 1 )) {
- if ( p )
- *p++ = '\0';
- else
- p = qs;
- q = p;
-
- if ( p != NULL && strncasecmp( p, "dn=", 3 ) == 0 ) {
- edn = dsgw_ch_strdup( p + 3 );
- dn = dsgw_ch_strdup( p + 3 );
- dsgw_form_unescape( dn );
- } else if ( p != NULL && strncasecmp( p, "template=", 9 ) == 0 ) {
- tmplname = dsgw_ch_strdup( p + 9 );
- dsgw_form_unescape( tmplname );
- } else if ( p != NULL && strncasecmp( p, "attr=", 5 ) == 0 ) {
- attrname = dsgw_ch_strdup( p + 5 );
- dsgw_form_unescape( attrname );
- } else if ( p != NULL && strncasecmp( p, "desc=", 5 ) == 0 ) {
- attrdesc = dsgw_ch_strdup( p + 5 );
- /* Don't bother unescaping it;
- we're only going to put it back in another URL. */
- } else if ( p != NULL && strncasecmp( p, "context=", 8 ) == 0) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- }
-
- }
-
- if ( !tmplname )
- dsgw_error( DSGW_ERR_MISSINGINPUT, "template", DSGW_ERROPT_EXIT,
- 0, NULL );
- if ( !attrname )
- dsgw_error( DSGW_ERR_MISSINGINPUT, "attr", DSGW_ERROPT_EXIT,
- 0, NULL );
- if ( !attrdesc )
- dsgw_error( DSGW_ERR_MISSINGINPUT, "desc", DSGW_ERROPT_EXIT,
- 0, NULL );
- } else {
- dsgw_error( DSGW_ERR_MISSINGINPUT, NULL, DSGW_ERROPT_EXIT, 0, NULL );
- }
-
- if ( dn == NULL ) {
- dsgw_error( DSGW_ERR_MISSINGINPUT, "dn", DSGW_ERROPT_EXIT, 0, NULL );
- }
(void)dsgw_init( argc, argv, DSGW_METHOD_GET );
@@ -121,6 +74,12 @@
dsgw_logstringarray( "env", env );
#endif
+ tmplname = dsgw_get_cgi_var("template", DSGW_CGIVAR_REQUIRED);
+ attrname = dsgw_get_cgi_var("attr", DSGW_CGIVAR_REQUIRED);
+ attrdesc = dsgw_get_cgi_var("desc", DSGW_CGIVAR_REQUIRED);
+ dn = dsgw_get_cgi_var("dn", DSGW_CGIVAR_REQUIRED);
+ edn = dsgw_strdup_escaped(dn);
+
dsgw_send_header();
Index: dosearch.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dosearch.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- dosearch.c 1 Jun 2006 19:43:45 -0000 1.1.1.1
+++ dosearch.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -53,10 +53,12 @@
#endif
{
int reqmethod;
- char *qs = NULL;
char *dn = NULL;
char *hostport = NULL;
char *ldapquery = NULL;
+ int index = 0;
+ char *varname = NULL;
+ char *val = NULL;
#ifndef __LP64__
#ifdef HPUX
#ifndef __ia64
@@ -65,66 +67,30 @@
#endif
#endif
#endif
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+
+ hostport = dsgw_get_cgi_var("hp", DSGW_CGIVAR_OPTIONAL);
+ ldapquery = dsgw_get_cgi_var("ldq", DSGW_CGIVAR_OPTIONAL);
+ dn = dsgw_get_cgi_var("dn", DSGW_CGIVAR_OPTIONAL);
/*
- * Parse out the GET args, if any. See the comments under
- * get_request for an explanation of what's going on here
+ * If it doesn't match any of the above, or "context", then
+ * tack it onto the end of ldapquery.
*/
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
-
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
- if ( !strncasecmp( p, "hp=", 3 )) {
- hostport = dsgw_ch_strdup( p + 3 );
- dsgw_form_unescape( hostport );
- continue;
- }
-
- if ( !strncasecmp( p, "ldq=", 4 )) {
- ldapquery = dsgw_ch_strdup( p + 4 );
- dsgw_form_unescape( ldapquery );
- continue;
- }
-
- if ( !strncasecmp( p, "dn=", 3 )) {
- dn = dsgw_ch_strdup( p + 3 );
- dsgw_form_unescape( dn );
- continue;
- }
-
- /*
- * If it doesn't match any of the above, then
- * tack it onto the end of ldapquery.
- */
- if (ldapquery != NULL) {
- ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(p) + 2));
- sprintf( ldapquery, "%s&%s", ldapquery, p );
- }
+ while ( (varname = dsgw_next_cgi_var( &index, &val )) != NULL) {
+ if (!strcmp(varname, "hp") || !strcmp(varname, "ldq") ||
+ !strcmp(varname, "dn") || !strcmp(varname, "context")) {
+ continue;
+ }
+ ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(varname) + 1));
+ PL_strcat(ldapquery, varname);
+ if (val && *val) {
+ ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(val) + 2));
+ PL_strcat(ldapquery, "=");
+ PL_strcat(ldapquery, val);
}
-
- free( qs ); qs = NULL;
}
-
- reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
-
/*
* Note: we don't call dsgw_send_header() here like we usually do because
* on a GET we may be asked to return a MIME type other than the default
Index: dsgw-httpd.conf.in
===================================================================
RCS file: /cvs/dirsec/dsgw/dsgw-httpd.conf.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- dsgw-httpd.conf.in 11 Jan 2008 21:58:09 -0000 1.3
+++ dsgw-httpd.conf.in 14 Jan 2008 22:58:30 -0000 1.4
@@ -26,12 +26,20 @@
SetEnv DSGW_CONTEXT_DIR "@contextdir@"
# Enable CGI execution for these uris in this directory
-ScriptAlias @cgiuri@ "@cgibindir@"
+ScriptAlias @cgiuri@ "@cgibindir@/"
+# legacy mapping
+ScriptAlias /clients/dsgw/bin/ "@cgibindir@/"
# URI aliases for html content
Alias @dsgwuri@ @htmldir@
Alias @orguri@ @orghtmldir@
+# legacy mappings
+Alias /clients/dsgw/html @htmldir@
+Alias /clients/dsgw/pbhtml @pbhtmldir@
+Alias /clients/dsgw/config @configdir@
+Alias /clients/dsgw/pbconfig @pbconfigdir@
+
# Allow access to the dsgw html files
<Directory "@htmldir@">
AllowOverride None
@@ -75,7 +83,7 @@
# Allow access to the cgi programs
<Directory "@cgibindir@">
AllowOverride None
- Options None
+ Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
Index: dsgw.h
===================================================================
RCS file: /cvs/dirsec/dsgw/dsgw.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- dsgw.h 14 Jan 2008 22:31:17 -0000 1.3
+++ dsgw.h 14 Jan 2008 22:58:30 -0000 1.4
@@ -108,7 +108,7 @@
#define DSGW_TMPLDIR_HTTP CONFIGDIR
#define DSGW_TMPLDIR_ADMSERV HTMLDIR
#define DSGW_DOCDIR_HTTP HTMLDIR
-#define DSGW_CONTEXTDIR_HTTP CONTEXTDIR
+#define DSGW_CONTEXTDIR_HTTP (getenv("DSGW_CONTEXT_DIR") ? getenv("DSGW_CONTEXT_DIR") : CONTEXTDIR)
#define DSGW_HTMLDIR HTMLDIR
#define DSGW_MANROOT MANUALDIR
#define DSGW_MANUALSHORTCUT ".MANUAL"
@@ -758,6 +758,7 @@
* in cgiutil.c
*/
int dsgw_post_begin( FILE *in );
+void dsgw_get_begin( char *qs );
void dsgw_form_unescape( char *str );
char *dsgw_get_cgi_var( char *varname, int required );
int dsgw_get_int_var( char *varname, int required, int defval );
@@ -1033,6 +1034,7 @@
*/
int dsgw_utf8casecmp(unsigned char *s0, unsigned char *s1);
int dsgw_utf8ncasecmp(unsigned char *s0, unsigned char *s1, int n);
+char *dsgw_utf8StrToUpper(char *s);
/*
* dsgwutil.c
Index: dsgwgetlang.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dsgwgetlang.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dsgwgetlang.c 10 Jan 2008 01:19:36 -0000 1.2
+++ dsgwgetlang.c 14 Jan 2008 22:58:30 -0000 1.3
@@ -351,5 +351,5 @@
XP_InitStringDatabase(const char *path, const char *dbname)
{
database_name = strdup(dbname);
- i18nResource = res_init_resource(path, database_name);
+ i18nResource = res_init_resource(path, NULL);
}
Index: dsgwutil.c
===================================================================
RCS file: /cvs/dirsec/dsgw/dsgwutil.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- dsgwutil.c 14 Jan 2008 22:31:17 -0000 1.3
+++ dsgwutil.c 14 Jan 2008 22:58:30 -0000 1.4
@@ -35,6 +35,7 @@
* Copyright (C) 2005 Red Hat, Inc.
* All rights reserved.
--- END COPYRIGHT BLOCK --- */
+
/*
* dsgwutil.c -- misc. utility functions -- HTTP gateway
*/
@@ -126,19 +127,26 @@
/*Have to get the context before we read the config file.*/
if (( m = getenv( "REQUEST_METHOD" )) != NULL ) {
if ( strcasecmp( m, "GET" ) == 0 || strcasecmp( m, "HEAD" ) == 0 ) {
+ char *qs = getenv("QUERY_STRING");
method = DSGW_METHOD_GET;
+ if (qs && *qs) {
+ dsgw_get_begin(qs);
+ } else {
+ /* error? */
+ }
} else if ( strcasecmp( m, "POST" ) == 0 ) {
method = DSGW_METHOD_POST;
- if (( err = dsgw_post_begin( stdin )) == 0 ) {
- context = dsgw_get_cgi_var( "context", DSGW_CGIVAR_OPTIONAL );
+ if (( err = dsgw_post_begin( stdin )) != 0 ) {
+ dsgw_error(err, NULL, DSGW_ERROPT_EXIT, 0, NULL);
}
}
}
if ( method == 0 || ( methods_handled & method ) == 0 ) {
dsgw_error( DSGW_ERR_BADMETHOD, NULL, DSGW_ERROPT_EXIT, 0, NULL );
- }
+ }
+ context = dsgw_get_cgi_var( "context", DSGW_CGIVAR_OPTIONAL );
/*If no context was given, try default.conf.*/
if (context == NULL) {
context = dsgw_ch_strdup("default");
@@ -659,9 +667,9 @@
dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" onClick=\""
"if ( top.helpwin ) {"
" top.helpwin.focus();"
- " top.helpwin.infotopic.location='%s?!%s&context=%s';"
+ " top.helpwin.infotopic.location='%s?tutor=!%s&context=%s';"
"} else {"
- " window.open('%s?%s&context=%s', 'infowin_dsgw', "
+ " window.open('%s?tutor=%s&context=%s', 'infowin_dsgw', "
" 'resizable=1,width=400,height=500');"
"}\">\n",
XP_GetClientStr(DBT_help_1), tutorvp, topic, context,
@@ -1326,3 +1334,11 @@
return server_url;
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: edit.c
===================================================================
RCS file: /cvs/dirsec/dsgw/edit.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- edit.c 1 Jun 2006 19:43:42 -0000 1.1.1.1
+++ edit.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -55,7 +55,8 @@
{
- char *dn, *tmplname, *p;
+ char *dn, *tmplname;
+ char *add = NULL;
unsigned long options;
/*
@@ -82,6 +83,11 @@
* the content has a risk to get broken especially when
* it contains 8-bit UTF-8 data. (This is a known problem
* on localized Windows machines.)
+ *
+ * NOTE: The new code uses adminutil to parse the get/post arguments.
+ * This requires name=value pairs. So instead of just ADD, the
+ * argument must be ADD=1 (or some other value). Also, instead of
+ * just "template", the argument should be tmplname=template.
*/
options = DSGW_DISPLAY_OPT_EDITABLE;
@@ -95,61 +101,19 @@
#endif
#endif
- if (( tmplname = getenv( "QUERY_STRING" )) != NULL && *tmplname != '\0' ) {
- tmplname = dsgw_ch_strdup( tmplname );
- while ( tmplname != NULL && ((( p = strrchr( tmplname, '&' )) != NULL ) || (p=tmplname) != NULL )) {
- if (p == tmplname) {
- tmplname = NULL;
- } else {
- *p++ = '\0';
- }
-
- if ( strcasecmp( p, "add" ) == 0 ) {
- options |= DSGW_DISPLAY_OPT_ADDING;
- if (( p = strrchr( tmplname, '&' )) != NULL ) {
- *p++ = '\0';
- }
- }
+ (void)dsgw_init( argc, argv, DSGW_METHOD_GET );
- if ( p != NULL && strncasecmp( p, "info=", 5 ) == 0 ) {
- dsgw_last_op_info = dsgw_ch_strdup( p + 5 );
- dsgw_form_unescape( dsgw_last_op_info );
- continue;
- }
- if ( p != NULL && strncasecmp( p, "dn=", 3 ) == 0 ) {
- dn = dsgw_ch_strdup( p + 3 );
- dsgw_form_unescape( dn );
- continue;
- }
- if ( p != NULL && strncasecmp( p, "dnattr=", 7 ) == 0 ) {
- dsgw_dnattr = dsgw_ch_strdup( p + 7 );
- dsgw_form_unescape( dsgw_dnattr );
- continue;
- }
- if ( p != NULL && strncasecmp( p, "dndesc=", 7 ) == 0 ) {
- dsgw_dndesc = dsgw_ch_strdup( p + 7 );
- dsgw_form_unescape( dsgw_dndesc );
- continue;
- }
- if ( p != NULL && strncasecmp( p, "context=", 8 ) == 0) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
- /*
- * If none of the if-statements above matched,
- * then it's the template name
- */
- tmplname = p;
- break;
- }
-
- } else {
- tmplname = NULL;
+ dsgw_last_op_info = dsgw_get_cgi_var("info", DSGW_CGIVAR_OPTIONAL);
+ dn = dsgw_get_cgi_var("dn", DSGW_CGIVAR_OPTIONAL);
+ dsgw_dnattr = dsgw_get_cgi_var("dnattr", DSGW_CGIVAR_OPTIONAL);
+ dsgw_dndesc = dsgw_get_cgi_var("dndesc", DSGW_CGIVAR_OPTIONAL);
+ add = dsgw_get_cgi_var("add", DSGW_CGIVAR_OPTIONAL);
+ if (add && *add) {
+ options |= DSGW_DISPLAY_OPT_ADDING;
}
+ PL_strfree(add);
+ tmplname = dsgw_get_cgi_var("tmplname", DSGW_CGIVAR_OPTIONAL);
- (void)dsgw_init( argc, argv, DSGW_METHOD_GET );
dsgw_send_header();
#ifdef DSGW_DEBUG
Index: emitf.c
===================================================================
RCS file: /cvs/dirsec/dsgw/emitf.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- emitf.c 1 Jun 2006 19:43:44 -0000 1.1.1.1
+++ emitf.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -861,3 +861,11 @@
}
return charset;
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: error.c
===================================================================
RCS file: /cvs/dirsec/dsgw/error.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- error.c 1 Jun 2006 19:43:44 -0000 1.1.1.1
+++ error.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -568,3 +568,11 @@
return msg;
}
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: htmlout.c
===================================================================
RCS file: /cvs/dirsec/dsgw/htmlout.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- htmlout.c 1 Jun 2006 19:43:43 -0000 1.1.1.1
+++ htmlout.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -457,3 +457,11 @@
if (frame) dsgw_emitf ("%s.", frame);
dsgw_emits ( "document.confirmForm.submit();\n");
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: htmlparse.c
===================================================================
RCS file: /cvs/dirsec/dsgw/htmlparse.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- htmlparse.c 1 Jun 2006 19:43:44 -0000 1.1.1.1
+++ htmlparse.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -842,3 +842,11 @@
return( p );
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: lang.c
===================================================================
RCS file: /cvs/dirsec/dsgw/lang.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- lang.c 1 Jun 2006 19:43:39 -0000 1.1.1.1
+++ lang.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -143,70 +143,29 @@
char* docname = NULL;
char* tfname;
int result = 0;
- char *qs = NULL;
int manual_file = 0; /* Flag: is the file a documentation file? */
+
+ (void)dsgw_init( argc, argv, DSGW_METHOD_GET | DSGW_METHOD_POST );
- /* Parse out the file=blah.html */
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
-
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
-
- /*Get the filename and check it for naughtiness -RJP*/
- if ( !strncasecmp( p, "file=", 5 )) {
-
- /*If there is no file specified, go with index.html*/
- if (strlen(p) == 5) {
- docname = dsgw_ch_strdup("index.html");
- } else {
- docname = dsgw_ch_strdup( p + 5 );
- dsgw_form_unescape( docname );
- }
-
-
- /*If we're handling a help page, forgo the filename check*/
- if ( strlen( docname ) > DSGW_MANUALSHORTCUT_LEN &&
- strncmp( docname, DSGW_MANUALSHORTCUT,
- DSGW_MANUALSHORTCUT_LEN ) == 0 ) {
- manual_file = 1;
- }
-
- /*
- * Make sure the person isn't trying to get
- * some file not in the gateway.
- */
- if (manual_file == 0 && !dsgw_valid_docname(docname)) {
- dsgw_error( DSGW_ERR_BADFILEPATH, docname,
- DSGW_ERROPT_EXIT, 0, NULL );
- }
- continue;
- }
-
-
+ dsgw_last_op_info = dsgw_get_cgi_var("info", DSGW_CGIVAR_OPTIONAL);
+ docname = dsgw_get_cgi_var("file", DSGW_CGIVAR_OPTIONAL);
+ if (docname) {
+ /*If we're handling a help page, forgo the filename check*/
+ if ( strlen( docname ) > DSGW_MANUALSHORTCUT_LEN &&
+ strncmp( docname, DSGW_MANUALSHORTCUT,
+ DSGW_MANUALSHORTCUT_LEN ) == 0 ) {
+ manual_file = 1;
+ }
+ /*
+ * Make sure the person isn't trying to get
+ * some file not in the gateway.
+ */
+ if (manual_file == 0 && !dsgw_valid_docname(docname)) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, docname,
+ DSGW_ERROPT_EXIT, 0, NULL );
}
-
- free( qs ); qs = NULL;
}
-
- (void)dsgw_init( argc, argv, DSGW_METHOD_GET | DSGW_METHOD_POST );
+
docdir = dsgw_get_docdir();
/*If there is no docname, default to index.html*/
@@ -214,11 +173,12 @@
docname = dsgw_ch_strdup("index.html");
}
+ /* I think this is a no op - dsgw_valid_docname will reject "/" */
if (!strcmp (docname, "/")) {
printf( "Location: %s?context=%s\n\n",
dsgw_getvp( DSGW_CGINUM_SEARCH ), context );
return( result );
- } else {
+ } /* I think this is a no op? else {
char* p;
if (*docname == '/') ++docname;
docname = dsgw_ch_strdup( docname );
@@ -229,7 +189,7 @@
dsgw_form_unescape( dsgw_last_op_info );
}
}
- }
+ } */
if (manual_file) {
/* check filename */
@@ -287,3 +247,11 @@
return result;
}
+
+/*
+ emacs settings
+ Local Variables:
+ indent-tabs-mode: t
+ tab-width: 8
+ End:
+*/
Index: newentry.c
===================================================================
RCS file: /cvs/dirsec/dsgw/newentry.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- newentry.c 1 Jun 2006 19:43:45 -0000 1.1.1.1
+++ newentry.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -251,6 +251,8 @@
static char*
compute_newurl()
{
+ char *tmplname = "tmplname=";
+ size_t tmplnamelen = strlen(tmplname);
auto char* entryType = dsgw_get_cgi_var( "entrytype", DSGW_CGIVAR_REQUIRED );
auto char* entryName = dsgw_get_cgi_var( "entryname", DSGW_CGIVAR_REQUIRED );
auto char* rdnTag = dsgw_get_cgi_var( "rdntag", DSGW_CGIVAR_REQUIRED );
@@ -281,15 +283,16 @@
{
auto char* edn = dsgw_strdup_escaped (dn);
auto const char* const prefix = DSGW_URLPREFIX_CGI_HTTP "edit?";
- auto const char* const suffix = "&ADD";
+ auto const char* const suffix = "&ADD=1";
auto const size_t ednLen = strlen (edn);
auto const size_t prefixLen = strlen (prefix);
auto const size_t suffixLen = strlen (suffix);
auto const size_t contextLen = strlen (context) + 9;
- newurl = dsgw_ch_malloc (prefixLen + entryTypeLen + contextLen + suffixLen + 4 + ednLen + 1);
+ newurl = dsgw_ch_malloc (prefixLen + tmplnamelen + entryTypeLen + contextLen + suffixLen + 4 + ednLen + 1);
memcpy (newurl, prefix, prefixLen + 1);
+ strcat (newurl, tmplname);
strcat (newurl, entryType);
strcat (newurl, "&context=");
strcat (newurl, context);
@@ -389,60 +392,18 @@
#endif
{
auto int reqmethod;
- char *qs = NULL;
char *docname = NULL;
char *etype = NULL;
- /* Parse out the file=blah.html */
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
-
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
- /*
- * file will be either "name", "type", or nothing.
- * It'll be mapped into an html file in get_request
- */
- if ( !strncasecmp( p, "file=", 5 )) {
- docname = dsgw_ch_strdup( p + 5 );
- dsgw_form_unescape( docname );
-
- continue;
- }
-
- /* etype will be ntgroup, or person, etc */
- if ( !strncasecmp( p, "etype=", 6 )) {
- etype = dsgw_ch_strdup( p + 6 );
- dsgw_form_unescape( etype );
-
- continue;
- }
- }
- free( qs ); qs = NULL;
- }
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET);
+
+ docname = dsgw_get_cgi_var("file", DSGW_CGIVAR_OPTIONAL);
if (docname != NULL && *docname == '/') {
docname++;
}
-
- reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET);
+ etype = dsgw_get_cgi_var("etype", DSGW_CGIVAR_OPTIONAL);
+
dsgw_send_header();
#ifdef DSGW_DEBUG
dsgw_logstringarray( "env", env );
Index: search.c
===================================================================
RCS file: /cvs/dirsec/dsgw/search.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- search.c 1 Jun 2006 19:43:39 -0000 1.1.1.1
+++ search.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -54,56 +54,14 @@
{
auto int reqmethod;
char *docname = NULL;
- char *qs = NULL;
-
- /* Parse out the file=blah.html */
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
-
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
-
- /*Get the filename and check it for naughtiness -RJP*/
- if ( !strncasecmp( p, "file=", 5 )) {
- docname = dsgw_ch_strdup( p + 5 );
- dsgw_form_unescape( docname );
-
- /*
- * Make sure the person isn't trying to get
- * some file not in the gateway.
- */
- if (! dsgw_valid_docname(docname)) {
- dsgw_error( DSGW_ERR_BADFILEPATH, docname,
- DSGW_ERROPT_EXIT, 0, NULL );
- }
- continue;
- }
-
-
- }
-
- free( qs ); qs = NULL;
- }
-
reqmethod = dsgw_init( argc, argv, DSGW_METHOD_GET );
+
+ docname = dsgw_get_cgi_var("file", DSGW_CGIVAR_OPTIONAL);
+ if (docname && ! dsgw_valid_docname(docname)) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, docname,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
dsgw_send_header();
#ifdef DSGW_DEBUG
Index: tutor.c
===================================================================
RCS file: /cvs/dirsec/dsgw/tutor.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- tutor.c 1 Jun 2006 19:43:47 -0000 1.1.1.1
+++ tutor.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -139,44 +139,25 @@
#endif
)
{
- char *qs = getenv("QUERY_STRING");
+ char *param = NULL;
char *html=NULL;
char *base=NULL;
#ifdef DSGW_DEBUG
dsgw_logstringarray( "env", env );
#endif
-
- if(qs == NULL || *qs == '\0') {
+
+ dsgw_init( argc, argv, DSGW_METHOD_GET );
+
+ param = dsgw_get_cgi_var("tutor", DSGW_CGIVAR_OPTIONAL);
+ if (!param || !*param) {
dsgw_send_header();
_my_return_html_file(BASE_MAN_DIRECTORY HELP_INDEX_HTML, NULL);
exit(0);
- } else {
- /* parse the query string: */
- auto char *p, *iter = NULL;
-
- /*get a pointer to the context. It should be the last part of the qs*/
- p = ldap_utf8strtok_r( qs, "&", &iter );
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( iter != NULL && !strncasecmp( iter, "context=", 8 )) {
- context = dsgw_ch_strdup( iter + 8 );
- dsgw_form_unescape( context );
- }
-
}
- dsgw_init( argc, argv, DSGW_METHOD_GET );
-
- html = (char *) dsgw_ch_malloc(strlen(qs)+10+10);
- sprintf(html, "%s.html", qs);
+ html = (char *) dsgw_ch_malloc(strlen(param)+10+10);
+ sprintf(html, "%s.html", param);
if (my_util_uri_is_evil(html)) {
dsgw_send_header();
dsgw_emits( "<CENTER><H2>Error</H2></CENTER>\n"
@@ -186,17 +167,17 @@
exit( 0 );
}
- if(qs[0]=='!') {
- qs++;
- if(!strncmp(qs, BASE_INFO_DIRECTORY, strlen(BASE_INFO_DIRECTORY))) {
- sprintf(html, "%s.html", qs);
- } else if(!strncmp(qs, BASE_MAN_DIRECTORY, strlen(BASE_MAN_DIRECTORY))) {
- if(!strstr(qs, ".html")) {
- sprintf(html, "%s.htm", qs);
+ if(param[0]=='!') {
+ param++;
+ if(!strncmp(param, BASE_INFO_DIRECTORY, strlen(BASE_INFO_DIRECTORY))) {
+ sprintf(html, "%s.html", param);
+ } else if(!strncmp(param, BASE_MAN_DIRECTORY, strlen(BASE_MAN_DIRECTORY))) {
+ if(!strstr(param, ".html")) {
+ sprintf(html, "%s.htm", param);
} else {
- sprintf(html, "%s", qs);
+ sprintf(html, "%s", param);
}
- base=qs;
+ base=param;
}
else {
char line[BIG_LINE];
@@ -245,7 +226,7 @@
if(!found) continue;
/* script name is in head */
- if(strncasecmp(head, qs, strlen(qs))) {
+ if(strncasecmp(head, param, strlen(param))) {
continue;
}
/* match found. get the actual file name */
@@ -278,7 +259,7 @@
ohwell:
if(!html[0])
- sprintf(html, "%s%s.html", BASE_MAN_DIRECTORY, qs);
+ sprintf(html, "%s%s.html", BASE_MAN_DIRECTORY, param);
}
dsgw_send_header();
_my_return_html_file(html, base);
@@ -289,11 +270,11 @@
dsgw_emits("<frameset BORDER=0 FRAMEBORDER=NO rows=\"57,*\" "
"onLoad=\"top.master=top.opener.top;top.master.helpwin=self;\" "
"onUnload=\"if (top.master) { top.master.helpwin=0; }\">\n" );
- dsgw_emitf("<frame src=\"%s?!info/infonav&context=%s\" scrolling=no "
+ dsgw_emitf("<frame src=\"%s?tutor=!info/infonav&context=%s\" scrolling=no "
"marginwidth=0 marginheight=0 "
"name=\"infobuttons\">\n", dsgw_getvp(DSGW_CGINUM_TUTOR), context);
- dsgw_emitf("<frame src=\"%s?!%s&context=%s\" "
- "name=\"infotopic\">\n", dsgw_getvp(DSGW_CGINUM_TUTOR), qs, context);
+ dsgw_emitf("<frame src=\"%s?tutor=!%s&context=%s\" "
+ "name=\"infotopic\">\n", dsgw_getvp(DSGW_CGINUM_TUTOR), param, context);
dsgw_emits("</frameset>\n");
}
return 1;
Index: unauth.c
===================================================================
RCS file: /cvs/dirsec/dsgw/unauth.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- unauth.c 1 Jun 2006 19:43:39 -0000 1.1.1.1
+++ unauth.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -42,7 +42,6 @@
#include "dsgw.h"
#include "dbtdsgw.h"
-char *get_auth_cookie( char *cookie );
void generate_message( int type );
#define CKEXP_SUCCESS 1
@@ -53,37 +52,7 @@
int reqmethod;
char *expck;
char *authck;
- int rc;
- char *qs = NULL;
-
- /* Parse out the context=blah.html */
- if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
- /* parse the query string: */
- auto char *p, *iter = NULL;
- qs = dsgw_ch_strdup( qs );
-
- for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
- p = ldap_utf8strtok_r( NULL, "&", &iter )) {
-
- /*
- * Get the conf file name. It'll be translated
- * into /dsgw/context/CONTEXT.conf if
- * CONTEXT is all alphanumeric (no slahes,
- * or dots). CONTEXT is passed into the cgi.
- * if context=CONTEXT is not there, or PATH_INFO
- * was used, then use dsgw.conf
- */
- if ( !strncasecmp( p, "context=", 8 )) {
- context = dsgw_ch_strdup( p + 8 );
- dsgw_form_unescape( context );
- continue;
- }
-
- }
-
- free( qs ); qs = NULL;
- }
-
+ int rc;
reqmethod = dsgw_init( argc, argv, DSGW_METHOD_GET );
@@ -109,36 +78,6 @@
exit( 0 );
}
-
-
-/*
- * It's quite likely that there will be more than one cookie in the
- * Cookie: header. See if we've got an authentication cookie, and if
- * so, parse it out and return a pointer to it. If no auth cookie
- * is present, return NULL.
- */
-char *
-get_auth_cookie( char *cookie )
-{
- char *p, *e;
-
- if ( cookie == NULL ) {
- return NULL;
- }
-
- if (( p = strstr( cookie, DSGW_AUTHCKNAME )) == NULL ) {
- return NULL;
- }
-
- if (( e = strchr( p, ';' )) != NULL ) {
- *e = '\0';
- }
-
- return p;
-}
-
-
-
void
generate_message( int type )
{
Index: utf8compare.c
===================================================================
RCS file: /cvs/dirsec/dsgw/utf8compare.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- utf8compare.c 1 Jun 2006 19:43:46 -0000 1.1.1.1
+++ utf8compare.c 14 Jan 2008 22:58:30 -0000 1.2
@@ -1822,16 +1822,17 @@
* Output string is allocated in this function, which needs to be
* released when it's not needed any more.
*/
-unsigned char *
-dsgw_utf8StrToUpper(unsigned char *s)
+char *
+dsgw_utf8StrToUpper(char *input)
{
+ unsigned char *s = (unsigned char *)input;
UpperLowerTbl_t *ultp;
unsigned char *p, *np, *tail;
unsigned char *up, *uphead;
int len, sz;
if (s == NULL || *s == '\0') {
- return s;
+ return (char *)s;
}
len = strlen((char *)s);
tail = s + len;
@@ -1891,7 +1892,7 @@
}
}
*up = '\0';
- return uphead;
+ return (char *)uphead;
}
/*
Index: Makefile.in
===================================================================
RCS file: /cvs/dirsec/dsgw/Makefile.in,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Makefile.in 14 Jan 2008 22:31:17 -0000 1.5
+++ Makefile.in 14 Jan 2008 22:58:30 -0000 1.6
@@ -480,8 +480,8 @@
#nodist_context_SCRIPTS = setup-dirsrv-gw
# add more here for localized bundles
-nodist_property_DATA = dsgw_root.res
-MOSTLYCLEANFILES = dsgw.conf dsgw_root.res dsgw.properties setup dsgw-httpd.conf
+nodist_property_DATA = root.res en.res en_US.res
+MOSTLYCLEANFILES = dsgw.conf root.res dsgw.properties setup dsgw-httpd.conf en.res en_US.res
@WINNT_FALSE@ICU_GENRB = sh $(srcdir)/genrb_wrapper.sh @icu_bin@ @icu_lib@
# Resource Bundle Compiler
@@ -490,13 +490,13 @@
# The root resource bundle is based on English (en) locale;
# This bundle must be always distributed and there is no need to have
# *_en.properties resource bundle source files.
-RESOURCE_BUNDLES_ROOT = dsgw_root.res
+RESOURCE_BUNDLES_ROOT = root.res
# French resource bundles (for the French localization in the future)
-RESOURCE_BUNDLES_FR = dsgw_fr.res
+RESOURCE_BUNDLES_FR = fr.res
# German resource bundles (for the German localization in the future)
-RESOURCE_BUNDLES_DE = dsgw_de.res
+RESOURCE_BUNDLES_DE = de.res
# these are for the config files and scripts that we need to generate and replace
# the paths and other tokens with the real values set during configure/make
@@ -1178,14 +1178,17 @@
dsgw.properties: ./propmaker dbtdsgw.h
./propmaker $@
-dsgw_root.res : dsgw.properties
- $(ICU_GENRB) -s. -d. --encoding 8859-1 --package-name dsgw $+
+root.res : dsgw.properties
+ $(ICU_GENRB) -s. -d. --encoding 8859-1 $+
-%_fr.res : %_fr.properties
- $(ICU_GENRB) -s. -d. --encoding 8859-2 --package-name dsgw $+
+fr.res : fr.properties
+ $(ICU_GENRB) -s. -d. --encoding 8859-2 $+
-%_de.res : %_de.properties
- $(ICU_GENRB) -s. -d. --encoding 8859-2 --package-name dsgw $+
+de.res : de.properties
+ $(ICU_GENRB) -s. -d. --encoding 8859-2 $+
+
+en.res en_US.res : root.res
+ cp -p $< $@
% : %.in
if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
16 years, 3 months
[Fedora-directory-commits] dsgw/config dsgw.tmpl.in, NONE, 1.1 dsgw.tmpl, 1.1.1.1, NONE
by Doctor Conrad
Author: nkinder
Update of /cvs/dirsec/dsgw/config
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8873/config
Added Files:
dsgw.tmpl.in
Removed Files:
dsgw.tmpl
Log Message:
Added dsgw.tmpl template
--- NEW FILE dsgw.tmpl.in ---
# BEGIN COPYRIGHT BLOCK
# This Program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
#
# This Program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA.
#
# In addition, as a special exception, Red Hat, Inc. gives You the additional
# right to link the code of this Program with code not covered under the GNU
# General Public License ("Non-GPL Code") and to distribute linked combinations
# including the two, subject to the limitations in this paragraph. Non-GPL Code
# permitted under this exception must only link to the code of this Program
# through those well defined interfaces identified in the file named EXCEPTION
# found in the source code files (the "Approved Interfaces"). The files of
# Non-GPL Code may instantiate templates or use macros or inline functions from
# the Approved Interfaces without causing the resulting work to be covered by
# the GNU General Public License. Only Red Hat, Inc. may make changes or
# additions to the list of Approved Interfaces. You must obey the GNU General
# Public License in all respects for all of the Program code and other code used
# in conjunction with the Program except the Non-GPL Code covered by this
# exception. If you modify this file, you may extend this exception to your
# version of the file, but you are not obligated to do so. If you do not wish to
# provide this exception without modification, you must delete this exception
# statement from your version and license this file solely under the GPL without
# exception.
#
#
# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
# Copyright (C) 2005 Red Hat, Inc.
# All rights reserved.
# END COPYRIGHT BLOCK
baseurl "ldap://@host@:@port@/@suffix@"
dirmgr "@dirmgr@"
location-suffix @suffix@
securitypath "@contextdir@"
url-orgchart-base http://@host@:@port@/clients/orgchart/bin/org?context=dsgw&data=
# The attribute the orgchart uses to search for entries.
# This value should correspond to the value of attrib-farleft-rdn
# in the orgchart's config.txt configuration file.
orgchart-attrib-farleft-rdn uid
# Check for Aim presence when the user's entry is displayed
enable-aim-presence true
# The htmldir directive tells the CGIs where to find the html files
htmldir @htmldir@
# The configdir directive tells the CGIs where to find the
# templates/configuration files
configdir @configdir@
# The gwnametrans directive tells the CGIs what url to output
# for http redirection. It should be the same nameTrans set
# in the webserver, if any is being is used.
gwnametrans @dsgwuri@/
# The authlifetime directive specifies how long authentication credentials
# are valid (in seconds).
authlifetime 7200
# The default character set, for communication with HTTP clients.
# A client may override this default, using an HTTP Accept-Charset header.
# Or, this default may be overridden for a specific language, by creating
# a LANG/dsgwcharset.conf file which contains the charset name.
# For compatibility with HTTP clients that can't handle an HTTP response
# with a charset parameter in the content-type, comment out this directive;
# responses will be sent in ISO-8859-1, with no explicit charset parameter.
# RFC 1345 defines the syntax of charset names. There is a registry of
# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
# charset UTF-8
# ignoreAcceptCharsetFrom [ <HTTP client version string> ]
# where each of whose values is the version string (or part of the version
# string) sent by an HTTP client which can't / doesn't want to handle UTF-8.
# Charset from dsgwcharset.conf or charset directive is used (in the order).
# ignoreAcceptCharsetFrom Mozilla/4.01x-NSCP Mozilla/3
# Substitute ideographic space for non-breaking space in Asian charsets:
changeHTML " " "���" Shift_JIS Big5 EUC-KR EUC-JP
changeHTML " " "���" Shift_JIS Big5 EUC-KR EUC-JP
# Mapping between config/display-XXX.html templates and LDAP objectClasses.
# This can be generated by using ds/templateindex. The format is:
#
# template TEMPLATENAME OBJECTCLASSES
#
# where "display-TEMPLATENAME.html" is the name of a display template
# that is found in this config directory (e.g., "display-group.html") and
# OBJECTCLASSES is a list of one or more objectClass values. For a given
# template to be used, all the objectClass values listed must be present
# in the directory entry, so the order of these template lines is
# significant (e.g. note that the more specific "orgperson" template is
# listed before the one for an ordinary "person").
#
template group groupOfNames
template ntgroup groupOfUniqueNames ntGroup
template groupun groupOfUniqueNames
template org organization
template dc domain
template orgunit organizationalUnit
template ntperson person inetOrgPerson nTUser
template orgperson person inetOrgPerson
template person person
template country country
#
# The remainder of this file contains information about the locations and
# types for new entries.
#
# "location" lines define places in the directory where new entries can be added
# The format of each line is:
# location HANDLE FRIENDLYNAME DN
# where HANDLE is a short name which is used in the "newtype" lines (see below)
# and FRIENDLYNAME is a human-readable name for the location
# and DN is the Distinguished Name for this location (if it does not end with
# '#', the location-suffix is appended to to construct a full DN; if it
# does end with `#', it assumed to be a full DN and the `#' is removed).
#
location country "United States" "c=US#"
location org "This Organization" ""
location dc "This Domaincomponent" ""
location groups "Groups" "ou=Groups"
location people "People" "ou=People"
location special "Special Users" "ou=Special Users"
# "newtype" lines define the types of new entries that may be added
# The format of each line is:
# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
# and FRIENDLYNAME is a human-readable name for this type of entry
# and RDNATTR is the attribute that is used to name entries of this type
# and LOCATIONS is a blank-separated list of locations where these types of
# entries can be added (corresponding to a HANDLE on a "location"
# config. file line).
#
newtype orgperson "Person" uid people special
newtype ntperson "NT Person" uid people special
newtype ntgroup "NT Group" cn groups
newtype groupun "Group" cn groups
newtype orgunit "Organizational Unit" ou people org
newtype org "Organization" o country
newtype dc "Domaincomponent" dc dc org country people
# Mappings between VCard properties and LDAP attribute types:
# The format of each line is:
# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
# where VCARDPROP is the name of a VCard property
# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
# the property value by appending a semicolon and then the attr2 value.
vcard-property FN cis cn
vcard-property N cis sn givenName
vcard-property ORG cis o ou
vcard-property ROLE cis businessCategory
vcard-property ADR;WORK mls postalAddress
vcard-property ADR;HOME mls homePostalAddress
vcard-property EMAIL;INTERNET cis mail
vcard-property TITLE cis title
vcard-property TEL;WORK cis telephoneNumber
vcard-property TEL;FAX cis facsimileTelephoneNumber
vcard-property TEL;CELL cis mobile
vcard-property TEL;HOME cis homePhone
vcard-property NOTE cis description
# To localize the search type menu:
# Locate dsgw-l10n.conf in config/<lang>/.
# dsgw-l10n.conf contains translated words for search type pulldown menu.
# dsgw-l10n.conf sample:
# translate People <People_translated_in_lang>
# translate NT-People <NT-People_translated_in_lang>
# translate Groups <Groups_translated_in_lang>
# translate NT-Groups <NT-Groups_translated_in_lang>
# translate Organizations <Organizations_translated_in_lang>
# translate Org-Units <Org-Units_translated_in_lang>
# translate Anything <Anything_translated_in_lang>
#
include "@configdir(a)/dsgw-l10n.conf"
--- dsgw.tmpl DELETED ---
16 years, 3 months
[Fedora-directory-commits] dsgw/pbhtml alert.html.in, NONE, 1.1 carded.html.in, NONE, 1.1 confirm.html.in, NONE, 1.1 index.html.in, NONE, 1.1 intro.html.in, NONE, 1.1 modify.html.in, NONE, 1.1 nullStringError.html.in, NONE, 1.1 phone.html.in, NONE, 1.1 report.html.in, NONE, 1.1 alert.html, 1.1.1.1, NONE carded.html, 1.1.1.1, NONE confirm.html, 1.1.1.1, NONE index.html, 1.1.1.1, NONE intro.html, 1.1.1.1, NONE modify.html, 1.1.1.1, NONE nullStringError.html, 1.1.1.1, NONE phone.html, 1.1.1.1, NONE report.html
by Doctor Conrad
Author: nkinder
Update of /cvs/dirsec/dsgw/pbhtml
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7982/pbhtml
Added Files:
alert.html.in carded.html.in confirm.html.in index.html.in
intro.html.in modify.html.in nullStringError.html.in
phone.html.in report.html.in
Removed Files:
alert.html carded.html confirm.html index.html intro.html
modify.html nullStringError.html phone.html report.html
Log Message:
General templating work for DSGW CGI URI's.
--- NEW FILE alert.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<HTML>
<HEAD>
<TITLE>
<!-- DS_POSTEDVALUE "NAME=TITLE" -->
</title>
<LINK REL=stylesheet TYPE="text/css" HREF="@cgiuri@/lang?<!-- GCONTEXT -->&file=style.css">
</HEAD>
<BODY onLoad="document.OK.btn.focus();" bgcolor="#CCCCCC">
<TABLE cols=2 width="100%"><TR VALIGN=CENTER>
<TD ALIGN=CENTER WIDTH=32><IMG SRC="@cgiuri@/lang?<!-- GCONTEXT -->&file=32-alert.gif" HEIGHT=32 WIDTH=32 BORDER="0" ALT="Alert"></TD>
<TD>
<!-- DS_POSTEDVALUE "NAME=MSG" -->
</TD></TR></TABLE>
<FORM NAME=OK><CENTER>
<!-- DS_CLOSEBUTTON "NAME=btn" "LABEL= OK " -->
</CENTER></FORM>
</BODY></HTML>
--- NEW FILE carded.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<html>
<head>
<title>vCard</title>
<LINK REL=stylesheet TYPE="text/css" HREF="@cgiuri@/lang?<!-- GCONTEXT -->&file=style.css">
</head>
<script language=javascript>
function autoCloser(){
var closeHTML=
'<body bgcolor="#CCCCCC">\n' +
'<center>\n' +
'<form name=adios>\n' +
'<font face="primasans bt,verdana,arial,helvetica,sans-serif" size="-1">\n' +
'<input type=button value="Close Window" onclick="window.parent.close()">\n' +
'</font>\n' +
'</form>\n' +
'</center>\n' +
'</body></html>';
self.closer.document.write(closeHTML);
}
function init(){
autoCloser();
}
</script>
<frameset rows="200,50" border="0" onload="init();">
<frame name="cards" src="javascript:parent.emptyFrame" scrolling="AUTO">
<frame name="closer" src="javascript:parent.emptyFrame" scrolling="NO">
</frameset>
</html>
--- NEW FILE confirm.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<HTML>
<HEAD>
<TITLE>
<!-- DS_POSTEDVALUE "NAME=TITLE" -->
</TITLE>
<!-- DS_CONFIRM_SCRIPT -->
<LINK REL=stylesheet TYPE="text/css" HREF="@cgiuri@/lang?<!-- GCONTEXT -->&file=style.css">
</HEAD>
<BODY>
<TABLE COLS=2 WIDTH="100%"><TR VALIGN=CENTER>
<TD ALIGN=CENTER WIDTH=36><IMG SRC="@cgiuri@/lang?<!-- GCONTEXT -->&file=32-alert.gif" HEIGHT=32 WIDTH=32 BORDER="0" ALT="Confirm"></TD><TD>
<!-- DS_POSTEDVALUE "NAME=MSG" -->
</TD></TR></TABLE>
<FORM><TABLE COLS=4 WIDTH="100%"><TR ALIGN=CENTER>
<TD></TD>
<TD>
<!-- DS_CONFIRM_BUTTON_OK -->
</TD><TD>
<!-- DS_CONFIRM_BUTTON_CANCEL -->
</TD>
<TD></TD>
</TR></TABLE></FORM>
</BODY></HTML>
--- NEW FILE index.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<html>
<head>
<meta name="description" content="Directory Express:
A Searchable Index of People and Resources for your enterprise.">
<meta name="keywords" content="phonebook, directory, express, search, enterprise, people, users, conference rooms, spooky!">
<title>Directory Express</title>
</head>
<frameset rows="64,*" frameborder="no" border="0" framespacing="0">
<frame
src="@cgiuri@/lang?<!-- GCONTEXT -->&file=phone.html"
name="buttonBarFrame"
marginwidth="0"
marginheight="0"
scrolling="no"
>
<frame
src="@cgiuri@/lang?<!-- GCONTEXT -->&file=intro.html"
name="resultframe"
marginwidth="10"
marginheight="10"
scrolling="auto"
>
</frameset>
<noframe>
<body>
</body>
</noframe>
</html>
--- NEW FILE intro.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<html>
<head>
<title>Directory Express</title>
<LINK REL=stylesheet TYPE="text/css" HREF="@cgiuri@/lang?<!-- GCONTEXT -->&file=style.css">
</head>
<body bgcolor="#FFFFFF">
<!-- single-pixel gif to enforce left alignment -->
<img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=pixel.gif" height="0" width="0" hspace="20" align="left" border="0">
<table border="0" cellpadding="0" cellspacing="0" width="90%" align="left">
<tr>
<td colspan=5 align="left">
<p>
<br>
<span class="text31"><B>About Directory Express</B></span>
<br>
</p>
</td>
</tr>
<tr>
<td colspan=5 align="left">
Directory Express displays people, conference rooms, buildings and branch offices.
If multiple entries are found, the results are displayed in a table:
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
<br clear="ALL">
<!-- single-pixel gif to enforce left alignment -->
<img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=pixel.gif" height="0" width="0" hspace="20" align="left" border="0">
<table width="90%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="left">
<tr valign="top">
<td align="left" bgcolor="#FFFFFF">
Found <b>x</b> entries where the name or user ID matches '<b>your search</b>'.
<br>
</td>
</tr>
<tr>
<td>
<!-- ------------------------------------------------------------- -->
<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="white">
<tr align="left" class="bgColor4">
<td class="bgColor4">
</td>
<td nowrap class="bgColor4">
<b>Name</b>
</td>
<td nowrap class="bgColor4">
<b>ID</b>
</td>
<td nowrap class="bgColor4">
<b>Phone</b>
</td>
<td nowrap class="bgColor4">
<b>E-mail</b>
</td>
<td nowrap class="bgColor4">
<b>Group</b>
</td>
</tr>
<tr align="left">
<td width="10">
<a href="javascript:void(0)" onMouseOver="top.status='This entry is a person.'; return true" name="Person"><img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=16-person.gif" height="16" width="16" vspace="3" border="0"></a>
</td>
<td nowrap>
Jane Castle
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">jane</a>
</td>
<td nowrap>
4444
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s Email address to send a message.'; return true">jane(a)example.com</a>
</td>
<td nowrap>
engineering
</td>
</tr>
<tr>
<td colspan="6"></td>
</tr>
<tr align="left" bgcolor="#FFFFFF">
<td width="10">
<a href="javascript:void(0)" onMouseOver="top.status='This entry is a person.'; return true" name="Person"><img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=16-person.gif" height="16" width="16" vspace="3" border="0"></a>
</td>
<td nowrap>
John Castle
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">john</a>
</td>
<td nowrap>
5555
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s Email address to send a message.'; return true">john(a)example.com</a>
</td>
<td nowrap>
marketing
</td>
</tr>
<tr>
<td colspan="6"></td>
</tr>
<tr align="left" bgcolor="#FFFFFF">
<td width="10">
<a href="javascript:void(0)" onMouseOver="top.status='This entry is a conference room.'; return true" name="Conference Room"><img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=16-conference.gif" height="16" width="16" vspace="3" border="0"></a>
</td>
<td nowrap>
King's Castle
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">King's Castle</a>
</td>
<td nowrap>
2121
</td>
<td nowrap>
</td>
<td nowrap>
</td>
</tr>
<tr>
<td colspan="6"></td>
</tr> <tr align="left" bgcolor="#FFFFFF">
<td width="10">
<a href="javascript:void(0)" onMouseOver="top.status='This entry is a person.'; return true" name="Person"><img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=16-person.gif" height="16" width="16" vspace="3" border="0"></a>
</td>
<td nowrap>
Quincy Castlegate
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">quincy</a>
</td>
<td nowrap>
7777
</td>
<td nowrap>
<a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s Email address to send a message.'; return true">quincy(a)example.com</a>
</td>
<td nowrap>
product development
</td>
</tr>
<tr>
<td colspan="6"></td>
</tr>
</table>
<!-- ------------------------------------------------------------- -->
</td>
</tr>
<tr align="left" bgcolor="#FFFFFF">
<td bgcolor="white" align="left">
<br>
Click on an entry's ID to bring up more information about that entry.
</td>
</tr>
</table>
<br clear="ALL">
<!-- single-pixel gif to enforce left alignment -->
<img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=pixel.gif" height="0" width="0" hspace="20" align="left" border="0">
<table border="0" cellpadding="0" cellspacing="0" width="90%" align="left">
<tr>
<td>
</td>
</tr>
<tr>
<td colspan=5 bgcolor="white" align="left">
If a single, unique entry is found, all information pertaining to that entry is
displayed. Users can edit portions of their personal information by displaying
their information as described above, and clicking the "Edit Person"
button at the bottom of the their entry.
</td>
</tr>
</table>
</body>
</html>
***** Error reading new file: [Errno 2] No such file or directory: 'modify.html.in'
--- NEW FILE nullStringError.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<html>
<head>
<title>Error!</title>
<LINK REL=stylesheet TYPE="text/css" HREF="@cgiuri@/lang?<!-- GCONTEXT -->&file=style.css">
</head>
<body bgcolor="white">
<p>
</p>
<table width="360" border="1" bgcolor="#CCCCCC" align="center">
<tr>
<td>
<table border="0" cellpadding="18" cellspacing="0">
<tr>
<td>
<center>
<table border="0">
<tr>
<td>
<img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=32-alert.gif" height="32" width="32" border="0">
</td>
<td>
</td>
<td>
No search term entered.
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td colspan="2">
</td>
<td>
Directory Express searches against an entry's name, user ID, and phone extension.
Please enter a search term and try again.
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
--- NEW FILE phone.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Directory Express</title>
<script language="javascript">
//<!--
function gotourl(i){
window.location.href=i;
}
//-->
</script>
<script language="javascript" src="/clients/dsgw/pbhtml/phone.js">
</script>
<LINK REL=stylesheet TYPE="text/css" HREF="@cgiuri@/lang?<!-- GCONTEXT -->&file=style.css">
</head>
<body class="Search" onLoad="fieldFocus();" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<form method="post" name="searchform" target="resultframe" action="@cgiuri@/dosearch" onSubmit="return checkForNullString()">
<!-- hidden fields: edit these to customize your Directory Express. -->
<input type=hidden name="type" value="people">
<input type=hidden name="mode" value="smart">
<input type=hidden name="querytype" value="people">
<!-- PCONTEXT -->
<table BORDER="0" width="100%" cellpadding=0 cellspacing=0>
<TR>
<TD valign="top" colspan="5" width="100%"><IMG src="@cgiuri@/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="5" border="0"></TD>
</TR>
<tr>
<td>
<IMG src="@cgiuri@/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="40" border="0">
</td>
<TD ALIGN=LEFT VALIGN=CENTER nowrap>
<img src="@cgiuri@/lang?<!-- GCONTEXT -->&file=rolodex.gif" width="51" height="54" border="0" align="left"></td>
<TD valign="center" class="appName" nowrap>Directory Express</td>
<TD ALIGN=LEFT width="75%">
<TABLE BORDER=0>
<TR>
<TD valign="top"><IMG src="@cgiuri@/lang?<!-- GCONTEXT -->&file=clear.gif" width="15" height="1" border="0"></TD>
<TD nowrap VALIGN=CENTER ALIGN=CENTER>
<span class="apptext">Search for:</span>
</TD>
<TD nowrap VALIGN=CENTER>
<span class="apptext">
<font face=\"verdana, Arial, Helvetica, sans-serif\" style=\"font-size: 12px\">
<input type="text" name="searchstring" size=30>
<input type="submit" value="Search" name="submitbutton">
</font>
</span>
</TD>
</TR></TABLE>
</TD>
</tr>
<!-- TR>
<td></td>
<td></td>
<td align=left class="text30">(Enter any part of a name, user ID, or phone number)
</td></tr -->
<TR>
<TD valign="top" colspan="5" width="100%"><IMG src="@cgiuri@/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="5" border="0"></TD>
</TR>
</table>
</form>
</body>
</html>
--- NEW FILE report.html.in ---
<!-- --- BEGIN COPYRIGHT BLOCK ---
This Program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This Program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
In addition, as a special exception, Red Hat, Inc. gives You the additional
right to link the code of this Program with code not covered under the GNU
General Public License ("Non-GPL Code") and to distribute linked combinations
including the two, subject to the limitations in this paragraph. Non-GPL Code
permitted under this exception must only link to the code of this Program
through those well defined interfaces identified in the file named EXCEPTION
found in the source code files (the "Approved Interfaces"). The files of
Non-GPL Code may instantiate templates or use macros or inline functions from
the Approved Interfaces without causing the resulting work to be covered by
the GNU General Public License. Only Red Hat, Inc. may make changes or
additions to the list of Approved Interfaces. You must obey the GNU General
Public License in all respects for all of the Program code and other code used
in conjunction with the Program except the Non-GPL Code covered by this
exception. If you modify this file, you may extend this exception to your
version of the file, but you are not obligated to do so. If you do not wish to
provide this exception without modification, you must delete this exception
statement from your version and license this file solely under the GPL without
exception.
Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
Copyright (C) 2005 Red Hat, Inc.
All rights reserved.
--- END COPYRIGHT BLOCK --- -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Telephone Book: Reports</TITLE>
<META NAME="GENERATOR" CONTENT="User-Agent: Mozilla/3.01Gold-C (Macintosh; U; PPC)">
</HEAD>
<BODY TEXT="#0B0547" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#551A8B" ALINK="#0000FF">
<CENTER><P><FORM method="GET" action="@cgiuri(a)/report.pl" TARGET="response"></P></CENTER>
<CENTER><P><IMG SRC="@cgiuri@/lang?<!-- GCONTEXT -->&pbrd.jpg" HEIGHT=46 WIDTH=491 ALIGN=ABSCENTER></P></CENTER>
<CENTER><P><B><FONT SIZE=+1>Make a report that looks like this table:</FONT></B>
</P></CENTER>
<CENTER><P>
<HR SIZE=3 WIDTH="95%"></P></CENTER>
<CENTER><TABLE>
<TR>
<TD>
<CENTER><P><INPUT name="num_fields" type=hidden value="7"></P></CENTER>
</TD>
<TD><SELECT name="field1" SIZE=1><OPTION SELECTED><FONT SIZE=-1>FullName
<OPTION>LastName <OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION>Phone
<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
</FONT></SELECT></TD>
<TD><SELECT name="field2" SIZE=1><OPTION><FONT SIZE=-1>FullName <OPTION>LastName
<OPTION>FirstName <OPTION>Initials <OPTION SELECTED>Email <OPTION>Phone
<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK
</FONT></SELECT></TD>
<TD><SELECT name="field3" SIZE=1><OPTION><FONT SIZE=-1>FullName <OPTION>LastName
<OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION SELECTED>Phone
<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
<OPTION>BLANK </FONT></SELECT></TD>
<TD><SELECT name="field4" SIZE=1><OPTION><FONT SIZE=-1>FullName <OPTION>LastName
<OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax
<OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION SELECTED>Group <OPTION>Title
<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
<OPTION>BLANK </FONT></SELECT></TD>
<TD><SELECT name="field5" SIZE=1><OPTION><FONT SIZE=-1>Email <OPTION>Phone
<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION SELECTED>Dept# <OPTION>Group
<OPTION>Title <OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube#
<OPTION>Mailstop <OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr
<OPTION>Car# <OPTION>BLANK </FONT></SELECT></TD>
<TD><SELECT name="field6" SIZE=1><OPTION><FONT SIZE=-1>Email <OPTION>Phone
<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
<OPTION>Admin <OPTION SELECTED>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
<OPTION>BLANK </FONT></SELECT></TD>
<TD><SELECT name="field7" SIZE=1><OPTION><FONT SIZE=-1>Email <OPTION>Phone
<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
<OPTION SELECTED>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
<OPTION>BLANK </FONT></SELECT></TD>
</TR>
</TABLE></CENTER>
<CENTER><P>
<HR SIZE=3 WIDTH="95%"></P></CENTER>
<CENTER><TABLE>
<TR>
<TD><B>The report has entries where</B> </TD>
<TD><SELECT name="searchfor" SIZE=1><OPTION SELECTED>FullName <OPTION>LastName
<OPTION>FirstName <OPTION>Email <OPTION>Phone <OPTION>Fax <OPTION>Dept#
<OPTION>Group <OPTION>Title <OPTION>Admin <OPTION>Location <OPTION>Floor
<OPTION>Cube# <OPTION>Mailstop <OPTION>EmpType <OPTION>MailAddr <OPTION>MailSrvr
<OPTION>Car# </SELECT></TD>
<TD><B>includes</B> </TD>
<TD><INPUT name="contains" size=20 maxsize=128 value=""></TD>
</TR>
</TABLE></CENTER>
<CENTER><TABLE>
<TR>
<TD>
<CENTER><P><INPUT name="num_sorts" type=hidden value="3"></P></CENTER>
</TD>
<TD><B>and is sorted by</B> </TD>
<TD><SELECT name="sortattr1" SIZE=1><OPTION SELECTED>FullName <OPTION>LastName
<OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax
<OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK
</SELECT></TD>
<TD><B>and then by</B> </TD>
<TD><SELECT name="sortattr2" SIZE=1><OPTION>FullName <OPTION>LastName <OPTION>FirstName
<OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax <OPTION>Pager
<OPTION>Mobile <OPTION>Dept# <OPTION SELECTED>Group <OPTION>Title <OPTION>Admin
<OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>EmpType <OPTION>Mailstop
<OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK </SELECT></TD>
<TD><B>and then by</B> </TD>
<TD><SELECT name="sortattr3" SIZE=1><OPTION>FullName <OPTION>LastName <OPTION>FirstName
<OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax <OPTION>Pager
<OPTION>Mobile <OPTION SELECTED>Dept# <OPTION>Group <OPTION>Title <OPTION>Admin
<OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop <OPTION>EmpType
<OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK </SELECT><B>.</B>
</TD>
</TR>
</TABLE></CENTER>
<CENTER><TABLE>
<TR>
<TD><B>Should the report have multiple smaller tables? </B> <INPUT type="radio" name="grouping" value="on" CHECKED>Yes
<INPUT type="radio" name="grouping" value="off">No </TD>
</TR>
</TABLE></CENTER>
<CENTER><P><BR>
<BR>
<BR>
</P></CENTER>
<CENTER><TABLE>
<TR>
<TD><INPUT type="reset" value="Reset"></TD>
<TD><INPUT type="submit" value="Make Report"></TD>
</TR>
</TABLE></CENTER>
<P></FORM></P>
</BODY>
</HTML>
--- alert.html DELETED ---
--- carded.html DELETED ---
--- confirm.html DELETED ---
--- index.html DELETED ---
--- intro.html DELETED ---
--- modify.html DELETED ---
--- nullStringError.html DELETED ---
--- phone.html DELETED ---
--- report.html DELETED ---
16 years, 3 months