Use the common routine from userdir_ldap.py which asks for the
[mirror/userdir-ldap.git] / ud-host
diff --git a/ud-host b/ud-host
index 0c8d12f..1eb8d76 100755 (executable)
--- a/ud-host
+++ b/ud-host
@@ -2,11 +2,11 @@
 # -*- mode: python -*-
 # This script is an interactive way to manipulate fields in the LDAP directory.
 # When run it connects to the directory using the current users ID and fetches
-# all the attributes for the first machine. It then formats them nicely and 
+# all the attributes for the first machine. It then formats them nicely and
 # allows the user to change them.
 #
 #  Usage: userinfo -a <user> -u <user> -c <user> -r
-#    -a    Set the authentication user (the user whose password you are 
+#    -a    Set the authentication user (the user whose password you are
 #          going to enter)
 #    -h    Set the host to display
 
@@ -26,7 +26,7 @@ AttrInfo = {"description": ["Machine Descr.", 1],
             "machine": ["Machine Hardware", 10],
             "memory": ["Memory", 11],
             "disk": ["Disk", 12],
-            "sshrsahostkey": ["SSH Host Keys", 14],
+            "sshRSAHostKey": ["SSH Host Keys", 14],
             "bandwidth": ["Bandwidth", 15]};
 
 AttrPrompt = {"description": ["Purpose of the machine"],
@@ -37,11 +37,11 @@ AttrPrompt = {"description": ["Purpose of the machine"],
               "distribution": ["The distribution version"],
               "access": ["all, developer only, restricted"],
               "admin": ["Admin email address"],
-              "architecture": ["Debian Arhitecture string"],
+              "architecture": ["Debian Architecture string"],
               "machine": ["Hardware description"],
               "memory": ["Installed RAM"],
               "disk": ["Disk Space, RAID levels, etc"],
-             "sshrsahostkey": ["A copy of /etc/ssh/ssh_*host_key.pub"],
+             "sshRSAHostKey": ["A copy of /etc/ssh/ssh_*host_key.pub"],
               "bandwidth": ["Available outbound"]};
 
 # Create a map of IDs to desc,value,attr
@@ -53,14 +53,14 @@ OrigOrderedIndex = copy.deepcopy(OrderedIndex);
 
 # Print out the automatic time stamp information
 def PrintModTime(Attrs):
-   Stamp = GetAttr(Attrs,"modifytimestamp","");
+   Stamp = GetAttr(Attrs,"modifyTimestamp","");
    if len(Stamp) >= 13:
       Time = (int(Stamp[0:4]),int(Stamp[4:6]),int(Stamp[6:8]),
               int(Stamp[8:10]),int(Stamp[10:12]),int(Stamp[12:14]),0,0,-1);
       print "%-24s:" % ("Record last modified on"), time.strftime("%a %d/%m/%Y %X UTC",Time),
-      print "by",ldap.explode_dn(GetAttr(Attrs,"modifiersname"),1)[0];
+      print "by",ldap.explode_dn(GetAttr(Attrs,"modifiersName"),1)[0];
 
-   Stamp = GetAttr(Attrs,"createtimestamp","");
+   Stamp = GetAttr(Attrs,"createTimestamp","");
    if len(Stamp) >= 13:
       Time = (int(Stamp[0:4]),int(Stamp[4:6]),int(Stamp[6:8]),
               int(Stamp[8:10]),int(Stamp[10:12]),int(Stamp[12:14]),0,0,-1);
@@ -80,7 +80,7 @@ def ShowAttrs(Attrs):
             print;
          else:
             OrderedIndex[AttrInfo[at][1]][1] = Attrs[1][at];
-                                      
+
    Keys = OrderedIndex.keys();
    Keys.sort();
    for at in Keys:
@@ -92,13 +92,13 @@ def ShowAttrs(Attrs):
 
 # Change a single attribute
 def ChangeAttr(Attrs,Attr):
-   if (Attr == "sponsor" or Attr == "hostname" or Attr == "sshrsahostkey"):
+   if (Attr == "sponsor" or Attr == "hostname" or Attr == "sshRSAHostKey"):
       return MultiChangeAttr(Attrs,Attr);
 
    print "Old value: '%s'" % (GetAttr(Attrs,Attr,""));
    print "Press enter to leave unchanged and a single space to set to empty";
    NewValue = raw_input("New? ");
-  
+
    # Empty string
    if (NewValue == ""):
       print "Leaving unchanged.";
@@ -139,8 +139,8 @@ def MultiChangeAttr(Attrs,Attr):
    if (NewValue == ""):
       print "Leaving unchanged.";
       return;
-   
-   # Delete   
+
+   # Delete
    if (Mode == "D"):
       print "Deleting.",;
       try:
@@ -190,15 +190,15 @@ if (BindUser != ""):
    l.simple_bind_s(UserDn,Password);
 else:
    l.simple_bind_s("","");
-   
-HBaseDn = "ou=hosts,dc=debian,dc=org";    
+
+HBaseDn = "ou=hosts,dc=debian,dc=org";
 HostDn = "host=" + Host + "," + HBaseDn;
 
 # Query the server for all of the attributes
 Attrs = l.search_s(HBaseDn,ldap.SCOPE_ONELEVEL,"host=" + Host);
 if len(Attrs) == 0:
    print "Host",Host,"was not found.";
-   sys.exit(0); 
+   sys.exit(0);
 
 # repeatedly show the account configuration
 while(1):
@@ -212,10 +212,10 @@ while(1):
    print "   d) Delete Host";
    print "   u) Switch Hosts";
    print "   x) Exit";
-   
+
    # Prompt
    Response = raw_input("Change? ");
-   if (Response == "x" or Response == "X" or Response == "q" or 
+   if (Response == "x" or Response == "X" or Response == "q" or
        Response == "quit" or Response == "exit"):
       break;
 
@@ -243,11 +243,15 @@ while(1):
       if len(NAttrs) != 0:
          print "Host",NewHost,"already exists.";
          continue;
+      NewHostName = raw_input("Hostname? ");
+      if NewHost == "":
+         continue;
       Dn = "host=" + NewHost + "," + HBaseDn;
-      l.add_s(Dn,[("host",NewHost),
-                  ("objectclass","top")]);
-                 
-      # Switch           
+      l.add_s(Dn,[("host", NewHost),
+                  ("hostname", NewHostName),
+                  ("objectClass", ("top", "debianServer"))]);
+
+      # Switch
       NAttrs = l.search_s(HBaseDn,ldap.SCOPE_ONELEVEL,"host=" + NewHost);
       if len(NAttrs) == 0:
          print "Host",NewHost,"was not found.";
@@ -257,7 +261,7 @@ while(1):
       HostDn = "host=" + Host + "," + HBaseDn;
       OrderedIndex = copy.deepcopy(OrigOrderedIndex);
       continue;
-  
+
    # Handle changing an arbitary value
    if (Response == "a"):
       Attr = raw_input("Attr? ");
@@ -266,12 +270,12 @@ while(1):
 
    if (Response == 'd'):
       Really = raw_input("Really (type yes)? ");
-      if Really != 'yes': 
+      if Really != 'yes':
          continue;
       print "Deleting",HostDn;
       l.delete_s(HostDn);
       continue;
-  
+
    # Convert the integer response
    try:
       ID = int(Response);