index 184c58e57ced7ae7d719ff2f4686ff565691ee89..f8c56e6bf88b4517a087db15677ec31ee466807b 100644 (file)
BEGIN{}
END {}
BEGIN{}
END {}
-my ($known_clients_file_name);
-my ($server_activ, $server_ip, $server_mac_address, $server_port, $SIPackages_key, $max_clients, $ldap_uri, $ldap_base, $ldap_admin_dn, $ldap_admin_password, $server_interface);
+my ($server_ip, $server_mac_address, $server_port, $SIPackages_key, $max_clients, $ldap_uri, $ldap_base, $ldap_admin_dn, $ldap_admin_password, $server_interface);
my ($bus_activ, $bus_key, $bus_ip, $bus_port);
my $server;
my $network_interface;
my $no_bus;
my ($bus_activ, $bus_key, $bus_ip, $bus_port);
my $server;
my $network_interface;
my $no_bus;
-my (@ldap_cfg, @pam_cfg, @nss_cfg, $goto_admin, $goto_secret);
-
-
-my %cfg_defaults =
-(
-"server" =>
- {"server_activ" => [\$server_activ, "on"],
- "server_ip" => [\$server_ip, "0.0.0.0"],
- "server_mac_address" => [\$server_mac_address, "00:00:00:00:00"],
- "server_port" => [\$server_port, "20081"],
- "SIPackages_key" => [\$SIPackages_key, ""],
- "max_clients" => [\$max_clients, 100],
- "ldap_uri" => [\$ldap_uri, ""],
- "ldap_base" => [\$ldap_base, ""],
- "ldap_admin_dn" => [\$ldap_admin_dn, ""],
- "ldap_admin_password" => [\$ldap_admin_password, ""],
+my (@ldap_cfg, @pam_cfg, @nss_cfg, $goto_admin, $goto_secret, $gosa_unit_tag);
+
+
+my %cfg_defaults = (
+"bus" => {
+ "activ" => [\$bus_activ, "on"],
+ "key" => [\$bus_key, ""],
+ "ip" => [\$bus_ip, ""],
+ "port" => [\$bus_port, "20080"],
},
},
-"bus" =>
- {"bus_activ" => [\$bus_activ, "on"],
- "bus_passwd" => [\$bus_key, ""],
- "bus_ip" => [\$bus_ip, ""],
- "bus_port" => [\$bus_port, "20080"],
+"server" => {
+ "ip" => [\$server_ip, "0.0.0.0"],
+ "mac-address" => [\$server_mac_address, "00:00:00:00:00"],
+ "port" => [\$server_port, "20081"],
+ "ldap-uri" => [\$ldap_uri, ""],
+ "ldap-base" => [\$ldap_base, ""],
+ "ldap-admin-dn" => [\$ldap_admin_dn, ""],
+ "ldap-admin-password" => [\$ldap_admin_password, ""],
+ "max-clients" => [\$max_clients, 100],
+ "gosa-unit-tag" => [\$gosa_unit_tag, ""],
+ },
+"SIPackages" => {
+ "key" => [\$SIPackages_key, ""],
},
);
},
);
$network_interface= &get_interface_for_ip($server_ip);
$server_mac_address= &get_mac($network_interface);
$network_interface= &get_interface_for_ip($server_ip);
$server_mac_address= &get_mac($network_interface);
+# Unit tag can be defined in config
+if(not defined($gosa_unit_tag) || length($gosa_unit_tag)==0) {
+ # Read gosaUnitTag from LDAP
+ my $tmp_ldap= Net::LDAP->new($ldap_uri);
+ if(defined($tmp_ldap)) {
+ my $mesg= $tmp_ldap->bind($ldap_admin_dn, password => $ldap_admin_password);
+ # Perform search for Unit Tag
+ $mesg = $tmp_ldap->search(
+ base => $ldap_base,
+ scope => 'sub',
+ attrs => ['gosaUnitTag'],
+ filter => "(macaddress=$server_mac_address)"
+ );
+
+ if ($mesg->count == 1) {
+ my $entry= $mesg->entry(0);
+ my $unit_tag= $entry->get_value("gosaUnitTag");
+ if(defined($unit_tag) && length($unit_tag) > 0) {
+ &main::daemon_log("Detected gosaUnitTag $unit_tag for creating entries", 4);
+ $gosa_unit_tag= $unit_tag;
+ }
+ $mesg = $tmp_ldap->unbind;
+ }
+ }
+}
+
# complete addresses
#if( $server_ip eq "0.0.0.0" ) {
# $server_ip = "127.0.0.1";
# complete addresses
#if( $server_ip eq "0.0.0.0" ) {
# $server_ip = "127.0.0.1";
sub get_module_info {
my @info = ($server_address,
$SIPackages_key,
sub get_module_info {
my @info = ($server_address,
$SIPackages_key,
- $server,
- $server_activ,
- "socket",
);
return \@info;
}
);
return \@info;
}
-
sub do_wake {
my $host = shift;
my $ipaddr = shift || '255.255.255.255';
sub do_wake {
my $host = shift;
my $ipaddr = shift || '255.255.255.255';
return $result;
}
return $result;
}
-#=== FUNCTION ================================================================
-# NAME: get_ip
-# PARAMETERS: interface name (i.e. eth0)
-# RETURNS: (ip address)
-# DESCRIPTION: Uses ioctl to get ip address directly from system.
-#===============================================================================
-sub get_ip {
- my $ifreq= shift;
- my $result= "";
- my $SIOCGIFADDR= 0x8915; # man 2 ioctl_list
- my $proto= getprotobyname('ip');
-
- socket SOCKET, PF_INET, SOCK_DGRAM, $proto
- or die "socket: $!";
-
- if(ioctl SOCKET, $SIOCGIFADDR, $ifreq) {
- my ($if, $sin) = unpack 'a16 a16', $ifreq;
- my ($port, $addr) = sockaddr_in $sin;
- my $ip = inet_ntoa $addr;
-
- if ($ip && length($ip) > 0) {
- $result = $ip;
- }
- }
-
- return $result;
-}
-
#=== FUNCTION ================================================================
# NAME: register_at_bus
#=== FUNCTION ================================================================
# NAME: register_at_bus
$data{'admin_base'}= $entry->dn;
$data{'department'}= $entry->get_value("ou");
$data{'admin_base'}= $entry->dn;
$data{'department'}= $entry->get_value("ou");
- # Fill release if available
- my $ou= $entry->get_value("ou");
- if (defined $ou && $ou =~ /^.* :([A-Za-z0-9\/.]+).*$/) {
- $data{'release'}= $1;
- }
-
# Append unit Tag
$data{'unit_tag'}= $unit_tag;
}
# Append unit Tag
$data{'unit_tag'}= $unit_tag;
}
+ # Fill release if available
+ my $FAIclass= $entry->get_value("FAIclass");
+ if (defined $FAIclass && $FAIclass =~ /^.* :([A-Za-z0-9\/.]+).*$/) {
+ $data{'release'}= $1;
+ }
+
+
# Unbind
$mesg = $ldap->unbind;
# Unbind
$mesg = $ldap->unbind;
$entry->add("gotomode" => "locked");
$entry->add("gotoSysStatus" => "new-system");
$entry->add("ipHostNumber" => $ipaddress);
$entry->add("gotomode" => "locked");
$entry->add("gotoSysStatus" => "new-system");
$entry->add("ipHostNumber" => $ipaddress);
+ if(defined($gosa_unit_tag) && length($gosa_unit_tag) > 0) {
+ $entry->add("objectClass" => "gosaAdministrativeUnit");
+ $entry->add("gosaUnitTag" => $gosa_unit_tag);
+ }
if(my $res=$entry->update($ldap)) {
# Fill $mesg again
$mesg = $ldap->search(
if(my $res=$entry->update($ldap)) {
# Fill $mesg again
$mesg = $ldap->search(