diff options
author | Seemant Kulleen <seemant@gentoo.org> | 2005-04-07 21:23:49 +0000 |
---|---|---|
committer | Seemant Kulleen <seemant@gentoo.org> | 2005-04-07 21:23:49 +0000 |
commit | 8ce5f59945935e8e099115b3bb637b3c7128de44 (patch) | |
tree | e3e4693625a44d9e54e488197bf49dae6ac415bf /app-crypt | |
parent | new release, mark 1.1.5 x86 (diff) | |
download | gentoo-2-8ce5f59945935e8e099115b3bb637b3c7128de44.tar.gz gentoo-2-8ce5f59945935e8e099115b3bb637b3c7128de44.tar.bz2 gentoo-2-8ce5f59945935e8e099115b3bb637b3c7128de44.zip |
version bump. This is HARDMASKED because the ebuild is still a work in progress. Please do NOT emerge this, unless you read my blog (I will give clearance in my blog for emerging this when the time arrives -- that time is certainly not now. Back away and forget you saw this.
(Portage version: 1.585-cvs)
Diffstat (limited to 'app-crypt')
16 files changed, 222 insertions, 286 deletions
diff --git a/app-crypt/mit-krb5/ChangeLog b/app-crypt/mit-krb5/ChangeLog index c23b6215f750..77e283ad55ba 100644 --- a/app-crypt/mit-krb5/ChangeLog +++ b/app-crypt/mit-krb5/ChangeLog @@ -1,6 +1,26 @@ # ChangeLog for app-crypt/mit-krb5 # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-crypt/mit-krb5/ChangeLog,v 1.78 2005/04/07 20:45:25 plasmaroo Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-crypt/mit-krb5/ChangeLog,v 1.79 2005/04/07 21:23:49 seemant Exp $ + +*mit-krb5-1.4 (07 Apr 2005) + + 07 Apr 2005; Seemant Kulleen <seemant@gentoo.org> + -files/mit-krb5-1.3.1-res_search.patch.bz2, + -files/mit-krb5-1.3.3-aname.patch.bz2, + -files/mit-krb5-1.3.3-autoheader.patch.bz2, + -files/mit-krb5-1.3.3-res_search.patch.bz2, + -files/mit-krb5-1.3.4-autoheader.patch.bz2, + -files/mit-krb5-1.3.4-res_search.patch.bz2, + -files/mit-krb5-1.3.4-tempfile.patch.bz2, + -files/mit-krb5-1.3.5-autoheader.patch.bz2, + -files/mit-krb5-1.3.5-res_search.patch.bz2, + -files/mit-krb5-1.3.5-suid_fix.patch.bz2, + +files/mit-krb5-1.4-2005-001.patch, -files/2004-002-patch_1.3.4.txt, + -files/2004-003-patch_1.3.4.txt, +mit-krb5-1.4.ebuild: + version bump. This is HARDMASKED because the ebuild is still a work in + progress. Please do NOT emerge this, unless you read my blog (I will give + clearance in my blog for emerging this when the time arrives -- that time is + certainly not now. Back away and forget you saw this. 07 Apr 2005; <plasmaroo@gentoo.org> mit-krb5-1.3.6-r2.ebuild: Mark stable on IA64; #87145. diff --git a/app-crypt/mit-krb5/files/2004-002-patch_1.3.4.txt b/app-crypt/mit-krb5/files/2004-002-patch_1.3.4.txt deleted file mode 100644 index 2703b0f799b4..000000000000 --- a/app-crypt/mit-krb5/files/2004-002-patch_1.3.4.txt +++ /dev/null @@ -1,268 +0,0 @@ -Index: src/clients/klist/klist.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/clients/klist/klist.c,v -retrieving revision 5.63 -diff -c -r5.63 klist.c -*** src/clients/klist/klist.c 11 Apr 2002 03:21:46 -0000 5.63 ---- src/clients/klist/klist.c 23 Aug 2004 03:37:26 -0000 -*************** -*** 614,619 **** ---- 614,622 ---- - - if (show_etype) { - retval = krb5_decode_ticket(&cred->ticket, &tkt); -+ if (retval) -+ goto err_tkt; -+ - if (!extra_field) - fputs("\t",stdout); - else -*************** -*** 622,629 **** - etype_string(cred->keyblock.enctype)); - printf("%s ", - etype_string(tkt->enc_part.enctype)); -- krb5_free_ticket(kcontext, tkt); - extra_field++; - } - - /* if any additional info was printed, extra_field is non-zero */ ---- 625,635 ---- - etype_string(cred->keyblock.enctype)); - printf("%s ", - etype_string(tkt->enc_part.enctype)); - extra_field++; -+ -+ err_tkt: -+ if (tkt != NULL) -+ krb5_free_ticket(kcontext, tkt); - } - - /* if any additional info was printed, extra_field is non-zero */ -Index: src/krb524/krb524d.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/krb524/krb524d.c,v -retrieving revision 1.55.2.3 -diff -c -r1.55.2.3 krb524d.c -*** src/krb524/krb524d.c 28 May 2003 04:06:31 -0000 1.55.2.3 ---- src/krb524/krb524d.c 23 Aug 2004 03:37:26 -0000 -*************** -*** 582,589 **** - printf("v4 credentials encoded\n"); - - error: -! if (v5tkt->enc_part2) - krb5_free_enc_tkt_part(context, v5tkt->enc_part2); - - if(v5_service_key.contents) - krb5_free_keyblock_contents(context, &v5_service_key); ---- 582,591 ---- - printf("v4 credentials encoded\n"); - - error: -! if (v5tkt->enc_part2) { - krb5_free_enc_tkt_part(context, v5tkt->enc_part2); -+ v5tkt->enc_part2 = NULL; -+ } - - if(v5_service_key.contents) - krb5_free_keyblock_contents(context, &v5_service_key); -Index: src/lib/krb5/asn.1/asn1buf.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/lib/krb5/asn.1/asn1buf.c,v -retrieving revision 5.24 -diff -c -r5.24 asn1buf.c -*** src/lib/krb5/asn.1/asn1buf.c 12 Mar 2003 04:33:30 -0000 5.24 ---- src/lib/krb5/asn.1/asn1buf.c 23 Aug 2004 03:37:27 -0000 -*************** -*** 255,260 **** ---- 255,261 ---- - (*code)->data = (char*)malloc((((*code)->length)+1)*sizeof(char)); - if ((*code)->data == NULL) { - free(*code); -+ *code = NULL; - return ENOMEM; - } - for(i=0; i < (*code)->length; i++) -Index: src/lib/krb5/asn.1/krb5_decode.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/lib/krb5/asn.1/krb5_decode.c,v -retrieving revision 5.40.2.5 -diff -c -r5.40.2.5 krb5_decode.c -*** src/lib/krb5/asn.1/krb5_decode.c 10 Oct 2003 23:57:38 -0000 5.40.2.5 ---- src/lib/krb5/asn.1/krb5_decode.c 23 Aug 2004 03:37:27 -0000 -*************** -*** 183,190 **** - #define cleanup(cleanup_routine)\ - return 0; \ - error_out: \ -! if (rep && *rep) \ - cleanup_routine(*rep); \ - return retval; - - #define cleanup_none()\ ---- 183,192 ---- - #define cleanup(cleanup_routine)\ - return 0; \ - error_out: \ -! if (rep && *rep) { \ - cleanup_routine(*rep); \ -+ *rep = NULL; \ -+ } \ - return retval; - - #define cleanup_none()\ -*************** -*** 233,238 **** ---- 235,241 ---- - free_field(*rep,checksum); - free_field(*rep,client); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 254,260 **** - { begin_structure(); - { krb5_kvno kvno; - get_field(kvno,0,asn1_decode_kvno); -! if(kvno != KVNO) return KRB5KDC_ERR_BAD_PVNO; - } - alloc_field((*rep)->server,krb5_principal_data); - get_field((*rep)->server,1,asn1_decode_realm); ---- 257,263 ---- - { begin_structure(); - { krb5_kvno kvno; - get_field(kvno,0,asn1_decode_kvno); -! if(kvno != KVNO) clean_return(KRB5KDC_ERR_BAD_PVNO); - } - alloc_field((*rep)->server,krb5_principal_data); - get_field((*rep)->server,1,asn1_decode_realm); -*************** -*** 268,273 **** ---- 271,277 ---- - if (rep && *rep) { - free_field(*rep,server); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 320,325 **** ---- 324,330 ---- - free_field(*rep,session); - free_field(*rep,client); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 403,408 **** ---- 408,414 ---- - if (rep && *rep) { - free_field(*rep,ticket); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 451,456 **** ---- 457,463 ---- - if (rep && *rep) { - free_field(*rep,subkey); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 556,561 **** ---- 563,569 ---- - if (rep && *rep) { - free_field(*rep,checksum); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 614,619 **** ---- 622,628 ---- - free_field(*rep,r_address); - free_field(*rep,s_address); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 668,673 **** ---- 677,683 ---- - free_field(*rep,r_address); - free_field(*rep,s_address); - free(*rep); -+ *rep = NULL; - } - return retval; - } -*************** -*** 713,718 **** ---- 723,729 ---- - free_field(*rep,server); - free_field(*rep,client); - free(*rep); -+ *rep = NULL; - } - return retval; - } -Index: src/lib/krb5/krb/rd_rep.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/lib/krb5/krb/rd_rep.c,v -retrieving revision 5.33.2.2 -diff -c -r5.33.2.2 rd_rep.c -*** src/lib/krb5/krb/rd_rep.c 14 Jun 2003 00:09:47 -0000 5.33.2.2 ---- src/lib/krb5/krb/rd_rep.c 23 Aug 2004 03:37:27 -0000 -*************** -*** 71,76 **** ---- 71,78 ---- - - /* now decode the decrypted stuff */ - retval = decode_krb5_ap_rep_enc_part(&scratch, repl); -+ if (retval) -+ goto clean_scratch; - - /* Check reply fields */ - if (((*repl)->ctime != auth_context->authentp->ctime) || -Index: src/lib/krb5/krb/send_tgs.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/lib/krb5/krb/send_tgs.c,v -retrieving revision 5.55.2.1 -diff -c -r5.55.2.1 send_tgs.c -*** src/lib/krb5/krb/send_tgs.c 13 May 2004 19:27:59 -0000 5.55.2.1 ---- src/lib/krb5/krb/send_tgs.c 23 Aug 2004 03:37:27 -0000 -*************** -*** 269,274 **** ---- 269,276 ---- - if (!tcp_only) { - krb5_error *err_reply; - retval = decode_krb5_error(&rep->response, &err_reply); -+ if (retval) -+ goto send_tgs_error_3; - if (err_reply->error == KRB_ERR_RESPONSE_TOO_BIG) { - tcp_only = 1; - krb5_free_error(context, err_reply); -*************** -*** 277,282 **** ---- 279,286 ---- - goto send_again; - } - krb5_free_error(context, err_reply); -+ send_tgs_error_3: -+ ; - } - rep->message_type = KRB5_ERROR; - } else if (krb5_is_tgs_rep(&rep->response)) diff --git a/app-crypt/mit-krb5/files/2004-003-patch_1.3.4.txt b/app-crypt/mit-krb5/files/2004-003-patch_1.3.4.txt deleted file mode 100644 index 57a92134d4d7..000000000000 --- a/app-crypt/mit-krb5/files/2004-003-patch_1.3.4.txt +++ /dev/null @@ -1,17 +0,0 @@ -Index: src/lib/krb5/asn.1/asn1buf.c -=================================================================== -RCS file: /cvs/krbdev/krb5/src/lib/krb5/asn.1/asn1buf.c,v -retrieving revision 5.24 -*** src/lib/krb5/asn.1/asn1buf.c 12 Mar 2003 04:33:30 -0000 5.24 ---- src/lib/krb5/asn.1/asn1buf.c 23 Aug 2004 03:43:47 -0000 -*************** -*** 122,127 **** ---- 122,129 ---- - return ASN1_OVERRUN; - } - while (nestlevel > 0) { -+ if (buf->bound - buf->next + 1 <= 0) -+ return ASN1_OVERRUN; - retval = asn1_get_tag_2(buf, &t); - if (retval) return retval; - if (!t.indef) { diff --git a/app-crypt/mit-krb5/files/digest-mit-krb5-1.4 b/app-crypt/mit-krb5/files/digest-mit-krb5-1.4 new file mode 100644 index 000000000000..ac6056f92eaa --- /dev/null +++ b/app-crypt/mit-krb5/files/digest-mit-krb5-1.4 @@ -0,0 +1 @@ +MD5 2fa56607677544e3a27b42f7cfa1155b krb5-1.4-signed.tar 6625280 diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.1-res_search.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.1-res_search.patch.bz2 Binary files differdeleted file mode 100644 index ad5916ffb176..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.1-res_search.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.3-aname.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.3-aname.patch.bz2 Binary files differdeleted file mode 100644 index 6217ced5931b..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.3-aname.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.3-autoheader.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.3-autoheader.patch.bz2 Binary files differdeleted file mode 100644 index 123567b253c8..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.3-autoheader.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.3-res_search.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.3-res_search.patch.bz2 Binary files differdeleted file mode 100644 index ad5916ffb176..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.3-res_search.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.4-autoheader.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.4-autoheader.patch.bz2 Binary files differdeleted file mode 100644 index 123567b253c8..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.4-autoheader.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.4-res_search.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.4-res_search.patch.bz2 Binary files differdeleted file mode 100644 index ad5916ffb176..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.4-res_search.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.4-tempfile.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.4-tempfile.patch.bz2 Binary files differdeleted file mode 100644 index 295074034638..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.4-tempfile.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.5-autoheader.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.5-autoheader.patch.bz2 Binary files differdeleted file mode 100644 index 123567b253c8..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.5-autoheader.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.5-res_search.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.5-res_search.patch.bz2 Binary files differdeleted file mode 100644 index ad5916ffb176..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.5-res_search.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.3.5-suid_fix.patch.bz2 b/app-crypt/mit-krb5/files/mit-krb5-1.3.5-suid_fix.patch.bz2 Binary files differdeleted file mode 100644 index 41e627f9dc9b..000000000000 --- a/app-crypt/mit-krb5/files/mit-krb5-1.3.5-suid_fix.patch.bz2 +++ /dev/null diff --git a/app-crypt/mit-krb5/files/mit-krb5-1.4-2005-001.patch b/app-crypt/mit-krb5/files/mit-krb5-1.4-2005-001.patch new file mode 100644 index 000000000000..77b3abdfceda --- /dev/null +++ b/app-crypt/mit-krb5/files/mit-krb5-1.4-2005-001.patch @@ -0,0 +1,95 @@ +Index: telnet.c +=================================================================== +RCS file: /cvs/krbdev/krb5/src/appl/telnet/telnet/telnet.c,v +retrieving revision 5.18 +diff -c -r5.18 telnet.c +*** src/appl/telnet/telnet/telnet.c 15 Nov 2002 20:21:35 -0000 5.18 +--- src/appl/telnet/telnet/telnet.c 15 Mar 2005 18:59:32 -0000 +*************** +*** 1475,1480 **** +--- 1475,1482 ---- + unsigned char flags; + cc_t value; + { ++ if ((slc_replyp - slc_reply) + 6 > sizeof(slc_reply)) ++ return; + if ((*slc_replyp++ = func) == IAC) + *slc_replyp++ = IAC; + if ((*slc_replyp++ = flags) == IAC) +*************** +*** 1488,1498 **** + { + register int len; + +- *slc_replyp++ = IAC; +- *slc_replyp++ = SE; + len = slc_replyp - slc_reply; +! if (len <= 6) + return; + if (NETROOM() > len) { + ring_supply_data(&netoring, slc_reply, slc_replyp - slc_reply); + printsub('>', &slc_reply[2], slc_replyp - slc_reply - 2); +--- 1490,1501 ---- + { + register int len; + + len = slc_replyp - slc_reply; +! if (len <= 4 || (len + 2 > sizeof(slc_reply))) + return; ++ *slc_replyp++ = IAC; ++ *slc_replyp++ = SE; ++ len += 2; + if (NETROOM() > len) { + ring_supply_data(&netoring, slc_reply, slc_replyp - slc_reply); + printsub('>', &slc_reply[2], slc_replyp - slc_reply - 2); +*************** +*** 1645,1650 **** +--- 1648,1654 ---- + register unsigned char *ep; + { + register unsigned char *vp, c; ++ unsigned int len, olen, elen; + + if (opt_reply == NULL) /*XXX*/ + return; /*XXX*/ +*************** +*** 1662,1680 **** + return; + } + vp = env_getvalue(ep); +! if (opt_replyp + (vp ? strlen((char *)vp) : 0) + +! strlen((char *)ep) + 6 > opt_replyend) + { +! register unsigned int len; +! opt_replyend += OPT_REPLY_SIZE; +! len = opt_replyend - opt_reply; + opt_reply = (unsigned char *)realloc(opt_reply, len); + if (opt_reply == NULL) { + /*@*/ printf("env_opt_add: realloc() failed!!!\n"); + opt_reply = opt_replyp = opt_replyend = NULL; + return; + } +! opt_replyp = opt_reply + len - (opt_replyend - opt_replyp); + opt_replyend = opt_reply + len; + } + if (opt_welldefined((char *) ep)) +--- 1666,1684 ---- + return; + } + vp = env_getvalue(ep); +! elen = 2 * (vp ? strlen((char *)vp) : 0) + +! 2 * strlen((char *)ep) + 6; +! if ((opt_replyend - opt_replyp) < elen) + { +! len = opt_replyend - opt_reply + elen; +! olen = opt_replyp - opt_reply; + opt_reply = (unsigned char *)realloc(opt_reply, len); + if (opt_reply == NULL) { + /*@*/ printf("env_opt_add: realloc() failed!!!\n"); + opt_reply = opt_replyp = opt_replyend = NULL; + return; + } +! opt_replyp = opt_reply + olen; + opt_replyend = opt_reply + len; + } + if (opt_welldefined((char *) ep)) diff --git a/app-crypt/mit-krb5/mit-krb5-1.4.ebuild b/app-crypt/mit-krb5/mit-krb5-1.4.ebuild new file mode 100644 index 000000000000..f3d2e5f1db4c --- /dev/null +++ b/app-crypt/mit-krb5/mit-krb5-1.4.ebuild @@ -0,0 +1,105 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-crypt/mit-krb5/mit-krb5-1.4.ebuild,v 1.1 2005/04/07 21:23:49 seemant Exp $ + +inherit eutils flag-o-matic versionator + +MY_P=${P/mit-} +P_DIR=$(get_version_component_range 1-2) +S=${WORKDIR}/${MY_P}/src +DESCRIPTION="MIT Kerberos V" +HOMEPAGE="http://web.mit.edu/kerberos/www/" +SRC_URI="http://web.mit.edu/kerberos/dist/krb5/${P_DIR}/${MY_P}-signed.tar" + +LICENSE="as-is" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86" +IUSE="krb4 static tcltk ipv6 doc tetex" + +RDEPEND="virtual/libc" +# !virtual/krb5" + +DEPEND="${RDEPEND} + sys-libs/com_err + sys-libs/ss + sys-devel/autoconf" + +PROVIDE="virtual/krb5" + +src_unpack() { + unpack ${A}; tar -zxf ${MY_P}.tar.gz; cd ${S} + epatch ${FILESDIR}/${P}-2005-001.patch +} + +src_compile() { + export DB_HEADER="/usr/include/db4.2/db_185.h" + export DB_LIB="/usr/$(get_libdir)/libdb.so" + + econf \ + $(use_enable static) \ + $(use_with krb4) \ + $(use_enable ipv6) \ + $(use_with tcltk tcl) \ + --enable-shared \ + --with-system-et --with-system-ss --with-system-db \ + --enable-dns-for-realm \ + --program-prefix=mit- \ + --sysconfdir=/etc/kerberos || die + # --program-transform-name="s:\(.*\):mit-\1:" || die + + emake || die + + # Now, remake the ksu binary with -Wl,-z,now in CFLAGS + append-ldflags "-Wl,-z,now" + emake -C clients/ksu clean || die + emake LDFLAGS="${LDFLAGS}" -C clients/ksu || die + + if use doc + then + cd ../doc + rm man2html && ln -sf ${ROOT}/usr/bin/man2html + + make || die + + if use tetex + then + cd api + make || die + fi + fi +} + +src_install() { + make \ + DESTDIR=${D} \ + EXAMPLEDIR=${D}/usr/share/doc/${PF}/examples \ + install || die + + cd .. + dodoc README + doinfo doc/*.texinfo + + if use doc + then + dohtml -r doc + use tetex \ + && dodoc doc/api/*.ps \ + || dodoc doc/api/*.{tex,sty} + + fi + + newinitd ${FILESDIR}/mit-krb5kadmind.initd mit-krb5kadmind + newinitd ${FILESDIR}/mit-krb5kdc.initd mit-krb5kdc +} + +pkg_postinst() { + + if use doc + then + einfo "See /usr/share/doc/${PF}/html/admin.html for documentation." + echo "" + fi + einfo "The client apps are installed with the mit- prefix" + einfo "(ie. mit-ftp, mit-ftpd, mit-telnet, mit-telnetd, etc...)" + echo "" +} |