diff -r 11124e129a28 -r f3eb35df4d87 runtime/ServicePublisher.py --- a/runtime/ServicePublisher.py Fri Aug 22 15:27:37 2008 +0200 +++ b/runtime/ServicePublisher.py Fri Aug 22 15:30:09 2008 +0200 @@ -22,20 +22,48 @@ #License along with this library; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -import Zeroconf +import Zeroconf, socket -class PublishService(): - def __init__(self): - self.server = Zeroconf.Zeroconf() +# type: fully qualified service type name +service_type = '_PYRO._tcp.local.' - def ConfigureService(self, type, name, address, port, description): - self.newservice = Zeroconf.ServiceInfo(type, - name, - address, +# properties: dictionary of properties (or a string holding the bytes for the text field) +serviceproperties = {'description':'Beremiz remote PLC'} + +def gethostaddr(dst = '224.0.1.41'): + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + try: + s.connect((dst, 7)) + (host, port) = s.getsockname() + s.close() + if host != '0.0.0.0': + return host + except error: + pass + return socket.gethostbyname(socket.gethostname()) + + +def ServicePublisher(name, ip, port): + + # name: fully qualified service name + service_name = 'Beremiz_%s.%s'%(name,service_type) + + # No ip params -> get host ip + if ip == "": + ip = gethostaddr() + + print "Mon IP est :"+ip + + server = Zeroconf.Zeroconf(ip) + + # address: IP address as unsigned short, network byte order + ip_32b = socket.inet_aton(ip) + + server.registerService( + Zeroconf.ServiceInfo(service_type, + service_name, + ip_32b, port, - weight = 0, # weight: weight of the service - priority= 0, # priority: priority of the service - properties = description) - - def PublishService(self): - self.server.registerService(self.newservice) \ No newline at end of file + properties = serviceproperties)) + + return server \ No newline at end of file