]> Frank Brehm's Git Trees - portage.git/commitdiff
Adding app-antivirus/clamav/clamav-0.99-r1.ebuild and dependencies
authorFrank Brehm <frank.brehm@profitbricks.com>
Fri, 24 Jun 2016 14:30:57 +0000 (16:30 +0200)
committerFrank Brehm <frank.brehm@profitbricks.com>
Fri, 24 Jun 2016 14:30:57 +0000 (16:30 +0200)
16 files changed:
app-antivirus/clamav/Manifest [new file with mode: 0644]
app-antivirus/clamav/clamav-0.99-r1.ebuild [new file with mode: 0644]
app-antivirus/clamav/files/clamav-milter.README.gentoo [new file with mode: 0644]
app-antivirus/clamav/files/clamav-milter.service [new file with mode: 0644]
app-antivirus/clamav/files/clamav-milter.service-r1 [new file with mode: 0644]
app-antivirus/clamav/files/clamav.logrotate [new file with mode: 0644]
app-antivirus/clamav/files/clamd.conf [new file with mode: 0644]
app-antivirus/clamav/files/clamd.conf-r1 [new file with mode: 0644]
app-antivirus/clamav/files/clamd.initd-r3 [new file with mode: 0644]
app-antivirus/clamav/files/clamd.initd-r5 [new file with mode: 0644]
app-antivirus/clamav/files/clamd.initd-r6 [new file with mode: 0644]
app-antivirus/clamav/files/clamd.service [new file with mode: 0644]
app-antivirus/clamav/files/clamd_at.service [new file with mode: 0644]
app-antivirus/clamav/files/freshclamd.service [new file with mode: 0644]
app-antivirus/clamav/files/tmpfiles.d/clamav.conf [new file with mode: 0644]
app-antivirus/clamav/metadata.xml [new file with mode: 0644]

