Revisión 224
Añadido por Manu Mora Gordillo hace más de 13 años
controlies/trunk/applications/controlies/controllers/hosts.py | ||
---|---|---|
@auth.requires_login()
|
||
def modify():
|
||
l=conecta()
|
||
h = Hosts(l,request.vars['name'],request.vars['ip'],request.vars['mac'],request.vars['type_host'])
|
||
ip = "172."+request.vars['subrange']+"."+request.vars['range']+"."+request.vars['ip']
|
||
h = Hosts(l,request.vars['name'],ip,request.vars['mac'],request.vars['type_host'])
|
||
response=h.process(request.vars['action'])
|
||
l.close()
|
||
return dict(response=response)
|
controlies/trunk/applications/controlies/modules/Utils/LdapUtils.py | ||
---|---|---|
|
||
def getAllRanges(ldap):
|
||
myRange = []
|
||
my_search = ldap.search("dc=23,dc=172,dc=in-addr,dc=arpa,ou=hosts","dc=*",["dc"])
|
||
mySubRange = []
|
||
|
||
my_search = ldap.search("dc=172,dc=in-addr,dc=arpa,ou=hosts","dc=*",["dc"])
|
||
for s in my_search:
|
||
address = s[0][0].split(",")
|
||
if len(address) == 9:
|
||
myRange.append(address[0].replace("dc=",""))
|
||
|
||
|
||
if len(address) == 8:
|
||
mySubRange.append(address[0].replace("dc=",""))
|
||
|
||
myRange.sort()
|
||
return myRange
|
||
return { "ranges":myRange, "subrange":mySubRange }
|
||
|
||
# Get the max ID of the groups and users
|
||
def getMaxID(ldap):
|
controlies/trunk/applications/controlies/modules/Hosts.py | ||
---|---|---|
# reverse Sort
|
||
reverseSort = False
|
||
if args['sord'] == "asc":
|
||
reverseSort = True
|
||
|
||
#Distinguimos entre hosts ltsp, workstations y portatiles
|
||
type_host = args['type_host']
|
||
|
||
|
||
if type_host == "ltsp-server-hosts":
|
||
# Obtengo todos los elementos del nodo hosts
|
||
#search = l.search("ou=hosts","cn=*",["cn","ipHostNumber","macAddress"])
|
||
#filter = self.buildFilter(args)
|
||
hostnames = self.getListTriplets()
|
||
hostnames_data = {}
|
||
|
||
search = self.ldap.search("cn=INTERNAL,cn=DHCP Config","cn=*",["cn","dhcpHWAddress"])
|
||
for s in search:
|
||
if s[0][1]['cn'][0] in hostnames:
|
||
hostnames_data[s[0][1]['cn'][0]] = {"mac" : s[0][1]['dhcpHWAddress'][0].replace("ethernet ",""), "host":s[0][1]['cn'][0]}
|
||
reverseSort = True
|
||
|
||
hostnames = self.getListTriplets()
|
||
hostnames_data = {}
|
||
|
||
search = self.ldap.search("cn=INTERNAL,cn=DHCP Config","cn=*",["cn","dhcpHWAddress"])
|
||
for s in search:
|
||
if s[0][1]['cn'][0] in hostnames:
|
||
hostnames_data[s[0][1]['cn'][0]] = {"mac" : s[0][1]['dhcpHWAddress'][0].replace("ethernet ",""), "host":s[0][1]['cn'][0]}
|
||
|
||
search = self.ldap.search("dc="+self.domainname+",ou=hosts","dc=*",["dc","aRecord"])
|
||
for s in search:
|
||
if s[0][1]['dc'][0] in hostnames:
|
||
hostnames_data[s[0][1]['dc'][0]]["ip"] = s[0][1]['aRecord'][0]
|
||
|
||
rows = []
|
||
for k, v in hostnames_data.iteritems():
|
||
row = {
|
||
"id":v["host"],
|
||
"cell":[v["host"], v["ip"],v["mac"]],
|
||
"cn":v["host"],
|
||
"ipHostNumber":v["ip"],
|
||
"macAddress":v["mac"]
|
||
}
|
||
#row = { "cn":i[0][0], "cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]]}
|
||
rows.append(row)
|
||
search = self.ldap.search("dc="+self.domainname+",ou=hosts","dc=*",["dc","aRecord"])
|
||
for s in search:
|
||
if s[0][1]['dc'][0] in hostnames:
|
||
hostnames_data[s[0][1]['dc'][0]]["ip"] = s[0][1]['aRecord'][0]
|
||
|
||
rows = []
|
||
for k, v in hostnames_data.iteritems():
|
||
try:
|
||
host = v["host"]
|
||
except:
|
||
pass
|
||
|
||
if len(rows) > 0:
|
||
totalPages = ceil( len(rows) / int(limit) )
|
||
else:
|
||
totalPages = 0
|
||
if page > totalPages:
|
||
page = totalPages
|
||
try:
|
||
ip = v["ip"]
|
||
except:
|
||
pass
|
||
|
||
result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort)
|
||
return { "page":page, "total":totalPages, "records":len(rows), "rows":result[start:finish] }
|
||
|
||
elif type_host == "workstation-hosts":
|
||
# Obtengo todos los elementos del nodo hosts
|
||
#search = l.search("ou=hosts","cn=*",["cn","ipHostNumber","macAddress"])
|
||
search = self.ldap.search("ou=hosts","cn=*",["cn","ipHostNumber","macAddress"])
|
||
# triplets que contiene los nombres de las workstations
|
||
#triplets = l.search("ou=Netgroup","cn=workstation-hosts",["nisNetgroupTriple"])
|
||
triplets = self.ldap.search("ou=Netgroup","cn=workstation-hosts",["nisNetgroupTriple"])
|
||
triplets = triplets [0][0][1]["nisNetgroupTriple"]
|
||
hostnames=list()
|
||
|
||
# obtengo lista de nombres de los hosts workstation
|
||
for node in triplets:
|
||
name = node.replace(",-,-)","").replace("(","")
|
||
hostnames.append(name)
|
||
|
||
# Ahora tengo que quedarme con los elementos de search que estan en hostnames
|
||
resultado=list()
|
||
for element in search:
|
||
if element[0][1]["cn"][0] in hostnames:
|
||
resultado.append(element)
|
||
|
||
search = resultado
|
||
try:
|
||
mac = v["mac"]
|
||
except:
|
||
pass
|
||
|
||
row = {
|
||
"id":host,
|
||
"cell":[host, ip, mac],
|
||
"cn":host,
|
||
"ipHostNumber":ip,
|
||
"macAddress":mac
|
||
}
|
||
rows.append(row)
|
||
|
||
rows = []
|
||
for i in search:
|
||
row = {
|
||
"id":i[0][1]["cn"][0],
|
||
"cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]],
|
||
"cn":i[0][1]["cn"][0],
|
||
"ipHostNumber":i[0][1]["ipHostNumber"][0],
|
||
"macAddress":i[0][1]["macAddress"][0]
|
||
}
|
||
#row = { "cn":i[0][0], "cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]]}
|
||
rows.append(row)
|
||
if len(rows) > 0:
|
||
totalPages = ceil( len(rows) / int(limit) )
|
||
else:
|
||
totalPages = 0
|
||
if page > totalPages:
|
||
page = totalPages
|
||
|
||
if len(rows) > 0:
|
||
totalPages = ceil( len(rows) / int(limit) )
|
||
else:
|
||
totalPages = 0
|
||
if page > totalPages:
|
||
page = totalPages
|
||
result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort)
|
||
return { "page":page, "total":totalPages, "records":len(rows), "rows":result[start:finish] }
|
||
|
||
result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort)
|
||
return { "page":page, "total":totalPages, "records":len(rows), "rows":result[start:finish] }
|
||
|
||
def add(self):
|
||
# Hosts
|
||
"""attr = [
|
||
... | ... | |
]
|
||
self.ldap.add("dc="+self.name+",dc="+self.domainname+",ou=Hosts", attr)
|
||
|
||
# Hosts->arpa->in-addr->172
|
||
ip = self.ip.split(".")
|
||
attr = [
|
||
('objectclass', ['top','dNSDomain2','domainRelatedObject']),
|
||
('associatedDomain', [ip[3]+"."+ip[2]+"."+ip[1]+"."+ip[0]+".in-addr.arpa"]),
|
||
('dc', [ip[3]]),
|
||
('pTRRecord', [self.name+"."+self.domainname])
|
||
]
|
||
self.ldap.add("dc="+ip[3]+",dc="+ip[2]+",dc="+ip[1]+",dc="+ip[0]+",dc=in-addr,dc=arpa,ou=Hosts", attr)
|
||
|
||
# DHCP Config
|
||
attr = [
|
||
('objectclass', ['top','dhcpHost']),
|
||
... | ... | |
return "OK"
|
||
|
||
def delete(self):
|
||
"""self.ldap.delete("cn="+self.name+",ou=Hosts")"""
|
||
self.ldap.delete("cn="+self.name+",ou=Hosts")
|
||
self.ldap.delete("dc="+self.name+",dc="+self.domainname+",ou=Hosts")
|
||
self.ldap.delete("cn="+self.name+",cn=group1,cn=INTERNAL,cn=DHCP Config")
|
||
|
||
myIP = self.getIP()
|
||
if myIP != "":
|
||
ip = myIP.split(".")
|
||
self.ldap.delete("dc="+ip[3]+",dc="+ip[2]+",dc="+ip[1]+",dc="+ip[0]+",dc=in-addr,dc=arpa,ou=Hosts")
|
||
|
||
# Netgroup
|
||
triplets = self.getTriplets()
|
||
... | ... | |
|
||
def getIP(self):
|
||
search = self.ldap.search("dc="+self.domainname+",ou=hosts","dc="+self.name,["dc","aRecord"])
|
||
ip = search[0][0][1]["aRecord"][0]
|
||
ip=""
|
||
try:
|
||
ip = search[0][0][1]["aRecord"][0]
|
||
except:
|
||
pass
|
||
return ip
|
||
|
||
def getMAC(self):
|
controlies/trunk/applications/controlies/views/layout_form_hosts.html | ||
---|---|---|
|
||
$("#cancelButton")
|
||
.button({ icons: { primary: "ui-icon-close"}})
|
||
.click( function(){ $('#dialog-form').dialog('close'); });
|
||
.click( function(){ $('#dialog-form').dialog('close'); });
|
||
|
||
jQuery.post('call/json/getallranges', {}, function(result) {
|
||
$("#subrange").append(new Option(result.response["subrange"], result.response["subrange"]));
|
||
|
||
for(i=0;i<result.response["ranges"].length;i++){
|
||
$("#range").append(new Option(result.response["ranges"][i], result.response["ranges"][i]));
|
||
}
|
||
for(i=1;i<256;i++){
|
||
$("#ip").append(new Option(i, i));
|
||
}
|
||
});
|
||
|
||
});
|
||
|
||
function restartStyle(){
|
||
... | ... | |
<input type="hidden" id="action" name="action"/>
|
||
<input type="hidden" id="type_host" name="type_host"/>
|
||
<p><span id="nameTag">Nombre del equipo:</span><br><input type="text" id="name" name="name" maxlength="20"/></p>
|
||
<p><span id="ipTag">Ip</span><br><input type="text" id="ip" name="ip" maxlength="15"/></p>
|
||
<p><span id="ipTag">Ip</span><br>172.<select id="subrange" name="subrange"></select>.<select id="range" name="range"></select>.<select id="ip" name="ip"></select></p>
|
||
<p><span id="macTag">MAC</span><br><input type="text" id="mac" name="mac" maxlength="17"/></p>
|
||
|
||
<div id="message" style="text-align:center; font-weight:bold; color:red; padding:3px; "></div>
|
controlies/trunk/applications/controlies/views/layout_hosts.html | ||
---|---|---|
jQuery("#form_data #name").css("background-color","#DDD");
|
||
jQuery.post('call/json/getHostData',{ cn:hid,type_host:type_host }, function(result) {
|
||
|
||
jQuery("#form_data #name").val(result.response['cn']);
|
||
jQuery("#form_data #ip").val(result.response['ip']);
|
||
jQuery("#form_data #name").val(result.response['cn']);
|
||
jQuery("#form_data #mac").val(result.response['mac']);
|
||
jQuery("#form_data #type_host").val(type_host);
|
||
|
||
var ip = result.response['ip'].split(".");
|
||
jQuery("#form_data #subrange").val(ip[1]);
|
||
jQuery("#form_data #range").val(ip[2]);
|
||
jQuery("#form_data #ip").val(ip[3]);
|
||
|
||
x = (jQuery(window).width()-300)/2;
|
||
y = (jQuery(window).height()-500)/2;
|
||
|
||
... | ... | |
|
||
|
||
function addRecord(){
|
||
|
||
jQuery.post('call/json/getallranges', {cn:"hola"}, function(result) {
|
||
alert("hola");
|
||
});
|
||
|
||
jQuery("#dialog-form").html("");
|
||
jQuery("#dialog-form").load("form_ltspserver.html", function() {
|
Exportar a: Unified diff
ya inserta y borra en la rama arpa