From f0cb40d9e4b8d3285ac7125fb40433d65fae172e Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 8 Jul 2020 16:43:14 +0200
Subject: Directory tree rework

---
 src/gitjoe/addsshkey.pl | 28 +++++++++++++++
 src/gitjoe/chdesc.pl    | 36 +++++++++++++++++++
 src/gitjoe/chowner.pl   | 36 +++++++++++++++++++
 src/gitjoe/newrepo.pl   | 95 +++++++++++++++++++++++++++++++++++++++++++++++++
 src/gitjoe/newuser.pl   | 77 +++++++++++++++++++++++++++++++++++++++
 src/gitjoe/rmrepo.pl    | 33 +++++++++++++++++
 src/gitjoe/rmuser.pl    | 31 ++++++++++++++++
 7 files changed, 336 insertions(+)
 create mode 100755 src/gitjoe/addsshkey.pl
 create mode 100755 src/gitjoe/chdesc.pl
 create mode 100755 src/gitjoe/chowner.pl
 create mode 100755 src/gitjoe/newrepo.pl
 create mode 100755 src/gitjoe/newuser.pl
 create mode 100755 src/gitjoe/rmrepo.pl
 create mode 100755 src/gitjoe/rmuser.pl

(limited to 'src/gitjoe')

diff --git a/src/gitjoe/addsshkey.pl b/src/gitjoe/addsshkey.pl
new file mode 100755
index 0000000..d7e0477
--- /dev/null
+++ b/src/gitjoe/addsshkey.pl
@@ -0,0 +1,28 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 2) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, 2 needed "
+			. colored("[user - ssh public key]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	my $sshkey = "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ";
+	$sshkey = $sshkey . $ARGV[1];
+	my $home_dir = '/usr/home/' . $usr . '/';
+	open(my $fh, '>>:encoding(UTF-8)', $home_dir . '.ssh/authorized_keys');
+	print $fh "$sshkey\n";
+	close($fh);
+	exit;
+}
+
+main();
+
+__END__
diff --git a/src/gitjoe/chdesc.pl b/src/gitjoe/chdesc.pl
new file mode 100755
index 0000000..9a9a9e5
--- /dev/null
+++ b/src/gitjoe/chdesc.pl
@@ -0,0 +1,36 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 3) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, 3 needed "
+			. colored("[user - reponame - new description]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	my $repo = $ARGV[1];
+	my $desc = $ARGV[2];
+	my $home_dir = '/usr/home/' . $usr . '/';
+	if (substr($repo, -4) ne '.git') {
+		$repo = $repo . '.git';
+	}
+	$repo = $repo . '/';
+	open(my $desc_fh, '>:encoding(UTF-8)', $home_dir . $repo . 'description');
+	print $desc_fh $desc;
+	close($desc_fh);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'description'
+	exit;
+}
+
+main();
+
+__END__
diff --git a/src/gitjoe/chowner.pl b/src/gitjoe/chowner.pl
new file mode 100755
index 0000000..436959e
--- /dev/null
+++ b/src/gitjoe/chowner.pl
@@ -0,0 +1,36 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 3) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, 3 needed "
+			. colored("[user - reponame - new owner]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	my $repo = $ARGV[1];
+	my $owner = $ARGV[2];
+	my $home_dir = '/usr/home/' . $usr . '/';
+	if (substr($repo, -4) ne '.git') {
+		$repo = $repo . '.git';
+	}
+	$repo = $repo . '/';
+	open(my $owner_fh, '>:encoding(utf-8)', $home_dir . $repo . 'owner');
+	print $owner_fh $owner;
+	close($owner_fh);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'owner'
+	exit;
+}
+
+main();
+
+__END__
diff --git a/src/gitjoe/newrepo.pl b/src/gitjoe/newrepo.pl
new file mode 100755
index 0000000..951b1b5
--- /dev/null
+++ b/src/gitjoe/newrepo.pl
@@ -0,0 +1,95 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 2) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, at least 2 needed "
+			. colored("[user - reponame - (description)]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	my $repo = $ARGV[1];
+	my $desc = "";
+	if ($argc >= 3) {
+		$desc = $ARGV[2];
+	}
+	my $home_dir = '/usr/home/' . $usr . '/';
+	if (substr($repo, -4) ne '.git') {
+		$repo = $repo . '.git';
+	}
+	$repo = $repo . '/';
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/bin/mkdir -v ' . $home_dir . $repo
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/local/bin/git -C ' . $home_dir . $repo . ' init --bare'
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v -R ' . $usr . ':' . $usr . ' ' . $home_dir . $repo
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/bin/touch ' .  $home_dir . $repo . 'git-daemon-export-ok'
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'git-daemon-export-ok'
+		);
+	open(my $owner_fh, '>:encoding(UTF-8)', $home_dir . $repo . 'owner');
+	print $owner_fh $usr;
+	close($owner_fh);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'owner'
+		);
+	open(my $url_fh, '>:encoding(UTF-8)', $home_dir . $repo . 'url');
+	substr($repo, -1) = "";
+	print $url_fh 'git://jozanleclerc.xyz/' . $usr . '/' . $repo;
+	close($url_fh);
+	$repo = $repo . '/';
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'url'
+		);
+	if ($argc >= 3) {
+		open(my $desc_fh, '>:encoding(UTF-8)', $home_dir . $repo . 'description');
+		print $desc_fh $desc;
+		close($desc_fh);
+		system(
+			'/usr/local/bin/dash',
+			'-c',
+			'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'description'
+			);
+	}
+	else {
+		open(my $desc_fh, '>:encoding(UTF-8)', $home_dir . $repo . 'description');
+		print $desc_fh 'No description yet';
+		close($desc_fh);
+		system(
+			'/usr/local/bin/dash',
+			'-c',
+			'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . $repo . 'description'
+			);
+	}
+	exit;
+}
+
+main();
+
+__END__
diff --git a/src/gitjoe/newuser.pl b/src/gitjoe/newuser.pl
new file mode 100755
index 0000000..a141277
--- /dev/null
+++ b/src/gitjoe/newuser.pl
@@ -0,0 +1,77 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 3) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, 3 needed "
+			. colored("[user - password - ssh public key]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	my $pass = $ARGV[1];
+	my $sshkey = "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ";
+	$sshkey = $sshkey . $ARGV[2];
+	my $home_dir = '/usr/home/' . $usr . '/';
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		"adduser << EOF
+" . $usr . "
+
+
+
+
+
+git-shell
+
+
+
+
+
+" . $pass . "
+" . $pass . "
+
+yes
+no
+EOF"
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/bin/mkdir -v ' . $home_dir . '.ssh/'
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . '.ssh/'
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/bin/chmod -v 700 ' . $home_dir . '.ssh/'
+		);
+	open(my $fh, '>:encoding(UTF-8)', $home_dir . '.ssh/authorized_keys');
+	print $fh $sshkey . "\n";
+	close($fh);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/usr/sbin/chown -v ' . $usr . ':' . $usr . ' ' . $home_dir . '.ssh/authorized_keys'
+		);
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/bin/chmod -v 600 ' . $home_dir . '.ssh/authorized_keys'
+		);
+	exit;
+}
+
+main();
+
+__END__
diff --git a/src/gitjoe/rmrepo.pl b/src/gitjoe/rmrepo.pl
new file mode 100755
index 0000000..30ce4d2
--- /dev/null
+++ b/src/gitjoe/rmrepo.pl
@@ -0,0 +1,33 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 2) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, 2 needed "
+			. colored("[user - reponame]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	my $repo = $ARGV[1];
+	my $home_dir = '/usr/home/' . $usr . '/';
+	if (substr($repo, -4) ne '.git') {
+		$repo = $repo . '.git';
+	}
+	$repo = $repo . '/';
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		'/bin/rm -rfv ' . $home_dir . $repo
+		);
+	exit;
+}
+
+main();
+
+__END__
diff --git a/src/gitjoe/rmuser.pl b/src/gitjoe/rmuser.pl
new file mode 100755
index 0000000..944745f
--- /dev/null
+++ b/src/gitjoe/rmuser.pl
@@ -0,0 +1,31 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+	my $argc = $#ARGV + 1;
+	if ($argc < 1) {
+		print colored("Failed!\n", 'bold red')
+			. "Missing argument, 1 needed "
+			. colored("[user]", 'bold')
+			. "\n";
+		exit 1;
+	}
+	my $usr = $ARGV[0];
+	system(
+		'/usr/local/bin/dash',
+		'-c',
+		"rmuser << EOF
+" . $usr . "
+y
+y
+EOF"
+		);
+	exit;
+}
+
+main();
+
+__END__
-- 
cgit v1.2.3