[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm loncreateuser.pm londropadd.pm /lonnet/perl lonnet.pm

albertel lon-capa-cvs@mail.lon-capa.org
Thu, 13 Feb 2003 21:35:50 -0000


This is a MIME encoded message

--albertel1045172150
Content-Type: text/plain

albertel		Thu Feb 13 16:35:50 2003 EDT

  Modified files:              
    /loncom/interface	loncommon.pm londropadd.pm loncreateuser.pm 
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - Mark Lucas' code to add a domain.tab file it controls
     - domain description,
     - default authentication type
     - default argument for that auth type
  
  - I think this will break the install hopefully I'll get this jury rigged up to work today
  
  
  
--albertel1045172150
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20030213163550.txt"

Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.79 loncom/interface/loncommon.pm:1.80
--- loncom/interface/loncommon.pm:1.79	Thu Feb 13 13:11:26 2003
+++ loncom/interface/loncommon.pm	Thu Feb 13 16:35:50 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.79 2003/02/13 18:11:26 www Exp $
+# $Id: loncommon.pm,v 1.80 2003/02/13 21:35:50 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -714,11 +714,27 @@
 sub authform_header{  
     my %in = (
         formname => 'cu',
-        kerb_def_dom => 'MSU.EDU',
+        kerb_def_dom => '',
         @_,
     );
     $in{'formname'} = 'document.' . $in{'formname'};
     my $result='';
+
+#---------------------------------------------- Code for upper case translation
+    my $Javascript_toUpperCase;
+    unless ($in{kerb_def_dom}) {
+        $Javascript_toUpperCase =<<"END";
+        switch (choice) {
+           case 'krb': currentform.elements[choicearg].value =
+               currentform.elements[choicearg].value.toUpperCase();
+               break;
+           default:
+        }
+END
+    } else {
+        $Javascript_toUpperCase = "";
+    }
+
     $result.=<<"END";
 var current = new Object();
 current.radiovalue = 'nochange';
@@ -752,12 +768,7 @@
 function changed_text(choice,currentform) {
     var choicearg = choice + 'arg';
     if (currentform.elements[choicearg].value !='') {
-        switch (choice) {
-            case 'krb': currentform.elements[choicearg].value =
-                currentform.elements[choicearg].value.toUpperCase();
-                break;
-            default:
-        }
+        $Javascript_toUpperCase
         // clear old field
         if ((current.argfield != choicearg) && (current.argfield != null)) {
             currentform.elements[current.argfield].value = '';
@@ -813,18 +824,26 @@
     my %in = (
               formname => 'document.cu',
               kerb_def_dom => 'MSU.EDU',
+              kerb_def_auth => 'krb4',
               @_,
               );
     my $result='';
+    my $check4;
+    my $check5;
+    if ($in{'kerb_def_auth'} eq 'krb5') {
+       $check5 = " checked=\"on\"";
+    } else {
+       $check4 = " checked=\"on\"";
+    }
     $result.=<<"END";
 <input type="radio" name="login" value="krb" 
        onclick="javascript:changed_radio('krb',$in{'formname'});"
        onchange="javascript:changed_radio('krb',$in{'formname'});" />
 Kerberos authenticated with domain
-<input type="text" size="10" name="krbarg" value=""
+<input type="text" size="10" name="krbarg" value="$in{'kerb_def_dom'}"
        onchange="javascript:changed_text('krb',$in{'formname'});" />
-<input type="radio" name="krbver" value="4" checked="on" />Version 4
-<input type="radio" name="krbver" value="5" />Version 5
+<input type="radio" name="krbver" value="4" $check4 />Version 4
+<input type="radio" name="krbver" value="5" $check5 />Version 5
 END
     return $result;
 }
@@ -885,6 +904,89 @@
 
 ###############################################################
 ##   End Authentication changing form generation functions   ##
+###############################################################
+
+###############################################################
+##    Get Authentication Defaults for Domain                 ##
+###############################################################
+##
+## Returns default authentication type and an associated argument
+## as listed in file domain.tab
+##
+#-------------------------------------------
+
+=pod
+
+=item get_auth_defaults
+
+get_auth_defaults($target_domain) returns the default authentication
+type and an associated argument (initial password or a kerberos domain).
+These values are stored in lonTabs/domain.tab
+
+($def_auth, $def_arg) = &get_auth_defaults($target_domain);
+
+If target_domain is not found in domain.tab, returns nothing ('').
+
+=over 4
+
+=item get_auth_defaults
+
+=back
+
+=cut
+
+#-------------------------------------------
+sub get_auth_defaults {
+    my $domain=shift;
+    return ($Apache::lonnet::domain_auth_def{$domain},$Apache::lonnet::domain_auth_arg_def{$domain});
+}
+###############################################################
+##   End Get Authentication Defaults for Domain              ##
+###############################################################
+
+###############################################################
+##    Get Kerberos Defaults for Domain                 ##
+###############################################################
+##
+## Returns default kerberos version and an associated argument
+## as listed in file domain.tab. If not listed, provides
+## appropriate default domain and kerberos version.
+##
+#-------------------------------------------
+
+=pod
+
+=item get_kerberos_defaults
+
+get_kerberos_defaults($target_domain) returns the default kerberos
+version and domain. If not found in domain.tabs, it defaults to
+version 4 and the domain of the server.
+
+($def_version, $def_krb_domain) = &get_kerberos_defaults($target_domain);
+
+=over 4
+
+=item get_kerberos_defaults
+
+=back
+
+=cut
+
+#-------------------------------------------
+sub get_kerberos_defaults {
+    my $domain=shift;
+    my ($krbdef,$krbdefdom) =
+        &Apache::loncommon::get_auth_defaults($domain);
+    unless ($krbdef =~/^krb/ && $krbdefdom) {
+        $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
+        my $krbdefdom=$1;
+        $krbdefdom=~tr/a-z/A-Z/;
+        $krbdef = "krb4";
+    }
+    return ($krbdef,$krbdefdom);
+}
+###############################################################
+##   End Get Kerberos Defaults for Domain              ##
 ###############################################################
 
 ###############################################################
Index: loncom/interface/londropadd.pm
diff -u loncom/interface/londropadd.pm:1.63 loncom/interface/londropadd.pm:1.64
--- loncom/interface/londropadd.pm:1.63	Mon Dec  9 19:54:37 2002
+++ loncom/interface/londropadd.pm	Thu Feb 13 16:35:50 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to drop and add students in courses 
 #
-# $Id: londropadd.pm,v 1.63 2002/12/10 00:54:37 matthew Exp $
+# $Id: londropadd.pm,v 1.64 2003/02/13 21:35:50 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -461,7 +461,13 @@
 ###############################################################
 sub print_upload_manager_footer {
     my ($r,$i,$keyfields,$defdom,$today,$halfyear)=@_;
-    my %param = ( formname => 'document.studentform');
+
+    my ($krbdef,$krbdefdom) =
+        &Apache::loncommon::get_kerberos_defaults($defdom);
+    my %param = ( formname => 'document.studentform',
+                  kerb_def_dom => $krbdefdom,
+                  kerb_def_auth => $krbdef
+                  );
     my $krbform = &Apache::loncommon::authform_kerberos(%param);
     my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);
@@ -522,12 +528,11 @@
     my @records=&Apache::loncommon::upfile_record_sep();
     my $total=$#records;
     my $distotal=$total+1;
-    $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
-    my $krbdefdom=$1;
-    $krbdefdom=~tr/a-z/A-Z/;
     my $today=time;
     my $halfyear=$today+15552000;
     my $defdom=$r->dir_config('lonDefDomain');
+    my ($krbdef,$krbdefdom) =
+        &Apache::loncommon::get_kerberos_defaults($defdom);
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
     my $i;
     my $keyfields;
@@ -629,14 +634,17 @@
 sub print_enroll_single_student_form {
     my $r=shift;
     $r->print("<h3>Enroll One Student</h3>");
-    my ($krbdefdom) = $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
-    $krbdefdom=~tr/a-z/A-Z/;
     my $today    = time;
     my $halfyear = $today+15552000;
     my $defdom=$r->dir_config('lonDefDomain');
-    my $javascript_validations=&javascript_validations($krbdefdom);
     # Set up authentication forms
-    my %param = ( formname => 'document.studentform');
+    my ($krbdef,$krbdefdom) =
+        &Apache::loncommon::get_kerberos_defaults($defdom);
+    my $javascript_validations=&javascript_validations($krbdefdom);
+    my %param = ( formname => 'document.studentform',
+                  kerb_def_dom => $krbdefdom,
+                  kerb_def_auth => $krbdef
+                  );
     my $krbform = &Apache::loncommon::authform_kerberos(%param);
     my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.47 loncom/interface/loncreateuser.pm:1.48
--- loncom/interface/loncreateuser.pm:1.47	Mon Feb  3 13:03:52 2003
+++ loncom/interface/loncreateuser.pm	Thu Feb 13 16:35:50 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.47 2003/02/03 18:03:52 harris41 Exp $
+# $Id: loncreateuser.pm,v 1.48 2003/02/13 21:35:50 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -46,7 +46,7 @@
 # 05/10,10/16 Gerd Kortemeyer 
 # 02/11/02 Matthew Hall
 #
-# $Id: loncreateuser.pm,v 1.47 2003/02/03 18:03:52 harris41 Exp $
+# $Id: loncreateuser.pm,v 1.48 2003/02/13 21:35:50 albertel Exp $
 ###
 
 package Apache::loncreateuser;
@@ -70,10 +70,12 @@
     my %param = ( formname => 'document.cu',
                   kerb_def_dom => $krbdefdom 
                   );
-    $loginscript  = &Apache::loncommon::authform_header(%param);
+# no longer static due to configurable kerberos defaults
+#    $loginscript  = &Apache::loncommon::authform_header(%param);
     $generalrule  = &Apache::loncommon::authform_authorwarning(%param);
     $authformnop  = &Apache::loncommon::authform_nochange(%param);
-    $authformkrb  = &Apache::loncommon::authform_kerberos(%param);
+# no longer static due to configurable kerberos defaults
+#    $authformkrb  = &Apache::loncommon::authform_kerberos(%param);
     $authformint  = &Apache::loncommon::authform_internal(%param);
     $authformfsys = &Apache::loncommon::authform_filesystem(%param);
     $authformloc  = &Apache::loncommon::authform_local(%param);
@@ -133,15 +135,17 @@
     my $ccuname=$ENV{'form.ccuname'};
     my $ccdomain=$ENV{'form.ccdomain'};
 
-    $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
-    my $krbdefdom=$1;
-    $krbdefdom=~tr/a-z/A-Z/;
+    my $defdom=$ENV{'request.role.domain'};
+
+    my ($krbdef,$krbdefdom) =
+       &Apache::loncommon::get_kerberos_defaults($defdom);
+
     my %param = ( formname => 'document.cu',
-                  kerb_def_dom => $krbdefdom 
+                  kerb_def_dom => $krbdefdom,
+                  kerb_def_auth => $krbdef
                   );
     $loginscript  = &Apache::loncommon::authform_header(%param);
-
-    my $defdom=$ENV{'request.role.domain'};
+    $authformkrb  = &Apache::loncommon::authform_kerberos(%param);
 
     $ccuname=~s/\W//g;
     $ccdomain=~s/\W//g;
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.326 loncom/lonnet/perl/lonnet.pm:1.327
--- loncom/lonnet/perl/lonnet.pm:1.326	Thu Feb 13 14:07:46 2003
+++ loncom/lonnet/perl/lonnet.pm	Thu Feb 13 16:35:50 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.326 2003/02/13 19:07:46 matthew Exp $
+# $Id: lonnet.pm,v 1.327 2003/02/13 21:35:50 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -76,7 +76,7 @@
    %libserv %pr %prp %metacache %packagetab %titlecache 
    %courselogs %accesshash $processmarker $dumpcount 
    %coursedombuf %coursehombuf %courseresdatacache 
-   %domaindescription);
+   %domaindescription %domain_auth_def %domain_auth_arg_def);
 use IO::Socket;
 use GDBM_File;
 use Apache::Constants qw(:common :http);
@@ -3573,6 +3573,29 @@
     }
 }
 
+# ------------------------------------------------------------ Read domain file
+{
+    my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
+                            '/domain.tab');
+    %domaindescription = ();
+    %domain_auth_def = ();
+    %domain_auth_arg_def = ();
+    if ($fh) {
+       while (<$fh>) {
+           next if /^\#/;
+           chomp;
+           my ($domain, $domain_description, $def_auth, $def_auth_arg)
+               = split(/:/,$_,4);
+           $domain_auth_def{$domain}=$def_auth;
+           $domain_auth_arg_def{$domain}=$def_auth_arg;
+           $domaindescription{$domain}=$domain_description;
+#          &logthis("Domain.tab: $domain, $domain_auth_def{$domain}, $domain_auth_arg_def{$domain},$domaindescription{$domain}");
+#          &logthis("Domain.tab: $domain ".$domaindescription{$domain} );
+       }
+    }
+}
+
+
 # ------------------------------------------------------------- Read hosts file
 {
     my $config=Apache::File->new("$perlvar{'lonTabDir'}/hosts.tab");
@@ -3586,7 +3609,6 @@
 	 $hostdom{$id}=$domain;
 	 $hostip{$id}=$ip;
 	 $iphost{$ip}=$id;
-	 if ($domdescr) { $domaindescription{$domain}=$domdescr; }
 	 if ($role eq 'library') { $libserv{$id}=$name; }
        } else {
 	 if ($configline) {

--albertel1045172150--