From 75e2d050496db86c6ed1e4c8ec8c9c9da6341f77 Mon Sep 17 00:00:00 2001 From: Ken Raffenetti Date: Mon, 6 Nov 2006 21:23:07 +0000 Subject: dhcp option is now per interface git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@2474 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Hostbase/backends.py | 63 +++++++++++----------- src/lib/Server/Hostbase/hostbase/models.py | 4 +- src/lib/Server/Hostbase/hostbase/views.py | 52 ++++++------------ .../Hostbase/hostbase/webtemplates/base.html | 4 +- .../Hostbase/hostbase/webtemplates/edit.html | 21 +++++--- .../Hostbase/hostbase/webtemplates/host.html | 12 ++--- .../Server/Hostbase/hostbase/webtemplates/logout | 7 +-- .../Server/Hostbase/hostbase/webtemplates/new.html | 9 ++-- .../Hostbase/hostbase/webtemplates/search.html | 12 ++--- src/lib/Server/Hostbase/regex.py | 2 +- src/lib/Server/Hostbase/settings.py | 15 +++++- src/lib/Server/Plugins/Hostbase.py | 2 +- 12 files changed, 103 insertions(+), 100 deletions(-) (limited to 'src') diff --git a/src/lib/Server/Hostbase/backends.py b/src/lib/Server/Hostbase/backends.py index c59ed5e93..e6c709f35 100644 --- a/src/lib/Server/Hostbase/backends.py +++ b/src/lib/Server/Hostbase/backends.py @@ -1,46 +1,47 @@ from django.contrib.auth.models import User -from ldapauth import * +#from ldapauth import * from nisauth import * -class LDAPBackend(object): +__revision__ = '$Revision$' - def authenticate(self,username=None,password=None): - try: +## class LDAPBackend(object): + +## def authenticate(self,username=None,password=None): +## try: - l = ldapauth(username,password) - temp_pass = User.objects.make_random_password(100) - ldap_user = dict(username=l.sAMAccountName, - ) - user_session_obj = dict( - email=l.email, - first_name=l.name_f, - last_name=l.name_l, - uid=l.badge_no - ) - #fixme: need to add this user session obj to session - #print str(ldap_user) - user,created = User.objects.get_or_create(username=username) - #print user - #print "created " + str(created) - return user +## l = ldapauth(username,password) +## temp_pass = User.objects.make_random_password(100) +## ldap_user = dict(username=l.sAMAccountName, +## ) +## user_session_obj = dict( +## email=l.email, +## first_name=l.name_f, +## last_name=l.name_l, +## uid=l.badge_no +## ) +## #fixme: need to add this user session obj to session +## #print str(ldap_user) +## user,created = User.objects.get_or_create(username=username) +## #print user +## #print "created " + str(created) +## return user - except LDAPAUTHError,e: - #print str(e) - return None +## except LDAPAUTHError,e: +## #print str(e) +## return None - def get_user(self,user_id): - try: - return User.objects.get(pk=user_id) - except User.DoesNotExist, e: - print str(e) - return None +## def get_user(self,user_id): +## try: +## return User.objects.get(pk=user_id) +## except User.DoesNotExist, e: +## print str(e) +## return None class NISBackend(object): def authenticate(self, username=None, password=None): try: - print "start nis authenticate" n = nisauth(username, password) temp_pass = User.objects.make_random_password(100) nis_user = dict(username=username, @@ -57,7 +58,6 @@ class NISBackend(object): return user except NISAUTHError, e: - print str(e) return None @@ -65,6 +65,5 @@ class NISBackend(object): try: return User.objects.get(pk=user_id) except User.DoesNotExist, e: - print str(e) return None diff --git a/src/lib/Server/Hostbase/hostbase/models.py b/src/lib/Server/Hostbase/hostbase/models.py index 613701685..fb979ff5a 100644 --- a/src/lib/Server/Hostbase/hostbase/models.py +++ b/src/lib/Server/Hostbase/hostbase/models.py @@ -45,7 +45,6 @@ class Host(models.Model): support = models.CharField(maxlength=8, choices=SUPPORT_CHOICES) csi = models.CharField(maxlength=32, blank=True) printq = models.CharField(maxlength=32) - dhcp = models.BooleanField() outbound_smtp = models.BooleanField() primary_user = models.EmailField() administrator = models.EmailField(blank=True) @@ -66,12 +65,13 @@ class Host(models.Model): class Interface(models.Model): TYPE_CHOICES = ( ('eth', 'ethernet'), ('wl', 'wireless'), ('virtual', 'virtual'), ('myr', 'myr'), - ('mgmt', 'mgmt'), ('tape', 'tape'), ('fe', 'fe'), ('ge', 'ge') + ('mgmt', 'mgmt'), ('tape', 'tape'), ('fe', 'fe'), ('ge', 'ge'), ('virtual', 'virtual') ) host = models.ForeignKey(Host, edit_inline=models.TABULAR, num_in_admin=2) mac_addr = models.CharField(maxlength=32, core=True) hdwr_type = models.CharField('type', maxlength=16, choices=TYPE_CHOICES, radio_admin=True, blank=True) + dhcp = models.BooleanField() def __str__(self): return self.mac_addr diff --git a/src/lib/Server/Hostbase/hostbase/views.py b/src/lib/Server/Hostbase/hostbase/views.py index 748a84471..c60e2c2ff 100644 --- a/src/lib/Server/Hostbase/hostbase/views.py +++ b/src/lib/Server/Hostbase/hostbase/views.py @@ -29,30 +29,8 @@ dispatch = {'mac_addr':'i.mac_addr LIKE \'%%%%%s%%%%\'', 'cname':'c.cname LIKE \'%%%%%s%%%%\'', 'mx':'m.mx LIKE \'%%%%%s%%%%\'', 'dns_view':'n.dns_view = \'%s\'', - 'hdwr_type':'i.hdwr_type = \'%s\''} - - -## def netreg(request): -## if request.GET.has_key('sub'): -## failures = [] -## validated = True -## # do validation right in here -## macaddr_regex = re.compile('^[0-9abcdef]{2}(:[0-9abcdef]{2}){5}$') -## if not (request.POST['mac_addr'] and macaddr_regex.match(request.POST['mac_addr'])): -## validated = False -## userregex = re.compile('^[a-z0-9-_\.@]+$') -## if not (request.POST['email_address'] and userregex.match(request.POST['email_address'])): -## validated = False -## if not validated: -## t = Template(open('./hostbase/webtemplates/errors.html').read()) -## t.failures = validate(request, True) -## return HttpResponse(str(t)) -## return HttpResponseRedirect('/hostbase/%s/' % host.id) -## else: -## t = Template(open('./hostbase/webtemplates/netreg.html').read()) -## t.TYPE_CHOICES = Interface.TYPE_CHOICES -## t.failures = False -## return HttpResponse(str(t)) + 'hdwr_type':'i.hdwr_type = \'%s\'', + 'dhcp':'i.dhcp = \'%s\''} def index(request): """rediredct to /hostbase/""" @@ -192,9 +170,6 @@ def edit(request, host_id): not request.POST.has_key('outbound_smtp') and host.outbound_smtp): host.outbound_smtp = not host.outbound_smtp - if (request.POST.has_key('dhcp') and not host.dhcp or - not request.POST.has_key('dhcp') and host.dhcp): - host.dhcp = not host.dhcp # add validation for attribs here # likely use a helper fucntion for attrib in attribs: @@ -214,6 +189,9 @@ def edit(request, host_id): oldtype = inter.hdwr_type inter.hdwr_type = request.POST['hdwr_type%d' % inter.id] changetype = True + if (request.POST.has_key('dhcp%d' % inter.id) and not inter.dhcp or + not request.POST.has_key('dhcp%d' % inter.id) and inter.dhcp): + inter.dhcp = not inter.dhcp for ip in ips: names = ip.name_set.all() if not ip.ip_addr == request.POST['ip_addr%d' % ip.id]: @@ -264,7 +242,8 @@ def edit(request, host_id): if request.POST['mac_addr_new']: new_inter = Interface(host=host, mac_addr=request.POST['mac_addr_new'], - hdwr_type=request.POST['hdwr_type_new']) + hdwr_type=request.POST['hdwr_type_new'], + dhcp=request.POST['dhcp_new']) new_inter.save() if request.POST['mac_addr_new'] and request.POST['ip_addr_new']: mx, created = MX.objects.get_or_create(priority=settings.PRIORITY, mx=settings.DEFAULT_MX) @@ -296,7 +275,8 @@ def edit(request, host_id): if created: mx.save() new_inter = Interface(host=host, mac_addr="", - hdwr_type=request.POST['hdwr_type_new']) + hdwr_type=request.POST['hdwr_type_new'], + dhcp=False) new_inter.save() new_ip = IP(interface=new_inter, num=0, ip_addr=request.POST['ip_addr_new']) @@ -517,7 +497,6 @@ def new(request): # this is the stuff that validate() should take care of # examine the check boxes for any changes host.outbound_smtp = request.POST.has_key('outbound_smtp') - host.dhcp = request.POST.has_key('dhcp') for attrib in attribs: if request.POST.has_key(attrib): host.__dict__[attrib] = request.POST[attrib].lower() @@ -535,7 +514,8 @@ def new(request): if request.POST['mac_addr_new']: new_inter = Interface(host=host, mac_addr=request.POST['mac_addr_new'], - hdwr_type=request.POST['hdwr_type_new']) + hdwr_type=request.POST['hdwr_type_new'], + dhcp=request.POST.has_key('dhcp_new')) new_inter.save() if request.POST['mac_addr_new'] and request.POST['ip_addr_new']: new_ip = IP(interface=new_inter, @@ -564,7 +544,8 @@ def new(request): if request.POST['ip_addr_new'] and not request.POST['mac_addr_new']: new_inter = Interface(host=host, mac_addr="", - hdwr_type=request.POST['hdwr_type_new1']) + hdwr_type=request.POST['hdwr_type_new1'], + dhcp=False) new_inter.save() new_ip = IP(interface=new_inter, num=0, ip_addr=request.POST['ip_addr_new1']) @@ -593,7 +574,8 @@ def new(request): if request.POST['mac_addr_new2']: new_inter = Interface(host=host, mac_addr=request.POST['mac_addr_new2'], - hdwr_type=request.POST['mac_addr_new2']) + hdwr_type=request.POST['mac_addr_new2'], + dhcp=request.POST.has_key('dhcp_new2')) new_inter.save() if request.POST['mac_addr_new2'] and request.POST['ip_addr_new2']: new_ip = IP(interface=new_inter, num=0, @@ -623,7 +605,8 @@ def new(request): if request.POST['ip_addr_new2'] and not request.POST['mac_addr_new2']: new_inter = Interface(host=host, mac_addr="", - hdwr_type=request.POST['hdwr_type_new2']) + hdwr_type=request.POST['hdwr_type_new2'], + dhcp=False) new_inter.save() new_ip = IP(interface=new_inter, num=0, ip_addr=request.POST['ip_addr_new2']) @@ -915,4 +898,3 @@ else: remove = login_required(remove) zoneedit = login_required(zoneedit) zonenew = login_required(zonenew) - diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/base.html b/src/lib/Server/Hostbase/hostbase/webtemplates/base.html index 0c556bd77..537535663 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/base.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/base.html @@ -5,9 +5,7 @@ {% block title %}BCFG2 - Hostbase{% endblock %} - - + {% block extra_header_info %}{% endblock %} diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/edit.html b/src/lib/Server/Hostbase/hostbase/webtemplates/edit.html index 49e054e8a..d3bb848ca 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/edit.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/edit.html @@ -102,13 +102,6 @@ div#interface{ printq - dhcp - - {% if host.dhcp %} - - {% else %} - - {% endif %} outbound_smtp {% if host.outbound_smtp %} @@ -135,6 +128,13 @@ div#interface{ {% endifequal %} {% endfor %} + dhcp + + {% if interface.0.dhcp %} + + {% else %} + + {% endif %} mac_addr remove @@ -180,6 +180,13 @@ div#interface{ {{ choice.1 }} {% endfor %} + dhcp + + {% if host.dhcp %} + + {% else %} + + {% endif %} mac_addr ip_addr diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/host.html b/src/lib/Server/Hostbase/hostbase/webtemplates/host.html index 2f557cf73..39cdc7ae4 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/host.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/host.html @@ -37,12 +37,6 @@ {{ host.csi }} printq {{ host.printq }} - dhcp - {% if host.dhcp %} - y - {% else %} - n - {% endif %} outbound_smtp {% if host.outbound_smtp %} y @@ -62,8 +56,14 @@ {% ifnotequal interface.0.hdwr_type 'no' %}
{{ interface.0.hdwr_type }} {% endifnotequal %} + dhcp + {% if interface.0.dhcp %} + y mac_addr {{ interface.0.mac_addr }} + {% else %} + n + {% endif %} {% for ip in interface.1 %} ip_addr {{ ip.ip_addr }} diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/logout b/src/lib/Server/Hostbase/hostbase/webtemplates/logout index 9fa46236f..e71e90e76 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/logout +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/logout @@ -1,5 +1,6 @@ +

