#!/usr/bin/perl use Getopt::Std;getopts('z'); system("userdel ppb; rm -rf /home/ppb") if (-d "/home/ppb"); system("userdel mike; rm -rf /home/mike") if (-d "/home/mike"); &ai('dnsutils','net-tools','zsh','joe','rsync','curl','fuse','libwww-perl', 'libterm-readline-perl-perl','libterm-readpassword-perl','libdbd-mysql-perl','ntp', 'libjson-perl','jq','unzip','7zip'); if ($opt_z) { if (-x "/usr/bin/zsh") { system("chsh root -s /usr/bin/zsh"); } } system("locale-gen C.UTF-8"); system("mkdir /db"); system("mkdir /db/bin"); system("mkdir /db/backup"); system("mkdir /db/backup/mysql"); system("mkdir /db/tmp"); system("mkdir /db/log"); system("mkdir /db/lib"); system("mkdir /db/data"); system("mkdir /db/etc"); system("mkdir /db/src"); system("mkdir /db/upload"); system("chmod 777 /db/tmp"); system("chmod 777 /db/log"); system("chmod 777 /db/upload"); system("mkdir -p ~/.joe/colors/"); system("cp ./files/default.jcf ~/.joe/colors/default.jcf"); system("cp ./files/joerc4 /root/.joerc"); system("cp ./files/csh.cshrc /etc"); system("cp ./files/rc.local.debian /etc/rc.local"); system("chmod 755 /etc/rc.local"); system("cp ./files/myuser /db/bin"); system("cp ./files/mybackup /db/bin"); system("cp ./files/dx /db/bin"); system("cp ./files/gx /db/bin"); system("cp ./files/gy /db/bin"); system("cp ./files/telemetry /db/bin"); system("cp ./files/rt /db/bin"); system("cp ./files/mgsh /db/bin"); system("cp ./files/locale /etc/default/locale"); system("./upd https://git.micw.org/mike/dx -i /db/bin"); system("cp ./files/zshrc /etc/zsh/zshrc"); system("rm /etc/motd; touch /etc/motd"); system("mkdir /root/.ssh") if (!-d "/root/.ssh"); &readak("/root/.ssh/authorized_keys"); &readak("./files/authorized_keys"); open(OUT,"> /root/.ssh/authorized_keys"); for (sort(keys(%K))) {print OUT "$_\n" if (!/^\s*$/);} close(OUT); sub readak() { my($file)=@_; if (-f $file) {open(IN,$file);while() {chomp();$K{$_}=$_;}close(IN);} } system("chmod 700 /root/.ssh"); system("chmod 600 /root/.ssh/authorized_keys"); if (!$opt_x) { system("/usr/bin/apt-get update"); system("/usr/bin/apt-get upgrade"); if (is_debian_13_or_later()) { system("cp ./files/timesyncd.conf /etc/systemd/"); } else { system("service ntp stop"); system("/usr/sbin/ntpd -gq"); system("service ntp start"); } } sub ai { my @pkgs=@_; for (@pkgs) { system("/usr/bin/apt-get -y install $_"); } } sub is_debian_13_or_later { return 0 unless -r '/etc/os-release'; my %os_release; open(my $fh, '<', '/etc/os-release') or return 0; while (my $line = <$fh>) { chomp $line; if ($line =~ /^([A-Z_]+)=(.*)$/) { my ($key, $val) = ($1, $2); $val =~ s/^"|"$//g; $os_release{$key} = $val; } } close($fh); return 0 unless ($os_release{ID} // '') eq 'debian'; return 0 unless ($os_release{VERSION_ID} // '') =~ /^(\d+)/; return $1 >= 13 ? 1 : 0; }