Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37851208
en ru br
ALT Linux repositórios
S:1.4.5-alt1
5.0: 1.0-alt6.M50.1
4.1: 0.4-alt2.M41.7
4.0: 0.2-alt11

Group :: Sistema/Configurações/Rede
RPM: alterator-squid

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

alterator-squid-0.4/000075500000000000000000000000001114003310300144555ustar00rootroot00000000000000alterator-squid-0.4/Makefile000064400000000000000000000002101114003310300161060ustar00rootroot00000000000000NAME=squid

TEST_REQUIRES=squid

all:
clean:
install: install-module
check: check-module

include /usr/share/alterator/build/module.mak
alterator-squid-0.4/applications/000075500000000000000000000000001114003310300171435ustar00rootroot00000000000000alterator-squid-0.4/applications/squid.desktop000064400000000000000000000002751114003310300216670ustar00rootroot00000000000000[Desktop Entry]
Encoding=UTF-8
Type=Application
Categories=X-Alterator-Servers
Icon=squid
Terminal=false
Name=Proxy server
X-Alterator-URI=/squid
X-Alterator-UI=html
X-Alterator-Help=squid
alterator-squid-0.4/backend3/000075500000000000000000000000001114003310300161275ustar00rootroot00000000000000alterator-squid-0.4/backend3/squid000075500000000000000000000101131114003310300171760ustar00rootroot00000000000000#!/bin/sh -f

squid_conf="/etc/squid/squid.conf"
network_conf="/etc/squid/our_networks"
black_conf="/etc/squid/blacklist"

rdelim="[[:space:]]\+"
wdelim=" "

alterator_api_version=1

. alterator-sh-functions
. shell-config
. shell-quote

squid_conf_get()
{
shell_config_get "$squid_conf" "$1" "$rdelim"|head -n1
}

squid_conf_set()
{
shell_config_set "$squid_conf" "$1" "$2" "$rdelim" "$wdelim"
}

squid_conf_del()
{
shell_config_del "$squid_conf" "$1" "$rdelim"
}

list_all()
{
cat "$1"
}

list_has()
{
grep -qs "^$(quote_sed_regexp "$2")\$" "$1"
}

list_add()
{
printf "$2\n" >>"$1"
}

list_del()
{
sed \
-e "/^$(quote_sed_regexp "$2")\$/ d" \
-i "$1"
}

tcp_port_mask="^[0-9]+$"
network_mask="^([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])([.]([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9+]|25[0-5])){3}/([1-9]|[12][0-9]|3[0-1])$"

# initial hacks

# enable our_networks rule
grep -qs "^[[:space:]]*acl our_networks src \"$network_conf\"" "$squid_conf" ||
sed "s/^#[[:space:]]*acl our_networks src.*\$/acl our_networks src \"$(quote_sed_regexp "$network_conf")\"/" \
-i "$squid_conf"

grep -qs "^[[:space:]]*http_access allow our_networks" "$squid_conf" ||
sed "s/^#[[:space:]]*http_access allow our_networks.*$/http_access allow our_networks/" \
-i "$squid_conf"

# enable blacklist
grep -qs "^[[:space:]]*acl blacklist url_regex \"$black_conf\"" "$squid_conf" ||
sed "/# INSERT YOUR OWN RULE/ a \
acl blacklist url_regex \"$black_conf\"\nhttp_access deny blacklist" \
-i "$squid_conf"

on_message()
{
case "$in_action" in
constraints)
printf '%s (label "%s" match ("%s" "%s"))\n' http_port_number "`_ "Port:"`" "$tcp_port_mask" "`_ "invalid TCP port"`" >&3
printf '%s (label "%s" ipv4-address #t)\n' http_port_host "`_ "Listen address:"`" >&3
printf '%s (hostname #t)\n' black >&3
printf '%s (label "%s" hostname #t)\n' new_black "`_ "Blocked sites:"`" >&3
printf '%s (match ("%s" "%s"))\n' network "$network_mask" "`_ "invalid IP network specification"`" >&3
printf '%s (label "%s" match ("%s" "%s"))\n' new_network "`_ "Allowed client networks:"`" "$network_mask" "`_ "invalid IP network specification"`" >&3
printf '%s (label "%s" hostname #t)\n' append_domain "`_ "Search domain:"`" >&3
;;
list)
case "$in__objects" in
avail_network) list_all "$network_conf"|write_enum;;
avail_black) list_all "$black_conf"|write_enum;;
esac
;;
read)
local http_port="$(squid_conf_get http_port)"
local http_port_number="${http_port##*:}"
local http_port_host="${http_port%:*}"
[ "$http_port_host" != "$http_port_number" ] || http_port_host=""