{% if logged_in %} -

logout +logout {% else %} -

login -{% endif %} \ No newline at end of file +login +{% endif %} diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/new.html b/src/lib/Server/Hostbase/hostbase/webtemplates/new.html index c965d5af4..5c74197b4 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/new.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/new.html @@ -56,9 +56,6 @@ printq - dhcp - - outbound_smtp @@ -75,6 +72,9 @@ {{ choice.1 }} {% endfor %} + dhcp + + mac_addr ip_addr @@ -84,6 +84,9 @@ {{ choice.1 }} {% endfor %} + dhcp + + mac_addr ip_addr diff --git a/src/lib/Server/Hostbase/hostbase/webtemplates/search.html b/src/lib/Server/Hostbase/hostbase/webtemplates/search.html index 1c869f0d7..03d65d058 100644 --- a/src/lib/Server/Hostbase/hostbase/webtemplates/search.html +++ b/src/lib/Server/Hostbase/hostbase/webtemplates/search.html @@ -37,12 +37,6 @@ printq - dhcp - - {% for choice in yesno %} - {{ choice.1 }} - {% endfor %} - outbound_smtp {% for choice in yesno %} @@ -62,6 +56,12 @@ {{ choice.1 }} {% endfor %} + dhcp + + {% for choice in yesno %} + {{ choice.1 }} + {% endfor %} + mac_addr ip_addr diff --git a/src/lib/Server/Hostbase/regex.py b/src/lib/Server/Hostbase/regex.py index 4e86293fb..2d9614da9 100644 --- a/src/lib/Server/Hostbase/regex.py +++ b/src/lib/Server/Hostbase/regex.py @@ -5,5 +5,5 @@ host = re.compile('^[a-z0-9-_]+(\.[a-z0-9-_]+)+$') printq = re.compile('^[a-z0-9-]+$') user = re.compile('^[a-z0-9-_\.@]+$') location = re.compile('^[0-9]{3}-[a-zA-Z][0-9]{3}$|none|bmr|cave|dsl|evl|mobile|offsite|mural|activespaces') -macaddr = re.compile('^[0-9abcdef]{2}(:[0-9abcdef]{2}){5}$') +macaddr = re.compile('^[0-9abcdef]{2}(:[0-9abcdef]{2}){5}$|virtual') ipaddr = re.compile('^[0-9]{1,3}(\.[0-9]{1,3}){3}$') diff --git a/src/lib/Server/Hostbase/settings.py b/src/lib/Server/Hostbase/settings.py index 41c557f0d..45e54255b 100644 --- a/src/lib/Server/Hostbase/settings.py +++ b/src/lib/Server/Hostbase/settings.py @@ -5,7 +5,7 @@ ADMINS = ( # ('Your Name', 'your_email@domain.com'), ) MANAGERS = ADMINS -CFG_TYPE = 'environ' +CFG_TYPE = 'mcs' if CFG_TYPE == 'mcs': # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. @@ -23,6 +23,19 @@ if CFG_TYPE == 'mcs': # Local time zone for this installation. All choices can be found here: # http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE TIME_ZONE = 'America/Chicago' + + DEFAULT_MX = 'mailgw.mcs.anl.gov' + PRIORITY = 30 + + SESSION_EXPIRE_AT_BROWSER_CLOSE = True + + AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend', + 'Hostbase.backends.NISBackend') + AUTHORIZED_GROUP = 'support' + + #create login url area: + import django.contrib.auth + django.contrib.auth.LOGIN_URL = '/login' # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = '' diff --git a/src/lib/Server/Plugins/Hostbase.py b/src/lib/Server/Plugins/Hostbase.py index 5639359c4..cd9d572b7 100644 --- a/src/lib/Server/Plugins/Hostbase.py +++ b/src/lib/Server/Plugins/Hostbase.py @@ -274,7 +274,7 @@ class Hostbase(Plugin): SELECT hostname, mac_addr, ip_addr FROM (hostbase_host h INNER JOIN hostbase_interface i ON h.id = i.host_id) INNER JOIN hostbase_ip ip ON i.id = ip.interface_id - WHERE h.dhcp=1 AND h.status='active' AND i.mac_addr <> '' + WHERE i.dhcp=1 AND h.status='active' AND i.mac_addr <> '' AND i.mac_addr <> 'float' AND i.mac_addr <> 'unknown' ORDER BY h.hostname, i.mac_addr """) -- cgit v1.2.3-1-g7c22