# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 108182 2013-07-15 14:36:41Z jmr@macports.org $

PortSystem 1.0

name            squid3
version         3.3.8
set branch      [join [lrange [split ${version} .] 0 1] .]
categories      net
platforms       darwin
license         GPL-2+
maintainers     jmr openmaintainer
description     advanced proxy caching server for http, https, ftp, gopher
long_description    Squid is a high-performance proxy caching server for \
                web clients, supporting FTP, gopher, and HTTP data \
                objects. Unlike traditional caching software, Squid \
                handles all requests in a single, non-blocking, \
                I/O-driven process. Squid keeps meta data and \
                especially hot objects cached in RAM, caches DNS \
                lookups, supports non-blocking DNS lookups, and \
                implements negative caching of failed requests.

homepage        http://www.squid-cache.org/
master_sites    http://mirror.aarnet.edu.au/pub/squid/squid/ \
                http://www.mirrorservice.org/sites/ftp.squid-cache.org/pub/squid/ \
                http://ftp.ring.gr.jp/archives/net/www/squid/ \
                ftp://ftp.is.co.za/pub/squid/ \
                ftp://ftp1.cl.squid-cache.org/pub/squid/ \
                http://www.squid-cache.org/Versions/v3/${branch}/ \
                ftp://ftp.squid-cache.org/pub/squid/

distname        squid-${version}
use_xz          yes
checksums       md5 6a8fa0075f2fbdd899ac4c9d95fe67cb \
                sha1 39472c7f93e14fb55a65d1730d6594407b7de9f6 \
                rmd160 32636bd1f2803935bab983bbf08f9eae81980d35

patchfiles      patch-cf.data.pre.diff \
                patch-compat_types.h.diff \
                patch-basic_pam_auth.cc.diff

platform darwin 10 {
    # ticket #37102, /usr/include/rpcsvc/yp_prot.h tries to redefine bool
    patchfiles-append snowleopard-bool.diff
}

depends_lib     port:zlib

conflicts       squid

set pidfile     ${prefix}/var/run/squid/squid.pid

configure.args  --mandir=${prefix}/share/man \
                --sysconfdir=${prefix}/etc/squid \
                --datadir=${prefix}/share/squid \
                --localstatedir=${prefix}/var/squid \
                --libexecdir=${prefix}/libexec/squid \
                --with-pidfile=${pidfile} \
                --disable-strict-error-checking \
                --disable-loadable-modules \
                --enable-delay-pools \
                --enable-zph-qos \
                --enable-removal-policies \
                --enable-storeio=ufs,aufs,diskd \
                --enable-disk-io=AIO,Blocking,DiskDaemon,DiskThreads \
                --enable-icap-client \
                --enable-log-daemon-helpers \
                --with-default-user=squid \
                --enable-auth \
                --enable-auth-basic \
                --enable-auth-digest \
                --enable-auth-negotiate="wrapper" \
                --enable-auth-ntlm \
                --with-krb5-config=no
post-configure {
    if {[variant_isset universal]} {
        system "cd ${worksrcpath} && ed - ${worksrcpath}/include/autoconf.h < ${filespath}/include_autoconf.h.ed && touch include/stamp-h1"
    }
}

startupitem.create      yes
startupitem.name        Squid
startupitem.netchange   yes
startupitem.pidfile     auto ${pidfile}
startupitem.start \
    "cd ${prefix}/var/squid" \
    "if \[ ! -d \"${prefix}/var/squid/cache/00\" \]; then" \
    "    ${prefix}/sbin/squid -s -z" \
    "fi" \
    "${prefix}/sbin/squid -s"
startupitem.stop \
    "cd ${prefix}/var/squid" \
    "${prefix}/sbin/squid -k shutdown" \
    "while ${prefix}/sbin/squid -k check; do" \
    "    sleep 1" \
    "done"

add_users       squid group=squid home=${prefix}/var/squid

post-destroot   {
    xinstall -o squid -g squid -m 755 -d \
        ${destroot}${prefix}/var/run/squid ${destroot}${prefix}/var/squid \
        ${destroot}${prefix}/var/squid/cache ${destroot}${prefix}/var/squid/logs
    file delete -force ${destroot}${prefix}/etc/squid/squid.conf \
                       ${destroot}${prefix}/etc/squid/mime.conf \
                       ${destroot}${prefix}/etc/squid/cachemgr.conf \
                       ${destroot}${prefix}/etc/squid/msntauth.conf \
                       ${destroot}${prefix}/etc/squid/errorpage.css
}
destroot.keepdirs   ${destroot}${prefix}/var/run/squid \
                ${destroot}${prefix}/var/squid/cache \
                ${destroot}${prefix}/var/squid/logs

post-activate {
    # Make sure initial conf files are present and setup correctly
    foreach f { squid.conf mime.conf cachemgr.conf msntauth.conf errorpage.css } {
        if {![file exists ${prefix}/etc/squid/${f}]} {
            file copy ${prefix}/etc/squid/${f}.default \
                ${prefix}/etc/squid/${f}
        }
    }
}

variant openssl description "Enable SSL/TLS support using OpenSSL" {
    depends_lib-append      port:openssl
    configure.args-append   --with-openssl=${prefix} \
                            --enable-ssl
}

default_variants    +openssl

variant ipfw_transparent description "Enable transparent proxy support using IPFW" {
    configure.args-append   --enable-ipfw-transparent
}

variant kerberos description "Enable kerberos support" {
    depends_lib-append port:kerberos5
    configure.args-delete --enable-auth-negotiate="wrapper" \
                          --with-krb5-config=no
    configure.args-append --enable-auth-negotiate
}

livecheck.type  regex
livecheck.url   http://www.squid-cache.org/Versions/v3/${branch}/
livecheck.regex "<a href=\"RELEASENOTES\\.html\">squid-(3\[0-9.\]+)</a>"
