From a942fa7acbb8bf884df85d13bff6fa776b4342d0 Mon Sep 17 00:00:00 2001 From: Gabriel Kerneis Date: Tue, 3 Jun 2014 15:16:41 +0100 Subject: [PATCH] net/polipo: import 1.1.1 from packages Signed-off-by: Gabriel Kerneis --- net/polipo/Makefile | 59 +++++++++++++ net/polipo/files/polipo.config | 42 +++++++++ net/polipo/files/polipo.init | 150 +++++++++++++++++++++++++++++++++ 3 files changed, 251 insertions(+) create mode 100644 net/polipo/Makefile create mode 100644 net/polipo/files/polipo.config create mode 100644 net/polipo/files/polipo.init diff --git a/net/polipo/Makefile b/net/polipo/Makefile new file mode 100644 index 0000000000..48c24a1dc2 --- /dev/null +++ b/net/polipo/Makefile @@ -0,0 +1,59 @@ +# +# Copyright (C) 2007-2011 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:=polipo +PKG_VERSION:=1.1.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://www.pps.jussieu.fr/~jch/software/files/$(PKG_NAME)/ +PKG_MD5SUM:=86939e331e656f638271f578b6e3f893 + +include $(INCLUDE_DIR)/package.mk + +define Package/polipo + SUBMENU:=Web Servers/Proxies + SECTION:=net + CATEGORY:=Network + TITLE:=A caching web proxy + URL:=http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/ + MAINTAINER:=Gabriel Kerneis +endef + +define Package/polipo/description + Polipo is a small and fast caching web proxy (a web cache, an HTTP proxy, + a proxy server). While Polipo was designed to be used by one person or a + small group of people, there is nothing that prevents it from being used + by a larger group. +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + polipo +endef + +define Package/polipo/conffiles +/etc/config/polipo +/etc/polipo/config +endef + +define Package/polipo/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/polipo $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/etc/polipo + $(INSTALL_CONF) $(PKG_BUILD_DIR)/config.sample $(1)/etc/polipo/config + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DATA) ./files/polipo.config $(1)/etc/config/polipo + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/polipo.init $(1)/etc/init.d/polipo +endef + +$(eval $(call BuildPackage,polipo)) diff --git a/net/polipo/files/polipo.config b/net/polipo/files/polipo.config new file mode 100644 index 0000000000..8f8533191a --- /dev/null +++ b/net/polipo/files/polipo.config @@ -0,0 +1,42 @@ +# polipo daemon configuration +config 'polipo' 'daemon' + # daemonise polipo (fork in background) + option 'daemonise' '1' + # where polipo will store its process pid + option 'pidFile' '/var/run/polipo.pid' + +config 'polipo' 'general' + option 'enabled' '1' + # adress on which polipo will listen, 0.0.0.0 means all addresses + option 'proxyAddress' '0.0.0.0' + # port on which polipo will listen, default is 8123 + #option 'proxyPort' '8123' + # list of allowed clients to connect + list 'allowedClients' '192.168.1.0/24' + #list 'allowedClients' '127.0.0.1' + #list 'allowedClients' '192.168.2.1' + # how much RAM memory should Polipo use (in bytes). + option 'chunkHighMark' '1048576' + # enable disk cache index and serverlist of integrated polipo web interface + #option 'disableIndexing' '0' + #option 'disableServersList' '0' + # disable loging to syslog + option 'logSyslog' '0' + # set log file location (disabled when not set) + #option 'logFile' '/mnt/usbdrive/polipo/log' + +config 'polipo' 'cache' + # disk cache location, you should always use external storage device + # (disabled when not set) + #option 'diskCacheRoot' '/mnt/usbdrive-p2/polipo/cache' + # disk cache cleanup settings + #option 'diskCacheUnlinkTime' '20d' + #option 'diskCacheTruncateTime' '5d' + #option 'diskCacheTruncateSize' '3145728' + # set to 1 if proxy is used by multiple users + #option 'cacheIsShared' '1' + +config 'polipo' 'pmm' + # poor man's multiplexing semgnet size to fetch + #option 'pmmSize' '8192' + diff --git a/net/polipo/files/polipo.init b/net/polipo/files/polipo.init new file mode 100644 index 0000000000..3cd73d49bd --- /dev/null +++ b/net/polipo/files/polipo.init @@ -0,0 +1,150 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2008-2011 OpenWrt.org + +START=99 + +CFGFILE=/var/etc/polipo.conf + +start() { + config_load 'polipo' + + config_get_bool enabled "general" 'enabled' '0' + [ $enabled -gt 0 ] || return 1 + + mkdir -m 0755 -p /var/etc/ + echo '### AUTOGENERATED CONFIGURATION' > $CFGFILE + echo '### DO NOT EDIT' >> $CFGFILE + echo '### SEE /etc/config/polipo INSTEAD' >> $CFGFILE + echo '' >> $CFGFILE + + config_foreach polipo_config 'polipo' + + # handle values that are disabled when not defined or empty + echo "### VALUES THAT ARE DISABLED WHEN EMPTY" >> $CFGFILE + polipo_atom "cache" "diskCacheRoot" '"' "1" >> $CFGFILE + polipo_atom "general" "logFile" '"' "1" >> $CFGFILE + polipo_atom "general" "localDocumentRoot" '"' "1" >> $CFGFILE + + service_start /usr/sbin/polipo -c "$CFGFILE" +} + +stop() { + service_stop /usr/sbin/polipo -c "$CFGFILE" +} + +polipo_config() { + echo "### SECTION $1" >> $CFGFILE + + string_options='authCredentials authRealm dnsNameServer forbiddenFile + forbiddenUrl logFacility pidFile parentAuthCredentials parentProxy + proxyAddress proxyName redirector socksParentProxy socksProxyType + socksUserName uncachableFile' + + number_options='bigBufferSize chunkCriticalMark chunkHighMark chunkLowMark + diskCacheDirectoryPermissions diskCacheFilePermissions + diskCacheTruncateSize diskCacheWriteoutOnClose forbiddenRedirectCode + logFilePermissions logLevel maxDiskCacheEntrySize maxDiskEntries + maxObjectsWhenIdle maxPipelineTrain maxSideBuffering maxWriteoutWhenIdle + objectHashTableSize objectHighMark pmmFirstSize pmmSize proxyPort + publicObjectLowMark redirectorRedirectCode replyUnpipelineSize + serverMaxSlots serverSlots serverSlots1 maxAgeFraction' + + time_options='clientTimeout diskCacheTruncateTime diskCacheUnlinkTime + dnsGethostbynameTtl dnsMaxTimeout dnsNegativeTtl idleTime maxAge + maxConnectionAge maxConnectionRequests maxExpiresAge maxNoModifiedAge + replyUnpipelineTime serverExpireTime serverIdleTimeout serverTimeout + smallRequestTime' + + multistate_options='censorReferer dnsQueryIPv6 dnsUseGethostbyname + dontTrustVaryETag expectContinue pipelineAdditionalRequests + useTemporarySourceAddress relaxTransparency' + + boolean_options='cacheIsShared daemonise disableConfiguration disableIndexing + disableLocalInterface disableProxy disableServersList disableVia + dontCacheCookies dontCacheRedirects logSyslog mindlesslyCacheVary + preciseExpiry proxyOffline scrubLogs laxHttpParser' + + string_list_options='allowedClients censoredHeaders' + + number_list_options='allowedPorts tunnelAllowedPorts' + + for option in $string_options; do + polipo_atom "$1" "$option" '"' >> $CFGFILE + done + + for option in $number_options; do + polipo_atom "$1" "$option" >> $CFGFILE + done + + for option in $time_options; do + polipo_atom "$1" "$option" >> $CFGFILE + done + + for option in $multistate_options; do + polipo_atom "$1" "$option" >> $CFGFILE + done + + for option in $boolean_options; do + polipo_boolean "$1" "$option" >> $CFGFILE + done + + for option in $string_list_options; do + polipo_list "$1" "$option" '"' >> $CFGFILE + done + + for option in $number_list_options; do + polipo_list "$1" "$option" >> $CFGFILE + done +} + +polipo_atom() { + local SECTION=$1 + local OPTION=$2 + local QUOTE=$3 + local EMPTY_DISABLED=${4:-0} + + config_get _value "$SECTION" "$OPTION" + [ -n "$_value" -o "$EMPTY_DISABLED" -eq "1" ] && { + echo "$OPTION = ${QUOTE}${_value}${QUOTE}" + } +} + +polipo_boolean() { + local SECTION=$1 + local OPTION=$2 + + config_get_bool _value "$SECTION" "$OPTION" + [ -n "$_value" ] && { + [ "$_value" -eq "1" ] && _value="true" || _value="false" + echo "$OPTION = $_value" + } +} + +polipo_list() { + local SECTION=$1 + local OPTION=$2 + local QUOTE=$3 + + config_get _value "$SECTION" "$OPTION" + + [ "$SECTION" = general ] && [ "$OPTION" = allowedClients ] && { + case "$_value" in + *127.0.0.1*) : ;; + *) _value="127.0.0.1 $_value" ;; + esac + } + + [ -n "$_value" ] && { + echo -n "$OPTION = " + + local FIRST=1 + for entry in $_value; do + [ "$FIRST" -ne "1" ] && echo -n ", " || FIRST=0 + + echo -n "${QUOTE}${entry}${QUOTE}" + done + + echo '' + } +} +