write_string_param http_port_host "$http_port_host"
write_string_param http_port_number "$http_port_number"

local append_domain="$(squid_conf_get append_domain)"
write_string_param append_domain "${append_domain#.}"

write_string_param cache_mgr "$(squid_conf_get cache_mgr)"
;;
write)
if [ -n "$in_general" ];then
local http_port="$in_http_port_number"
[ -z "$in_http_port_host" ] || http_port="$in_http_port_host:$http_port"
[ -z "$http_port" ] || squid_conf_set http_port "$http_port"

[ -z "$in_cache_mgr" ] || squid_conf_set cache_mgr "$in_cache_mgr"

if [ -n "$in_append_domain" ] ;then
squid_conf_set append_domain ".$in_append_domain"
else
squid_conf_del append_domain
fi
elif [ -n "$in_add_network" -a -n "$in_new_network" ]; then
if list_has "$network_conf" "$in_new_network";then
write_error "`_ "Same entry already exists"`"
else
list_add "$network_conf" "$in_new_network"
fi
elif [ -n "$in_del_network" -a "$in_network" ];then
list_del "$network_conf" "$in_network"
elif [ -n "$in_add_black" -a -n "$in_new_black" ];then
if list_has "$black_conf" "$in_new_black"; then
write_error "`_ "Same entry already exists"`"
else
list_add "$black_conf" "$in_new_black"
fi
elif [ -n "$in_del_black" -a -n "$in_black" ];then
list_del "$black_conf" "$in_black"
fi
;;
esac
}

message_loop
alterator-squid-0.4/runtests000075500000000000000000000003451114003310300162740ustar00rootroot00000000000000#!/bin/sh -eu

. shell-unittest
. alterator-unittest-functions

cat >/etc/squid/our_networks<<EOF
192.168.1.0/24
192.168.2.0/24
EOF

cat >/etc/squid/blacklist<<EOF
dom1.ru
dom2.ru
EOF

