diff options
author | Marc G. Fournier <scrappy@FreeBSD.org> | 2006-12-01 13:30:45 +0000 |
---|---|---|
committer | Marc G. Fournier <scrappy@FreeBSD.org> | 2006-12-01 13:30:45 +0000 |
commit | 8575c7bb11f5167c478efe6492a53db993ba72f8 (patch) | |
tree | 76e0e5c0b6da98881b4502e1af9b0483769d99f1 /sysutils/bsdstats | |
parent | f2aa8d1ab48270aa3ebc11eeb446cc4a4834a856 (diff) |
Notes
Diffstat (limited to 'sysutils/bsdstats')
-rw-r--r-- | sysutils/bsdstats/Makefile | 3 | ||||
-rw-r--r-- | sysutils/bsdstats/files/300.statistics | 128 | ||||
-rw-r--r-- | sysutils/bsdstats/files/300.statistics.in | 128 | ||||
-rw-r--r-- | sysutils/bsdstats/files/pkg-message.in | 3 | ||||
-rw-r--r-- | sysutils/bsdstats/pkg-install | 6 | ||||
-rw-r--r-- | sysutils/bsdstats/pkg-message | 3 |
6 files changed, 265 insertions, 6 deletions
diff --git a/sysutils/bsdstats/Makefile b/sysutils/bsdstats/Makefile index 4cc82582a508..360297a58d8d 100644 --- a/sysutils/bsdstats/Makefile +++ b/sysutils/bsdstats/Makefile @@ -6,8 +6,7 @@ # PORTNAME= bsdstats -PORTVERSION= 4.8 -PORTREVISION= 2 +PORTVERSION= 5.0 CATEGORIES= sysutils DISTFILES= diff --git a/sysutils/bsdstats/files/300.statistics b/sysutils/bsdstats/files/300.statistics index 5b1fc6f17f6d..d3b4c704474a 100644 --- a/sysutils/bsdstats/files/300.statistics +++ b/sysutils/bsdstats/files/300.statistics @@ -1,6 +1,6 @@ #!/bin/sh - # -# $FreeBSD: /tmp/pcvs/ports/sysutils/bsdstats/files/Attic/300.statistics,v 1.33 2006-10-04 04:51:41 scrappy Exp $ +# $FreeBSD: /tmp/pcvs/ports/sysutils/bsdstats/files/Attic/300.statistics,v 1.34 2006-12-01 13:30:45 scrappy Exp $ # # If there is a global system configuration file, suck it in. @@ -22,7 +22,7 @@ fi oldmask=$(umask) umask 066 -version="4.7" +version="5.0" checkin_server=${monthly_statistics_checkin_server:-"rpt.bsdstats.org"} bsdstats_log=${monthly_statistics_logfile:-"/var/log/bsdstats"} id_token_file='/var/db/bsdstats' @@ -76,6 +76,7 @@ check_dns () { exit fi } + send_devices () { case $(uname) in FreeBSD ) @@ -95,6 +96,119 @@ send_devices () { esac } +send_ports () { + case $(uname) in + FreeBSD ) + for line in `/usr/sbin/pkg_info | /usr/bin/awk '{print $1}' ` + do + category=`grep "@comment ORIGIN" /var/db/pkg/${line}/+CONTENTS | sed -E 's/^\@comment ORIGIN:(.+)\/.+/\1/g'` + line=$(uri_escape $line) + category=$(uri_escape $category) + query_string=$query_string`echo \&port[]=${category}:${line}` + done + + report_ports + ;; + * ) + # Not supported + ;; + esac +} + +report_ports () { + # Handle HTTP proxy services + # + # HTTP_PROXY/http_proxy can take the following form: + # [http://][username:password@]proxy[:port][/] + # Authentication details may also be provided via HTTP_PROXY_AUTH: + # HTTP_PROXY_AUTH="basic:*:username:password" + # + + if [ -z "$HTTP_PROXY" -a -n "$http_proxy" ]; then + HTTP_PROXY=$http_proxy + fi + if [ -n "$HTTP_PROXY" ]; then + # Attempt to resolve any HTTP authentication + if [ -n "$HTTP_PROXY_AUTH" ]; then + PROXY_AUTH_USER=`echo $HTTP_PROXY_AUTH | sed -E 's/^.+:\*:(.+):.+$/\1/g'` + PROXY_AUTH_PASS=`echo $HTTP_PROXY_AUTH | sed -E 's/^.+:\*:.+:(.+)$/\1/g'` + else + # Check for authentication within HTTP_PROXY + HAS_HTTP_AUTH=`echo $HTTP_PROXY | sed -E 's/^(http:\/\/)?(.+:.+@)?.+/\2/'` + if [ -n "$HAS_HTTP_AUTH" ]; then + # Found HTTP authentication details + PROXY_AUTH_USER=`echo $HAS_HTTP_AUTH | cut -d: -f1` + PROXY_AUTH_PASS=`echo $HAS_HTTP_AUTH | cut -d: -f2` + fi + fi + + # Determine the proxy components + PROXY_HOST=`echo $HTTP_PROXY | sed -E 's/^(http:\/\/)?(.+:.+@)?([^@:]+)(:.+)?/\3/'` + PROXY_PORT=`echo $HTTP_PROXY | sed -E 's/^(http:\/\/)?(.+:.+@)?(.+):([0-9]+)/\4/' | sed -e 's/[^0-9]//g'` + if [ -z "$PROXY_PORT" ]; then + # Use default proxy port + PROXY_PORT=3128 + fi + fi + + # Determine the host/port netcat should connect to + if [ -n "$PROXY_HOST" -a -n "$PROXY_PORT" ]; then + nc_host=$PROXY_HOST + nc_port=$PROXY_PORT + url_prefix="http://${checkin_server}" + else + nc_host=$checkin_server + nc_port=80 + fi + + # Proxy authentication, if required + if [ -n "$PROXY_AUTH_USER" -a -n "$PROXY_AUTH_PASS" ]; then + auth_base64=`echo "$PROXY_AUTH_USER:$PROXY_AUTH_PASS" | openssl base64` + proxy_auth="Proxy-Authorization: Basic $auth_base64 +" + fi + + + # Make the request + string_length=`echo ${query_string} | wc -m` + string_length=`expr ${string_length} - 1` + + echo "POST ${url_prefix}/scripts/report_ports.php HTTP/1.0 +Host: ${checkin_server} +User-Agent: bsdstats ${version} +Connection: close +${proxy_auth}Content-Type: application/x-www-form-urlencoded +Content-Length: ${string_length} + +token=${TOKEN}&key=${KEY}${query_string}" | \ + /usr/bin/nc $nc_host $nc_port | \ + grep STATUS= | { + local IFS + IFS='= +' + + while read var val + do + case $var in + STATUS) + if [ $val = "OK" ] + then + echo "[`date`] System Ports reported" + else + echo "[`date`] System Ports not reported, exiting" + exit + fi + ;; + *) + echo "[`date`] Error with fetch to server" + exit + ;; + esac + done + } >> $bsdstats_log + +} + report_devices () { do_fetch report_devices.php?token=$TOKEN\&key=$KEY$query_string | { local IFS @@ -308,6 +422,16 @@ case "$monthly_statistics_enable" in echo " set monthly_statistics_report_devices=\"YES\" in $periodic_conf" ;; esac + case "$monthly_statistics_report_ports" in + [Yy][Ee][Ss]) + send_ports + echo "Posting monthly ports statistics to $checkin_server" + ;; + *) + echo "Posting monthly ports statistics disabled" + echo " set monthly_statistics_report_ports=\"YES\" in $periodic_conf" + ;; + esac disable_token ;; *) diff --git a/sysutils/bsdstats/files/300.statistics.in b/sysutils/bsdstats/files/300.statistics.in index 8a2a4d9ac42b..c3b5bb3df5a6 100644 --- a/sysutils/bsdstats/files/300.statistics.in +++ b/sysutils/bsdstats/files/300.statistics.in @@ -1,6 +1,6 @@ #!/bin/sh - # -# $FreeBSD: /tmp/pcvs/ports/sysutils/bsdstats/files/300.statistics.in,v 1.33 2006-10-04 04:51:41 scrappy Exp $ +# $FreeBSD: /tmp/pcvs/ports/sysutils/bsdstats/files/300.statistics.in,v 1.34 2006-12-01 13:30:45 scrappy Exp $ # # If there is a global system configuration file, suck it in. @@ -22,7 +22,7 @@ fi oldmask=$(umask) umask 066 -version="4.7" +version="5.0" checkin_server=${monthly_statistics_checkin_server:-"rpt.bsdstats.org"} bsdstats_log=${monthly_statistics_logfile:-"/var/log/bsdstats"} id_token_file='/var/db/bsdstats' @@ -76,6 +76,7 @@ check_dns () { exit fi } + send_devices () { case $(uname) in FreeBSD ) @@ -95,6 +96,119 @@ send_devices () { esac } +send_ports () { + case $(uname) in + FreeBSD ) + for line in `/usr/sbin/pkg_info | /usr/bin/awk '{print $1}' ` + do + category=`grep "@comment ORIGIN" /var/db/pkg/${line}/+CONTENTS | sed -E 's/^\@comment ORIGIN:(.+)\/.+/\1/g'` + line=$(uri_escape $line) + category=$(uri_escape $category) + query_string=$query_string`echo \&port[]=${category}:${line}` + done + + report_ports + ;; + * ) + # Not supported + ;; + esac +} + +report_ports () { + # Handle HTTP proxy services + # + # HTTP_PROXY/http_proxy can take the following form: + # [http://][username:password@]proxy[:port][/] + # Authentication details may also be provided via HTTP_PROXY_AUTH: + # HTTP_PROXY_AUTH="basic:*:username:password" + # + + if [ -z "$HTTP_PROXY" -a -n "$http_proxy" ]; then + HTTP_PROXY=$http_proxy + fi + if [ -n "$HTTP_PROXY" ]; then + # Attempt to resolve any HTTP authentication + if [ -n "$HTTP_PROXY_AUTH" ]; then + PROXY_AUTH_USER=`echo $HTTP_PROXY_AUTH | sed -E 's/^.+:\*:(.+):.+$/\1/g'` + PROXY_AUTH_PASS=`echo $HTTP_PROXY_AUTH | sed -E 's/^.+:\*:.+:(.+)$/\1/g'` + else + # Check for authentication within HTTP_PROXY + HAS_HTTP_AUTH=`echo $HTTP_PROXY | sed -E 's/^(http:\/\/)?(.+:.+@)?.+/\2/'` + if [ -n "$HAS_HTTP_AUTH" ]; then + # Found HTTP authentication details + PROXY_AUTH_USER=`echo $HAS_HTTP_AUTH | cut -d: -f1` + PROXY_AUTH_PASS=`echo $HAS_HTTP_AUTH | cut -d: -f2` + fi + fi + + # Determine the proxy components + PROXY_HOST=`echo $HTTP_PROXY | sed -E 's/^(http:\/\/)?(.+:.+@)?([^@:]+)(:.+)?/\3/'` + PROXY_PORT=`echo $HTTP_PROXY | sed -E 's/^(http:\/\/)?(.+:.+@)?(.+):([0-9]+)/\4/' | sed -e 's/[^0-9]//g'` + if [ -z "$PROXY_PORT" ]; then + # Use default proxy port + PROXY_PORT=3128 + fi + fi + + # Determine the host/port netcat should connect to + if [ -n "$PROXY_HOST" -a -n "$PROXY_PORT" ]; then + nc_host=$PROXY_HOST + nc_port=$PROXY_PORT + url_prefix="http://${checkin_server}" + else + nc_host=$checkin_server + nc_port=80 + fi + + # Proxy authentication, if required + if [ -n "$PROXY_AUTH_USER" -a -n "$PROXY_AUTH_PASS" ]; then + auth_base64=`echo "$PROXY_AUTH_USER:$PROXY_AUTH_PASS" | openssl base64` + proxy_auth="Proxy-Authorization: Basic $auth_base64 +" + fi + + + # Make the request + string_length=`echo ${query_string} | wc -m` + string_length=`expr ${string_length} - 1` + + echo "POST ${url_prefix}/scripts/report_ports.php HTTP/1.0 +Host: ${checkin_server} +User-Agent: bsdstats ${version} +Connection: close +${proxy_auth}Content-Type: application/x-www-form-urlencoded +Content-Length: ${string_length} + +token=${TOKEN}&key=${KEY}${query_string}" | \ + /usr/bin/nc $nc_host $nc_port | \ + grep STATUS= | { + local IFS + IFS='= +' + + while read var val + do + case $var in + STATUS) + if [ $val = "OK" ] + then + echo "[`date`] System Ports reported" + else + echo "[`date`] System Ports not reported, exiting" + exit + fi + ;; + *) + echo "[`date`] Error with fetch to server" + exit + ;; + esac + done + } >> $bsdstats_log + +} + report_devices () { do_fetch report_devices.php?token=$TOKEN\&key=$KEY$query_string | { local IFS @@ -308,6 +422,16 @@ case "$monthly_statistics_enable" in echo " set monthly_statistics_report_devices=\"YES\" in $periodic_conf" ;; esac + case "$monthly_statistics_report_ports" in + [Yy][Ee][Ss]) + send_ports + echo "Posting monthly ports statistics to $checkin_server" + ;; + *) + echo "Posting monthly ports statistics disabled" + echo " set monthly_statistics_report_ports=\"YES\" in $periodic_conf" + ;; + esac disable_token ;; *) diff --git a/sysutils/bsdstats/files/pkg-message.in b/sysutils/bsdstats/files/pkg-message.in index 6bc79f1e0664..cf5eda09f142 100644 --- a/sysutils/bsdstats/files/pkg-message.in +++ b/sysutils/bsdstats/files/pkg-message.in @@ -16,6 +16,9 @@ To enable the port, edit or create /etc/periodic.conf and add this line: To enable device reporting, add this line: monthly_statistics_report_devices="YES" +To enable ports reporting, add this line: + monthly_statistics_report_ports="YES" + To run it manually the first time, just run it as: /usr/local/etc/periodic/monthly/300.statistics diff --git a/sysutils/bsdstats/pkg-install b/sysutils/bsdstats/pkg-install index 3ab8de033995..5f452f804c01 100644 --- a/sysutils/bsdstats/pkg-install +++ b/sysutils/bsdstats/pkg-install @@ -40,6 +40,9 @@ if [ ":$2" = ":POST-INSTALL" ]; then if yesno "Would you like to send a list of installed hardware as well" n; then echo "monthly_statistics_report_devices=\"YES\"" >> /etc/periodic.conf fi + if yesno "Would you like to send a list of installed ports as well" n; then + echo "monthly_statistics_report_ports=\"YES\"" >> /etc/periodic.conf + fi if yesno "Would you like to run it now" y; then /usr/local/etc/periodic/monthly/300.statistics fi @@ -51,6 +54,9 @@ if [ ":$2" = ":POST-INSTALL" ]; then if yesno "Would you like to send a list of installed hardware as well" n; then echo "monthly_statistics_report_devices=\"YES\"" >> /etc/periodic.conf fi + if yesno "Would you like to send a list of installed ports as well" n; then + echo "monthly_statistics_report_ports=\"YES\"" >> /etc/periodic.conf + fi if yesno "Would you like to run it now" y; then /usr/local/etc/periodic/monthly/300.statistics fi diff --git a/sysutils/bsdstats/pkg-message b/sysutils/bsdstats/pkg-message index 6bc79f1e0664..cf5eda09f142 100644 --- a/sysutils/bsdstats/pkg-message +++ b/sysutils/bsdstats/pkg-message @@ -16,6 +16,9 @@ To enable the port, edit or create /etc/periodic.conf and add this line: To enable device reporting, add this line: monthly_statistics_report_devices="YES" +To enable ports reporting, add this line: + monthly_statistics_report_ports="YES" + To run it manually the first time, just run it as: /usr/local/etc/periodic/monthly/300.statistics |