index 06b041023b58b6abe106bd91fcc21717bda162f1..9c2ac1e579b484f8d5eb029e7d2e23e8ec41a9e1 100644 (file)
use Data::Dumper;
use NetAddr::IP;
use Net::LDAP;
+use Net::LDAP::Util;
use Socket;
use Net::hostent;
my $mesg;
my %cfg_defaults = (
-#"bus" => {
-# "activ" => [\$bus_activ, "on"],
-# "key" => [\$bus_key, ""],
-# "ip" => [\$bus_ip, ""],
-# "port" => [\$bus_port, "20080"],
-# },
"server" => {
"ip" => [\$server_ip, "0.0.0.0"],
"mac-address" => [\$main::server_mac_address, "00:00:00:00:00"],
# import local events
my ($error, $result, $event_hash) = &import_events($event_dir);
-if ($error == 0) {
- foreach my $log_line (@$result) {
+
+foreach my $log_line (@$result) {
+ if ($log_line =~ / succeed: /) {
&main::daemon_log("0 DEBUG: ClientPackages - $log_line", 7);
- }
-} else {
- foreach my $log_line (@$result) {
+ } else {
&main::daemon_log("0 ERROR: ClientPackages - $log_line", 1);
}
-
}
# Unit tag can be defined in config
$main::server_address = $server_address;
-#if( inet_aton($bus_ip) ){ $bus_ip = inet_ntoa(inet_aton($bus_ip)); }
-#######################################################
-## to change
-#if( $bus_ip eq "127.0.1.1" ) { $bus_ip = "127.0.0.1" }
-#######################################################
-#my $bus_address = "$bus_ip:$bus_port";
-#$main::bus_address = $bus_address;
-
-
-#my $hostkey = &create_passwd;
-#my $res = $main::known_server_db->add_dbentry( {table=>$main::known_server_tn,
-# primkey=>['hostname'],
-# hostname=>$main::server_address,
-# status=>'myself',
-# hostkey=>$hostkey,
-# timestamp=>&get_time(),
-# } );
-#if (not $res == 0) {
-# &main::daemon_log("0 ERROR: cannot add server to known_server_db: $res", 1);
-#} else {
-# &main::daemon_log("0 INFO: '$main::server_address' successfully added to known_server_db", 5);
-#}
-
-
-
-## create general settings for this module
-#my $xml = new XML::Simple();
-#
-## register at bus
-#if ($main::no_bus > 0) {
-# $bus_activ = "off"
-#}
-#if($bus_activ eq "on") {
-# ®ister_at_bus();
-#}
-
-
### functions #################################################################
}
-# moved to GosaSupportDaemon: 03-06-2008 rettenbe
-#=== FUNCTION ================================================================
-# NAME: get_interface_for_ip
-# PARAMETERS: ip address (i.e. 192.168.0.1)
-# RETURNS: array: list of interfaces if ip=0.0.0.0, matching interface if found, undef else
-# DESCRIPTION: Uses proc fs (/proc/net/dev) to get list of interfaces.
-#===============================================================================
-#sub get_interface_for_ip {
-# my $result;
-# my $ip= shift;
-# if ($ip && length($ip) > 0) {
-# my @ifs= &get_interfaces();
-# if($ip eq "0.0.0.0") {
-# $result = "all";
-# } else {
-# foreach (@ifs) {
-# my $if=$_;
-# if(&main::get_ip($if) eq $ip) {
-# $result = $if;
-# }
-# }
-# }
-# }
-# return $result;
-#}
-
-# moved to GosaSupportDaemon: 03-06-2008 rettenbe
-#=== FUNCTION ================================================================
-# NAME: get_interfaces
-# PARAMETERS: none
-# RETURNS: (list of interfaces)
-# DESCRIPTION: Uses proc fs (/proc/net/dev) to get list of interfaces.
-#===============================================================================
-#sub get_interfaces {
-# my @result;
-# my $PROC_NET_DEV= ('/proc/net/dev');
-#
-# open(PROC_NET_DEV, "<$PROC_NET_DEV")
-# or die "Could not open $PROC_NET_DEV";
-#
-# my @ifs = <PROC_NET_DEV>;
-#
-# close(PROC_NET_DEV);
-#
-# # Eat first two line
-# shift @ifs;
-# shift @ifs;
-#
-# chomp @ifs;
-# foreach my $line(@ifs) {
-# my $if= (split /:/, $line)[0];
-# $if =~ s/^\s+//;
-# push @result, $if;
-# }
-#
-# return @result;
-#}
#=== FUNCTION ================================================================
# NAME: get_mac
}
-#=== FUNCTION ================================================================
-# NAME: register_at_bus
-# PARAMETERS: nothing
-# RETURNS: nothing
-# DESCRIPTION: creates an entry in known_daemons and send a 'here_i_am' msg to bus
-#===============================================================================
-#sub register_at_bus {
-#
-# # add bus to known_server_db
-# my $res = $main::known_server_db->add_dbentry( {table=>'known_server',
-# primkey=>['hostname'],
-# hostname=>$bus_address,
-# status=>'bus',
-# hostkey=>$bus_key,
-# timestamp=>&get_time,
-# } );
-# my $msg_hash = &create_xml_hash("here_i_am", $server_address, $bus_address);
-# my $msg = &create_xml_string($msg_hash);
-#
-# &main::send_msg_to_target($msg, $bus_address, $bus_key, "here_i_am");
-# return $msg;
-#}
-
-
-
-# outcommented from rettenbe: moved to GosaSupportDaemon.pm
-#sub import_events {
-# if (not -e $event_dir) {
-# &main::daemon_log("S ERROR: cannot find directory or directory is not readable: $event_dir", 1);
-# }
-# opendir (DIR, $event_dir) or die "ERROR while loading gosa-si-events from directory $event_dir : $!\n";
-#
-# while (defined (my $event = readdir (DIR))) {
-# if( $event eq "." || $event eq ".." ) { next; }
-# if( $event eq "gosaTriggered.pm" ) { next; } # only GOsa specific events
-#
-# eval{ require $event; };
-# if( $@ ) {
-# &main::daemon_log("S ERROR: import of event module '$event' failed", 1);
-# &main::daemon_log("$@", 8);
-# next;
-# }
-#
-# $event =~ /(\S*?).pm$/;
-# my $event_module = $1;
-# my $events_l = eval( $1."::get_events()") ;
-# foreach my $event_name (@{$events_l}) {
-# $event_hash->{$event_name} = $event_module;
-# }
-# my $events_string = join( ", ", @{$events_l});
-# &main::daemon_log("S DEBUG: ClientPackages imported events $events_string", 8);
-# }
-#}
-
-
#=== FUNCTION ================================================================
# NAME: process_incoming_msg
# PARAMETERS: crypted_msg - string - incoming crypted message
my $client_revision = @{$msg_hash->{client_revision}}[0];
my $key_lifetime = @{$msg_hash->{key_lifetime}}[0];
+ # Move forced hostname to heap - if used
+ #FIXME: move to some global POE namespace - please
+ if ( defined($msg_hash->{'force-hostname'}[0]) &&
+ length($msg_hash->{'force-hostname'}[0]) > 0){
+ # $heap->{force-hostname}->{$mac_address}= $msg_hash->{'force-hostname'}[0];
+ open (TFILE, ">/var/tmp/$mac_address");
+ print TFILE $msg_hash->{'force-hostname'}[0];
+ close (TFILE);
+ } else {
+ # $heap->{force-hostname}->{$mac_address}= undef;
+ if ( -e "/var/tmp/$mac_address") {
+ unlink("/var/tmp/$mac_address")
+ };
+ }
+
# number of known clients
my $nu_clients= $main::known_clients_db->count_dbentries('known_clients');
# Do we need to look at an object class?
if (not @servers){
+ my $escaped_dn = &escape_dn_value($dn);
$mesg = $ldap_handle->search( base => $ldap_base,
scope => 'sub',
attrs => ['dn', 'gotoLdapServer', 'FAIclass'],
- filter => "(&(objectClass=gosaGroupOfNames)(member=$dn))");
+ filter => "(&(objectClass=gosaGroupOfNames)(member=$escaped_dn))");
if($mesg->code) {
&main::daemon_log("$session_id ERROR: unable to search for '(&(objectClass=gosaGroupOfNames)(member=$dn))': ".$mesg->error, 1);
return;
return $result;
}
+# vim:ts=4:shiftwidth:expandtab
1;