From 4021b50cefe9759a1958ea12d613fc1f5c041ba2 Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Fri, 11 Feb 2011 20:14:06 +0530 Subject: Server side python scripts project --- .../src/multicast_response.py | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 com.gluster.storage.management.server.scripts/src/multicast_response.py (limited to 'com.gluster.storage.management.server.scripts/src/multicast_response.py') diff --git a/com.gluster.storage.management.server.scripts/src/multicast_response.py b/com.gluster.storage.management.server.scripts/src/multicast_response.py new file mode 100644 index 00000000..64bc0899 --- /dev/null +++ b/com.gluster.storage.management.server.scripts/src/multicast_response.py @@ -0,0 +1,45 @@ +#!/usr/bin/python +# Copyright (C) 2009 Gluster, Inc. +# This file is part of Gluster Storage Platform. +# +# Gluster Storage Platform 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; either version 3 of +# the License, or (at your option) any later version. +# +# Gluster Storage Platform 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, see +# . + +import socket +import struct +import Globals + +def response(multiCastGroup, port): + # waiting for the request! + socketRequest = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + socketRequest.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + socketRequest.bind(('', port)) + mreq = struct.pack("4sl", socket.inet_aton(multiCastGroup), socket.INADDR_ANY) + socketRequest.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) + + socketSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + socketSend.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2) + + #TODO: Remove infinite loop and make this as a deamon (service) + while True: + request = socketRequest.recvfrom(1024) + if request and request[0].upper() == "SERVERDISCOVERY": + socketSend.sendto(socket.gethostname(), (multiCastGroup, port)) + request = None + +def main(): + response(Globals.MULTICAST_GROUP, Globals.MULTICAST_PORT) + +if __name__ == "__main__": + main() -- cgit