Changeset 2475
- Timestamp:
- 06/17/21 13:33:50 (3 years ago)
- Location:
- trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ldap.pm
r2051 r2475 102 102 my ($self, $id) = @_; 103 103 104 my $ssid = $self->config('sambaSID') || 'S- 2016-01-07';104 my $ssid = $self->config('sambaSID') || 'S-1-5-21-2016-01-07'; 105 105 if (defined($id)) { 106 106 $ssid .= '-' . $id; -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ldap/Group.pm
r2406 r2475 40 40 sub _key_attr { 'cn' } 41 41 42 sub _my_ldap_classes { qw(top posixGroup ) }42 sub _my_ldap_classes { qw(top posixGroup sambaGroupMapping) } 43 43 44 44 sub _get_attr_schema { … … 56 56 dn => { ro => 1 }, 57 57 objectClass => { ro => 1 }, 58 sambaSID => { }, 58 59 } 60 ); 61 } 62 63 sub _update_class { 64 my ($self) = @_; 65 66 $self->SUPER::_update_class( 67 sambaSID => $self->base->sambaSID( 68 _computeSSID($self->_get_attributes('gidNumber')) 69 ) 59 70 ); 60 71 } … … 64 75 65 76 my $entry = Net::LDAP::Entry->new(); 77 78 $data{sambaSID} ||= $base->sambaSID(_computeSSID($data{gidNumber})); 66 79 67 80 $entry->dn(join(',', … … 87 100 my $res = $base->get_object('group', $id)->set_fields(%delayed); 88 101 return defined($res) ? 1 : 0; 102 } 103 104 sub _computeSSID { 105 my ($value) = @_; 106 $value * 2 + 1000 89 107 } 90 108 -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ldap/User.pm
r2041 r2475 136 136 sambaLMPassword => { readable => 0, }, 137 137 sambaNTPassword => { readable => 0, }, 138 sambaSID => { ro => 1},138 sambaSID => { }, 139 139 } 140 140 ); … … 168 168 $data{sn} ||= $id; # sn is mandatory 169 169 $data{uid} ||= $id; # uid is mandatory 170 $data{sambaSID} = $base->sambaSID(_computeSSID($data{uidNumber}));170 $data{sambaSID} ||= $base->sambaSID(_computeSSID($data{uidNumber})); 171 171 $data{homeDirectory} ||= '/dev/null'; # homeDirectory is mandatory 172 172 $data{$class->_key_attribute($base)} = $id; -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm
r2471 r2475 94 94 $self->{_db}->do(q{set DATESTYLE to 'DMY'}); 95 95 $self->log(LA_DEBUG, 'New connection to DB'); 96 97 $self->get_global_value('sambaSID') or do { 98 $self->_setSambaSID; 99 $self->commit; 100 }; 96 101 97 102 return $self->{_db}; … … 776 781 } 777 782 783 =head2 sambaSID($id) 784 785 Return the base samba SID set in the config or a default one if none is set. 786 787 If C<$id> is given return the full SID suitable for an object. 788 789 =cut 790 791 sub sambaSID { 792 my ($self, $id) = @_; 793 794 my $ssid = $self->get_global_value('sambaSID'); 795 if (defined($id)) { 796 $ssid .= '-' . $id; 797 } 798 return $ssid; 799 } 800 801 sub _setSambaSID { 802 my ( $self ) = @_; 803 804 my $sid = sprintf( 805 'S-1-5-21-%d-%d', 806 int(rand 1000000000), 807 int(rand 1000000000), 808 ); 809 810 $self->set_global_value( 'sambaSID', $sid ); 811 return $sid; 812 } 813 814 815 778 816 =head2 find_expired_users ($expire) 779 817 -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Group.pm
r2431 r2475 194 194 label => l('Member count'), 195 195 }, 196 197 # Samba: 198 199 sambaSID => { 200 ro => 1, 201 auto => 1, 202 }, 203 _sambaSID => { 204 ro => 1, 205 hide => 1, 206 managed => 1, 207 get => sub { 208 my ($self) = @_; 209 my $obj = $self->object; 210 my $uid = $obj->get_field('gidnumber'); 211 return $obj->base->sambaSID( $uid * 2 + 1001 ); 212 } 213 }, 214 196 215 } 197 216 ) -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm
r2474 r2475 1012 1012 } 1013 1013 }, 1014 1015 # Shadow: 1016 1014 1017 shadowExpire => { 1015 1018 ro => 1, … … 1041 1044 } 1042 1045 }, 1046 shadowWarning => { }, 1047 shadowMin => { }, 1048 shadowMax => { }, 1049 shadowLastChange => { 1050 ro => 1, 1051 auto => 1, 1052 }, 1053 _shadowLastChange => { 1054 ro => 1, 1055 hide => 1, 1056 managed => 1, 1057 get => sub { 1058 my ($self) = @_; 1059 my $obj = $self->object; 1060 my $ts = $obj->get_field('passwordLastSet'); 1061 $ts or return; 1062 1063 my $Dt = DateTime::Format::Pg->parse_datetime( $ts ); 1064 return int( $Dt->epoch / 86400); 1065 } 1066 }, 1067 shadowInactive => { }, 1068 shadowFlag => { }, 1069 1070 # Samba: 1071 1072 sambaSID => { 1073 ro => 1, 1074 auto => 1, 1075 }, 1076 _sambaSID => { 1077 ro => 1, 1078 hide => 1, 1079 managed => 1, 1080 get => sub { 1081 my ($self) = @_; 1082 my $obj = $self->object; 1083 my $uid = $obj->get_field('uidnumber'); 1084 return $obj->base->sambaSID( $uid * 2 + 1000 ); 1085 } 1086 }, 1087 1043 1088 directReports => { 1044 1089 auto => 1, … … 1321 1366 label => l('Name'), 1322 1367 }, 1323 shadowWarning => { },1324 shadowMin => { },1325 shadowMax => { },1326 shadowLastChange => {1327 ro => 1,1328 auto => 1,1329 },1330 _shadowLastChange => {1331 ro => 1,1332 hide => 1,1333 managed => 1,1334 get => sub {1335 my ($self) = @_;1336 my $obj = $self->object;1337 my $ts = $obj->get_field('passwordLastSet');1338 $ts or return;1339 1340 my $Dt = DateTime::Format::Pg->parse_datetime( $ts );1341 return int( $Dt->epoch / 86400);1342 }1343 },1344 shadowInactive => { },1345 shadowFlag => { },1346 1368 otherTelephone => { }, 1347 1369 nickname => {
Note: See TracChangeset
for help on using the changeset viewer.