HEX
Server: Apache/2.4.41 (FreeBSD) OpenSSL/1.0.2s mod_fcgid/2.3.9
System: FreeBSD salazo 12.0-RELEASE-p1303-ZFS hostBSD 12.0-RELEASE-p1303-ZFS DMR amd64
User: admin (1000)
PHP: 7.4.3
Disabled: NONE
Upload Files
File: //usr/sbin/spamconf
#!/usr/iports/bin/perl
use IO::Socket;
use Getopt::Std;
getopts('n:d:');

########################################################
########################################################
############ unbedingt mit 4111 Rechten!!  #############
########################################################
########################################################

#force euid, ruid, egid and rgid to be web!!!!!!!!!!!!!!!!!!!!
##owner muss web.web sein!!!!!!!!!!!!!!!!!!!!!
$< = $>;

umask 022;

$ENV{'PATH'} = '/bin:/usr/bin';
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};

my $username;

if($opt_n){
        error(1) if($opt_n =~ /[^0-9a-zA-Z\_\@\-\.]/);
        error(1) if($opt_n =~ /\.\./);
        $username = $opt_n;
} elsif($opt_d){
        error(1) if($opt_d =~ /[^0-9a-zA-Z\_\@\-\.]/);
        error(1) if($opt_d =~ /\.\./);
        $username = $opt_d;
} else {
        usage();
}


my $vs;
my $message;

$vs = `hostname`;
chomp($vs);
$vs =~ s/\..*$//;


if($opt_n){
        $message = "conv:$vs:$username:";
        die "Keine Configs vorhanden!\n" unless(-e "/home/$username/.spamd/user_prefs");
} elsif($opt_d){
        $message = "del:$vs:$username:";
}

if (-e "/etc/cshost") {
        open(CS, "</etc/cshost");
        while(<CS>) {
                $cshost = $_;
        }
        close(CS);
} else {
        $cshost = '127.0.0.1';
}


$socket=IO::Socket::INET->new(PeerAddr => $cshost,
                              PeerPort => 6996,
                              Proto    => 'tcp',
                              Type     => SOCK_STREAM,
                              Timeout  => 5 )
        or die "couldn't open port\n";

$socket->autoflush(1);




if($opt_n){
        open(CONF, "</home/$username/.spamd/user_prefs");
        while(<CONF>) {
                chomp;
                $message .= "$_|";
        }
        close(CONF);

        #letztes | wech
        chop($message);
}

print $socket $message;
close($socket);

exit(0);

sub usage {
        print ("Usage: spamconf -n USERNAME\n");
        exit(1);
}

sub error {
        local($error_type) = @_;

        print ("Benutzungsweise:\n\nspamconf -n USERNAME\n");

        print ("Der Username darf nur ASCII-Zeichen beinhalten.\n\n") if($error_type == 1);

        exit(1);

}