Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package apache2-mod_authn_otp for openSUSE:Factory checked in at 2024-07-02 18:19:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/apache2-mod_authn_otp (Old)
and /work/SRC/openSUSE:Factory/.apache2-mod_authn_otp.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache2-mod_authn_otp"
Tue Jul 2 18:19:20 2024 rev:14 rq:1184837 version:1.1.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/apache2-mod_authn_otp/apache2-mod_authn_otp.changes 2024-06-20 16:49:15.177962823 +0200
+++ /work/SRC/openSUSE:Factory/.apache2-mod_authn_otp.new.18349/apache2-mod_authn_otp.changes 2024-07-02 18:19:25.817963186 +0200
@@ -1,0 +2,7 @@
+Thu Jun 27 14:21:35 UTC 2024 - Archie Cobbs
+
+- Update to version 1.1.11
+ - Fixed build issue with libapr on some systems (issue #48)
+ - Added otplock(1) utility (issue #38)
+
+-------------------------------------------------------------------
Old:
----
mod_authn_otp-1.1.10.tar.gz
New:
----
mod_authn_otp-1.1.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apache2-mod_authn_otp.spec ++++++
--- /var/tmp/diff_new_pack.UmU3ek/_old 2024-07-02 18:19:26.813999629 +0200
+++ /var/tmp/diff_new_pack.UmU3ek/_new 2024-07-02 18:19:26.817999776 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package apache2-mod_authn_otp
+# spec file
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2012 Archie L. Cobbs
@@ -19,7 +19,7 @@
%define mod_name mod_authn_otp
Name: apache2-%{mod_name}
-Version: 1.1.10
+Version: 1.1.11
Release: 0
Summary: Apache module for one-time password authentication
License: Apache-2.0
@@ -31,6 +31,8 @@
BuildRequires: pkgconfig(openssl)
Requires: %{apache_mmn}
Requires: %{apache_suse_maintenance_mmn}
+Provides: genotpurl = %{version}
+Provides: otplock = %{version}
Provides: otptool = %{version}
%description
@@ -56,10 +58,11 @@
yet also don't require users to install special VPN software, and is
compatible with software tokens that run on cell phones.
-Also included are two command line utilities, otptool and genotpurl.
-otptool is a one-time password command line utility. It can be used
-on a simple call-out basis to integrate two-factor authentication
-into any existing authentication solution. genotpurl generates URLs
+Also included are three command line utilities, otptool, otplock, and
+genotpurl. otptool is a one-time password command line utility. It can
+be used on a simple call-out basis to integrate two-factor authentication
+into any existing authentication solution. otplock allows you to safely
+modify the users file while Apache is running. genotpurl generates URLs
for the Google Authenticator app.
%prep
@@ -78,7 +81,9 @@
%doc CHANGES README users.sample
%{apache_libexecdir}/%{mod_name}.so
%{_bindir}/otptool
+%{_bindir}/otplock
%{_bindir}/genotpurl
%{_mandir}/man1/otptool.1.gz
+%{_mandir}/man1/otplock.1.gz
%{_mandir}/man1/genotpurl.1.gz
++++++ mod_authn_otp-1.1.10.tar.gz -> mod_authn_otp-1.1.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/CHANGES new/mod_authn_otp-1.1.11/CHANGES
--- old/mod_authn_otp-1.1.10/CHANGES 2022-05-04 16:50:52.000000000 +0200
+++ new/mod_authn_otp-1.1.11/CHANGES 2024-06-27 16:13:49.000000000 +0200
@@ -1,3 +1,8 @@
+Version 1.1.11 released June 27, 2024
+
+ - Fixed build issue with libapr on some systems (issue #48)
+ - Added otplock(1) utility (issue #38)
+
Version 1.1.10 released May 4, 2022
- Fixed bug in genotpurl on platforms with signed "char" (pr #46)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/Makefile.am new/mod_authn_otp-1.1.11/Makefile.am
--- old/mod_authn_otp-1.1.10/Makefile.am 2019-06-22 20:04:49.000000000 +0200
+++ new/mod_authn_otp-1.1.11/Makefile.am 2023-01-07 18:49:27.000000000 +0100
@@ -2,7 +2,7 @@
#
# mod_authn_otp - Apache module for one-time password authentication
#
-# Copyright 2009 Archie L. Cobbs
+# Copyright 2009 Archie L. Cobbs
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -30,19 +30,21 @@
install-exec-hook:
test -z "$(STRIP)" || $(STRIP) $(DESTDIR)`$(APXS) -q LIBEXECDIR`/mod_authn_otp.so
test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otptool
+ test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otplock
test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/genotpurl
-bin_PROGRAMS= otptool genotpurl
+bin_PROGRAMS= otptool otplock genotpurl
-noinst_HEADERS= otptool.h errinc.h base32.h
+noinst_HEADERS= otptool.h otplock.h errinc.h base32.h
-man_MANS= otptool.1 genotpurl.1
+man_MANS= otptool.1 otplock.1 genotpurl.1
otptool_SOURCES= otptool.c hotp.c motp.c phex.c
+otplock_SOURCES= otplock.c
+
genotpurl_SOURCES= genotpurl.c base32.c
CLEANFILES= *.la *.lo *.o *.so *.slo .libs/*
-EXTRA_DIST= CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample otptool.1 genotpurl.1 base32.c
-
+EXTRA_DIST= CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample otptool.1 otplock.1 genotpurl.1 base32.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/Makefile.in new/mod_authn_otp-1.1.11/Makefile.in
--- old/mod_authn_otp-1.1.10/Makefile.in 2022-05-04 16:53:30.000000000 +0200
+++ new/mod_authn_otp-1.1.11/Makefile.in 2024-06-27 16:14:38.000000000 +0200
@@ -17,7 +17,7 @@
#
# mod_authn_otp - Apache module for one-time password authentication
#
-# Copyright 2009 Archie L. Cobbs
+# Copyright 2009 Archie L. Cobbs
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -105,7 +105,7 @@
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-bin_PROGRAMS = otptool$(EXEEXT) genotpurl$(EXEEXT)
+bin_PROGRAMS = otptool$(EXEEXT) otplock$(EXEEXT) genotpurl$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -124,6 +124,9 @@
am_genotpurl_OBJECTS = genotpurl.$(OBJEXT) base32.$(OBJEXT)
genotpurl_OBJECTS = $(am_genotpurl_OBJECTS)
genotpurl_LDADD = $(LDADD)
+am_otplock_OBJECTS = otplock.$(OBJEXT)
+otplock_OBJECTS = $(am_otplock_OBJECTS)
+otplock_LDADD = $(LDADD)
am_otptool_OBJECTS = otptool.$(OBJEXT) hotp.$(OBJEXT) motp.$(OBJEXT) \
phex.$(OBJEXT)
otptool_OBJECTS = $(am_otptool_OBJECTS)
@@ -156,8 +159,9 @@
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(genotpurl_SOURCES) $(otptool_SOURCES)
-DIST_SOURCES = $(genotpurl_SOURCES) $(otptool_SOURCES)
+SOURCES = $(genotpurl_SOURCES) $(otplock_SOURCES) $(otptool_SOURCES)
+DIST_SOURCES = $(genotpurl_SOURCES) $(otplock_SOURCES) \
+ $(otptool_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -329,12 +333,13 @@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-noinst_HEADERS = otptool.h errinc.h base32.h
-man_MANS = otptool.1 genotpurl.1
+noinst_HEADERS = otptool.h otplock.h errinc.h base32.h
+man_MANS = otptool.1 otplock.1 genotpurl.1
otptool_SOURCES = otptool.c hotp.c motp.c phex.c
+otplock_SOURCES = otplock.c
genotpurl_SOURCES = genotpurl.c base32.c
CLEANFILES = *.la *.lo *.o *.so *.slo .libs/*
-EXTRA_DIST = CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample otptool.1 genotpurl.1 base32.c
+EXTRA_DIST = CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample otptool.1 otplock.1 genotpurl.1 base32.c
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -435,6 +440,10 @@
@rm -f genotpurl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(genotpurl_OBJECTS) $(genotpurl_LDADD) $(LIBS)
+otplock$(EXEEXT): $(otplock_OBJECTS) $(otplock_DEPENDENCIES) $(EXTRA_otplock_DEPENDENCIES)
+ @rm -f otplock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(otplock_OBJECTS) $(otplock_LDADD) $(LIBS)
+
otptool$(EXEEXT): $(otptool_OBJECTS) $(otptool_DEPENDENCIES) $(EXTRA_otptool_DEPENDENCIES)
@rm -f otptool$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(otptool_OBJECTS) $(otptool_LDADD) $(LIBS)
@@ -449,6 +458,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genotpurl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hotp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/motp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otplock.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otptool.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phex.Po@am__quote@
@@ -880,6 +890,7 @@
install-exec-hook:
test -z "$(STRIP)" || $(STRIP) $(DESTDIR)`$(APXS) -q LIBEXECDIR`/mod_authn_otp.so
test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otptool
+ test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otplock
test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/genotpurl
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/aclocal.m4 new/mod_authn_otp-1.1.11/aclocal.m4
--- old/mod_authn_otp-1.1.10/aclocal.m4 2022-05-04 16:53:30.000000000 +0200
+++ new/mod_authn_otp-1.1.11/aclocal.m4 2024-06-27 16:14:38.000000000 +0200
@@ -734,35 +734,6 @@
fi
])
-# -*- Autoconf -*-
-# Obsolete and "removed" macros, that must however still report explicit
-# error messages when used, to smooth transition.
-#
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([AM_CONFIG_HEADER],
-[AC_DIAGNOSE([obsolete],
-['$0': this macro is obsolete.
-You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
-AC_CONFIG_HEADERS($@)])
-
-AC_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-AC_DIAGNOSE([obsolete],
-['$0': this macro is obsolete.
-You should simply use the 'AC][_PROG_CC' macro instead.
-Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
-but upon 'ac_cv_prog_cc_stdc'.])])
-
-AC_DEFUN([AM_C_PROTOTYPES],
- [AC_FATAL([automatic de-ANSI-fication support has been removed])])
-AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
-
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/config.h.in new/mod_authn_otp-1.1.11/config.h.in
--- old/mod_authn_otp-1.1.10/config.h.in 2022-05-04 16:53:30.000000000 +0200
+++ new/mod_authn_otp-1.1.11/config.h.in 2024-06-27 16:14:38.000000000 +0200
@@ -1,5 +1,11 @@
/* config.h.in. Generated from configure.ac by autoheader. */
+/* Define to 1 if you have the header file. */
+#undef HAVE_APR_1_0_APR_FILE_IO_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_APR_1_APR_FILE_IO_H
+
/* Define to 1 if you have the header file. */
#undef HAVE_CTYPE_H
@@ -12,6 +18,9 @@
/* Define to 1 if you have the header file. */
#undef HAVE_INTTYPES_H
+/* Define to 1 if you have the `apr-1' library (-lapr-1). */
+#undef HAVE_LIBAPR_1
+
/* Define to 1 if you have the `crypto' library (-lcrypto). */
#undef HAVE_LIBCRYPTO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/configure new/mod_authn_otp-1.1.11/configure
--- old/mod_authn_otp-1.1.10/configure 2022-05-04 16:53:31.000000000 +0200
+++ new/mod_authn_otp-1.1.11/configure 2024-06-27 16:14:39.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.10.
+# Generated by GNU Autoconf 2.69 for mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.11.
#
# Report bugs to https://github.com/archiecobbs/mod-authn-otp.
#
@@ -580,8 +580,8 @@
# Identity of this package.
PACKAGE_NAME='mod_authn_otp Apache2 authentication module supporting one-time passwords'
PACKAGE_TARNAME='mod_authn_otp'
-PACKAGE_VERSION='1.1.10'
-PACKAGE_STRING='mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.10'
+PACKAGE_VERSION='1.1.11'
+PACKAGE_STRING='mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.11'
PACKAGE_BUGREPORT='https://github.com/archiecobbs/mod-authn-otp'
PACKAGE_URL=''
@@ -1271,7 +1271,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.10 to adapt to many kinds of systems.
+\`configure' configures mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1337,7 +1337,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.10:";;
+ short | recursive ) echo "Configuration of mod_authn_otp Apache2 authentication module supporting one-time passwords 1.1.11:";;
esac
cat <<\_ACEOF
@@ -1429,7 +1429,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-mod_authn_otp Apache2 authentication module supporting one-time passwords configure 1.1.10
+mod_authn_otp Apache2 authentication module supporting one-time passwords configure 1.1.11
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1631,48 +1631,6 @@
} # ac_fn_c_try_cpp
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists, giving a warning if it cannot be compiled using
@@ -1764,6 +1722,48 @@
} # ac_fn_c_check_header_mongrel
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
@@ -1798,7 +1798,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by mod_authn_otp Apache2 authentication module supporting one-time passwords $as_me 1.1.10, which was
+It was created by mod_authn_otp Apache2 authentication module supporting one-time passwords $as_me 1.1.11, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2661,7 +2661,7 @@
# Define the identity of the package.
PACKAGE='mod_authn_otp'
- VERSION='1.1.10'
+ VERSION='1.1.11'
cat >>confdefs.h <<_ACEOF
@@ -4056,6 +4056,53 @@
as_fn_error $? "required library libcrypto missing" "$LINENO" 5
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for apr_file_lock in -lapr-1" >&5
+$as_echo_n "checking for apr_file_lock in -lapr-1... " >&6; }
+if ${ac_cv_lib_apr_1_apr_file_lock+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lapr-1 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char apr_file_lock ();
+int
+main ()
+{
+return apr_file_lock ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_apr_1_apr_file_lock=yes
+else
+ ac_cv_lib_apr_1_apr_file_lock=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_apr_1_apr_file_lock" >&5
+$as_echo "$ac_cv_lib_apr_1_apr_file_lock" >&6; }
+if test "x$ac_cv_lib_apr_1_apr_file_lock" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBAPR_1 1
+_ACEOF
+
+ LIBS="-lapr-1 $LIBS"
+
+else
+ as_fn_error $? "required library libapr missing" "$LINENO" 5
+fi
+
# Check for optional functions
for ac_func in strptime
@@ -4495,6 +4542,30 @@
done
+for ac_header in apr-1/apr_file_io.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "apr-1/apr_file_io.h" "ac_cv_header_apr_1_apr_file_io_h" "$ac_includes_default"
+if test "x$ac_cv_header_apr_1_apr_file_io_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_APR_1_APR_FILE_IO_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in apr-1.0/apr_file_io.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "apr-1.0/apr_file_io.h" "ac_cv_header_apr_1_0_apr_file_io_h" "$ac_includes_default"
+if test "x$ac_cv_header_apr_1_0_apr_file_io_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_APR_1_0_APR_FILE_IO_H 1
+_ACEOF
+
+fi
+
+done
+
# Command line flags
# Check whether --enable-Werror was given.
@@ -4604,6 +4675,7 @@
ac_libobjs=
ac_ltlibobjs=
+U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -5039,7 +5111,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by mod_authn_otp Apache2 authentication module supporting one-time passwords $as_me 1.1.10, which was
+This file was extended by mod_authn_otp Apache2 authentication module supporting one-time passwords $as_me 1.1.11, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -5105,7 +5177,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-mod_authn_otp Apache2 authentication module supporting one-time passwords config.status 1.1.10
+mod_authn_otp Apache2 authentication module supporting one-time passwords config.status 1.1.11
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/configure.ac new/mod_authn_otp-1.1.11/configure.ac
--- old/mod_authn_otp-1.1.10/configure.ac 2022-05-04 16:51:08.000000000 +0200
+++ new/mod_authn_otp-1.1.11/configure.ac 2024-06-27 16:13:00.000000000 +0200
@@ -2,7 +2,7 @@
#
# mod_authn_otp - Apache module for one-time password authentication
#
-# Copyright 2009 Archie L. Cobbs
+# Copyright 2009 Archie L. Cobbs
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
# limitations under the License.
#
-AC_INIT([mod_authn_otp Apache2 authentication module supporting one-time passwords], [1.1.10], [https://github.com/archiecobbs/mod-authn-otp], [mod_authn_otp])
+AC_INIT([mod_authn_otp Apache2 authentication module supporting one-time passwords], [1.1.11], [https://github.com/archiecobbs/mod-authn-otp], [mod_authn_otp])
AC_CONFIG_AUX_DIR(scripts)
AM_INIT_AUTOMAKE
dnl AM_MAINTAINER_MODE
@@ -51,25 +51,28 @@
# Check for required libraries
AC_CHECK_LIB(crypto, EVP_sha1,,
[AC_MSG_ERROR([required library libcrypto missing])])
+AC_CHECK_LIB(apr-1, apr_file_lock,,
+ [AC_MSG_ERROR([required library libapr missing])])
# Check for optional functions
AC_CHECK_FUNCS(strptime)
# Check for required header files
-AC_HEADER_STDC
AC_CHECK_HEADERS(ctype.h errno.h openssl/evp.h openssl/hmac.h openssl/md5.h stdio.h string.h time.h unistd.h, [],
[AC_MSG_ERROR([required header file '$ac_header' not found])])
AC_CHECK_HEADERS(err.h, [], [])
+AC_CHECK_HEADERS(apr-1/apr_file_io.h)
+AC_CHECK_HEADERS(apr-1.0/apr_file_io.h)
# Command line flags
AC_ARG_ENABLE(Werror,
- AC_HELP_STRING([--enable-Werror],
+ AS_HELP_STRING([--enable-Werror],
[enable compilation with -Werror flag (default NO)]),
[test x"$enableval" = "xyes" && CFLAGS="${CFLAGS} -Werror"])
# Generated files
AC_CONFIG_FILES(Makefile)
-AM_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS(config.h)
# Go
AC_OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/errinc.h new/mod_authn_otp-1.1.11/errinc.h
--- old/mod_authn_otp-1.1.10/errinc.h 2018-07-22 04:27:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/errinc.h 2023-01-07 18:43:03.000000000 +0100
@@ -1,6 +1,6 @@
/*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/genotpurl.1 new/mod_authn_otp-1.1.11/genotpurl.1
--- old/mod_authn_otp-1.1.10/genotpurl.1 2020-02-22 21:55:37.000000000 +0100
+++ new/mod_authn_otp-1.1.11/genotpurl.1 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
.\"
.\" genotpurl - Generate Google Authenticator URLs
.\"
-.\" Copyright 2009 Archie L. Cobbs
+.\" Copyright 2009 Archie L. Cobbs
.\"
.\" Licensed under the Apache License, Version 2.0 (the "License");
.\" you may not use this file except in compliance with the License.
@@ -38,8 +38,8 @@
.Nm
is a utility for generating URLs for the Google Authenticator cell phone app, which
generates one-time passwords compatible with the HOTP/OATH algorithm defined by RFC 4226.
-When such and URL is clicked on a cell phone, the token is automatically installed
-into the Google Authenticator app. This is a convenient way to deploy such tokens.
+When an URL is processed by the Google Authenticator app, the corresponding secure token
+is automatically installed into the app.
.Pp
The
.Ar issuer
@@ -54,7 +54,9 @@
.Ar key
is given,
.Nm
-generates a random key and prints it to standard output.
+generates a random key and prints it to standard error;
+this key must then be installed into the server application that verifies the one-time passwords
+and associated with the user who will be using the secure token.
.Pp
The
.Fl i ,
@@ -101,7 +103,15 @@
.Fl i
is given.
.El
+.Sh EXAMPLES
+.Bk -words
+To generate a new secure token and generate the corresponding QR code:
+.Pp
+genotpurl -I "Acme, Inc" -L user@acme.com | qrencode -s 6 -o qrcode.png
+.Ek
.Sh SEE ALSO
+.Xr qrencode 1
+.Pp
.Rs
.%T "mod_authn_otp: Apache module for one-time password authentication"
.%O "https://github.com/archiecobbs/mod-authn-otp"
@@ -115,4 +125,4 @@
.%O "https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US"
.Re
.Sh AUTHOR
-.An Archie L. Cobbs Aq archie@dellroad.org
+.An Archie L. Cobbs Aq archie.cobbs@gmail.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/hotp.c new/mod_authn_otp-1.1.11/hotp.c
--- old/mod_authn_otp-1.1.10/hotp.c 2018-05-25 22:52:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/hotp.c 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
/*
* otptool - HOTP/OATH one-time password utility
*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/mod_authn_otp.c new/mod_authn_otp-1.1.11/mod_authn_otp.c
--- old/mod_authn_otp-1.1.10/mod_authn_otp.c 2018-05-25 22:58:12.000000000 +0200
+++ new/mod_authn_otp-1.1.11/mod_authn_otp.c 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
/*
* mod_authn_otp - Apache module for one-time password authentication
*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/motp.c new/mod_authn_otp-1.1.11/motp.c
--- old/mod_authn_otp-1.1.10/motp.c 2018-05-25 22:52:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/motp.c 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
/*
* otptool - HOTP/OATH one-time password utility
*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/otplock.1 new/mod_authn_otp-1.1.11/otplock.1
--- old/mod_authn_otp-1.1.10/otplock.1 1970-01-01 01:00:00.000000000 +0100
+++ new/mod_authn_otp-1.1.11/otplock.1 2023-01-07 20:24:52.000000000 +0100
@@ -0,0 +1,110 @@
+.\" -*- nroff -*-
+.\"
+.\" otplock - Apache mod_authn_otp one-time users file locker
+.\"
+.\" Copyright 2023 Archie L. Cobbs
+.\"
+.\" Licensed under the Apache License, Version 2.0 (the "License");
+.\" you may not use this file except in compliance with the License.
+.\" You may obtain a copy of the License at
+.\"
+.\" http://www.apache.org/licenses/LICENSE-2.0
+.\"
+.\" Unless required by applicable law or agreed to in writing, software
+.\" distributed under the License is distributed on an "AS IS" BASIS,
+.\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.\" See the License for the specific language governing permissions and
+.\" limitations under the License.
+.\"/
+.Dd January 7, 2023
+.Dt OTPLOCK 1
+.Os
+.Sh NAME
+.Nm otplock
+.Nd Apache mod_authn_otp one-time users file locker
+.Sh SYNOPSIS
+.Nm otplock
+.Bk -words
+.Ar usersfile
+.Op command ...
+.Ek
+.Pp
+.Nm otplock
+.Fl e
+.Ar usersfile
+.Pp
+.Nm otplock
+.Fl h
+.Sh DESCRIPTION
+.Nm
+is a utility for safely accessing the
+.Ar mod_authn_otp
+users file while the Apache server is running.
+.Pp
+Because the users file is dynamically read and updated during normal server operation,
+it's not safe to simultaneously view or edit the file in a separate process without locking it first.
+.Pp
+This utility implements the same locking protocol as the
+.Ar mod_authn_otp
+module.
+It holds the exclusive lock while the given
+.Ar command
+executes.
+This means that long as
+.Ar command
+executes, all server requests that require
+.Ar mod_authn_otp
+for authentication will be temporarily suspended, so command execution should be as brief as possible.
+.Pp
+If no
+.Ar command
+is given,
+.Nm
+simply waits until a lock can be obtained and then exits.
+.Sh OPTIONS
+.Bl -tag -width Ds
+.It Fl e
+Invoke
+.Ar $EDITOR
+with the given
+.Ar usersfile .
+.Pp
+If no
+.Ar $EDITOR
+environment variable is defined,
+.Xr vim 1
+is used.
+.It Fl h
+Print the usage message and exit successfully.
+.El
+.Sh RETURN VALUE
+.Nm
+exits with one of the following return values:
+.Bl -tag -width xxx
+.It 0
+The users file was successfully locked, and either no
+.Ar command
+was given, or the command exited normally.
+.It N
+The given
+.Ar command
+executed but exited with non-zero exit value
+.Ar N .
+.It 85
+.Nm
+was invoked with invalid command line flags or parameters.
+.It 86
+A system error occurred while either locking the file or launching
+.Ar command .
+.It 87
+The given
+.Ar command
+executed but terminated by catching a signal.
+.El
+.Sh SEE ALSO
+.Rs
+.%T "mod_authn_otp: Apache module for one-time password authentication"
+.%O "https://github.com/archiecobbs/mod-authn-otp"
+.Re
+.Sh AUTHOR
+.An Archie L. Cobbs Aq archie.cobbs@gmail.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/otplock.c new/mod_authn_otp-1.1.11/otplock.c
--- old/mod_authn_otp-1.1.10/otplock.c 1970-01-01 01:00:00.000000000 +0100
+++ new/mod_authn_otp-1.1.11/otplock.c 2024-06-27 16:01:03.000000000 +0200
@@ -0,0 +1,202 @@
+
+/*
+ * otplock - Apache mod_authn_otp one-time users file locker
+ *
+ * Copyright 2023 Archie L. Cobbs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "otplock.h"
+#include "config.h"
+
+#if HAVE_APR_1_APR_FILE_IO_H
+#include
+#include
+#include
+#include
+#elif HAVE_APR_1_0_APR_FILE_IO_H
+#include
+#include
+#include
+#include
+#else
+#error "libapr header files not found"
+#endif
+
+#define LOCKFILE_SUFFIX ".lock"
+#define DEFAULT_EDITOR "vim"
+
+extern const char *const *environ;
+
+static void usage(void);
+
+int
+main(int argc, const char *const *argv)
+{
+ char lockfile[APR_PATH_MAX];
+ const char *usersfile;
+ const char *editcmd[3];
+ char errbuf[256];
+ apr_pool_t *pool;
+ apr_file_t *handle = NULL;
+ apr_status_t status;
+ int edit = 0;
+ int ch;
+ int r;
+
+ // Initialize APR
+ if ((status = apr_app_initialize(&argc, &argv, &environ)) != APR_SUCCESS) {
+ warnx("%s: %s", "apr_app_initialize", apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out0;
+ }
+ if ((status = apr_pool_create(&pool, NULL)) != APR_SUCCESS) {
+ warnx("%s: %s", "apr_pool_create", apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out1;
+ }
+
+ // Parse command line
+ while ((ch = getopt(argc, (char **)(intptr_t)argv, "eh")) != -1) {
+ switch (ch) {
+ case 'e':
+ edit = 1;
+ break;
+ case 'h':
+ usage();
+ r = 0;
+ goto out2;
+ default:
+ usage();
+ r = EXIT_USAGE_ERROR;
+ goto out2;
+ }
+ }
+ argc -= optind;
+ argv += optind;
+ switch (argc) {
+ case 0:
+ usage();
+ r = EXIT_USAGE_ERROR;
+ goto out2;
+ default:
+ argc--;
+ usersfile = *argv++;
+ break;
+ }
+
+ // Handle "-e" flag
+ if (edit) {
+ const char *const *ev;
+
+ if (argc > 0) {
+ r = EXIT_USAGE_ERROR;
+ goto out2;
+ }
+ editcmd[0] = DEFAULT_EDITOR;
+ for (ev = environ; *ev != NULL; ev++) {
+ if (strncmp(*ev, "EDITOR=", 7) == 0) {
+ editcmd[0] = *ev + 7;
+ break;
+ }
+ }
+ editcmd[1] = usersfile;
+ editcmd[2] = NULL;
+ argv = editcmd;
+ argc = 2;
+ }
+
+ // Open the lock file
+ apr_snprintf(lockfile, sizeof(lockfile), "%s%s", usersfile, LOCKFILE_SUFFIX);
+ if ((status = apr_file_open(&handle, lockfile, APR_WRITE|APR_CREATE|APR_TRUNCATE, APR_UREAD|APR_UWRITE, pool)) != APR_SUCCESS) {
+ warnx("can't open \"%s\": %s", lockfile, apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out2;
+ }
+
+ // Lock the lock file
+ if ((status = apr_file_lock(handle, APR_FLOCK_EXCLUSIVE)) != APR_SUCCESS) {
+ warnx("can't lock \"%s\": %s", lockfile, apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out3;
+ }
+
+ // Execute command, if any
+ if (*argv != NULL) {
+ apr_procattr_t *pattr;
+ apr_exit_why_e why;
+ apr_proc_t proc;
+ int rval;
+
+ if ((status = apr_procattr_create(&pattr, pool)) != APR_SUCCESS) {
+ warnx("%s: %s", "apr_procattr_create", apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out4;
+ }
+ if ((status = apr_procattr_cmdtype_set(pattr, APR_SHELLCMD_ENV)) != APR_SUCCESS) {
+ warnx("%s: %s", "apr_procattr_cmdtype_set", apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out4;
+ }
+ if ((status = apr_proc_create(&proc, *argv, argv, environ, pattr, pool)) != APR_SUCCESS) {
+ warnx("%s: %s", "apr_proc_create", apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out4;
+ }
+ if ((status = apr_proc_wait(&proc, &rval, &why, APR_WAIT)) != APR_CHILD_DONE) {
+ warnx("%s: %s", "apr_proc_wait", apr_strerror(status, errbuf, sizeof(errbuf)));
+ r = EXIT_SYSTEM_ERROR;
+ goto out4;
+ }
+ switch (why) {
+ case APR_PROC_EXIT:
+ if ((r = rval) == APR_ENOTIMPL)
+ r = 0;
+ break;
+ case APR_PROC_SIGNAL:
+ case APR_PROC_SIGNAL_CORE:
+ r = EXIT_CAUGHT_SIGNAL;
+ break;
+ default:
+ warnx("%s: %s", "apr_proc_wait", "unknown 'why' code");
+ r = EXIT_SYSTEM_ERROR;
+ break;
+ }
+ } else
+ r = 0;
+
+ // Clean up and exit
+out4:
+ apr_file_unlock(handle);
+out3:
+ apr_file_close(handle);
+out2:
+ apr_pool_destroy(pool);
+out1:
+ apr_terminate();
+out0:
+ return r;
+}
+
+static void
+usage()
+{
+ fprintf(stderr, "Usage:\n");
+ fprintf(stderr, " %s usersfile [ command ... ]\n", PROG_NAME);
+ fprintf(stderr, " %s -e usersfile\n", PROG_NAME);
+ fprintf(stderr, " %s -h\n", PROG_NAME);
+ fprintf(stderr, "Options:\n");
+ fprintf(stderr, " -e\tInvoke $EDITOR with usersfile\n");
+ fprintf(stderr, " -h\tDisplay this usage message\n");
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/otplock.h new/mod_authn_otp-1.1.11/otplock.h
--- old/mod_authn_otp-1.1.10/otplock.h 1970-01-01 01:00:00.000000000 +0100
+++ new/mod_authn_otp-1.1.11/otplock.h 2023-01-07 19:41:28.000000000 +0100
@@ -0,0 +1,38 @@
+
+/*
+ * otplock - Apache mod_authn_otp one-time users file locker
+ *
+ * Copyright 2023 Archie L. Cobbs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "errinc.h"
+
+/* Program name */
+#define PROG_NAME "otplock"
+
+/* Error exit values */
+#define EXIT_USAGE_ERROR 85 /* Incorrect command line usage */
+#define EXIT_SYSTEM_ERROR 86 /* Could not open file, etc. */
+#define EXIT_CAUGHT_SIGNAL 87
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/otptool.1 new/mod_authn_otp-1.1.11/otptool.1
--- old/mod_authn_otp-1.1.10/otptool.1 2018-07-27 15:55:01.000000000 +0200
+++ new/mod_authn_otp-1.1.11/otptool.1 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
.\"
.\" otptool - HOTP/OATH one-time password utility
.\"
-.\" Copyright 2009 Archie L. Cobbs
+.\" Copyright 2009 Archie L. Cobbs
.\"
.\" Licensed under the Apache License, Version 2.0 (the "License");
.\" you may not use this file except in compliance with the License.
@@ -177,4 +177,4 @@
.%O "http://motp.sourceforge.net/"
.Re
.Sh AUTHOR
-.An Archie L. Cobbs Aq archie@dellroad.org
+.An Archie L. Cobbs Aq archie.cobbs@gmail.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/otptool.c new/mod_authn_otp-1.1.11/otptool.c
--- old/mod_authn_otp-1.1.10/otptool.c 2018-07-27 15:57:13.000000000 +0200
+++ new/mod_authn_otp-1.1.11/otptool.c 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
/*
* otptool - HOTP/OATH one-time password utility
*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/otptool.h new/mod_authn_otp-1.1.11/otptool.h
--- old/mod_authn_otp-1.1.10/otptool.h 2018-07-22 04:26:56.000000000 +0200
+++ new/mod_authn_otp-1.1.11/otptool.h 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
/*
* otptool - HOTP/OATH one-time password utility
*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_authn_otp-1.1.10/phex.c new/mod_authn_otp-1.1.11/phex.c
--- old/mod_authn_otp-1.1.10/phex.c 2018-05-25 22:52:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/phex.c 2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
/*
* otptool - HOTP/OATH one-time password utility
*
- * Copyright 2009 Archie L. Cobbs
+ * Copyright 2009 Archie L. Cobbs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.