aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/git-ro-daemon.pl18
-rwxr-xr-xsrc/gitjoe-addsshkey.pl28
-rwxr-xr-xsrc/gitjoe-newrepo.pl71
-rwxr-xr-xsrc/gitjoe-newuser.pl77
-rwxr-xr-xsrc/gitjoe-rmrepo.pl33
-rwxr-xr-xsrc/gitjoe-rmuser.pl31
-rwxr-xr-xsrc/update-gitjoe.pl64
-rwxr-xr-xsrc/update-serv.pl28
8 files changed, 350 insertions, 0 deletions
diff --git a/src/git-ro-daemon.pl b/src/git-ro-daemon.pl
new file mode 100755
index 0000000..93c5339
--- /dev/null
+++ b/src/git-ro-daemon.pl
@@ -0,0 +1,18 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+ system(
+ '/usr/local/bin/dash',
+ '-c',
+ '/usr/local/bin/git daemon --reuseaddr --base-path=/usr/home /usr/home &'
+ );
+ exit;
+}
+
+main();
+
+__END__
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-newrepo.pl b/src/gitjoe-newrepo.pl
new file mode 100755
index 0000000..1bc5a06
--- /dev/null
+++ b/src/gitjoe-newrepo.pl
@@ -0,0 +1,71 @@
+#!/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/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'
+ );
+ 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__
diff --git a/src/update-gitjoe.pl b/src/update-gitjoe.pl
new file mode 100755
index 0000000..a0471ee
--- /dev/null
+++ b/src/update-gitjoe.pl
@@ -0,0 +1,64 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub get_repos_index {
+ my $user = $_[0];
+ my $home_dir = '/usr/home/' . $user . '/';
+ opendir(DIR, $home_dir);
+ my @repos;
+ my $i = 0;
+ while (my $dir = readdir(DIR)) {
+ next if ($dir =~ m/^\./);
+ next if (!(-e $home_dir . $dir . '/git-daemon-export-ok'));
+ $repos[$i] = $dir;
+ $i += 1;
+ }
+ $i = 0;
+ print 'User - ' . colored($user, 'bold') . " - repositories: \n";
+ while ($i < @repos) {
+ print $repos[$i] . "\n";
+ $i += 1;
+ }
+ closedir(DIR);
+ print "\n";
+ return @repos;
+}
+
+sub stagit_generate {
+ my ($user, @repos) = @_;
+ my $i = 0;
+ my $site_dir = '/usr/local/www/git-jozan/';
+ chdir($site_dir);
+ while ($i < @repos) {
+ $i += 1;
+ }
+ return;
+}
+
+sub main {
+ my $home_dir = '/usr/home/';
+ my @users;
+ opendir(DIR, $home_dir);
+ my $i = 0;
+ while (my $dir = readdir(DIR)) {
+ next if ($dir eq 'git-ro');
+ next if ($dir =~ m/^\./);
+ $users[$i] = $dir;
+ $i += 1;
+ }
+ closedir(DIR);
+ $i = 0;
+ while ($i < @users) {
+ my @repos = get_repos_index($users[$i]);
+ stagit_generate($users[$i], @repos);
+ $i += 1;
+ }
+ exit;
+}
+
+main();
+
+__END__
diff --git a/src/update-serv.pl b/src/update-serv.pl
new file mode 100755
index 0000000..77c64ff
--- /dev/null
+++ b/src/update-serv.pl
@@ -0,0 +1,28 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use Term::ANSIColor;
+
+sub main {
+ system(
+ '/usr/local/bin/dash',
+ '-c',
+ 'git -C /usr/local/www/jozan pull >/dev/null 2>&1'
+ );
+ system(
+ '/usr/local/bin/dash',
+ '-c',
+ 'git -C /usr/local/www/git-jozan pull >/dev/null 2>&1'
+ );
+ system(
+ '/usr/local/bin/dash',
+ '-c',
+ 'git -C /root/scripts pull >/dev/null 2>&1'
+ );
+ exit;
+}
+
+main();
+
+__END__