# make the Distributed Checksum Clearinghouse prototype home directory files

# Copyright (c) 2008 by Rhyolite Software, LLC
#
# This agreement is not applicable to any entity which sells anti-spam
# solutions to others or provides an anti-spam solution as part of a
# security solution sold to other entities, or to a private network
# which employs the DCC or uses data provided by operation of the DCC
# but does not provide corresponding data to other users.
#
# Permission to use, copy, modify, and distribute this software without
# changes for any purpose with or without fee is hereby granted, provided
# that the above copyright notice and this permission notice appear in all
# copies and any distributed versions or copies are either unchanged
# or not called anything similar to "DCC" or "Distributed Checksum
# Clearinghouse".
#
# Parties not eligible to receive a license under this agreement can
# obtain a commercial license to use DCC by contacting Rhyolite Software
# at sales@rhyolite.com.
#
# A commercial license would be for Distributed Checksum and Reputation
# Clearinghouse software.  That software includes additional features.  This
# free license for Distributed ChecksumClearinghouse Software does not in any
# way grant permision to use Distributed Checksum and Reputation Clearinghouse
# software
#
# THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE, LLC DISCLAIMS ALL
# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE, LLC
# BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
# SOFTWARE.

# Rhyolite Software DCC 1.3.103-1.57 $Revision$
# @configure_input@

DEPTH	=..

@MAKE_PROG@
@MAKE_INC2@

HINST	=$(INSTALL) -c $(SET_DCCOWN)
HD	=@installroot@$(DCC_HOMEDIR)
MAP	=$(HD)/map@configsuffix@
MAPTXT	=$(HD)/map.txt@configsuffix@
IDS	=$(HD)/ids@configsuffix@
CDCC	=$(DEPTH)/cdcc/cdcc

# this should not be the ./configure name
UPFILE	=.updatedcc_pfile

SIMPLE	=flod grey_flod whitelist grey_whitelist whiteclnt whitecommon
ALL	=$(SIMPLE) ids map map.txt dcc_conf

all:
	@:

# /dev/random is overkill for the security needed here, but use it if it exists
RND=(ps; dd if=/dev/random count=1 2>&1) | cksum | tr '	 ' xy

install:
	if test ! -d $(HD); then\
	    $(HINST) -m 755 -d $(HD); fi
	if test ! -d $(HD)/log; then\
	    $(HINST) -m 710 -d $(HD)/log; fi
	if test -z '@configsuffix@' -a -s $(HD)/dcc_conf; then\
	    sh make-dcc_conf -h $(HD) -s '@configsuffix@';\
	else\
	    $(HINST) -m 644 dcc_conf $(HD)/dcc_conf@configsuffix@;\
	fi
	for nm in $(SIMPLE); do\
	    if test -n '@configsuffix@' -o ! -f $(HD)/$$nm; then\
		$(HINST) -m 644 $$nm $(HD)/$${nm}@configsuffix@; fi; done
	if test -s $(UPFILE); then\
	    $(HINST) -m 600 $(UPFILE) $(HD)/$(UPFILE);\
	    set +e; chown @DCCSUID@ $(HD)/$(UPFILE); fi
	if test -n '@configsuffix@' || test ! -f $(HD)/ids -a ! -f $(HD)/map\
				 -a ! -f $(HD)/map.txt; then\
	    umask 077; PASSWD=`$(RND)`;\
	    sed -e "s/secret1/$$PASSWD/" -e "s/secret2/`$(RND)`/" ids >$(IDS);\
	    rm -f $(MAP) || true; sed -e "s/secret1/$$PASSWD/" map.txt |\
		$(CDCC) -qh$(HD) "new map $(MAP); load -";\
	    sh fix-map -c $(CDCC) -m $(MAP) -h $(HD);\
	    echo '# map.txt is merely the output of `cdcc info`' >$(MAPTXT);\
	    $(CDCC) -qh$(HD) "file $(MAP); info" >>$(MAPTXT);\
	    set +e; chown @DCCSUID@ $(MAPTXT) $(MAP) $(IDS);\
	else\
	    sh fix-map -c $(CDCC) -m $(MAP) -h $(HD);\
	fi
	if test -n '@configsuffix@'; then\
	    for nm in $(ALL); do\
		if test ! -f $(HD)/$$nm; then\
		    cp -p $(HD)/$${nm}@configsuffix@ $(HD)/$${nm}; fi; done; fi

deinstall:
	for NM in dcc_conf flod grey_flod whiteclnt whitecommon\
		whitelist grey_whitelist; do\
	    if test ! -f $(HD)/$$NM; then continue; fi;\
	    if test `diff $$NM $(HD)/$$NM\
		    | sed -e '/^---$$/d' -e '/^[^<>]/d'\
			 -e '/^[<>][	]*#/d' -e '/^[<>][	]*$$/d'\
		    | wc -l` -eq 0; then rm $(HD)/$$NM; fi; done;
	-rm -f $(HD)/dcc_conf-new
	-if test -d $(HD); then\
	    find $(HD) -name '*.dcc[xw]' | @DCC_XARGS@ rm -f ;\
	    rmdir $(HD)/log;\
	    fi
