Blob Blame History Raw
From 88e305cf8a70b940f15a2dff496887f388dfd4a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
Date: Wed, 6 Feb 2019 12:40:01 +0100
Subject: [PATCH 3/3] Revert "Remove pure-vpopauth. That script is terrible."

This reverts commit fe6419d70ccf5b4f3bfc5f8200f99f3915994a19.
---
 contrib/Makefile.am      |  1 +
 contrib/pure-vpopauth.pl | 51 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+)
 create mode 100755 contrib/pure-vpopauth.pl

diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 5056d5f..81aae9a 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -1,3 +1,4 @@
 EXTRA_DIST = \
 	xml_python_processors.txt \
+	pure-vpopauth.pl \
 	pure-stat.pl
diff --git a/contrib/pure-vpopauth.pl b/contrib/pure-vpopauth.pl
new file mode 100755
index 0000000..6a59a41
--- /dev/null
+++ b/contrib/pure-vpopauth.pl
@@ -0,0 +1,51 @@
+#! /usr/bin/env perl -w
+
+# - authentication module for pure-ftpd using vpasswd vpopmail password files.
+# - Saturday, 12 May 2002 - released
+# - copyright (c) Dan Caescu - daniel@guitar.ro , jamie_fd@yahoo.com
+# - vpopmail has to be compiled with clear text passwords in order for 
+# - this to work.  
+# - also, there would be great if you would run pure-ftpd with chroot flags
+# - 17 Nov 2002, added e-mail checking, a hint from Frank Jedi @ pureftpd 
+# - I guess it works..? :)  
+# - greets to Rox (Roxana Raluca) .
+
+# Change the following settings according to your needs
+
+$VPOPMAIL_PATH = '/usr/local/vpopmail';
+$UID = 1000;
+$GID = 1000;
+
+# Don't change anything below that line
+
+$AUTHD_ACCOUNT = $ENV{AUTHD_ACCOUNT} or die;
+$AUTHD_PASSWORD = $ENV{AUTHD_PASSWORD} or die;
+
+# Checking if AUTHD_ACCOUNT is like user@domain
+
+$AUTHD_ACCOUNT =~ /^[^@]+\@([a-z0-9]+\.)+[a-z]+$/i or die;
+
+# We take care of the user/domain pair 'cause the user comes
+# in the user@domain style
+
+@user_domain = split('@', $AUTHD_ACCOUNT);
+
+open (FILE, "$VPOPMAIL_PATH/domains/" . $user_domain[1] . '/vpasswd') or die;
+
+# We take care of the user/pass from vpasswd
+
+while (<FILE>) {
+    chomp;
+    @date_useri = split ':';
+    if ($user_domain[0] eq $date_useri[0] &&
+        $AUTHD_PASSWORD eq $date_useri[7]) {
+        print "auth_ok:1\n",
+              "uid:$UID\n",
+              "gid:$GID\n",
+              "dir:$date_useri[5]\n",
+              "end\n";
+        last;
+    }    
+}
+
+close FILE;
-- 
2.20.1