/usr/sbin/usn-tombstone-cleanup is in 389-ds-base 1.3.4.9-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #!/usr/bin/env perl
#
# BEGIN COPYRIGHT BLOCK
# Copyright (C) 2013 Red Hat, Inc.
# All rights reserved.
#
# License: GPL (version 3 or any later version).
# See LICENSE for details.
# END COPYRIGHT BLOCK
#
use lib qw(/usr/lib/x86_64-linux-gnu/dirsrv/perl);
use DSUtil;
DSUtil::libpath_add("");
DSUtil::libpath_add("/usr/lib");
DSUtil::libpath_add("/usr/lib64");
$ENV{'PATH'} = ":/usr/bin:/usr/lib64/mozldap/";
$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
sub usage {
print(STDERR "Usage: usn-tombstone-cleanup.pl [-Z serverID] [-D rootdn] { -w password | -w - | -j filename }\n");
print(STDERR " -s suffix -n backend [-m maxusn_to_delete] [-P protocol] [-v] [-h]\n");
print(STDERR "Options:\n");
print(STDERR " -D rootdn - Directory Manager\n");
print(STDERR " -w password - Directory Manager's password\n");
print(STDERR " -w - - Prompt for Directory Manager's password\n");
print(STDERR " -Z serverID - Server instance identifier\n");
print(STDERR " -j filename - Read Directory Manager's password from file\n");
print(STDERR " -s suffix - Suffix where USN tombstone entries are cleaned up\n");
print(STDERR " -n backend - Backend instance in which USN tombstone entries are cleaned up (alternative to suffix)\n");
print(STDERR " -m maxusn_to_delete - USN tombstone entries are deleted up to the entry with maxusn_to_delete\n");
print(STDERR " -P protocol - STARTTLS, LDAPS, LDAPI, LDAP (default: uses most secure protocol available)\n");
print(STDERR " -v - Verbose output\n");
print(STDERR " -h - Display usage\n");
}
while ($i <= $#ARGV)
{
if ("$ARGV[$i]" eq "-s"){
# suffix
$i++; $suffix_arg = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-n"){
# backend
$i++; $backend_arg = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-m"){
# max usn
$i++; $maxusn_arg = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-D"){
# Directory Manager
$i++; $rootdn = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-w"){
# Directory Manager's password
$i++; $passwd = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-j"){
# Read Directory Manager's password from a file
$i++; $passwdfile = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-Z"){
# Server instance identifier
$i++; $servid = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-P") {
# protocol preference
$i++; $protocol = $ARGV[$i];
} elsif ("$ARGV[$i]" eq "-h"){
# help
&usage;
exit(0);
} elsif ("$ARGV[$i]" eq "-v"){
# verbose
$verbose = 1;
} else {
&usage;
exit(1);
}
$i++;
}
#
# Gather all our config settings
#
($servid, $confdir) = DSUtil::get_server_id($servid, "/etc/default");
%info = DSUtil::get_info($confdir, $host, $port, $rootdn);
$info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile);
$info{protocol} = $protocol;
if ($verbose == 1){
$info{args} = "-v -a";
} else {
$info{args} = "-a";
}
if ( $suffix_arg eq "" && $backend_arg eq "" ){
&usage;
exit(1);
}
#
# Construct the task entry
#
($s, $m, $h, $dy, $mn, $yr, $wdy, $ydy, $r) = localtime(time);
$mn++; $yr += 1900;
$taskname = "usn_cleanup_${yr}_${mn}_${dy}_${h}_${m}_${s}";
$dn = "dn: cn=$taskname, cn=USN tombstone cleanup task, cn=tasks, cn=config\n";
$misc = "objectclass: top\nobjectclass: extensibleObject\n";
$cn = "cn: $taskname\n";
if ( $suffix_arg ne "" ){
$args = "suffix: $suffix_arg\n";
} else {
$args = "backend: $backend_arg\n";
}
if ( $maxusn_arg ne "" ){
$args = $args . "maxusn_to_delete: $maxusn_arg\n";
}
$entry = "${dn}${misc}${cn}${args}";
$rc = DSUtil::ldapmod($entry, %info);
$dn =~ s/^dn: //;
$dn =~ s/\n//;
if($rc == 0){
print "Successfully added task entry \"$dn\"\n";
} else {
print "Failed to add task entry \"$dn\" error ($rc)\n";
}
exit($rc);
|