obfsproxy: new packagelilik-openwrt-22.03
@ -0,0 +1,59 @@ | |||||
# | |||||
# Copyright (C) 2006-2016 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=obfsproxy | |||||
PKG_VERSION:=0.2.13 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/o/obfsproxy | |||||
PKG_MD5SUM:=f596aeeda7bf03cdf0e78e68e6e7ac9f | |||||
PKG_LICENSE:=BSD-3-Clause | |||||
PKG_LICENSE_FILES:=LICENSE | |||||
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com> | |||||
include $(INCLUDE_DIR)/package.mk | |||||
$(call include_mk, python-package.mk) | |||||
define Package/obfsproxy | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
TITLE:=A pluggable transport proxy written in Python | |||||
URL:=https://www.torproject.org/projects/obfsproxy.html.en | |||||
DEPENDS:=+python-light +python-crypto +python-pyptlib +python-setuptools +python-yaml +twisted | |||||
endef | |||||
define Package/obfsproxy/description | |||||
obfsproxy is a tool that attempts to circumvent censorship, by | |||||
transforming the Tor traffic between the client and the bridge. This | |||||
way, censors, who usually monitor traffic between the client and the | |||||
bridge, will see innocent-looking transformed traffic instead of the | |||||
actual Tor traffic. | |||||
endef | |||||
define Package/obfsproxy/conffiles | |||||
/etc/config/obfsproxy | |||||
endef | |||||
define Build/Compile | |||||
$(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)") | |||||
endef | |||||
define PyPackage/obfsproxy/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/obfsproxy $(1)/usr/bin/ | |||||
$(INSTALL_DIR) $(1)/etc/config | |||||
$(INSTALL_CONF) ./files/obfsproxy.conf $(1)/etc/config/obfsproxy | |||||
$(INSTALL_DIR) $(1)/etc/init.d | |||||
$(INSTALL_BIN) ./files/obfsproxy.init $(1)/etc/init.d/obfsproxy | |||||
endef | |||||
$(eval $(call PyPackage,obfsproxy)) | |||||
$(eval $(call BuildPackage,obfsproxy)) |
@ -0,0 +1,57 @@ | |||||
# To use Obfsproxy with Tor, follow the instructions at: | |||||
# | |||||
# https://www.torproject.org/projects/obfsproxy-instructions.html.en | |||||
# | |||||
# instead of setting up a separate instance of Obfsproxy. | |||||
config obfsproxy 'obfsproxy' | |||||
# Set to 1 to enable this instance | |||||
option enabled 0 | |||||
# One of: managed, dummy, b64, obfs2, obfs3, scramblesuit | |||||
option transport 'scramblesuit' | |||||
# Shared secret / password | |||||
# For obfs2 (as the shared secret parameter) and scramblesuit only | |||||
option password 'EXAMPLEPASSWORDNOTREAL' | |||||
# One of: server, ext_server, client, socks | |||||
option mode 'socks' | |||||
# Destination address | |||||
# Required for all modes except 'socks' | |||||
#option dest_host '0.0.0.0' | |||||
#option dest_port '80' | |||||
# Extended ORPort authentication cookie file location | |||||
# Required for 'ext_server' mode | |||||
#option ext_cookie_file '' | |||||
# Listener address | |||||
option listen_host '127.0.0.1' | |||||
option listen_port '8080' | |||||
# Set to log to a file instead of syslog | |||||
#option log_file '/var/log/obfsproxy.log' | |||||
# Minimum logging severity | |||||
# One of: error, warning, info, debug | |||||
#option log_min_severity 'info' | |||||
# Set to 1 to disable logging | |||||
#option no_log 0 | |||||
# Set to 1 to disable safe (scrubbed address) logging | |||||
#option no_safe_logging 0 | |||||
# Run as a different user | |||||
#option user 'nobody' | |||||
# Outgoing proxy | |||||
# proxy_scheme is one of: socks4a, socks5, http | |||||
# txsocksx is required for socks4a or socks5 | |||||
#option proxy_scheme '' | |||||
#option proxy_username '' | |||||
#option proxy_password '' | |||||
#option proxy_host '' | |||||
#option proxy_port '' |
@ -0,0 +1,158 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
# Copyright (C) 2016 OpenWrt.org | |||||
START=80 | |||||
STOP=20 | |||||
USE_PROCD=1 | |||||
PROG=/usr/bin/obfsproxy | |||||
append_arg() { | |||||
local cfg="$1" | |||||
local var="$2" | |||||
local opt="$3" | |||||
local def="$4" | |||||
local val | |||||
config_get val "$cfg" "$var" | |||||
[ -n "$val" -o -n "$def" ] && procd_append_param command "$opt" "${val:-$def}" | |||||
} | |||||
append_bool() { | |||||
local cfg="$1" | |||||
local var="$2" | |||||
local opt="$3" | |||||
local def="$4" | |||||
local val | |||||
config_get_bool val "$cfg" "$var" "$def" | |||||
[ "$val" = 1 ] && procd_append_param command "$opt" | |||||
} | |||||
append_plain() { | |||||
procd_append_param command "$1" | |||||
} | |||||
append_param() { | |||||
local cfg="$1" | |||||
local var="$2" | |||||
local opt="$3" | |||||
local def="$4" | |||||
local val | |||||
config_get val "$cfg" "$var" | |||||
[ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" | |||||
} | |||||
append_proxy_spec() { | |||||
local cfg="$1" | |||||
local scheme_var="$2" | |||||
local username_var="$3" | |||||
local password_var="$4" | |||||
local host_var="$5" | |||||
local port_var="$6" | |||||
local opt="$7" | |||||
local def="$8" | |||||
local scheme | |||||
local username | |||||
local password | |||||
local host | |||||
local port | |||||
local login | |||||
local val | |||||
config_get scheme "$cfg" "$scheme_var" | |||||
config_get username "$cfg" "$username_var" | |||||
config_get password "$cfg" "$password_var" | |||||
config_get host "$cfg" "$host_var" | |||||
config_get port "$cfg" "$port_var" | |||||
[ "$username" ] && login="$username${password:+:$password}@" | |||||
[ -n "$scheme" -a -n "$host" -a -n "$port" ] && val="$scheme://$login$host:$port" | |||||
[ -n "$val" -o -n "$def" ] && procd_append_param command "$opt" "${val:-$def}" | |||||
} | |||||
append_host_port() { | |||||
local cfg="$1" | |||||
local host_var="$2" | |||||
local port_var="$3" | |||||
local opt="$4" | |||||
local def="$5" | |||||
local host | |||||
local port | |||||
local val | |||||
config_get host "$cfg" "$host_var" | |||||
config_get port "$cfg" "$port_var" | |||||
[ -n "$host" -a -n "$port" ] && val="$host:$port" | |||||
[ -n "$val" -o -n "$def" ] && { | |||||
[ "$opt" ] && procd_append_param command "$opt" | |||||
procd_append_param command "${val:-$def}" | |||||
} | |||||
} | |||||
start_instance() { | |||||
local cfg="$1" | |||||
local lib_dir="/var/lib/obfsproxy/$cfg" | |||||
local redirect=0 | |||||
local enabled | |||||
local user | |||||
local transport | |||||
local password | |||||
local log_min_severity | |||||
config_get_bool enabled "$cfg" 'enabled' '0' | |||||
[ "$enabled" = 0 ] && return 1 | |||||
config_get user "$cfg" 'user' 'root' | |||||
config_get transport "$cfg" 'transport' | |||||
[ "$transport" = "scramblesuit" ] && config_get password "$cfg" 'password' | |||||
[ -d "$lib_dir" ] || { | |||||
mkdir -m 0755 -p "$lib_dir/data" | |||||
chmod -R 0700 "$lib_dir" | |||||
} | |||||
[ "$password" ] && { | |||||
echo "$password" > "$lib_dir/secret" | |||||
chmod 0600 "$lib_dir/secret" | |||||
} | |||||
chown -R "$user:" "$lib_dir" | |||||
config_get log_min_severity "$cfg" 'log_min_severity' | |||||
[ "$log_min_severity" = "debug" ] && redirect=1 | |||||
procd_open_instance | |||||
procd_set_param command "$PROG" --data-dir "$lib_dir/data" --syslog "obfsproxy($cfg)" | |||||
append_arg "$cfg" log_file "--log-file" | |||||
append_arg "$cfg" log_min_severity "--log-min-severity" | |||||
append_bool "$cfg" no_log "--no-log" | |||||
append_bool "$cfg" no_safe_logging "--no-safe-logging" | |||||
append_proxy_spec "$cfg" proxy_scheme proxy_username proxy_password proxy_host proxy_port "--proxy" | |||||
append_param "$cfg" transport command | |||||
[ "$transport" = "obfs2" ] && append_arg "$cfg" password "--shared-secret" | |||||
[ "$password" ] && procd_append_param command "--password-file" "$lib_dir/secret" | |||||
append_param "$cfg" mode command | |||||
append_host_port "$cfg" dest_host dest_port "--dest" | |||||
append_arg "$cfg" ext_cookie_file "--ext-cookie-file" | |||||
append_host_port "$cfg" listen_host listen_port | |||||
procd_set_param respawn | |||||
procd_set_param stdout $redirect | |||||
procd_set_param stderr $redirect | |||||
append_param "$cfg" user user | |||||
procd_close_instance | |||||
} | |||||
service_triggers() { | |||||
procd_add_reload_trigger obfsproxy | |||||
} | |||||
start_service() { | |||||
config_load obfsproxy | |||||
config_foreach start_instance obfsproxy | |||||
} |
@ -0,0 +1,13 @@ | |||||
diff --git a/setup.py b/setup.py | |||||
index 2353a29..9d2a9a9 100644 | |||||
--- a/setup.py | |||||
+++ b/setup.py | |||||
@@ -21,7 +21,7 @@ setup( | |||||
version=versioneer.get_version(), | |||||
cmdclass=versioneer.get_cmdclass(), | |||||
- packages = find_packages(), | |||||
+ packages = find_packages(exclude=['*.test', '*.test.*']), | |||||
entry_points = { | |||||
'console_scripts': [ | |||||
'obfsproxy = obfsproxy.pyobfsproxy:run' |
@ -0,0 +1,16 @@ | |||||
diff --git a/setup.py b/setup.py | |||||
index 2353a29..8d3d56d 100644 | |||||
--- a/setup.py | |||||
+++ b/setup.py | |||||
@@ -27,6 +27,11 @@ setup( | |||||
'obfsproxy = obfsproxy.pyobfsproxy:run' | |||||
] | |||||
}, | |||||
+ options = { | |||||
+ 'build_scripts': { | |||||
+ 'executable': '/usr/bin/python' | |||||
+ }, | |||||
+ }, | |||||
install_requires = [ | |||||
'setuptools', |
@ -0,0 +1,12 @@ | |||||
diff --git a/setup.py b/setup.py | |||||
index 2353a29..e04c5f5 100644 | |||||
--- a/setup.py | |||||
+++ b/setup.py | |||||
@@ -32,7 +32,6 @@ setup( | |||||
'setuptools', | |||||
'PyCrypto', | |||||
'Twisted', | |||||
- 'argparse', | |||||
'pyptlib >= 0.0.6', | |||||
'pyyaml' | |||||
], |
@ -0,0 +1,51 @@ | |||||
diff --git a/obfsproxy/common/log.py b/obfsproxy/common/log.py | |||||
index bb30296..79193d2 100644 | |||||
--- a/obfsproxy/common/log.py | |||||
+++ b/obfsproxy/common/log.py | |||||
@@ -1,5 +1,6 @@ | |||||
"""obfsproxy logging code""" | |||||
import logging | |||||
+import logging.handlers | |||||
import sys | |||||
from twisted.python import log | |||||
@@ -50,6 +51,18 @@ class ObfsLogger(object): | |||||
self.obfslogger.addHandler(log_handler) | |||||
+ def set_syslog(self, progname): | |||||
+ """Set up our logger so that it starts logging to syslog instead.""" | |||||
+ | |||||
+ # remove the default handler, and add the SysLogHandler: | |||||
+ self.obfslogger.removeHandler(self.default_handler) | |||||
+ | |||||
+ log_handler = logging.handlers.SysLogHandler(address='/dev/log') | |||||
+ formatter = logging.Formatter(progname + "[%(process)d]: %(message)s") | |||||
+ log_handler.setFormatter(formatter) | |||||
+ | |||||
+ self.obfslogger.addHandler(log_handler) | |||||
+ | |||||
def set_log_severity(self, sev_string): | |||||
"""Update our minimum logging severity to 'sev_string'.""" | |||||
diff --git a/obfsproxy/pyobfsproxy.py b/obfsproxy/pyobfsproxy.py | |||||
index 4a2faf6..eaf8a44 100755 | |||||
--- a/obfsproxy/pyobfsproxy.py | |||||
+++ b/obfsproxy/pyobfsproxy.py | |||||
@@ -42,6 +42,7 @@ def set_up_cli_parsing(): | |||||
parser.add_argument('-v', '--version', action='version', version=__version__) | |||||
parser.add_argument('--log-file', help='set logfile') | |||||
+ parser.add_argument('--syslog', metavar='PROGNAME', help='use syslog') | |||||
parser.add_argument('--log-min-severity', | |||||
choices=['error', 'warning', 'info', 'debug'], | |||||
help='set minimum logging severity (default: %(default)s)') | |||||
@@ -110,6 +111,8 @@ def consider_cli_args(args): | |||||
if args.log_file: | |||||
log.set_log_file(args.log_file) | |||||
+ elif args.syslog: | |||||
+ log.set_syslog(args.syslog) | |||||
if args.log_min_severity: | |||||
log.set_log_severity(args.log_min_severity) | |||||
if args.no_log: |