mirror of
https://github.com/collectd/collectd.git
synced 2026-02-09 04:09:15 +08:00
contrib/network-proxy.py: Added a simply (unicast) proxy for collectd traffic.
This commit is contained in:
committed by
Florian Forster
parent
a9a66142bb
commit
501142a3e1
46
contrib/network-proxy.py
Normal file
46
contrib/network-proxy.py
Normal file
@@ -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 <shramov at mexmat.net>
|
||||
#
|
||||
# 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)
|
||||
Reference in New Issue
Block a user