diff --git a/sophomorix-samba/modules/SophomorixBase.pm b/sophomorix-samba/modules/SophomorixBase.pm index 65012443..a222af87 100644 --- a/sophomorix-samba/modules/SophomorixBase.pm +++ b/sophomorix-samba/modules/SophomorixBase.pm @@ -1457,6 +1457,9 @@ sub _console_print_group_full { # sophomorix mail attributes printf "%25s: %-40s\n","mail",$ref_groups->{'GROUPS'}{$group}{'mail'}; + foreach my $item ( @{ $ref_groups->{'GROUPS'}{$group}{'proxyAddresses'} } ){ + printf "%25s: %-40s\n","proxyAddresses",$item; + } if ($type eq "class"){ printf "%25s: %-40s\n","sophomorixMailQuota",$ref_groups->{'GROUPS'}{$group}{'sophomorixMailQuota'}; printf "%25s: %-40s\n","sophomorixMailAlias",$ref_groups->{'GROUPS'}{$group}{'sophomorixMailAlias'}; diff --git a/sophomorix-samba/modules/SophomorixSambaAD.pm b/sophomorix-samba/modules/SophomorixSambaAD.pm index 5597f57e..eed4f244 100644 --- a/sophomorix-samba/modules/SophomorixSambaAD.pm +++ b/sophomorix-samba/modules/SophomorixSambaAD.pm @@ -6746,6 +6746,8 @@ sub AD_get_full_groupdata { @{ $groups{'GROUPS'}{$sam}{'sophomorixMemberGroups'} } = sort $entry->get_value('sophomorixMemberGroups'); $groups{'GROUPS'}{$sam}{'sophomorixMemberGroups_count'} = $#{ $groups{'GROUPS'}{$sam}{'sophomorixMemberGroups'} }+1; + @{ $groups{'GROUPS'}{$sam}{'proxyAddresses'} } = sort $entry->get_value('proxyAddresses'); + # intrinsic $groups{'GROUPS'}{$sam}{'sophomorixIntrinsic1'}=$entry->get_value('sophomorixIntrinsic1'); $groups{'GROUPS'}{$sam}{'sophomorixIntrinsic2'}=$entry->get_value('sophomorixIntrinsic2'); @@ -7963,6 +7965,12 @@ sub AD_group_update { my $addmailquota = $arg_ref->{addmailquota}; my $mailalias = $arg_ref->{mailalias}; my $maillist = $arg_ref->{maillist}; + # change proxyAddresses (multi-value) + my $proxy_addresses_set = $arg_ref->{proxy_addresses_set}; + #my $proxy_addresses_add = $arg_ref->{proxy_addresses_add}; + #my $proxy_addresses_remove = $arg_ref->{proxy_addresses_remove}; + #my $proxy_addresses_entry = $arg_ref->{proxy_addresses_entry}; + # my $status = $arg_ref->{status}; my $join = $arg_ref->{join}; my $hide = $arg_ref->{hide}; @@ -8102,6 +8110,15 @@ sub AD_group_update { print " * Setting sophomorixMaillist to $maillist\n"; my $mesg = $ldap->modify($dn,replace => {sophomorixMaillist => $maillist}); } + # proxyAddresses + if (defined $proxy_addresses_set){ + my @proxy_addresses=split(/,/,$proxy_addresses_set); + @proxy_addresses = reverse @proxy_addresses; + print " * Setting proxyAddresses to: @proxy_addresses\n"; + my $mesg = $ldap->modify($dn,replace => {'proxyAddresses' => \@proxy_addresses }); + &AD_debug_logdump($mesg,2,(caller(0))[3]); + } + # status if (defined $status){ print " * Setting sophomorixStatus to $status\n"; diff --git a/sophomorix-samba/scripts/sophomorix-class b/sophomorix-samba/scripts/sophomorix-class index cd295484..65569724 100755 --- a/sophomorix-samba/scripts/sophomorix-class +++ b/sophomorix-samba/scripts/sophomorix-class @@ -80,6 +80,7 @@ $options{'CONFIG'}{'ACTION'}{'GROUP'}="create,". "gidnumber-migrate,". "mailalias,". "maillist,". + "set-proxy-addresses,". "join,". "hide,". "admins,". @@ -134,6 +135,7 @@ my $testopt=GetOptions(\%options, "removemembers=s", "delete-all-empty-classes", "delete-all-teacheronly-classes", + "set-proxy-addresses=s", "update-maildomain", "remove-student-admins-from-class", ); @@ -214,6 +216,8 @@ Changing one/multiple admin-/extra-/teacherclass: --addadmins user1,user2,user3, ... --removeadmins user1,user2,user3, ... + --set-proxy-addresses ,,... + For administrators: --remove-student-admins-from-class --info (show which users are removed as admin) --remove-student-admins-from-class (do it) @@ -959,6 +963,21 @@ if (defined $options{'kill'} and defined $options{'class'}){ } } +# --set-proxy-addresses --class ,,... +if (defined $options{'set-proxy-addresses'}){ + foreach my $class_valid (@{ $classes{'CLASS_VALID_LIST'} }){ + &AD_group_update({ldap=>$ldap, + root_dse=>$root_dse, + dn=>$classes{'CLASS_VALID_DATA'}{$class_valid}{'DN'}, + school=>$classes{'CLASS_VALID_DATA'}{$class_valid}{'SCHOOL'}, + type=>$class_type, + proxy_addresses_set=>$options{'set-proxy-addresses'}, + sophomorix_config=>\%sophomorix_config, + }); + } +} + + ############################################################ # End diff --git a/sophomorix-samba/scripts/sophomorix-project b/sophomorix-samba/scripts/sophomorix-project index 84b9ce56..2f9634b1 100755 --- a/sophomorix-samba/scripts/sophomorix-project +++ b/sophomorix-samba/scripts/sophomorix-project @@ -80,6 +80,7 @@ $options{'CONFIG'}{'ACTION'}{'GROUP'}="create,". "gidnumber-migrate,". "mailalias,". "maillist,". + "set-proxy-addresses,". "join,". "hide,". "admins,". @@ -141,6 +142,7 @@ my $testopt=GetOptions(\%options, "creationdate=s", "mailalias!", "maillist!", + "set-proxy-addresses=s", "update-maildomain", ); @@ -232,6 +234,8 @@ Changing/creating/killing a project: --addmembergroups group1,group2,group3, ... --removemembergroups group1,group2,group3, ... + --set-proxy-addresses ,,... + Syncing memberships of all projects (sophomorix* -> members): --sync-all-memberships @@ -781,6 +785,17 @@ if (defined $options{'removeadmingroups'}){ }); } +# --set-proxy-addresses +if (defined $options{'set-proxy-addresses'}){ + &AD_group_update({ldap=>$ldap, + root_dse=>$root_dse, + dn=>$dn_pro, + school=>$school_AD, + proxy_addresses_set=>$options{'set-proxy-addresses'}, + sophomorix_config=>\%sophomorix_config, + }); +} + &AD_unbind_admin($ldap);