Date: Sat, 24 Dec 2005 14:35:01 +1300 (NZDT) From: Andrew Thompson <thompsa@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/90868: [new port] add ftp/pftpx Message-ID: <20051224013501.5CDA62842D@heff.fud.org.nz> Resent-Message-ID: <200512240140.jBO1e5h1010007@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 90868 >Category: ports >Synopsis: [new port] add ftp/pftpx >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Sat Dec 24 01:40:05 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Andrew Thompson >Release: FreeBSD 6.0-STABLE i386 >Organization: >Environment: System: FreeBSD heff.fud.org.nz 6.0-STABLE FreeBSD 6.0-STABLE #1: Sat Dec 17 09:51:12 NZDT 2005 root@heff.fud.org.nz:/usr/obj/usr/src/sys/HEFF i386 >Description: Add ftp/pftpx on behalf of Scott Ullrich >How-To-Repeat: >Fix: also available @ http://people.freebsd.org/~thompsa/pftpx.shar # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # ftp # ftp/pfptx # ftp/pfptx/Makefile # ftp/pfptx/pkg-descr # ftp/pfptx/files # ftp/pfptx/files/patch-pftpx.c # ftp/pfptx/files/patch-Makefile # ftp/pfptx/distinfo # echo c - ftp mkdir -p ftp > /dev/null 2>&1 echo c - ftp/pfptx mkdir -p ftp/pfptx > /dev/null 2>&1 echo x - ftp/pfptx/Makefile sed 's/^X//' >ftp/pfptx/Makefile << 'END-of-ftp/pfptx/Makefile' X# New ports collection makefile for: pftpx X# Date created: 27 June 2005 X# Whom: Scott Ullrich (geekgod@geekgod.com) X# X# $FreeBSD: $ X XPORTNAME= pftpx XPORTVERSION= 0.8 XCATEGORIES= ftp XMASTER_SITES= http://www.sentia.org/downloads/ XDISTNAME= ${PORTNAME}-${PORTVERSION} X XMAINTAINER= geekgod@geekgod.com XCOMMENT= Much enhanced ftp proxy for pf that supports most ftp protocols X XLIB_DEPENDS= event-1.1a:${PORTSDIR}/devel/libevent X XMAN8= pftpx.8 X XPLIST_FILES= sbin/pftpx X X.include <bsd.port.pre.mk> X X.if ${OSVERSION} < 500000 XIGNORE= only for 5.0 and above X.endif X X.if ${OSVERSION} < 502116 XMAKE_ARGS= LOCALBASE="${PREFIX}" OSLEVEL=34 X.if defined(WITH_ALTQ) && (${WITH_ALTQ} == "yes") XCFLAGS+= -DHAVE_ALTQ=1 X.endif X.elif ${OSVERSION} < 600025 XMAKE_ARGS= LOCALBASE="${PREFIX}" OSLEVEL=35 XCFLAGS+= -DHAVE_ALTQ=1 -DHAVE_RULE_ANCHOR=1 X.else XMAKE_ARGS= LOCALBASE="${PREFIX}" OSLEVEL=37 XCFLAGS+= -DHAVE_ALTQ=1 X.endif X Xdo-install: X ${INSTALL_PROGRAM} ${WRKSRC}/pftpx ${PREFIX}/sbin X ${INSTALL_MAN} ${WRKSRC}/pftpx.8 ${PREFIX}/man/man8 X X.include <bsd.port.post.mk> END-of-ftp/pfptx/Makefile echo x - ftp/pfptx/pkg-descr sed 's/^X//' >ftp/pfptx/pkg-descr << 'END-of-ftp/pfptx/pkg-descr' Xpftpx is a ftp proxy with many advanced features such as: X X1) it handles all ftp modes: PORT, PASV, EPRT, EPSV X2) it handles ipv6 X3) it should scale: one process handles all sessions using libevent X4) it works with "strict" ftp clients (clients that want data connections X to the same IP as the control connection) END-of-ftp/pfptx/pkg-descr echo c - ftp/pfptx/files mkdir -p ftp/pfptx/files > /dev/null 2>&1 echo x - ftp/pfptx/files/patch-pftpx.c sed 's/^X//' >ftp/pfptx/files/patch-pftpx.c << 'END-of-ftp/pfptx/files/patch-pftpx.c' X--- pftpx.c.orig Mon Jun 27 17:58:30 2005 X+++ pftpx.c Mon Jun 27 18:01:11 2005 X@@ -58,6 +58,58 @@ X X #define sstosa(ss) ((struct sockaddr *)(ss)) X X+#include <sys/types.h> X+ X+#include <ctype.h> X+#include <limits.h> X+#include <string.h> X+ X+#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7') X+#include <sys/types.h> X+ X+#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7') X+#define isvisible(c) (((u_int)(c) <= UCHAR_MAX && isascii((u_char)(c)) && \ X+ isgraph((u_char)(c))) || \ X+ ((flag & VIS_SP) == 0 && (c) == ' ') || \ X+ ((flag & VIS_TAB) == 0 && (c) == '\t') || \ X+ ((flag & VIS_NL) == 0 && (c) == '\n') || \ X+ ((flag & VIS_SAFE) && ((c) == '\b' || \ X+ (c) == '\007' || (c) == '\r' || \ X+ isgraph((u_char)(c))))) X+ X+#define _VIS_H_ X+ X+#include <sys/types.h> X+#include <limits.h> X+ X+/* X+ * to select alternate encoding format X+ */ X+#define VIS_OCTAL 0x01 /* use octal \ddd format */ X+#define VIS_CSTYLE 0x02 /* use \[nrft0..] where appropriate */ X+ X+/* X+ * to alter set of characters encoded (default is to encode all X+ * non-graphic except space, tab, and newline). X+ */ X+#define VIS_SP 0x04 /* also encode space */ X+#define VIS_TAB 0x08 /* also encode tab */ X+#define VIS_NL 0x10 /* also encode newline */ X+#define VIS_WHITE (VIS_SP | VIS_TAB | VIS_NL) X+#define VIS_SAFE 0x20 /* only encode "unsafe" characters */ X+ X+/* X+ * other X+ */ X+#define VIS_NOSLASH 0x40 /* inhibit printing '\' */ X+ X+#define LIST_FIRST(head) ((head)->lh_first) X+#define LIST_END(head) NULL X+#define LIST_NEXT(elm, field) ((elm)->field.le_next) X+ X+char *vis(char *, int, int, int); X+int strnvis(char *, const char *, size_t, int); X+ X enum { CMD_NONE = 0, CMD_PORT, CMD_EPRT, CMD_PASV, CMD_EPSV }; X X struct session { X@@ -1037,3 +1089,143 @@ X "[-p address] [-q queue] [-t timeout]\n", __progname); X exit(1); X } X+ X+ X+/* X+ * vis - visually encode characters X+ */ X+char * X+vis(dst, c, flag, nextc) X+ register char *dst; X+ int c, nextc; X+ register int flag; X+{ X+ if (isvisible(c)) { X+ *dst++ = c; X+ if (c == '\\' && (flag & VIS_NOSLASH) == 0) X+ *dst++ = '\\'; X+ *dst = '\0'; X+ return (dst); X+ } X+ X+ if (flag & VIS_CSTYLE) { X+ switch(c) { X+ case '\n': X+ *dst++ = '\\'; X+ *dst++ = 'n'; X+ goto done; X+ case '\r': X+ *dst++ = '\\'; X+ *dst++ = 'r'; X+ goto done; X+ case '\b': X+ *dst++ = '\\'; X+ *dst++ = 'b'; X+ goto done; X+ case '\a': X+ *dst++ = '\\'; X+ *dst++ = 'a'; X+ goto done; X+ case '\v': X+ *dst++ = '\\'; X+ *dst++ = 'v'; X+ goto done; X+ case '\t': X+ *dst++ = '\\'; X+ *dst++ = 't'; X+ goto done; X+ case '\f': X+ *dst++ = '\\'; X+ *dst++ = 'f'; X+ goto done; X+ case ' ': X+ *dst++ = '\\'; X+ *dst++ = 's'; X+ goto done; X+ case '\0': X+ *dst++ = '\\'; X+ *dst++ = '0'; X+ if (isoctal(nextc)) { X+ *dst++ = '0'; X+ *dst++ = '0'; X+ } X+ goto done; X+ } X+ } X+ if (((c & 0177) == ' ') || (flag & VIS_OCTAL)) { X+ *dst++ = '\\'; X+ *dst++ = ((u_char)c >> 6 & 07) + '0'; X+ *dst++ = ((u_char)c >> 3 & 07) + '0'; X+ *dst++ = ((u_char)c & 07) + '0'; X+ goto done; X+ } X+ if ((flag & VIS_NOSLASH) == 0) X+ *dst++ = '\\'; X+ if (c & 0200) { X+ c &= 0177; X+ *dst++ = 'M'; X+ } X+ if (iscntrl(c)) { X+ *dst++ = '^'; X+ if (c == 0177) X+ *dst++ = '?'; X+ else X+ *dst++ = c + '@'; X+ } else { X+ *dst++ = '-'; X+ *dst++ = c; X+ } X+done: X+ *dst = '\0'; X+ return (dst); X+} X+ X+int X+strnvis(dst, src, siz, flag) X+ char *dst; X+ const char *src; X+ size_t siz; X+ int flag; X+{ X+ char c; X+ char *start, *end; X+ char tbuf[5]; X+ int i; X+ X+ i = 0; X+ for (start = dst, end = start + siz - 1; (c = *src) && dst < end; ) { X+ if (isvisible(c)) { X+ i = 1; X+ *dst++ = c; X+ if (c == '\\' && (flag & VIS_NOSLASH) == 0) { X+ /* need space for the extra '\\' */ X+ if (dst < end) X+ *dst++ = '\\'; X+ else { X+ dst--; X+ i = 2; X+ break; X+ } X+ } X+ src++; X+ } else { X+ i = vis(tbuf, c, flag, *++src) - tbuf; X+ if (dst + i <= end) { X+ memcpy(dst, tbuf, i); X+ dst += i; X+ } else { X+ src--; X+ break; X+ } X+ } X+ } X+ if (siz > 0) X+ *dst = '\0'; X+ if (dst + i > end) { X+ /* adjust return value for truncation */ X+ while ((c = *src)) X+ dst += vis(tbuf, c, flag, *++src) - tbuf; X+ } X+ return (dst - start); X+} X+ X END-of-ftp/pfptx/files/patch-pftpx.c echo x - ftp/pfptx/files/patch-Makefile sed 's/^X//' >ftp/pfptx/files/patch-Makefile << 'END-of-ftp/pfptx/files/patch-Makefile' X--- Makefile.orig Mon Jun 27 19:14:36 2005 X+++ Makefile Mon Jun 27 19:30:00 2005 X@@ -5,6 +5,8 @@ X CFLAGS+=-I. -g X CFLAGS+=-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \ X -Wno-uninitialized X+CFLAGS+=-I/usr/local/include -L/usr/local/lib X+INCLUDES+= -I/usr/local/include X LDADD+= -levent X X .include <bsd.prog.mk> END-of-ftp/pfptx/files/patch-Makefile echo x - ftp/pfptx/distinfo sed 's/^X//' >ftp/pfptx/distinfo << 'END-of-ftp/pfptx/distinfo' XMD5 (pftpx-0.8.tar.gz) = 6d71baaab87c4ad13949bf7fc5d64f55 XSHA256 (pftpx-0.8.tar.gz) = b76443ac70cf19c2e92d69f51ed12995c582c60584111594ab97431c48e370ce XSIZE (pftpx-0.8.tar.gz) = 11488 END-of-ftp/pfptx/distinfo exit >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051224013501.5CDA62842D>