aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/auth.h45
-rw-r--r--src/auth/pam.c (renamed from src/pam.c)2
-rw-r--r--src/auth/pam.h (renamed from src/pam.h)0
-rw-r--r--src/cerberus.c12
-rw-r--r--src/cerberus.h2
5 files changed, 53 insertions, 8 deletions
diff --git a/src/auth.h b/src/auth.h
new file mode 100644
index 0000000..c24a70d
--- /dev/null
+++ b/src/auth.h
@@ -0,0 +1,45 @@
+/**
+ * cerberus – Minimal login program
+ *
+ * Copyright © 2013 Mattias Andrée (maandree@member.fsf.org)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef __AUTH_H__
+#define __AUTH_H__
+
+
+
+#if AUTH == 0
+
+#define close_login_session(...) /* do nothing */
+#define initialise_login(...) (void) hostname
+#define authenticate_login(...) 1
+#define verify_account(...) /* do nothing */
+#define open_login_session(...) /* do nothing */
+
+#elif AUTH == 1
+
+#include "auth/pam.h"
+#define close_login_session close_session_pam
+#define initialise_login initialise_pam
+#define authenticate_login authenticate_pam
+#define verify_account verify_account_pam
+#define open_login_session open_session_pam
+
+#endif
+
+
+#endif
+
diff --git a/src/pam.c b/src/auth/pam.c
index 288196e..e02aed1 100644
--- a/src/pam.c
+++ b/src/auth/pam.c
@@ -23,7 +23,7 @@
#include <security/pam_appl.h>
#include <security/pam_misc.h>
-#include "config.h"
+#include "../config.h"
#include "pam.h"
diff --git a/src/pam.h b/src/auth/pam.h
index ee766df..ee766df 100644
--- a/src/pam.h
+++ b/src/auth/pam.h
diff --git a/src/cerberus.c b/src/cerberus.c
index 03a7a75..f20e600 100644
--- a/src/cerberus.c
+++ b/src/cerberus.c
@@ -67,7 +67,7 @@ int main(int argc, char** argv)
chown_tty(0, tty_group, 0);
/* Close login session */
- close_session_pam();
+ close_login_session();
return 0;
}
@@ -215,8 +215,8 @@ void do_login(int argc, char** argv)
/* Verify passphrase or other token, if -f has not been used */
- initialise_pam(hostname, username, read_passphrase);
- if ((skip_auth == 0) && authenticate_pam())
+ initialise_login(hostname, username, read_passphrase);
+ if ((skip_auth == 0) && authenticate_login())
printf("(auto-authenticated)\n");
/* Passphrase entered, turn off timeout */
@@ -236,7 +236,7 @@ void do_login(int argc, char** argv)
/* Verify account, such as that it is enabled */
- verify_account_pam();
+ verify_account();
/* Partial login */
@@ -244,7 +244,7 @@ void do_login(int argc, char** argv)
chdir_home(entry);
ensure_shell(entry);
set_environ(entry, preserve_env);
- open_session_pam();
+ open_login_session();
/* Stop signal handling */
@@ -260,7 +260,7 @@ void do_login(int argc, char** argv)
if (child_pid == -1)
{
perror("fork");
- close_session_pam();
+ close_login_session();
sleep(ERROR_SLEEP);
_exit(1);
}
diff --git a/src/cerberus.h b/src/cerberus.h
index 5c5a240..5851524 100644
--- a/src/cerberus.h
+++ b/src/cerberus.h
@@ -39,7 +39,7 @@
#include "quit.h"
#include "login.h"
#include "security.h"
-#include "pam.h"
+#include "auth.h"
#ifndef USE_TTY_GROUP