From 501142a3e19dbd5e30684d075ae3db87f5bfef82 Mon Sep 17 00:00:00 2001 From: Pavel Shramov Date: Sun, 9 Dec 2007 11:51:28 +0100 Subject: [PATCH] contrib/network-proxy.py: Added a simply (unicast) proxy for collectd traffic. --- contrib/network-proxy.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 contrib/network-proxy.py diff --git a/contrib/network-proxy.py b/contrib/network-proxy.py new file mode 100644 index 00000000..98a4ad8b --- /dev/null +++ b/contrib/network-proxy.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# vim: sts=4 sw=4 et + +# Simple unicast proxy to send collectd traffic to another host/port. +# Copyright (C) 2007 Pavel Shramov +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; only version 2 of the License is applicable. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA + +""" +Simple unicast proxy for collectd (>= 4.0). +Binds to 'local' address and forwards all traffic to 'remote'. +""" + +import socket +import struct + +""" Local multicast group/port""" +local = ("239.192.74.66", 25826) +""" Address to send packets """ +remote = ("grid.pp.ru", 35826) + +sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) +mreq = struct.pack("4sl", socket.inet_aton(local[0]), socket.INADDR_ANY) + +sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) +sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 1) +sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) +sock.bind(local) + +out = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + +if __name__ == "__main__": + while True: + (buf, addr) = sock.recvfrom(2048) + sock.sendto(buf, remote) -- 2.11.0