diff --git a/app-antivirus/clamav/Manifest b/app-antivirus/clamav/Manifest
new file mode 100644 (file)
index 0000000..6c4e617
--- /dev/null
@@ -0,0 +1,16 @@
+AUX clamav-milter.README.gentoo 1124 SHA256 5e7b142b68964bc3463b077e5698fa77cace45ea9612258b1e1849cee944dd11 SHA512 1c6160e48eddd28f83ec5f24757f788781cef55789d1934dfccc12c7c5e5635a226d26b0983cab7344c142f5a2f1db172640b1d0e6c840a6fa83abed9be1211a WHIRLPOOL f85b17448fd93205e2f38d024b96410cc8d143d077201e0a1b8f4cda95ae2447a70eded4cb90968a593ad2637229300fa04bfe5dba96d3d68c2d09c105ee3f16
+AUX clamav-milter.service 284 SHA256 b371725acfd102b6b7ee15ab0059e8795b7d3716d041d0dc11d0fe8f7454d5a9 SHA512 442148ac3c42ecbb893de5c6edde337b72a745d20f6c5ffa33131f9a0b2daadcffac39b686ada986a5ab500ea7b9153c448abc1b819e15fef488da1812bb0cee WHIRLPOOL 56b4ed79e06c764df37022f0638ceddb5fe8185c54b2e460b076a46ed4f5a68b67fb7966d424dabe836bfd7d6b9d770eb60cad4633ee17083baa50ad2c0a89cd
+AUX clamav-milter.service-r1 303 SHA256 c1e553156c14bfb007df467c13be0b3885ea79b4777711b6417fac5371461d90 SHA512 5dc30e3c57d9bff6595155e8299336c579c713aed429ab770f10d7678dd74691a135aa2070a825ddb726fdabcb001c19caeb993c1cd9a6fcf95d1d47f7160540 WHIRLPOOL d2cb6e8caa83845d2f9ca7ffd7f2d0382a633a34463599515d46dcfde87fadfffdeed62f4763b5f519268bd03b99c49c19c3196359eab06062866ca38f96d680
+AUX clamav.logrotate 391 SHA256 ed58224e76d6555e737780dc3985e2b29267328458302f116eae9ebfdc3cd11f SHA512 ef54facfa0ad830ea6eef499b92a1ffb37e719940385621dacd17062e556aa0d1f24104b3130a9a263f23621ab53f39283c10870a355ed6d505cc0e511b57224 WHIRLPOOL e6195dd3c51c27c437ff88a1283cb9eb12a9bad3266261e9d26cbc33d0b4e3afa2d9c624898ba2bf6557ac46de74c09a7b210de8bd1189babd4d0fcbd6ba84ed
+AUX clamd.conf 234 SHA256 17bf4fe3596dc5b145e4163d85181e2edcaa214df3cf9072d852ba0e7a569891 SHA512 ec069cf7aaf10b42a701938b57e1fde1ee15afd1d4af928edfa7e5d505ba8b3edaaceac449da0f4ac6beea09a3fb73453526ba0cd3a04e13259c1a2720f42f78 WHIRLPOOL 667ad1567bb398a20785096f2c2c7c72be4853ee3b0674c4fcc20eb2c9123815c273f40938961e348252e3376c4402a3f952b2a72d3bb3f0907aadb7ab77b8ed
+AUX clamd.conf-r1 129 SHA256 28ebd47810b0568fc7692218867d6804a1df70290681462f5555e230ca817732 SHA512 b85fd99c80242fb66380dfdef34387a2eff9326a1cb726940ab4bc450308e4942e57d1eb1cad979348f8aac685b53e2fa722cef0dab1f2ea2c958f2a5f818918 WHIRLPOOL 44f1e0b678855db44123261402c4e82e0493a60869bcf0a7ebcc5c4db23072efba3f550ee115b5c49a688895b67e1d012defb36c4aa0564732a2642d78f72695
+AUX clamd.initd-r3 3012 SHA256 8c432a46a8022bfcd0d0f5ab59c20c356f556f39c579ceefa00325fddd59d925 SHA512 a1051597e6c6744cff5de95fb6f621b523cd595a7ef546de815ffb2d68cce9a6644134876104583f7f499910958e4a99eb2e35261a589cf6a0ecc6cf89bfbab9 WHIRLPOOL 77dbde17dbce017354515cedd3cf67d4ca99160e98f94f364370c1706b80d5f116e548e75b497e31ff586ed12a5f837c8cf4186b6d40f2fca74dc89e9b61d90e
+AUX clamd.initd-r5 3161 SHA256 1472507c5d140ef5b345f3da398c2ab8507abc6cf8496000e7fdc0d5e9c53ddd SHA512 3beed669f40c62552bc2f2c3ae581421bdb44a6a88fd0121cedd9e2e2995167139598c801e26f108ca08aa20adac604595bd7e3f5b3f016e406affe8c8106ee5 WHIRLPOOL 8e61918f347e3371fa8611bb8fee9e2ffc68b8aad7cb687926c6541003c6f43a0007d6c7a03a4346783d6a540f9a0334525ef57219d78c3720256b6df9592648
+AUX clamd.initd-r6 3260 SHA256 443bdf8bab0014e4f60001c14350f609d94bc4a11d6319ed55a3c596f96f9a92 SHA512 f0a279dc879e6afa5da803524bd8aa19980363bcd8d220015dc31afd9fe703e8f90d3999423545b26531a402f707e3f964258c84be3ec0f4307f92691b5eabc1 WHIRLPOOL 58c2d4d0c7d8a66ab175e391b719ba0f384b72a139c8b7eb6f89c9dfab5e38531dfe7e8ecc6d43a1e136525af6932d4f3543a874da6182875e8c99cbe0af7f13
+AUX clamd.service 136 SHA256 d50b2d7b291e1d03f142e0b113a90c600cf5a0f73f1a4847d8cf0528902728dd SHA512 2080e96e84d15d1ef4c670579ddca5bc9608c8e8564cd43fcd9d464d97c253eb89ca3ebbf3a6a799b31a6c6321ea8beeb386cbefbccbe5f097dbc492900dc2aa WHIRLPOOL 612ff77805a2ede8c526c798f3b5658ea5be5006d526eb7735750a1b86186c2214c34ba4658e3567845c503a0575cc15519ff5c9294be939cd200bf2c691a2f6
+AUX clamd_at.service 190 SHA256 7fb3eb55fbb0bff9884aa943ffc6439e328bc0e4a607c1615c924be9c3711c30 SHA512 b5121bfe761d21152356c8b1e0f0974a9c0bb9002b3d5b1af1c7940d94314250a4890388876b150b0f071c24b7261b93bbc9a6b94b896294c549fe6b572ee70a WHIRLPOOL d58f1d19de54183224ecccc78f9968473c8b891c6ce1f5a9045c1a1db962c152a4b22f58dc55ae54a3b21df20a422e173143e6b893a8913e7f038904e991cce6
+AUX freshclamd.service 191 SHA256 dd5ff6c79ee360da5f2221c4d9110a2a8886d86293f6c93c16bf74fdb126593c SHA512 aaf78e763d2aa9c17fc95edb1550547b6681a91fd239a86535e5193d36ff0e152c51c3a3957542f80d5b170805f296159958ac347886981ddd324bec4237da92 WHIRLPOOL f3d5273151e6cc0b2a245db07ea526b9a7d051efcfa902924ca63529618318524c359fb638b10caed38313f93fc283175ae9d2ec9314556593d818518931512c
+AUX tmpfiles.d/clamav.conf 33 SHA256 893bda174539a1a2ffc7f713f563d172593d9707da5c49e6c151832c57da6846 SHA512 eabe5a94c2679b82ea3e29272eb448b47e60b271381d3e97f3970b1a9e086d61662aff2d29887950a911025294aa7cea8bfd9003d257963566b251bcaeb5f6b2 WHIRLPOOL 74d92a4a54f6d38bd752ff46ed494abc823781f41e7663468cd94125076538a4a315808fd0efd2e988d94dcfb05251aef194225cb4bbc1cf05c23fcb491d7e98
+DIST clamav-0.99.tar.gz 15968038 SHA256 d2792c8cfadd685fffc40b2199679628815df031fd3149ccf961649fc8787ea9 SHA512 328e66fa412ba61f5e44c839b254c7a84d2ce7821fda6cf29e4ee9532c06e45bdec62f202ca561223e984fff170bfd8280e5cc8e306c09a3017b17e7db3bbf56 WHIRLPOOL 696b425c0d3a6639d627e6dba000a57c4e532232f9f42a564a992c0b459d8041a1947b09548d99b621a5685c78d91045adf4b61731242f55eda2b8d5150fc8b8
+EBUILD clamav-0.99-r1.ebuild 4806 SHA256 3ce722f13df25b6f63ab42db6fcd24f7ae2962767c9744d388c082098a187a0a SHA512 36a55477b58b5df732be6f0055cc060528850ad68b5aefec20c2e267fe07f40e42a9588b0db913578670bd47b95cf809cf7d3d2ee2198db2e5ee3cc29f58ee5f WHIRLPOOL 0165d7716af589cb1bbdba9acc0a18cab1990196e44d3021ccad6966aeca7bad4cd622b95ae07984d8095045f027ef5563998e4cf95bccfc9543e64e919f44f3
+MISC metadata.xml 740 SHA256 d58a717a913d65a333d1b2ba513fe44cad15e59cf5f4b3cbbe0ba9f59a7d4015 SHA512 baff0fa3285a5bfd17b408dc88ad573df07ec4de5e2827d352465347c5ebceb466172c4f369dac5680c927cad3a887a60721358e43b26e8cd7eaf3cebcaba832 WHIRLPOOL c96524c6395f370a56fbe572dbd28f28a3079ec82097757424ec35e73affa357852ded86f627a23433c1d8227c024399b23101f217544c94ae8964e17f27596f
diff --git a/app-antivirus/clamav/clamav-0.99-r1.ebuild b/app-antivirus/clamav/clamav-0.99-r1.ebuild
new file mode 100644 (file)
index 0000000..f116a7d
--- /dev/null
@@ -0,0 +1,143 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils flag-o-matic user systemd
+
+DESCRIPTION="Clam Anti-Virus Scanner"
+HOMEPAGE="http://www.clamav.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ~ia64 ~ppc ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
+IUSE="bzip2 clamdtop iconv ipv6 libressl milter metadata-analysis-api selinux static-libs uclibc"
+
+CDEPEND="bzip2? ( app-arch/bzip2 )
+       clamdtop? ( sys-libs/ncurses:0 )
+       iconv? ( virtual/libiconv )
+       metadata-analysis-api? ( dev-libs/json-c )
+       milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
+       dev-libs/libtommath
+       >=sys-libs/zlib-1.2.2
+       !libressl? ( dev-libs/openssl:0= )
+       libressl? ( dev-libs/libressl:0= )
+       sys-devel/libtool
+       >dev-libs/libpcre-6
+       !<app-antivirus/clamav-0.99"
+# hard block clamav < 0.99 due to linking problems Bug #567680
+# openssl is now *required* see this link as to why
+# http://blog.clamav.net/2014/02/introducing-openssl-as-dependency-to.html
+DEPEND="${CDEPEND}
+       virtual/pkgconfig"
+RDEPEND="${CDEPEND}
+       selinux? ( sec-policy/selinux-clamav )"
+
+DOCS=( AUTHORS BUGS ChangeLog FAQ INSTALL NEWS README UPGRADE )
+
+pkg_setup() {
+       enewgroup clamav
+       enewuser clamav -1 -1 /dev/null clamav
+}
+
+src_prepare() {
+       use ppc64 && append-flags -mminimal-toc
+       use uclibc && export ac_cv_type_error_t=yes
+}
+
+src_configure() {
+       econf \
+               --disable-experimental \
+               --disable-fanotify \
+               --enable-id-check \
+               --with-dbdir="${EPREFIX}"/var/lib/clamav \
+               --with-system-tommath \
+               --with-zlib="${EPREFIX}"/usr \
+               $(use_enable bzip2) \
+               $(use_enable clamdtop) \
+               $(use_enable ipv6) \
+               $(use_enable milter) \
+               $(use_enable static-libs static) \
+               $(use_with iconv) \
+               $(use_with metadata-analysis-api libjson /usr)
+}
+
+src_install() {
+       default
+
+       rm -rf "${ED}"/var/lib/clamav
+       newinitd "${FILESDIR}"/clamd.initd-r6 clamd
+       newconfd "${FILESDIR}"/clamd.conf-r1 clamd
+
+       systemd_dotmpfilesd "${FILESDIR}/tmpfiles.d/clamav.conf"
+       systemd_newunit "${FILESDIR}/clamd_at.service" "clamd@.service"
+       systemd_dounit "${FILESDIR}/clamd.service"
+       systemd_dounit "${FILESDIR}/freshclamd.service"
+
+       keepdir /var/lib/clamav
+       fowners clamav:clamav /var/lib/clamav
+       keepdir /var/log/clamav
+       fowners clamav:clamav /var/log/clamav
+
+       dodir /etc/logrotate.d
+       insinto /etc/logrotate.d
+       newins "${FILESDIR}"/clamav.logrotate clamav
+
+       # Modify /etc/{clamd,freshclam}.conf to be usable out of the box
+       sed -i -e "s:^\(Example\):\# \1:" \
+               -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.pid:" \
+               -e "s:.*\(LocalSocket\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.sock:" \
+               -e "s:.*\(User\) .*:\1 clamav:" \
+               -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamd.log:" \
+               -e "s:^\#\(LogTime\).*:\1 yes:" \
+               -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+               "${ED}"/etc/clamd.conf.sample || die
+       sed -i -e "s:^\(Example\):\# \1:" \
+               -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/freshclam.pid:" \
+               -e "s:.*\(DatabaseOwner\) .*:\1 clamav:" \
+               -e "s:^\#\(UpdateLogFile\) .*:\1 ${EPREFIX}/var/log/clamav/freshclam.log:" \
+               -e "s:^\#\(NotifyClamd\).*:\1 ${EPREFIX}/etc/clamd.conf:" \
+               -e "s:^\#\(ScriptedUpdates\).*:\1 yes:" \
+               -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+               "${ED}"/etc/freshclam.conf.sample || die
+
+       if use milter ; then
+               # MilterSocket one to include ' /' because there is a 2nd line for
+               # inet: which we want to leave
+               dodoc "${FILESDIR}"/clamav-milter.README.gentoo
+               sed -i -e "s:^\(Example\):\# \1:" \
+                       -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamav-milter.pid:" \
+                       -e "s+^\#\(ClamdSocket\) .*+\1 unix:${EPREFIX}/var/run/clamav/clamd.sock+" \
+                       -e "s:.*\(User\) .*:\1 clamav:" \
+                       -e "s+^\#\(MilterSocket\) /.*+\1 unix:${EPREFIX}/var/run/clamav/clamav-milter.sock+" \
+                       -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+                       -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamav-milter.log:" \
+                       "${ED}"/etc/clamav-milter.conf.sample || die
+               cat >> "${ED}"/etc/conf.d/clamd <<-EOF
+                       MILTER_NICELEVEL=19
+                       START_MILTER=no
+               EOF
+
+               systemd_newunit "${FILESDIR}/clamav-milter.service-r1" clamav-milter.service
+       fi
+
+       for i in clamd freshclam clamav-milter
+       do
+               [[ -f "${D}"/etc/"${i}".conf.sample ]] && mv "${D}"/etc/"${i}".conf{.sample,}
+       done
+
+       prune_libtool_files --all
+}
+
+pkg_postinst() {
+       if use milter ; then
+               elog "For simple instructions how to setup the clamav-milter read the"
+               elog "clamav-milter.README.gentoo in /usr/share/doc/${PF}"
+       fi
+       if test -z $(find "${ROOT}"var/lib/clamav -maxdepth 1 -name 'main.c*' -print -quit) ; then
+               ewarn "You must run freshclam manually to populate the virus database files"
+               ewarn "before starting clamav for the first time.\n"
+       fi
+}
diff --git a/app-antivirus/clamav/files/clamav-milter.README.gentoo b/app-antivirus/clamav/files/clamav-milter.README.gentoo
new file mode 100644 (file)
index 0000000..17e9ba6
--- /dev/null
@@ -0,0 +1,44 @@
+Nick Hadaway <raker@gentoo.org>
+Updated by Andrea Barisani <lcars@gentoo.org>
+18/05/2004
+
+Setting up clamav-milter on Gentoo Linux
+
+Step 1 - Configure clamd
+
+Check /etc/clamd.conf, default values should work out of the box but 
+read and understand all the options especially if you are going to
+use it on production boxes.
+
+Step 2 - Tell the init script to start clamd as well as freshclam and the
+         milter itself.
+
+       nano -w /etc/conf.d/clamd
+
+       START_CLAMD=yes
+       START_FRESHCLAM=yes
+       START_MILTER=yes
+
+Step 3 - Edit sendmail.mc
+
+       Add these lines to sendmail.mc before any any other 
+       INPUT_MAIL_FILTER lines and before MAILER(local)
+       NOTE: ANY INPUT_MAIL_FILTER definitions put before these lines
+       will be discarded due to the use of confINPUT_MAIL_FILTERS
+       Make this your first mail filter. :)
+
+       INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl
+       define(`confINPUT_MAIL_FILTERS', `clmilter')dnl
+
+Step 4 - Rebuild sendmail.cf
+
+       cd /etc/mail
+       m4 sendmail.mc > sendmail.cf
+
+Step 5 - Start clamad
+
+       /etc/init.d/clamd start
+
+Step 6 - Restart sendmail
+
+       /etc/init.d/sendmail restart
diff --git a/app-antivirus/clamav/files/clamav-milter.service b/app-antivirus/clamav/files/clamav-milter.service
new file mode 100644 (file)
index 0000000..5a1a24f
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=Milter module for the ClamAV scanner
+After=nss-lookup.target network.target
+Before=sendmail.service
+Before=postfix.service
+
+[Service]
+ExecStart=/usr/sbin/clamav-milter -c /etc/clamav-milter.conf --nofork=yes
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/clamav-milter.service-r1 b/app-antivirus/clamav/files/clamav-milter.service-r1
new file mode 100644 (file)
index 0000000..f0118d8
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+Description=Milter module for the ClamAV scanner
+After=nss-lookup.target network.target
+Before=sendmail.service
+Before=postfix.service
+
+[Service]
+Type=forking
+PIDFile=/run/clamav/clamav-milter.pid
+ExecStart=/usr/sbin/clamav-milter -c /etc/clamav-milter.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/clamav.logrotate b/app-antivirus/clamav/files/clamav.logrotate
new file mode 100644 (file)
index 0000000..7a81126
--- /dev/null
@@ -0,0 +1,17 @@
+/var/log/clamav/clamd.log {
+       su clamav clamav
+       missingok
+       postrotate
+               /etc/init.d/clamd logfix
+               /bin/kill -HUP `cat /var/run/clamav/clamd.pid 2> /dev/null` 2>/dev/null || true
+       endscript
+}
+
+/var/log/clamav/freshclam.log {
+       su clamav clamav
+       missingok
+       postrotate
+               /etc/init.d/clamd logfix
+               /bin/kill -HUP `cat /var/run/clamav/freshclam.pid 2> /dev/null` 2>/dev/null || true
+       endscript
+}
diff --git a/app-antivirus/clamav/files/clamd.conf b/app-antivirus/clamav/files/clamd.conf
new file mode 100644 (file)
index 0000000..ee05513
--- /dev/null
@@ -0,0 +1,9 @@
+# Config file for /etc/init.d/clamd
+
+# NOTICE: Since clamav-0.85-r1, only START_CLAMD and START_FRESHCLAM settings
+#        are used, other are silently ignored
+
+START_CLAMD=yes
+START_FRESHCLAM=yes
+CLAMD_NICELEVEL=3
+FRESHCLAM_NICELEVEL=19
diff --git a/app-antivirus/clamav/files/clamd.conf-r1 b/app-antivirus/clamav/files/clamd.conf-r1
new file mode 100644 (file)
index 0000000..de95554
--- /dev/null
@@ -0,0 +1,7 @@
+# Config file for /etc/init.d/clamd
+
+START_CLAMD=yes
+START_FRESHCLAM=yes
+CLAMD_NICELEVEL=3
+FRESHCLAM_NICELEVEL=19
+IONICE_LEVEL=2
diff --git a/app-antivirus/clamav/files/clamd.initd-r3 b/app-antivirus/clamav/files/clamd.initd-r3
new file mode 100644 (file)
index 0000000..134a701
--- /dev/null
@@ -0,0 +1,121 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+daemon_clamd="/usr/sbin/clamd"
+daemon_freshclam="/usr/bin/freshclam"
+daemon_milter="/usr/sbin/clamav-milter"
+
+extra_commands="logfix"
+
+depend() {
+       use net
+       provide antivirus
+}
+
+get_config() {
+       clamconf | sed 's/["=]//g' | \
+       awk "{
+       if(\$0==\"Config file: $1.conf\") S=1
+       if(S==1&&\$0==\"\") {
+               print \"$3\"
+               exit
+       }
+       if(S==1&&\$1~\"^$2\$\") {
+               print \$2!=\"disabled\"?\$2:\"$3\"
+               exit
+       }
+       }"
+}
+
+start() {
+       local clamd_socket=$(get_config clamd LocalSocket /var/run/clamav/clamd.sock)
+       local clamd_user=$(get_config clamd User clamav)
+       local freshclam_user=$(get_config freshclam DatabaseOwner clamav)
+       logfix
+
+       if [ "${START_CLAMD}" = "yes" ]; then
+               checkpath --quiet --mode 755 \
+                       --owner "${clamd_user}":"${clamd_user}" \
+                       --directory `dirname ${clamd_socket}`
+               if [ -S "${clamd_socket}" ]; then
+                       rm -f ${clamd_socket}
+               fi
+               ebegin "Starting clamd"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${CLAMD_NICELEVEL:-0} \
+                       --exec ${daemon_clamd}
+               eend $? "Failed to start clamd"
+       fi
+
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               ebegin "Starting freshclam"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${FRESHCLAM_NICELEVEL:-0} \
+                       --exec ${daemon_freshclam} -- -d
+               retcode=$?
+               if [ ${retcode} = 1 ]; then
+                       eend 0
+                       einfo "Virus databases are already up to date."
+               else
+                       eend ${retcode} "Failed to start freshclam"
+               fi
+       fi
+
+       if [ "${START_MILTER}" = "yes" ]; then
+               if [ -z "${MILTER_CONF_FILE}" ]; then
+                       MILTER_CONF_FILE="/etc/clamav-milter.conf"
+               fi
+
+               ebegin "Starting clamav-milter"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${MILTER_NICELEVEL:-0} \
+                       --exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
+               eend $? "Failed to start clamav-milter"
+       fi
+}
+
+stop() {
+       if [ "${START_CLAMD}" = "yes" ]; then
+               ebegin "Stopping clamd"
+               start-stop-daemon --stop --quiet --name clamd
+               eend $? "Failed to stop clamd"
+       fi
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               ebegin "Stopping freshclam"
+               start-stop-daemon --stop --quiet --name freshclam
+               eend $? "Failed to stop freshclam"
+       fi
+       if [ "${START_MILTER}" = "yes" ]; then
+               ebegin "Stopping clamav-milter"
+               start-stop-daemon --stop --quiet --name clamav-milter
+               eend $? "Failed to stop clamav-milter"
+       fi
+}
+
+logfix() {
+       if [ "${START_CLAMD}" = "yes" ]; then
+               # fix clamd log permissions
+               # (might be clobbered by logrotate or something)
+               local logfile=$(get_config clamd LogFile)
+               if [ -n "${logfile}" ]; then
+                       checkpath --quiet \
+                               --owner "${clamd_user}":"${clamd_user}" \
+                               --mode 640 \
+                               --file ${logfile}
+               fi
+       fi
+
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               # fix freshclam log permissions
+               # (might be clobbered by logrotate or something)
+               local logfile=$(get_config freshclam UpdateLogFile)
+               if [ -n "${logfile}" ]; then
+                       checkpath --quiet \
+                               --owner "${freshclam_user}":"${freshclam_user}" \
+                               --mode 640 \
+                               --file ${logfile}
+               fi
+       fi
+}
diff --git a/app-antivirus/clamav/files/clamd.initd-r5 b/app-antivirus/clamav/files/clamd.initd-r5
new file mode 100644 (file)
index 0000000..87171ae
--- /dev/null
@@ -0,0 +1,126 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+daemon_clamd="/usr/sbin/clamd"
+daemon_freshclam="/usr/bin/freshclam"
+daemon_milter="/usr/sbin/clamav-milter"
+
+extra_commands="logfix"
+
+depend() {
+       use net
+       provide antivirus
+}
+
+get_config() {
+       clamconf | sed 's/["=]//g' | \
+       awk "{
+       if(\$0==\"Config file: $1.conf\") S=1
+       if(S==1&&\$0==\"\") {
+               print \"$3\"
+               exit
+       }
+       if(S==1&&\$1~\"^$2\$\") {
+               print \$2!=\"disabled\"?\$2:\"$3\"
+               exit
+       }
+       }"
+}
+
+start() {
+       # populate variables and fix log file permissions
+       logfix
+
+       if [ "${START_CLAMD}" = "yes" ]; then
+               checkpath --quiet --mode 755 \
+                       --owner "${clamd_user}":"${clamd_user}" \
+                       --directory `dirname ${clamd_socket}`
+               if [ -S "${clamd_socket}" ]; then
+                       rm -f ${clamd_socket}
+               fi
+               ebegin "Starting clamd"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${CLAMD_NICELEVEL:-0} \
+                       --exec ${daemon_clamd}
+               eend $? "Failed to start clamd"
+       fi
+
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               checkpath --quiet --mode 755 \
+                       --owner "${clamd_user}":"${clamd_user}" \
+                       --directory `dirname ${clamd_socket}`
+               ebegin "Starting freshclam"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${FRESHCLAM_NICELEVEL:-0} \
+                       --exec ${daemon_freshclam} -- -d
+               retcode=$?
+               if [ ${retcode} = 1 ]; then
+                       eend 0
+                       einfo "Virus databases are already up to date."
+               else
+                       eend ${retcode} "Failed to start freshclam"
+               fi
+       fi
+
+       if [ "${START_MILTER}" = "yes" ]; then
+               if [ -z "${MILTER_CONF_FILE}" ]; then
+                       MILTER_CONF_FILE="/etc/clamav-milter.conf"
+               fi
+
+               ebegin "Starting clamav-milter"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${MILTER_NICELEVEL:-0} \
+                       --exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
+               eend $? "Failed to start clamav-milter"
+       fi
+}
+
+stop() {
+       if [ "${START_CLAMD}" = "yes" ]; then
+               ebegin "Stopping clamd"
+               start-stop-daemon --stop --quiet --name clamd
+               eend $? "Failed to stop clamd"
+       fi
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               ebegin "Stopping freshclam"
+               start-stop-daemon --stop --quiet --name freshclam
+               eend $? "Failed to stop freshclam"
+       fi
+       if [ "${START_MILTER}" = "yes" ]; then
+               ebegin "Stopping clamav-milter"
+               start-stop-daemon --stop --quiet --name clamav-milter
+               eend $? "Failed to stop clamav-milter"
+       fi
+}
+
+logfix() {
+       clamd_socket=$(get_config clamd LocalSocket /run/clamav/clamd.sock)
+       clamd_user=$(get_config clamd User clamav)
+       freshclam_user=$(get_config freshclam DatabaseOwner clamav)
+
+       if [ "${START_CLAMD}" = "yes" ]; then
+               # fix clamd log permissions
+               # (might be clobbered by logrotate or something)
+               local logfile=$(get_config clamd LogFile)
+               if [ -n "${logfile}" ]; then
+                       checkpath --quiet \
+                               --owner "${clamd_user}":"${clamd_user}" \
+                               --mode 640 \
+                               --file ${logfile}
+               fi
+       fi
+
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               # fix freshclam log permissions
+               # (might be clobbered by logrotate or something)
+               local logfile=$(get_config freshclam UpdateLogFile)
+               if [ -n "${logfile}" ]; then
+                       checkpath --quiet \
+                               --owner "${freshclam_user}":"${freshclam_user}" \
+                               --mode 640 \
+                               --file ${logfile}
+               fi
+       fi
+}
diff --git a/app-antivirus/clamav/files/clamd.initd-r6 b/app-antivirus/clamav/files/clamd.initd-r6
new file mode 100644 (file)
index 0000000..ee11b39
--- /dev/null
@@ -0,0 +1,129 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+daemon_clamd="/usr/sbin/clamd"
+daemon_freshclam="/usr/bin/freshclam"
+daemon_milter="/usr/sbin/clamav-milter"
+
+extra_commands="logfix"
+
+depend() {
+       use net
+       provide antivirus
+}
+
+get_config() {
+       clamconf | sed 's/["=]//g' | \
+       awk "{
+       if(\$0==\"Config file: $1.conf\") S=1
+       if(S==1&&\$0==\"\") {
+               print \"$3\"
+               exit
+       }
+       if(S==1&&\$1~\"^$2\$\") {
+               print \$2!=\"disabled\"?\$2:\"$3\"
+               exit
+       }
+       }"
+}
+
+start() {
+       # populate variables and fix log file permissions
+       logfix
+
+       if [ "${START_CLAMD}" = "yes" ]; then
+               checkpath --quiet --mode 755 \
+                       --owner "${clamd_user}":"${clamd_user}" \
+                       --directory `dirname ${clamd_socket}`
+               if [ -S "${clamd_socket}" ]; then
+                       rm -f ${clamd_socket}
+               fi
+               ebegin "Starting clamd"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${CLAMD_NICELEVEL:-0} \
+                       --ionice ${IONICE_LEVEL:-0} \
+                       --exec ${daemon_clamd}
+               eend $? "Failed to start clamd"
+       fi
+
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               checkpath --quiet --mode 755 \
+                       --owner "${clamd_user}":"${clamd_user}" \
+                       --directory `dirname ${clamd_socket}`
+               ebegin "Starting freshclam"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${FRESHCLAM_NICELEVEL:-0} \
+                       --ionice ${IONICE_LEVEL:-0} \
+                       --exec ${daemon_freshclam} -- -d
+               retcode=$?
+               if [ ${retcode} = 1 ]; then
+                       eend 0
+                       einfo "Virus databases are already up to date."
+               else
+                       eend ${retcode} "Failed to start freshclam"
+               fi
+       fi
+
+       if [ "${START_MILTER}" = "yes" ]; then
+               if [ -z "${MILTER_CONF_FILE}" ]; then
+                       MILTER_CONF_FILE="/etc/clamav-milter.conf"
+               fi
+
+               ebegin "Starting clamav-milter"
+               start-stop-daemon --start --quiet \
+                       --nicelevel ${MILTER_NICELEVEL:-0} \
+                       --ionice ${IONICE_LEVEL:-0} \
+                       --exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
+               eend $? "Failed to start clamav-milter"
+       fi
+}
+
+stop() {
+       if [ "${START_CLAMD}" = "yes" ]; then
+               ebegin "Stopping clamd"
+               start-stop-daemon --stop --quiet --name clamd
+               eend $? "Failed to stop clamd"
+       fi
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               ebegin "Stopping freshclam"
+               start-stop-daemon --stop --quiet --name freshclam
+               eend $? "Failed to stop freshclam"
+       fi
+       if [ "${START_MILTER}" = "yes" ]; then
+               ebegin "Stopping clamav-milter"
+               start-stop-daemon --stop --quiet --name clamav-milter
+               eend $? "Failed to stop clamav-milter"
+       fi
+}
+
+logfix() {
+       clamd_socket=$(get_config clamd LocalSocket /run/clamav/clamd.sock)
+       clamd_user=$(get_config clamd User clamav)
+       freshclam_user=$(get_config freshclam DatabaseOwner clamav)
+
+       if [ "${START_CLAMD}" = "yes" ]; then
+               # fix clamd log permissions
+               # (might be clobbered by logrotate or something)
+               local logfile=$(get_config clamd LogFile)
+               if [ -n "${logfile}" ]; then
+                       checkpath --quiet \
+                               --owner "${clamd_user}":"${clamd_user}" \
+                               --mode 640 \
+                               --file ${logfile}
+               fi
+       fi
+
+       if [ "${START_FRESHCLAM}" = "yes" ]; then
+               # fix freshclam log permissions
+               # (might be clobbered by logrotate or something)
+               local logfile=$(get_config freshclam UpdateLogFile)
+               if [ -n "${logfile}" ]; then
+                       checkpath --quiet \
+                               --owner "${freshclam_user}":"${freshclam_user}" \
+                               --mode 640 \
+                               --file ${logfile}
+               fi
+       fi
+}
diff --git a/app-antivirus/clamav/files/clamd.service b/app-antivirus/clamav/files/clamd.service
new file mode 100644 (file)
index 0000000..efdab43
--- /dev/null
@@ -0,0 +1,7 @@
+.include /usr/lib/systemd/system/clamd@.service
+
+[Unit]
+Description=Generic ClamAV scanner daemon
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/clamd_at.service b/app-antivirus/clamav/files/clamd_at.service
new file mode 100644 (file)
index 0000000..c5ad8df
--- /dev/null
@@ -0,0 +1,9 @@
+[Unit]
+Description=clamd scanner (%i) daemon
+After=nss-lookup.target network.target
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/clamd -c /etc/clamd%i.conf
+Restart=on-failure
+PrivateTmp=true
diff --git a/app-antivirus/clamav/files/freshclamd.service b/app-antivirus/clamav/files/freshclamd.service
new file mode 100644 (file)
index 0000000..a0a72c2
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=clamav updater
+
+[Service]
+Type=forking
+PIDFile=/run/clamav/freshclam.pid
+ExecStart=/usr/bin/freshclam -d -p /run/clamav/freshclam.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/tmpfiles.d/clamav.conf b/app-antivirus/clamav/files/tmpfiles.d/clamav.conf
new file mode 100644 (file)
index 0000000..1672df6
--- /dev/null
@@ -0,0 +1 @@
+d /run/clamav 0710 clamav clamav
diff --git a/app-antivirus/clamav/metadata.xml b/app-antivirus/clamav/metadata.xml
new file mode 100644 (file)
index 0000000..7d51040
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+  <maintainer type="project">
+    <email>antivirus@gentoo.org</email>
+    <name>Gentoo Antivirus Project</name>
+  </maintainer>
+  <maintainer type="project">
+    <email>net-mail@gentoo.org</email>
+    <name>Net-Mail</name>
+  </maintainer>
+  <use>
+    <flag name="clamdtop">A Top like tool which shows what clamd is currently scanning amongst other things</flag>
+    <flag name="metadata-analysis-api">Enables collection of file property metadata using ClamAV API for analysis by ClamAV bytecode programs.</flag>
+  </use>
+  <upstream>
+    <remote-id type="sourceforge">clamav</remote-id>
+  </upstream>
+</pkgmetadata>