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</etc/squid/blacklist< Start, stop or restart service...
 
General settings
Port:
(TCP port for server to listen to)
Listen address:
(leave this field empty for listening to all interfaces)
 
Administrator e-mail:
(user visible contact information)
Search domain:
(quick access to usual network resources)
 
 

Restrictions
Allowed client networks:
 
Blocked sites:
 
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 }