for i in test/*; do . $i;done

runUnitTests
alterator-squid-0.4/templates/000075500000000000000000000000001114003310300164535ustar00rootroot00000000000000alterator-squid-0.4/templates/squid/000075500000000000000000000000001114003310300176005ustar00rootroot00000000000000alterator-squid-0.4/templates/squid/index.html000064400000000000000000000061271114003310300216030ustar00rootroot00000000000000<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<!-- squid administration module -->
<html wf="form">
<body>
<a href="/services?name=squid"><span translate="_">Start, stop or restart service...</span></a>
<form method="POST">
<table class="form-table-annotated">
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tbody>
<tr>
<td colspan="2" style="text-align:left"><strong><span translate="_">General settings</span></strong></td>
</tr>
<tr>
<td><span name="http_port_number" translate="_">Port:</span></td>
<td>
<input type="text" class="text" name="http_port_number"/>
<br/>
<small><span translate="_">(TCP port for server to listen to)</span></small>
</td>
</tr>
<tr>
<td><span name="http_port_host" translate="_">Listen address:</span></td>
<td>
<input type="text" class="text" name="http_port_host"/><br/>
<small><span translate="_">(leave this field empty for listening to all interfaces)</span></small>
</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td><span name="cache_mgr" translate="_">Administrator e-mail:</span></td>
<td>
<input type="text" class="text" name="cache_mgr"/><br/>
<small><span translate="_">(user visible contact information)</span></small>
</td>
</tr>
<tr>
<td><span name="append_domain" translate="_">Search domain:</span></td>
<td>
<input type="text" class="text" name="append_domain"/><br/>
<small><span translate="_">(quick access to usual network resources)</span></small>
</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" value="Apply" name="general" class="btn"/></td>
</tr>
<tr>
<td colspan="2"><hr/></td>
</tr>
<tr>
<td colspan="2" style="text-align:left"><strong><span translate="_">Restrictions</span></strong></td>
</tr>
<tr>
<td><span name="new_network" translate="_">Allowed client networks:</span></td>
<td>
<table>
<tr>
<td><select size="5" style="width:98%" name="network" enumref="/squid/avail_network"/></td>
<td><input type="submit" class="btn" name="del_network" value="Delete"/></td>
</tr>
<tr>
<td><input type="text" class="text" name="new_network"/></td>
<td><input type="submit" class="btn" name="add_network" value="Add network"/></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td><span name="new_black" translate="_">Blocked sites:</span></td>
<td>
<table>
<tr>
<td><select size="5" style="width:98%" name="black" enumref="/squid/avail_black"/></td>
<td><input type="submit" class="btn" name="del_black" value="Delete"/></td>
</tr>
<tr>
<td><input type="text" class="text" name="new_black"/></td>
<td><input type="submit" class="btn" name="add_black" value="Add site"/></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
alterator-squid-0.4/test/000075500000000000000000000000001114003310300154345ustar00rootroot00000000000000alterator-squid-0.4/test/squid000064400000000000000000000066151114003310300165140ustar00rootroot00000000000000#!/bin/sh

appendTests \
test_squid_list \
test_squid_read \
test_squid_write

### helpers

. shell-config

squid_conf="/etc/squid/squid.conf"
rdelim='[[:space:]]\+'
wdelim=' '

squid_conf_get()
{
shell_config_get "$squid_conf" "$1" "$rdelim"|head -n1
}

squid_conf_set()
{
shell_config_set "$squid_conf" "$1" "$2" "$rdelim" "$wdelim"
}

### tests

test_squid_read()
{
squid_conf_set 'http_port' '192.168.1.1:3128'
assertRead 'http_port, full specification' 'http_port_host' '192.168.1.1' /squid
assertRead 'http_port, full specification' 'http_port_number' '3128' /squid

squid_conf_set 'http_port' '3128'
assertRead 'http_port, only port' 'http_port_host' '' /squid
assertRead 'http_port, only port' 'http_port_number' '3128' /squid

squid_conf_set 'append_domain' 'dom.ru'
assertRead 'http_port, only port' 'append_domain' 'dom.ru' /squid

squid_conf_set 'cache_mgr' 'root@dom.ru'
assertRead 'http_port, only port' 'cache_mgr' 'root@dom.ru' /squid
}

test_squid_write()
{
local rc=

alterator-cmdline -l /squid action write http_port_host '192.168.1.2' http_port_number '8080' general '#t'
assertEquals 'http_port, full specification' '192.168.1.2:8080' "$(squid_conf_get http_port)"

alterator-cmdline -l /squid action write http_port_host '' http_port_number '8080' general '#t'
assertEquals 'http_port, full specification' '8080' "$(squid_conf_get http_port)"

alterator-cmdline -l /squid action write append_domain 'append.domain' general '#t'
assertEquals 'append_domain change' '.append.domain' "$(squid_conf_get append_domain)"

alterator-cmdline -l /squid action write append_domain '' general '#t'
assertEquals 'append_domain remove' '' "$(squid_conf_get append_domain)"

alterator-cmdline -l /squid action write cache_mgr 'cache@mgr' general '#t'
assertEquals 'cache_mgr change' 'cache@mgr' "$(squid_conf_get cache_mgr)"

local network='192.168.3.0/21'

alterator-cmdline -l /squid action write new_network "$network" add_network '#t'
rc=0
grep -qs "$network" '/etc/squid/our_networks' || rc=1
assertEquals 'add network' "$rc" '0'

rc=0
alterator-cmdline -l /squid action write new_network "$network" add_network '#t' 2>/dev/null || rc=1
assertEquals 'add same network' "$rc" '1'

alterator-cmdline -l /squid action write network "$network" del_network '#t'
rc=0
grep -qs "$network" '/etc/squid/our_networks' || rc=1
assertEquals 'del network' "$rc" '1'

local black='dom3.ru'

alterator-cmdline -l /squid action write new_black "$black" add_black '#t'
rc=0
grep -qs "$black" '/etc/squid/blacklist' || rc=1
assertEquals 'add black' "$rc" '0'

rc=0
alterator-cmdline -l /squid action write new_black "$black" add_black '#t' 2>/dev/null || rc=1
assertEquals 'add same black' "$rc" '1'

alterator-cmdline -l /squid action write black "$black" del_black '#t'
rc=0
grep -qs "$black" '/etc/squid/blacklist' || rc=1
assertEquals 'del black' "$rc" '1'
}


test_squid_list()
{
local avail_network='192.168.1.0/24
192.168.2.0/24'

local avail_black='dom1.ru
dom2.ru'

assertList 'list avail network' 'name' "$avail_network" /squid/avail_network
assertList 'list avail black' 'name' "$avail_black" /squid/avail_black

assertEnumref "enumref for avail_network" /squid/avail_network
assertEnumref "enumref for avail_black" /squid/avail_black
}
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009