#!/usr/bin/perl

#************************************************************************
#*   IRC - Internet Relay Chat
#*   Copyright (C) 1991 Sean Batt
#*
#*   This program is free software; you can redistribute it and/or modify
#*   it under the terms of the GNU General Public License as published by
#*   the Free Software Foundation; either version 1, or (at your option)
#*   any later version.
#*
#*   This program is distributed in the hope that it will be useful,
#*   but WITHOUT ANY WARRANTY; without even the implied warranty of
#*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#*   GNU General Public License for more details.
#*
#*   You should have received a copy of the GNU General Public License
#*   along with this program; if not, write to the Free Software
#*   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#*
#*   $Id: crypter 839 2004-10-17 22:10:58Z r33d $
#*/

#From Sean Batt sean@coombs.anu.edu.au
#
#Temporary output file
#
$tmpfile = "/tmp/ircd.conf.tmp";

#
#Original ircd.conf file
#
$ircdconf = @ARGV[0];

print "crypting ",$ircdconf,"\n";
@saltset = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/');

umask(0077);
open ($ircdout, ">$tmpfile") || die "open $!";

while ($text = <>) {
#if its not an "O" line we can ignore it
    $text =~ /^o/i || print ($ircdout $text) && next;
    chop($text);
    @oline = split(':', $text);
    $salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
    $oline[2] = crypt(@oline[2], $salt);
    print ($ircdout join(':',@oline)."\n");
}
close ($ircdout);
close ($ircdin);
print "/bin/cp ",$tmpfile," ",$ircdconf,"\n";
(fork()==0) ? exec("/bin/cp", $tmpfile, $ircdconf) : wait;
print "",$ircdconf," has been crypted successfully!\n";

#unlink($tmpfile);


syntax highlighted by Code2HTML, v. 0.9.1