summaryrefslogtreecommitdiff
path: root/pptpd-1.3.3/plugins/pptpd-logwtmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'pptpd-1.3.3/plugins/pptpd-logwtmp.c')
-rw-r--r--pptpd-1.3.3/plugins/pptpd-logwtmp.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/pptpd-1.3.3/plugins/pptpd-logwtmp.c b/pptpd-1.3.3/plugins/pptpd-logwtmp.c
new file mode 100644
index 00000000..f5d860aa
--- /dev/null
+++ b/pptpd-1.3.3/plugins/pptpd-logwtmp.c
@@ -0,0 +1,60 @@
+/*
+ * $Id: pptpd-logwtmp.c,v 1.4 2005/08/03 09:10:59 quozl Exp $
+ * pptpd-logwtmp.c - pppd plugin to update wtmp for a pptpd user
+ *
+ * Copyright 2004 James Cameron.
+ *
+ * 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
+ * 2 of the License, or (at your option) any later version.
+ */
+#include <unistd.h>
+#include <utmp.h>
+#include <string.h>
+#include "pppd.h"
+#include "config.h"
+
+char pppd_version[] = PPPD_VERSION;
+
+static char pptpd_original_ip[PATH_MAX+1];
+static bool pptpd_logwtmp_strip_domain = 0;
+
+static option_t options[] = {
+ { "pptpd-original-ip", o_string, pptpd_original_ip,
+ "Original IP address of the PPTP connection",
+ OPT_STATIC, NULL, PATH_MAX },
+ { "pptpd-logwtmp-strip-domain", o_bool, &pptpd_logwtmp_strip_domain,
+ "Strip domain from username before logging", OPT_PRIO | 1 },
+ { NULL }
+};
+
+static void ip_up(void *opaque, int arg)
+{
+ char *user = peer_authname;
+ if (pptpd_logwtmp_strip_domain) {
+ char *sep = strstr(user, "//");
+ if (sep != NULL)
+ user = sep + 2;
+ }
+ if (debug)
+ notice("pptpd-logwtmp.so ip-up %s %s %s", ifname, user,
+ pptpd_original_ip);
+ logwtmp(ifname, user, pptpd_original_ip);
+}
+
+static void ip_down(void *opaque, int arg)
+{
+ if (debug)
+ notice("pptpd-logwtmp.so ip-down %s", ifname);
+ logwtmp(ifname, "", "");
+}
+
+void plugin_init(void)
+{
+ add_options(options);
+ add_notifier(&ip_up_notifier, ip_up, NULL);
+ add_notifier(&ip_down_notifier, ip_down, NULL);
+ if (debug)
+ notice("pptpd-logwtmp: $Version$");
+}