This adds tcpproxy a simple tcp connection proxy.lilik-openwrt-22.03
@ -0,0 +1,84 @@ | |||
# | |||
# Copyright (C) 2010 Christian Pointner, | |||
# <equinox@spreadspace.org> | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
# This Makefile builds tcpproxy Package for OpenWRT | |||
# | |||
# $Id: $ | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=tcpproxy | |||
PKG_VERSION:=1.1 | |||
PKG_RELEASE:=1 | |||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||
PKG_SOURCE_URL:=http://www.spreadspace.org/tcpproxy/releases/ | |||
PKG_MD5SUM:=55126473bcde635f9ee019c6caf19bb7 | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/tcpproxy | |||
SECTION:=net | |||
CATEGORY:=Network | |||
SUBMENU:=Routing and Redirection | |||
TITLE:=IPv4/IPv6 tcp connection proxy | |||
URL:=http://www.spreadspace.org/tcpproxy/ | |||
MAINTAINER:=Christian Pointner <equinox@spreadspace.org> | |||
endef | |||
define Package/tcpproxy/conffiles | |||
/etc/config/tcpproxy | |||
endef | |||
define Package/tcpproxy/description | |||
tcpproxy is a simple tcp connection proxy which combines the features of rinetd and 6tunnel. | |||
tcpproxy supports IPv4 and IPv6 and also supports connections from IPv6 to IPv4 endpoints and vice versa. | |||
endef | |||
define Package/tcpproxy/configure | |||
endef | |||
define Build/Configure | |||
(cd $(PKG_BUILD_DIR)/src; \ | |||
touch include.mk; \ | |||
echo '#ifndef TCPPROXY_config_h_INCLUDED' > config.h; \ | |||
echo '#define TCPPROXY_config_h_INCLUDED' >> config.h; \ | |||
echo '' >> config.h; \ | |||
echo '#define VERSION_STRING_0 "tcpproxy version '`cat $(PKG_BUILD_DIR)/version`'"' >> config.h; \ | |||
echo '#define VERSION_STRING_1 "built on '`hostname`', '`date +"%d.%m.%Y %H:%M:%S %Z"`'"' >> config.h; \ | |||
echo '' >> config.h; \ | |||
echo '#define TARGET "linux"' >> config.h; \ | |||
echo '#define PREFIX "/usr"' >> config.h; \ | |||
echo '#define BINDIR "/usr/bin"' >> config.h; \ | |||
echo '#define ETCDIR "/etc"' >> config.h; \ | |||
echo '#define CONFFILE "/etc/tcpproxy.conf"' >> config.h; \ | |||
echo '' >> config.h; \ | |||
echo '#endif' >> config.h \ | |||
) | |||
endef | |||
define Build/Compile | |||
$(MAKE) -C $(PKG_BUILD_DIR)/src \ | |||
$(TARGET_CONFIGURE_OPTS) \ | |||
TARGET=Linux \ | |||
CFLAGS="$(TARGET_CFLAGS)" \ | |||
LDFLAGS="$(TARGET_LDFLAGS)" | |||
$(STRIP) $(PKG_BUILD_DIR)/src/tcpproxy | |||
endef | |||
define Package/tcpproxy/install | |||
$(INSTALL_DIR) $(1)/etc/config | |||
$(INSTALL_DATA) ./files/tcpproxy.config $(1)/etc/config/tcpproxy | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(2)/src/tcpproxy $(1)/usr/bin/tcpproxy | |||
$(INSTALL_DIR) $(1)/etc/init.d | |||
$(INSTALL_BIN) ./files/tcpproxy.init $(1)/etc/init.d/tcpproxy | |||
endef | |||
$(eval $(call BuildPackage,tcpproxy)) |
@ -0,0 +1,26 @@ | |||
config tcpproxy | |||
option username 'nobody' | |||
option groupname 'nogroup' | |||
# option chroot "/var/run/tcpproxy" | |||
# option log 'syslog:3,tcpproxy,daemon' | |||
config listen | |||
option disabled 1 | |||
option local_port '8000' | |||
option resolv 'ipv4' | |||
option remote_addr 'www.google.at' | |||
option remote_port '80' | |||
option remote_resolv 'ipv6' | |||
option source_addr '2a02:3e0:2002:1:215:58ff:fe31:2ce7' | |||
config listen | |||
option disabled 1 | |||
option local_addr '2a02:3e0:2002:1:215:58ff:fe31:2ce7' | |||
option local_port '1234' | |||
option remote_addr 'www.google.at' | |||
option remote_port '80' | |||
option remote_resolv 'ipv4' |
@ -0,0 +1,96 @@ | |||
#!/bin/sh /etc/rc.common | |||
START=50 | |||
BIN=tcpproxy | |||
DAEMON=/usr/bin/$BIN | |||
DAEMON_ARGS="" | |||
DESC=$BIN | |||
RUN_D=/var/run | |||
CONFIG_DIR=/var/etc | |||
CONFIG_FILE=$CONFIG_DIR/$BIN.conf | |||
tcpproxy_write_config() { | |||
local cfg="$1" | |||
config_get_bool value "$cfg" disabled 0 | |||
[ "$value" -ne 0 ] && return | |||
local local_addr="" | |||
local resolv="" | |||
local local_port="" | |||
local remote_addr="" | |||
local remote_resolv="" | |||
local remote_port="" | |||
local source_addr="" | |||
config_get local_addr "$cfg" local_addr | |||
config_get local_port "$cfg" local_port | |||
config_get resolv "$cfg" resolv | |||
config_get remote_addr "$cfg" remote_addr | |||
config_get remote_port "$cfg" remote_port | |||
config_get remote_resolv "$cfg" remote_resolv | |||
config_get source_addr "$cfg" source_addr | |||
if [ -z "$local_addr" ]; then | |||
local_addr="*" | |||
fi | |||
echo "listen $local_addr $local_port" >> $CONFIG_FILE | |||
echo "{" >> $CONFIG_FILE | |||
if [ -n "$resolv" ]; then | |||
echo " resolv: $resolv;" >> $CONFIG_FILE | |||
fi | |||
echo " remote: $remote_addr $remote_port;" >> $CONFIG_FILE | |||
if [ -n "$remote_resolv" ]; then | |||
echo " remote-resolv: $remote_resolv;" >> $CONFIG_FILE | |||
fi | |||
if [ -n "$source_addr" ]; then | |||
echo " source: $source_addr;" >> $CONFIG_FILE | |||
fi | |||
echo "};" >> $CONFIG_FILE | |||
echo "" >> $CONFIG_FILE | |||
} | |||
tcpproxy_generate_args() { | |||
local cfg="$1" | |||
local option | |||
local value | |||
for option in username groupname chroot log | |||
do | |||
config_get value "$cfg" "$option" | |||
option=`echo $option | tr '_' '-'` | |||
if [ -n "$value" ]; then | |||
DAEMON_ARGS="$DAEMON_ARGS --$option $value" | |||
fi | |||
done | |||
} | |||
tcpproxy_rebuild_config() { | |||
mkdir -p $CONFIG_DIR | |||
rm -f $CONFIG_FILE | |||
touch $CONFIG_FILE | |||
config_load $BIN | |||
config_foreach tcpproxy_write_config listen | |||
} | |||
start() { | |||
echo -n "Starting $DESC " | |||
tcpproxy_rebuild_config | |||
config_foreach tcpproxy_generate_args $BIN | |||
$DAEMON $DAEMON_ARGS --config $CONFIG_FILE --write-pid "$RUN_D/$BIN.pid" | |||
echo "." | |||
} | |||
reload() { | |||
echo -n "Reloading $DESC " | |||
tcpproxy_rebuild_config | |||
kill -SIGHUP `cat "$RUN_D/$BIN.pid"` | |||
echo "." | |||
} | |||
stop() { | |||
echo -n "Stopping $DESC " | |||
kill `cat $RUN_D/$BIN.pid` > /dev/null 2>&1 | |||
echo "." | |||
} |