There is one thing of which I am not sure how relevant it is, but the EU has created legislation counting IP addresses as personal data (among many other things) and making them subject to storage restrictions and other limitations. Here in the UK it becomes law early next year. Sites designed and intended to be transnational have in the past been pulled up for privacy invading stuff. So I would hazard a guess that while CW is not based in the EU, given that many of the collaborators are and some of the front-ends too, we need to consider this. <br><br>Peter<br><br>Sent from my mobile. Please forgive shortness, typos and weird autocorrects.<div class="quote" style="line-height: 1.5"><br><br>-------- Original Message --------<br>Subject: Re: [sword-devel] FYI geo IP lookups of repo access<br>From: DM Smith <dmsmith@crosswire.org><br>To: SWORD Developers' Collaboration Forum <sword-devel@crosswire.org><br>CC: <br><br><br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">The country information is interesting. I’ve found that bots also skew the counts.<div class=""><br class=""></div><div class="">In my bin dir on the CW server, I have a perl program, moduleScrape.pl, (~/bin/moduleScrape.pl) that slogs through the logs to figure out module downloads counting each download once rather than by all the parts. It first goes through the conf files to find the module in the repository and then picks a single file for each module. Then it goes through the log files (ftp and http) looking for downloads (including zip files) of modules. It tosses hits by bots. The output format is normalized to:<div class="">Date<span class="Apple-tab-span" style="white-space:pre">        </span>Module<span class="Apple-tab-span" style="white-space:pre">        </span>Format<span class="Apple-tab-span" style="white-space:pre">        </span>Transport<span class="Apple-tab-span" style="white-space:pre">                </span>IP<span class="Apple-tab-span" style="white-space:pre">        </span>Country<span class="Apple-tab-span" style="white-space:pre">        </span>Simplified agent</div><div class="">Note IP is obscured here.<br class=""><div class=""><div style="margin: 0px; font-size: 18px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">20150628&nbsp; &nbsp; &nbsp; &nbsp; Easton&nbsp; prt &nbsp; &nbsp; FTP &nbsp; &nbsp; xxx.xxx.xxx.xxx&nbsp; United States &nbsp; <a href="mailto:W4.0.2@xiphos.org" class="">W4.0.2@xiphos.org</a></span></div><div class=""><div style="margin: 0px; font-size: 18px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">20150628&nbsp; &nbsp; &nbsp; &nbsp; PolGdanska&nbsp; &nbsp; &nbsp; </span><span class="">zip</span><span class="">&nbsp;&nbsp; &nbsp;&nbsp;HTTP&nbsp; &nbsp;&nbsp;xxx.xxx.xxx.xxx&nbsp; &nbsp;&nbsp;Poland&nbsp;&nbsp;Apache-HttpClient/UNAVAILABLE (java 1.4)</span></div></div><div style="margin: 0px; font-size: 18px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><br class=""></div><div class="">The program needs tweaking for each server as it “knows” CrossWire’s repositories and it’s logs.</div><div class=""><br class=""></div><div class="">There are a bunch of flags that allow to specify a date range and is geared to find that last full month.</div><div class=""><br class=""></div><div class="">The program started out by J Ansorg and improved by N Carter.</div><div class=""><br class=""></div><div class="">I’ve also a program moduleStats, that runs this program and analyzes the output to produce statistics about the modules.</div><div class=""><br class=""></div><div class="">Troy and I’ve been talking about tossing the data into a database.</div><div class=""><br class=""></div><div class="">DM</div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 10, 2017, at 5:38 PM, Karl Kleinpaste &lt;<a href="mailto:karl@kleinpaste.org" class="">karl@kleinpaste.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class="">Now and then I get curious about where all the accesses to<span class="Apple-converted-space">&nbsp;</span></span><a class="moz-txt-link-abbreviated" href="ftp://ftp.xiphos.org/" style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">ftp.xiphos.org</a><span style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class=""><span class="Apple-converted-space">&nbsp;</span>come from.&nbsp; This is a crude summary from my /var/log/xferlog since early August.&nbsp; Counts of accesses can be gotten by substituting the last "uniq" stage of the pipeline with "uniq -c | sort -nr" but such counts are registering individual files accessed, which is not very informative, especially for modules that include dozens of image files.</span><br style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class="">cat xferlog* | cut -f7 -d' ' | sed -e s/::ffff:// | sort | uniq -c | sort -nr | awk '{ print $2 }' | fgrep . | while read ip ; do geoiplookup $ip ; done | grep 'GeoIP Country Edition' | sed -e 's/GeoIP Country Edition: //' | sort | uniq</span><br style="font-family: FreeSerif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote></div><br class=""></div></div></div></div></body></html></blockquote></div>