Revisión 93
Añadido por Manu Mora Gordillo hace alrededor de 14 años
controlies/Utils/avahiClient.py | ||
---|---|---|
|
||
class avahiClient():
|
||
|
||
def __init__(self):
|
||
def __init__(self, type):
|
||
self._callbacks = {'new-service': [], 'remove-service': [] }
|
||
# initialize dbus stuff needed for discovery
|
||
|
||
... | ... | |
self.server = dbus.Interface(avahi_bus, avahi.DBUS_INTERFACE_SERVER)
|
||
|
||
stype = '_workstation._tcp'
|
||
stype = '_controlaula._tcp'
|
||
|
||
stype = type
|
||
|
||
domain = 'local'
|
||
self._plugged = {}
|
||
|
||
avahi_browser = self.server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, stype, domain, dbus.UInt32(0))
|
||
obj = self.bus.get_object(avahi.DBUS_NAME, avahi_browser)
|
||
self.browser = dbus.Interface(obj, avahi.DBUS_INTERFACE_SERVICE_BROWSER)
|
||
self.browser = dbus.Interface(obj, avahi.DBUS_INTERFACE_SERVICE_BROWSER)
|
||
|
||
def start(self):
|
||
self.browser.connect_to_signal('ItemNew', self.new_service)
|
||
... | ... | |
cb(self,name, address, port)
|
||
|
||
def resolve_service_error(exception):
|
||
self.warning('could not resolve daap service %s %s: %s' %
|
||
(name, domain, exception))
|
||
self.warning('could not resolve daap service %s %s: %s' % (name, domain, exception))
|
||
|
||
self.server.ResolveService(interface, protocol, name, type, domain,
|
||
avahi.PROTO_UNSPEC, dbus.UInt32(0),
|
controlies/www/classroomServers/index.html | ||
---|---|---|
var result = $.parseJSON(data);
|
||
|
||
$.each(result.response, function(i, l){
|
||
$('#selectable').append('<li class="ui-state-default" id="selectable-'+l+'"><div id="pcName" style="font-size:11px;">'+l+'</div><img class="thumb-image" src="img/turnOff.png"/><div id="userName" style="font-size:11px;">ajimenezf01</div></li>');
|
||
$('#selectable').append('<li class="ui-state-default" id="selectable-'+l+'"><div id="pcName" style="font-size:11px;">'+l+'</div><img class="thumb-image" src="img/turnOff.png"/><div id="userName" style="font-size:11px;"></div></li>');
|
||
});
|
||
|
||
getLTSPStatus();
|
||
... | ... | |
function getLTSPStatus(){
|
||
$.post('hosts','action=getLTSPStatus', function(data) {
|
||
var result = $.parseJSON(data);
|
||
|
||
$('#selectable li .thumb-image').attr('src','img/turnOff.png');
|
||
|
||
$.each(result.response, function(i, l){
|
||
$('#selectable').append('<li class="ui-state-default" id="selectable-'+l+'"><div id="pcName" style="font-size:11px;">'+l+'</div><img class="thumb-image" src="img/turnOff.png"/><div id="userName" style="font-size:11px;">ajimenezf01</div></li>');
|
||
$.each(result.computers, function(i, l){
|
||
$('#selectable #selectable-'+l+' .thumb-image').attr('src','img/turnOn.png');
|
||
});
|
||
|
||
$.each(result.teachers, function(i, l){
|
||
var teacher = l.split(".");
|
||
var computer = teacher[0].split("@");
|
||
$('#selectable #selectable-'+computer[1]+' #userName').html(computer[0]);
|
||
$('#selectable #selectable-'+computer[1]+' .thumb-image').attr('src','img/nobody.png');
|
||
});
|
||
|
||
setTimeout("getLTSPStatus()",2000);
|
||
setTimeout("getLTSPStatus()",10000);
|
||
});
|
||
}
|
||
|
controlies/MainLoop.py | ||
---|---|---|
return json.dumps({"response" : response})
|
||
|
||
elif request.args['action'][0] == "getLTSPStatus":
|
||
h = Hosts (l,"","","","","")
|
||
response = h.getLTSPStatus ()
|
||
return json.dumps({"response" : response})
|
||
f = open('/tmp/controlIES.ltpsSevers', 'r')
|
||
computers = f.read().split(" ")
|
||
computers.sort()
|
||
|
||
f = open('/tmp/controlIES.ltpsTeachers', 'r')
|
||
teachers = f.read().split(" ")
|
||
teachers.sort()
|
||
|
||
return json.dumps({ "computers":computers, "teachers":teachers })
|
||
|
||
else:
|
||
if request.args ['type'][0] == 'thinclient':
|
||
ip = ""
|
controlies/Server.py | ||
---|---|---|
#Root.PageDir='/home/chisco/Proyectos/controlies/www'
|
||
site = server.Site(Root)
|
||
|
||
fileName = '/tmp/controlIES.ltpsSevers'
|
||
fileNameServers = '/tmp/controlIES.ltpsSevers'
|
||
if os.path.isfile(fileNameServers):
|
||
os.remove(fileNameServers)
|
||
|
||
if os.path.isfile(fileName):
|
||
os.remove(fileName)
|
||
f = open(fileNameServers, 'w')
|
||
|
||
|
||
fileNameTeachers = '/tmp/controlIES.ltpsTeachers'
|
||
if os.path.isfile(fileNameTeachers):
|
||
os.remove(fileNameTeachers)
|
||
|
||
f = open(fileNameTeachers, 'w')
|
||
|
||
|
||
def _add_locationServers(self, name, address, port):
|
||
print name
|
||
computerToAdd = name.split(" ")
|
||
f = open(fileNameServers, 'a')
|
||
f.write(computerToAdd[0]+" ")
|
||
f.close()
|
||
|
||
|
||
f = open(fileName, 'w')
|
||
def _remove_locationServers(self, name, address, port):
|
||
computerToDelete = name.split(" ")
|
||
f = open(fileNameServers, 'r')
|
||
computersList = f.read()
|
||
f.close()
|
||
#print "computer list "+computerlist
|
||
#print "computer to delete "+computerToDelete[0]
|
||
computersList.replace(computerToDelete[0]+" ","")
|
||
|
||
#print "computer list "+computerList
|
||
|
||
f = open(fileNameServers, 'w')
|
||
f.write(computersList)
|
||
f.close()
|
||
|
||
def _add_location(self, name, address, port):
|
||
f = open(fileName, 'r+')
|
||
f.write(name)
|
||
|
||
def _add_locationTeachers(self, name, address, port):
|
||
print name
|
||
teacherToAdd = name.split(" ")
|
||
f = open(fileNameTeachers, 'a')
|
||
f.write(teacherToAdd[0]+" ")
|
||
f.close()
|
||
print "add"
|
||
|
||
|
||
def _remove_location(self, name, address, port):
|
||
print "remove"
|
||
#remove ipv6 entries:
|
||
if address.find(":") == -1:
|
||
print "removed:" + name,address,port
|
||
def _remove_locationTeachers(self, name, address, port):
|
||
teacherToDelete = name.split(" ")
|
||
f = open(fileNameTeachers, 'r')
|
||
teachersList = f.read()
|
||
f.close()
|
||
#print "computer list "+computerlist
|
||
#print "computer to delete "+computerToDelete[0]
|
||
teachersList.replace(teacherToDelete[0]+" ","")
|
||
|
||
#print "computer list "+computerList
|
||
|
||
f = open(fileNameTeachers, 'w')
|
||
f.write(teachersList)
|
||
f.close()
|
||
|
||
|
||
try:
|
||
_monitor = avahiClient('_workstation._tcp')
|
||
_monitor.add_callback('new-service', _add_locationServers)
|
||
_monitor.add_callback('remove-service', _remove_locationServers)
|
||
_monitor.start()
|
||
|
||
except Exception, ex:
|
||
error_msg = "Couldn't initialize Avahi monitor: %s" % str(ex)
|
||
#raise InitializeFailure(self.name, error_msg)
|
||
|
||
|
||
try:
|
||
_monitor = avahiClient()
|
||
_monitor.add_callback('new-service', _add_location)
|
||
_monitor.add_callback('remove-service', _remove_location)
|
||
_monitor = avahiClient('_controlaula._tcp')
|
||
_monitor.add_callback('new-service', _add_locationTeachers)
|
||
_monitor.add_callback('remove-service', _remove_locationTeachers)
|
||
_monitor.start()
|
||
|
||
except Exception, ex:
|
||
error_msg = "Couldn't initialize Avahi monitor: %s" % str(ex)
|
||
#raise InitializeFailure(self.name, error_msg)
|
||
|
||
|
||
from twisted.internet import reactor
|
||
|
||
reactor.listenTCP(7778,site)
|
Exportar a: Unified diff
Avahi: ya detecta ltpsServers y profesores