* Makefile.am: Modified file (update the rule of the "maintainer-clean-local" target to remove all the "Makefile.in" files recursively).

* NEWS: Modified file (add the "Support the new passwords with the SRP protocol." line because this is an important new feature).
* README: Modified file (add the "* src/minetest_world_manager_srp.c" line because this file is under an other license).
* README: Modified file (add the "* src/minetest_world_manager_srp.h" line because this file is under an other license).
* TODO: Modified file (remove the "Support the new passwords with the SRP protocol." line because this task is done).
* configure.ac: Modified file (replace "20160530" by "20160621").
* configure.ac: Modified file (check for the "ctype.h" header because it is used by the code).
* configure.ac: Modified file (check for the "gmp.h" header because it is used by the code).
* configure.ac: Modified file (check for the "openssl/sha.h" header because it is used by the code).
* configure.ac: Modified file (check for the "gmp" library because it is used by the code).
* configure.ac: Modified file (check for the "crypto" library because it is used by the code).
* configure.ac: Modified file (add an URL in the error messages when there is a missing header or library).
* src/Makefile.am: Modified file (add the "minetest_world_manager_password.c" file because it is used by the code).
* src/Makefile.am: Modified file (add the "minetest_world_manager_srp.c" file because it is used by the code).
* src/Makefile.am: Modified file (add the "-lgmp" option because it is used by the code).
* src/Makefile.am: Modified file (add the "-lcrypto" option because it is used by the code).
* src/Makefile.in: Deleted file (because it has been added by mistake and is useless).
* src/minetest_world_manager_base64.c: Modified file (replace "minetest_world_manager_base64.cpp" by "minetest_world_manager_base64.c").
* src/minetest_world_manager_base64.c: Modified file (include the "ctype.h" header because it is used by the code).
* src/minetest_world_manager_base64.c: Modified file (include the "string.h" header because it is used by the code).
* src/minetest_world_manager_base64.c: Modified file (add the "minetest_world_manager_base64_chars" global variable).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_is_base64): Modified file (add the declaration of this static function).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_is_base64): Modified file (add the definition of this static function).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_decode): Modified file (add the definition of this function).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_encode): Modified file (remove the "base64_chars" local variable).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_encode): Modified file (replace "base64_chars" by "minetest_world_manager_base64_chars").
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_encode): Modified file (check if "ret" is not equal to NULL).
* src/minetest_world_manager_base64.h(minetest_world_manager_base64_decode): Modified file (add the declaration of this function).
* src/minetest_world_manager_main.c(minetest_world_manager_main_exit): Modified file (add the declaration of this static function).
* src/minetest_world_manager_main.c(minetest_world_manager_main_variables_initialize): Modified file (add the declaration of this static function).
* src/minetest_world_manager_password.c: Added file (contains the definitions of password functions).
* src/minetest_world_manager_password.h: Added file (contains the declarations of password functions).
* src/minetest_world_manager_player.c: Modified file (include the "minetest_world_manager_password.h" header because it is used by the code).
* src/minetest_world_manager_player.c: Modified file (include the "minetest_world_manager_srp.h" header because it is used by the code).
* src/minetest_world_manager_player.c: Modified file (include the "minetest_world_manager_string.h" header because it is used by the code).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_key" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_password" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_password_to_check" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_salt" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_srp_key" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_srp_salt" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "name_lower" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "srp_key" parameter to this function).

* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_key" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_password" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_password_to_check" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_salt" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_srp_key" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_srp_salt" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "name_lower" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "srp_key" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected): Modified file (replace "Unable to encrypt the password because the name is not provided" by "Unable to check the password because the provided name is null").
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected): Modified file (handle the case of a password with the SRP protocol).
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (replace "set PASSWORD as a hashed password (encrypted with sha1 then encoded with base64)" by "set PASSWORD as an encrypted password encoded with base64").
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (update the examples in order to use the current date).
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (update the examples in order to use a password with the SRP protocol).
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (replace "hashed password" by "encrypted and encoded password").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_get_digest_return): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_lrot): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_process): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_store_big_endian_uint32): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c: Modified file (replace "Uint32" by "minetest_world_manager_sha1_uint32_t").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_process): Modified file (replace "W" by "w").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_process): Modified file (replace "K" by "k").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_get_digest): Modified file (replace "totalBitsL" by "total_bits_l").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_get_digest): Modified file (replace "totalBitsH" by "total_bits_h").
* src/minetest_world_manager_sha1.h: Modified file (replace "Uint32" by "minetest_world_manager_sha1_uint32_t").
* src/minetest_world_manager_srp.c: Added file (contains the definitions of SRP functions).
* src/minetest_world_manager_srp.h: Added file (contains the declarations of SRP functions).
* src/minetest_world_manager_string.c: Modified file (include the "ctype.h" header because it is used by the code).
* src/minetest_world_manager_string.c: Modified file (include the "string.h" header because it is used by the code).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (add the "delim" parameter to this function).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (remove the "delim" local variable).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (remove the "\n" character at the end of error messages).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (replace "pos_end != pos_start" by "string[pos_start] != delim && string[pos_end] != delim").
* src/minetest_world_manager_string.c(minetest_world_manager_string_tolower): Modified file (add the definition of this function).
* src/minetest_world_manager_string.h(minetest_world_manager_string_get_field): Modified file (add the "delim" parameter to this function).
* src/minetest_world_manager_string.h(minetest_world_manager_string_tolower): Modified file (add the declaration of this function).
* src/minetest_world_manager_world.c(minetest_world_manager_world_manage_return): Modified file (add the declaration of this static function).
* src/minetest_world_manager_world.c(minetest_world_manager_world_manage_return): Modified file (use ":" for the third parameter of the "minetest_world_manager_string_get_field" function call).
master
YuGiOhJCJ 2016-06-21 18:48:23 +02:00
parent 4b0ada50b5
commit 8a1aedd2a1
22 changed files with 837 additions and 725 deletions

163
ChangeLog
View File

@ -1,3 +1,166 @@
2016-06-21 YuGiOhJCJ <yugiohjcj@1s.fr>
* Makefile.am: Modified file (update the rule of the "maintainer-clean-local" target to remove all the "Makefile.in" files recursively).
* NEWS: Modified file (add the "Support the new passwords with the SRP protocol." line because this is an important new feature).
* README: Modified file (add the "* src/minetest_world_manager_srp.c" line because this file is under an other license).
* README: Modified file (add the "* src/minetest_world_manager_srp.h" line because this file is under an other license).
* TODO: Modified file (remove the "Support the new passwords with the SRP protocol." line because this task is done).
* configure.ac: Modified file (replace "20160530" by "20160621").
* configure.ac: Modified file (check for the "ctype.h" header because it is used by the code).
* configure.ac: Modified file (check for the "gmp.h" header because it is used by the code).
* configure.ac: Modified file (check for the "openssl/sha.h" header because it is used by the code).
* configure.ac: Modified file (check for the "gmp" library because it is used by the code).
* configure.ac: Modified file (check for the "crypto" library because it is used by the code).
* configure.ac: Modified file (add an URL in the error messages when there is a missing header or library).
* src/Makefile.am: Modified file (add the "minetest_world_manager_password.c" file because it is used by the code).
* src/Makefile.am: Modified file (add the "minetest_world_manager_srp.c" file because it is used by the code).
* src/Makefile.am: Modified file (add the "-lgmp" option because it is used by the code).
* src/Makefile.am: Modified file (add the "-lcrypto" option because it is used by the code).
* src/Makefile.in: Deleted file (because it has been added by mistake and is useless).
* src/minetest_world_manager_base64.c: Modified file (replace "minetest_world_manager_base64.cpp" by "minetest_world_manager_base64.c").
* src/minetest_world_manager_base64.c: Modified file (include the "ctype.h" header because it is used by the code).
* src/minetest_world_manager_base64.c: Modified file (include the "string.h" header because it is used by the code).
* src/minetest_world_manager_base64.c: Modified file (add the "minetest_world_manager_base64_chars" global variable).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_is_base64): Modified file (add the declaration of this static function).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_is_base64): Modified file (add the definition of this static function).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_decode): Modified file (add the definition of this function).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_encode): Modified file (remove the "base64_chars" local variable).
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_encode): Modified file (replace "base64_chars" by "minetest_world_manager_base64_chars").
* src/minetest_world_manager_base64.c(minetest_world_manager_base64_encode): Modified file (check if "ret" is not equal to NULL).
* src/minetest_world_manager_base64.h(minetest_world_manager_base64_decode): Modified file (add the declaration of this function).
* src/minetest_world_manager_main.c(minetest_world_manager_main_exit): Modified file (add the declaration of this static function).
* src/minetest_world_manager_main.c(minetest_world_manager_main_variables_initialize): Modified file (add the declaration of this static function).
* src/minetest_world_manager_password.c: Added file (contains the definitions of password functions).
* src/minetest_world_manager_password.h: Added file (contains the declarations of password functions).
* src/minetest_world_manager_player.c: Modified file (include the "minetest_world_manager_password.h" header because it is used by the code).
* src/minetest_world_manager_player.c: Modified file (include the "minetest_world_manager_srp.h" header because it is used by the code).
* src/minetest_world_manager_player.c: Modified file (include the "minetest_world_manager_string.h" header because it is used by the code).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_key" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_password" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_password_to_check" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_salt" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_srp_key" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "base64_srp_salt" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "name_lower" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (add the "srp_key" parameter to this function).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_key" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_password" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_password_to_check" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_salt" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_srp_key" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "base64_srp_salt" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "name_lower" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected_return): Modified file (free the "srp_key" variable).
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected): Modified file (replace "Unable to encrypt the password because the name is not provided" by "Unable to check the password because the provided name is null").
* src/minetest_world_manager_player.c(minetest_world_manager_player_is_selected): Modified file (handle the case of a password with the SRP protocol).
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (replace "set PASSWORD as a hashed password (encrypted with sha1 then encoded with base64)" by "set PASSWORD as an encrypted password encoded with base64").
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (update the examples in order to use the current date).
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (update the examples in order to use a password with the SRP protocol).
* src/minetest_world_manager_print.c(minetest_world_manager_print_help): Modified file (replace "hashed password" by "encrypted and encoded password").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_get_digest_return): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_lrot): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_process): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_store_big_endian_uint32): Modified file (add the declaration of this static function).
* src/minetest_world_manager_sha1.c: Modified file (replace "Uint32" by "minetest_world_manager_sha1_uint32_t").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_process): Modified file (replace "W" by "w").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_process): Modified file (replace "K" by "k").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_get_digest): Modified file (replace "totalBitsL" by "total_bits_l").
* src/minetest_world_manager_sha1.c(minetest_world_manager_sha1_get_digest): Modified file (replace "totalBitsH" by "total_bits_h").
* src/minetest_world_manager_sha1.h: Modified file (replace "Uint32" by "minetest_world_manager_sha1_uint32_t").
* src/minetest_world_manager_srp.c: Added file (contains the definitions of SRP functions).
* src/minetest_world_manager_srp.h: Added file (contains the declarations of SRP functions).
* src/minetest_world_manager_string.c: Modified file (include the "ctype.h" header because it is used by the code).
* src/minetest_world_manager_string.c: Modified file (include the "string.h" header because it is used by the code).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (add the "delim" parameter to this function).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (remove the "delim" local variable).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (remove the "\n" character at the end of error messages).
* src/minetest_world_manager_string.c(minetest_world_manager_string_get_field): Modified file (replace "pos_end != pos_start" by "string[pos_start] != delim && string[pos_end] != delim").
* src/minetest_world_manager_string.c(minetest_world_manager_string_tolower): Modified file (add the definition of this function).
* src/minetest_world_manager_string.h(minetest_world_manager_string_get_field): Modified file (add the "delim" parameter to this function).
* src/minetest_world_manager_string.h(minetest_world_manager_string_tolower): Modified file (add the declaration of this function).
* src/minetest_world_manager_world.c(minetest_world_manager_world_manage_return): Modified file (add the declaration of this static function).
* src/minetest_world_manager_world.c(minetest_world_manager_world_manage_return): Modified file (use ":" for the third parameter of the "minetest_world_manager_string_get_field" function call).
2016-05-30 YuGiOhJCJ <yugiohjcj@1s.fr>
* *: First version.

View File

@ -19,4 +19,4 @@ dist_doc_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README TODO
edit:
gvim -p `find . -name *.c -o -name *.h -o -name Makefile.am -o -name configure.ac | sort` $(dist_doc_DATA)
maintainer-clean-local:
rm -rfv aclocal.m4 compile configure depcomp install-sh Makefile.in missing
rm -rfv aclocal.m4 compile configure depcomp install-sh missing `find . -name Makefile.in`

2
NEWS
View File

@ -0,0 +1,2 @@
2016-06-21:
* Support the new passwords with the SRP protocol.

2
README
View File

@ -19,4 +19,6 @@ See the AUTHORS file for the contact address.
* src/minetest_world_manager_base64.h
* src/minetest_world_manager_sha1.c
* src/minetest_world_manager_sha1.h
* src/minetest_world_manager_srp.c
* src/minetest_world_manager_srp.h
The corresponding license is attached to the start of these files.

1
TODO
View File

@ -1 +0,0 @@
Support the new passwords with the SRP protocol.

View File

@ -13,17 +13,22 @@
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_INIT([Minetest World Manager], [20160530], [yugiohjcj@1s.fr], [], [http://yugiohjcj.1s.fr/])
AC_INIT([Minetest World Manager], [20160621], [yugiohjcj@1s.fr], [], [http://yugiohjcj.1s.fr/])
AM_INIT_AUTOMAKE
AM_PROG_CC_C_O
AC_CHECK_HEADER([errno.h], [], [AC_MSG_ERROR([missing header: errno.h])])
AC_CHECK_HEADER([getopt.h], [], [AC_MSG_ERROR([missing header: getopt.h])])
AC_CHECK_HEADER([limits.h], [], [AC_MSG_ERROR([missing header: limits.h])])
AC_CHECK_HEADER([stdarg.h], [], [AC_MSG_ERROR([missing header: stdarg.h])])
AC_CHECK_HEADER([stdio.h], [], [AC_MSG_ERROR([missing header: stdio.h])])
AC_CHECK_HEADER([stdlib.h], [], [AC_MSG_ERROR([missing header: stdlib.h])])
AC_CHECK_HEADER([string.h], [], [AC_MSG_ERROR([missing header: string.h])])
AC_CHECK_HEADER([time.h], [], [AC_MSG_ERROR([missing header: time.h])])
AC_CHECK_HEADER([ctype.h], [], [AC_MSG_ERROR([missing header: ctype.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([errno.h], [], [AC_MSG_ERROR([missing header: errno.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([getopt.h], [], [AC_MSG_ERROR([missing header: getopt.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([gmp.h], [], [AC_MSG_ERROR([missing header: gmp.h (see https://gmplib.org/)])])
AC_CHECK_HEADER([limits.h], [], [AC_MSG_ERROR([missing header: limits.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([openssl/sha.h], [], [AC_MSG_ERROR([missing header: openssl/sha.h (see https://www.openssl.org/)])])
AC_CHECK_HEADER([stdarg.h], [], [AC_MSG_ERROR([missing header: stdarg.h (see https://gcc.gnu.org/)])])
AC_CHECK_HEADER([stdio.h], [], [AC_MSG_ERROR([missing header: stdio.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([stdlib.h], [], [AC_MSG_ERROR([missing header: stdlib.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([string.h], [], [AC_MSG_ERROR([missing header: string.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_HEADER([time.h], [], [AC_MSG_ERROR([missing header: time.h (see https://www.gnu.org/software/libc/)])])
AC_CHECK_LIB([gmp], [__gmpz_init], [], [AC_MSG_ERROR([missing library: gmp (see https://gmplib.org/)])])
AC_CHECK_LIB([crypto], [SHA1_Init], [], [AC_MSG_ERROR([missing library: crypto (see https://www.openssl.org/)])])
AC_ARG_ENABLE([maintainer-version], [AS_HELP_STRING([--enable-maintainer-version], [enable the maintainer version])], [case "${enableval}" in yes) maintainer_version=true ;; no) maintainer_version=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-maintainer-version]) ;; esac], [maintainer_version=false])
AS_IF([test "x$maintainer_version" = "xtrue"], [AC_DEFINE([MAINTAINER_VERSION]) AC_SUBST([MAINTAINER_CFLAGS], ['-std=c89 -Wall -Werror -pedantic -g'])], [AC_SUBST([MAINTAINER_CFLAGS], [''])])
AC_CONFIG_FILES([Makefile src/Makefile])

View File

@ -14,5 +14,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
bin_PROGRAMS = minetest-world-manager
minetest_world_manager_SOURCES = minetest_world_manager_main.c minetest_world_manager_base64.c minetest_world_manager_file.c minetest_world_manager_player.c minetest_world_manager_print.c minetest_world_manager_sha1.c minetest_world_manager_string.c minetest_world_manager_time.c minetest_world_manager_world.c
minetest_world_manager_SOURCES = minetest_world_manager_main.c minetest_world_manager_base64.c minetest_world_manager_file.c minetest_world_manager_password.c minetest_world_manager_player.c minetest_world_manager_print.c minetest_world_manager_sha1.c minetest_world_manager_srp.c minetest_world_manager_string.c minetest_world_manager_time.c minetest_world_manager_world.c
minetest_world_manager_CFLAGS = @MAINTAINER_CFLAGS@
minetest_world_manager_LDFLAGS = -lgmp -lcrypto

View File

@ -1,625 +0,0 @@
# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
# Foundation, Inc.
# This Makefile.in 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.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__make_dryrun = \
{ \
am__dry=no; \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
*) \
for am__flg in $$MAKEFLAGS; do \
case $$am__flg in \
*=*|--*) ;; \
*n*) am__dry=yes; break;; \
esac; \
done;; \
esac; \
test $$am__dry = yes; \
}
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = minetest-world-manager$(EXEEXT)
subdir = src
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_minetest_world_manager_OBJECTS = \
minetest_world_manager-minetest_world_manager_main.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_base64.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_file.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_player.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_print.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_sha1.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_string.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_time.$(OBJEXT) \
minetest_world_manager-minetest_world_manager_world.$(OBJEXT)
minetest_world_manager_OBJECTS = $(am_minetest_world_manager_OBJECTS)
minetest_world_manager_LDADD = $(LDADD)
minetest_world_manager_LINK = $(CCLD) $(minetest_world_manager_CFLAGS) \
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(minetest_world_manager_SOURCES)
DIST_SOURCES = $(minetest_world_manager_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
minetest_world_manager_SOURCES = minetest_world_manager_main.c minetest_world_manager_base64.c minetest_world_manager_file.c minetest_world_manager_player.c minetest_world_manager_print.c minetest_world_manager_sha1.c minetest_world_manager_string.c minetest_world_manager_time.c minetest_world_manager_world.c
minetest_world_manager_CFLAGS = @MAINTAINER_CFLAGS@
all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
minetest-world-manager$(EXEEXT): $(minetest_world_manager_OBJECTS) $(minetest_world_manager_DEPENDENCIES) $(EXTRA_minetest_world_manager_DEPENDENCIES)
@rm -f minetest-world-manager$(EXEEXT)
$(minetest_world_manager_LINK) $(minetest_world_manager_OBJECTS) $(minetest_world_manager_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
minetest_world_manager-minetest_world_manager_main.o: minetest_world_manager_main.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_main.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Tpo -c -o minetest_world_manager-minetest_world_manager_main.o `test -f 'minetest_world_manager_main.c' || echo '$(srcdir)/'`minetest_world_manager_main.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_main.c' object='minetest_world_manager-minetest_world_manager_main.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_main.o `test -f 'minetest_world_manager_main.c' || echo '$(srcdir)/'`minetest_world_manager_main.c
minetest_world_manager-minetest_world_manager_main.obj: minetest_world_manager_main.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_main.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Tpo -c -o minetest_world_manager-minetest_world_manager_main.obj `if test -f 'minetest_world_manager_main.c'; then $(CYGPATH_W) 'minetest_world_manager_main.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_main.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_main.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_main.c' object='minetest_world_manager-minetest_world_manager_main.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_main.obj `if test -f 'minetest_world_manager_main.c'; then $(CYGPATH_W) 'minetest_world_manager_main.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_main.c'; fi`
minetest_world_manager-minetest_world_manager_base64.o: minetest_world_manager_base64.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_base64.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Tpo -c -o minetest_world_manager-minetest_world_manager_base64.o `test -f 'minetest_world_manager_base64.c' || echo '$(srcdir)/'`minetest_world_manager_base64.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_base64.c' object='minetest_world_manager-minetest_world_manager_base64.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_base64.o `test -f 'minetest_world_manager_base64.c' || echo '$(srcdir)/'`minetest_world_manager_base64.c
minetest_world_manager-minetest_world_manager_base64.obj: minetest_world_manager_base64.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_base64.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Tpo -c -o minetest_world_manager-minetest_world_manager_base64.obj `if test -f 'minetest_world_manager_base64.c'; then $(CYGPATH_W) 'minetest_world_manager_base64.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_base64.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_base64.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_base64.c' object='minetest_world_manager-minetest_world_manager_base64.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_base64.obj `if test -f 'minetest_world_manager_base64.c'; then $(CYGPATH_W) 'minetest_world_manager_base64.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_base64.c'; fi`
minetest_world_manager-minetest_world_manager_file.o: minetest_world_manager_file.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_file.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Tpo -c -o minetest_world_manager-minetest_world_manager_file.o `test -f 'minetest_world_manager_file.c' || echo '$(srcdir)/'`minetest_world_manager_file.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_file.c' object='minetest_world_manager-minetest_world_manager_file.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_file.o `test -f 'minetest_world_manager_file.c' || echo '$(srcdir)/'`minetest_world_manager_file.c
minetest_world_manager-minetest_world_manager_file.obj: minetest_world_manager_file.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_file.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Tpo -c -o minetest_world_manager-minetest_world_manager_file.obj `if test -f 'minetest_world_manager_file.c'; then $(CYGPATH_W) 'minetest_world_manager_file.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_file.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_file.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_file.c' object='minetest_world_manager-minetest_world_manager_file.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_file.obj `if test -f 'minetest_world_manager_file.c'; then $(CYGPATH_W) 'minetest_world_manager_file.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_file.c'; fi`
minetest_world_manager-minetest_world_manager_player.o: minetest_world_manager_player.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_player.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Tpo -c -o minetest_world_manager-minetest_world_manager_player.o `test -f 'minetest_world_manager_player.c' || echo '$(srcdir)/'`minetest_world_manager_player.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_player.c' object='minetest_world_manager-minetest_world_manager_player.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_player.o `test -f 'minetest_world_manager_player.c' || echo '$(srcdir)/'`minetest_world_manager_player.c
minetest_world_manager-minetest_world_manager_player.obj: minetest_world_manager_player.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_player.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Tpo -c -o minetest_world_manager-minetest_world_manager_player.obj `if test -f 'minetest_world_manager_player.c'; then $(CYGPATH_W) 'minetest_world_manager_player.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_player.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_player.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_player.c' object='minetest_world_manager-minetest_world_manager_player.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_player.obj `if test -f 'minetest_world_manager_player.c'; then $(CYGPATH_W) 'minetest_world_manager_player.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_player.c'; fi`
minetest_world_manager-minetest_world_manager_print.o: minetest_world_manager_print.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_print.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Tpo -c -o minetest_world_manager-minetest_world_manager_print.o `test -f 'minetest_world_manager_print.c' || echo '$(srcdir)/'`minetest_world_manager_print.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_print.c' object='minetest_world_manager-minetest_world_manager_print.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_print.o `test -f 'minetest_world_manager_print.c' || echo '$(srcdir)/'`minetest_world_manager_print.c
minetest_world_manager-minetest_world_manager_print.obj: minetest_world_manager_print.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_print.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Tpo -c -o minetest_world_manager-minetest_world_manager_print.obj `if test -f 'minetest_world_manager_print.c'; then $(CYGPATH_W) 'minetest_world_manager_print.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_print.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_print.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_print.c' object='minetest_world_manager-minetest_world_manager_print.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_print.obj `if test -f 'minetest_world_manager_print.c'; then $(CYGPATH_W) 'minetest_world_manager_print.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_print.c'; fi`
minetest_world_manager-minetest_world_manager_sha1.o: minetest_world_manager_sha1.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_sha1.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Tpo -c -o minetest_world_manager-minetest_world_manager_sha1.o `test -f 'minetest_world_manager_sha1.c' || echo '$(srcdir)/'`minetest_world_manager_sha1.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_sha1.c' object='minetest_world_manager-minetest_world_manager_sha1.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_sha1.o `test -f 'minetest_world_manager_sha1.c' || echo '$(srcdir)/'`minetest_world_manager_sha1.c
minetest_world_manager-minetest_world_manager_sha1.obj: minetest_world_manager_sha1.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_sha1.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Tpo -c -o minetest_world_manager-minetest_world_manager_sha1.obj `if test -f 'minetest_world_manager_sha1.c'; then $(CYGPATH_W) 'minetest_world_manager_sha1.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_sha1.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_sha1.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_sha1.c' object='minetest_world_manager-minetest_world_manager_sha1.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_sha1.obj `if test -f 'minetest_world_manager_sha1.c'; then $(CYGPATH_W) 'minetest_world_manager_sha1.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_sha1.c'; fi`
minetest_world_manager-minetest_world_manager_string.o: minetest_world_manager_string.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_string.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Tpo -c -o minetest_world_manager-minetest_world_manager_string.o `test -f 'minetest_world_manager_string.c' || echo '$(srcdir)/'`minetest_world_manager_string.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_string.c' object='minetest_world_manager-minetest_world_manager_string.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_string.o `test -f 'minetest_world_manager_string.c' || echo '$(srcdir)/'`minetest_world_manager_string.c
minetest_world_manager-minetest_world_manager_string.obj: minetest_world_manager_string.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_string.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Tpo -c -o minetest_world_manager-minetest_world_manager_string.obj `if test -f 'minetest_world_manager_string.c'; then $(CYGPATH_W) 'minetest_world_manager_string.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_string.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_string.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_string.c' object='minetest_world_manager-minetest_world_manager_string.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_string.obj `if test -f 'minetest_world_manager_string.c'; then $(CYGPATH_W) 'minetest_world_manager_string.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_string.c'; fi`
minetest_world_manager-minetest_world_manager_time.o: minetest_world_manager_time.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_time.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Tpo -c -o minetest_world_manager-minetest_world_manager_time.o `test -f 'minetest_world_manager_time.c' || echo '$(srcdir)/'`minetest_world_manager_time.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_time.c' object='minetest_world_manager-minetest_world_manager_time.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_time.o `test -f 'minetest_world_manager_time.c' || echo '$(srcdir)/'`minetest_world_manager_time.c
minetest_world_manager-minetest_world_manager_time.obj: minetest_world_manager_time.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_time.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Tpo -c -o minetest_world_manager-minetest_world_manager_time.obj `if test -f 'minetest_world_manager_time.c'; then $(CYGPATH_W) 'minetest_world_manager_time.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_time.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_time.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_time.c' object='minetest_world_manager-minetest_world_manager_time.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_time.obj `if test -f 'minetest_world_manager_time.c'; then $(CYGPATH_W) 'minetest_world_manager_time.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_time.c'; fi`
minetest_world_manager-minetest_world_manager_world.o: minetest_world_manager_world.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_world.o -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Tpo -c -o minetest_world_manager-minetest_world_manager_world.o `test -f 'minetest_world_manager_world.c' || echo '$(srcdir)/'`minetest_world_manager_world.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_world.c' object='minetest_world_manager-minetest_world_manager_world.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_world.o `test -f 'minetest_world_manager_world.c' || echo '$(srcdir)/'`minetest_world_manager_world.c
minetest_world_manager-minetest_world_manager_world.obj: minetest_world_manager_world.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -MT minetest_world_manager-minetest_world_manager_world.obj -MD -MP -MF $(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Tpo -c -o minetest_world_manager-minetest_world_manager_world.obj `if test -f 'minetest_world_manager_world.c'; then $(CYGPATH_W) 'minetest_world_manager_world.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_world.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Tpo $(DEPDIR)/minetest_world_manager-minetest_world_manager_world.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minetest_world_manager_world.c' object='minetest_world_manager-minetest_world_manager_world.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minetest_world_manager_CFLAGS) $(CFLAGS) -c -o minetest_world_manager-minetest_world_manager_world.obj `if test -f 'minetest_world_manager_world.c'; then $(CYGPATH_W) 'minetest_world_manager_world.c'; else $(CYGPATH_W) '$(srcdir)/minetest_world_manager_world.c'; fi`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,5 +1,5 @@
/*
minetest_world_manager_base64.cpp
minetest_world_manager_base64.c
This is an altered source version.
This is not the original source code written by René Nyffenegger.
@ -28,12 +28,93 @@ freely, subject to the following restrictions:
YuGiOhJCJ <yugiohjcj@1s.fr>
René Nyffenegger <rene.nyffenegger@adp-gmbh.ch>
*/
#include <ctype.h> /* for isalnum */
#include <stdlib.h> /* for NULL */
#include <string.h> /* for strlen */
#include "minetest_world_manager_base64.h" /* for minetest_world_manager_base64_encode */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
static const char *minetest_world_manager_base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static int minetest_world_manager_base64_is_base64(unsigned char c);
static int minetest_world_manager_base64_is_base64(unsigned char c)
{
return (isalnum(c) || (c == '+') || (c == '/'));
}
char *minetest_world_manager_base64_decode(const char *encoded_string, size_t *ret_size)
{
int in_len = strlen(encoded_string);
int i = 0;
int j = 0;
int in_ = 0;
unsigned char char_array_4[4], char_array_3[3];
char *ret = NULL;
*ret_size = 0;
while(in_len-- && (encoded_string[in_] != '=') && minetest_world_manager_base64_is_base64(encoded_string[in_]))
{
char_array_4[i++] = encoded_string[in_]; in_++;
if(i ==4)
{
for(i = 0; i <4; i++)
{
char *character = strchr(minetest_world_manager_base64_chars, char_array_4[i]);
if(character == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the character for the base64 decoded value.");
return NULL;
}
char_array_4[i] = character - minetest_world_manager_base64_chars;
}
char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
for(i = 0; (i < 3); i++)
{
(*ret_size)++;
ret = realloc(ret, sizeof(char) * (*ret_size + 1));
if(ret == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the base64 decoded value.");
return NULL;
}
ret[*ret_size - 1] = char_array_3[i];
}
i = 0;
}
}
if(i)
{
for(j = i; j <4; j++)
char_array_4[j] = 0;
for(j = 0; j <4; j++)
{
char *character = strchr(minetest_world_manager_base64_chars, char_array_4[j]);
if(character == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the character for the base64 decoded value.");
return NULL;
}
char_array_4[j] = character - minetest_world_manager_base64_chars;
}
char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
for(j = 0; (j < i - 1); j++)
{
(*ret_size)++;
ret = realloc(ret, sizeof(char) * (*ret_size + 1));
if(ret == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the base64 decoded value.");
return NULL;
}
ret[*ret_size - 1] = char_array_3[j];
}
}
if(ret != NULL)
ret[*ret_size] = '\0';
return ret;
}
char *minetest_world_manager_base64_encode(unsigned char const *bytes_to_encode, unsigned int in_len)
{
const char *base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
char *ret = NULL;
int ret_size = 0;
int i = 0;
@ -57,8 +138,8 @@ char *minetest_world_manager_base64_encode(unsigned char const *bytes_to_encode,
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the base64 encoded value.");
return NULL;
}
ret[ret_size - 1] = base64_chars[char_array_4[i]];
}
ret[ret_size - 1] = minetest_world_manager_base64_chars[char_array_4[i]];
}
i = 0;
}
@ -79,10 +160,11 @@ char *minetest_world_manager_base64_encode(unsigned char const *bytes_to_encode,
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the base64 encoded value.");
return NULL;
}
ret[ret_size - 1] = base64_chars[char_array_4[j]];
}
ret[ret_size - 1] = minetest_world_manager_base64_chars[char_array_4[j]];
}
}
ret[ret_size] = '\0';
if(ret != NULL)
ret[ret_size] = '\0';
return ret;
}

View File

@ -30,5 +30,6 @@ René Nyffenegger <rene.nyffenegger@adp-gmbh.ch>
*/
#ifndef minetest_world_manager_base64_h
#define minetest_world_manager_base64_h
char *minetest_world_manager_base64_decode(const char *encoded_string, size_t *ret_size);
char *minetest_world_manager_base64_encode(unsigned char const *bytes_to_encode, unsigned int in_len);
#endif

View File

@ -31,6 +31,8 @@ typedef struct
char *start_time;
char *time;
} minetest_world_manager_main_variables_t;
static void minetest_world_manager_main_exit(int status, minetest_world_manager_main_variables_t *variables);
static void minetest_world_manager_main_variables_initialize(minetest_world_manager_main_variables_t *variables);
static void minetest_world_manager_main_exit(int status, minetest_world_manager_main_variables_t *variables)
{
if(variables->name != NULL)

View File

@ -0,0 +1,49 @@
/*
Minetest World Manager: Manage Minetest worlds.
Copyright (C) 2016 YuGiOhJCJ
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/>.
*/
#include <string.h> /* for strlen */
#include "minetest_world_manager_password.h" /* for minetest_world_manager_password_get_base64_key */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
#include "minetest_world_manager_string.h" /* for minetest_world_manager_string_get_field */
char *minetest_world_manager_password_get_base64_key(const char *password)
{
char *key = minetest_world_manager_string_get_field(password, 4, '#');
if(key == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the key from the \"%s\" password.", password);
return NULL;
}
return key;
}
char *minetest_world_manager_password_get_base64_salt(const char *password)
{
char *salt = minetest_world_manager_string_get_field(password, 3, '#');
if(salt == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the salt from the \"%s\" password.", password);
return NULL;
}
return salt;
}
int minetest_world_manager_password_has_base64_key_and_base64_salt(const char *password)
{
if(strlen(password) < 3)
return 1;
if(password[0] != '#' || password[1] != '1' || password[2] != '#')
return 1;
return 0;
}

View File

@ -0,0 +1,23 @@
/*
Minetest World Manager: Manage Minetest worlds.
Copyright (C) 2016 YuGiOhJCJ
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 minetest_world_manager_password_h
#define minetest_world_manager_password_h
char *minetest_world_manager_password_get_base64_key(const char *password);
char *minetest_world_manager_password_get_base64_salt(const char *password);
int minetest_world_manager_password_has_base64_key_and_base64_salt(const char *password);
#endif

View File

@ -21,12 +21,46 @@
#include <stdlib.h> /* for malloc */
#include <string.h> /* for strlen */
#include "minetest_world_manager_base64.h" /* for minetest_world_manager_base64_encode */
#include "minetest_world_manager_password.h" /* for minetest_world_manager_password_get_base64_key */
#include "minetest_world_manager_player.h" /* for minetest_world_manager_player_is_selected */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
#include "minetest_world_manager_sha1.h" /* for minetest_world_manager_sha1_t */
#include "minetest_world_manager_srp.h" /* for minetest_world_manager_srp_create_salted_verification_key */
#include "minetest_world_manager_string.h" /* for minetest_world_manager_string_tolower */
#include "minetest_world_manager_time.h" /* for minetest_world_manager_time_formatted_time_to_long_int */
static int minetest_world_manager_player_is_selected_return(int value, unsigned char *digest, char *digest_encoded, char *salt)
static int minetest_world_manager_player_is_selected_return(int value, char *base64_key, char *base64_password, char *base64_password_to_check, char *base64_salt, char *base64_srp_key, char *base64_srp_salt, unsigned char *digest, char *digest_encoded, char *name_lower, char *salt, unsigned char *srp_key);
static int minetest_world_manager_player_is_selected_return(int value, char *base64_key, char *base64_password, char *base64_password_to_check, char *base64_salt, char *base64_srp_key, char *base64_srp_salt, unsigned char *digest, char *digest_encoded, char *name_lower, char *salt, unsigned char *srp_key)
{
if(base64_key != NULL)
{
free(base64_key);
base64_key = NULL;
}
if(base64_password != NULL)
{
free(base64_password);
base64_password = NULL;
}
if(base64_password_to_check != NULL)
{
free(base64_password_to_check);
base64_password_to_check = NULL;
}
if(base64_salt != NULL)
{
free(base64_salt);
base64_salt = NULL;
}
if(base64_srp_key != NULL)
{
free(base64_srp_key);
base64_srp_key = NULL;
}
if(base64_srp_salt != NULL)
{
free(base64_srp_salt);
base64_srp_salt = NULL;
}
if(digest != NULL)
{
free(digest);
@ -37,74 +71,179 @@ static int minetest_world_manager_player_is_selected_return(int value, unsigned
free(digest_encoded);
digest_encoded = NULL;
}
if(name_lower != NULL)
{
free(name_lower);
name_lower = NULL;
}
if(salt != NULL)
{
free(salt);
salt = NULL;
}
if(srp_key != NULL)
{
free(srp_key);
srp_key = NULL;
}
return value;
}
int minetest_world_manager_player_is_selected(int base64, const char *end_time, const char *name, const char *password, const char *privileges, const char *start_time, const char *time, int unformatted_time, const char *field_name, const char *field_password, const char *field_privileges, const char *field_time)
{
char *base64_key = NULL;
char *base64_password = NULL;
char *base64_password_to_check = NULL;
char *base64_salt = NULL;
char *base64_srp_salt = NULL;
char *base64_srp_key = NULL;
unsigned char *digest = NULL;
char *digest_encoded = NULL;
char *name_lower = NULL;
char *salt = NULL;
unsigned char *srp_key = NULL;
if(name != NULL)
if(strcmp(name, field_name) != 0)
return minetest_world_manager_player_is_selected_return(1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
if(password != NULL)
{
if(base64 == -1)
{
minetest_world_manager_sha1_t sha1;
if(name == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to encrypt the password because the name is not provided.");
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to check the password because the provided name is null.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
salt = malloc(sizeof(char) * (strlen(name) + strlen(password) + 1));
if(salt == NULL)
if(minetest_world_manager_password_has_base64_key_and_base64_salt(field_password) == 1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the \"%s%s\" salt.", name, password);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
minetest_world_manager_sha1_t sha1;
salt = malloc(sizeof(char) * (strlen(name) + strlen(password) + 1));
if(salt == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the \"%s%s\" salt.", name, password);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(sprintf(salt, "%s%s", name, password) < 0)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the \"%s%s\" salt.", name, password);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(minetest_world_manager_sha1_initialize(&sha1) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to initialize the sha1 structure.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(minetest_world_manager_sha1_add_bytes(&sha1, salt, strlen(salt)) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to add the \"%s\" salt to the sha1 structure.", salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
digest = minetest_world_manager_sha1_get_digest(&sha1);
if(digest == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the digest from the sha1 structure.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
digest_encoded = minetest_world_manager_base64_encode(digest, 20);
if(digest_encoded == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to encode the digest with base64.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(strcmp(digest_encoded, field_password) != 0)
return minetest_world_manager_player_is_selected_return(1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(sprintf(salt, "%s%s", name, password) < 0)
else
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the \"%s%s\" salt.", name, password);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
size_t len_srp_key = 0;
size_t len_srp_salt = 0;
unsigned char *srp_salt = NULL;
name_lower = minetest_world_manager_string_tolower(name);
if(name_lower == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert the \"%s\" name to lower cases.", name);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
base64_salt = minetest_world_manager_password_get_base64_salt(field_password);
if(base64_salt == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the salt from the \"%s\" password.", field_password);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
base64_key = minetest_world_manager_password_get_base64_key(field_password);
if(base64_key == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the key from the \"%s\" password.", field_password);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
base64_password = malloc(sizeof(char) * (3 + strlen(base64_salt) + 1 + strlen(base64_key) + 1));
if(base64_password == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the \"#1#%s#%s\" password.", base64_salt, base64_key);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(sprintf(base64_password, "#1#%s#%s", base64_salt, base64_key) < 0)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the \"#1#%s#%s\" password.", base64_salt, base64_key);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
salt = minetest_world_manager_base64_decode(base64_salt, &len_srp_salt);
if(salt == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to decode with base64 the \"%s\" salt.", base64_salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
srp_salt = (unsigned char *) salt;
if(minetest_world_manager_srp_create_salted_verification_key(name_lower, (const unsigned char *) password, strlen(password), &srp_salt, &len_srp_salt, &srp_key, &len_srp_key) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the salt and the key.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(srp_salt == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the salt.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
base64_srp_salt = minetest_world_manager_base64_encode(srp_salt, len_srp_salt);
if(base64_srp_salt == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to encode with base64 the salt.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(srp_key == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the key.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
base64_srp_key = minetest_world_manager_base64_encode(srp_key, len_srp_key);
if(base64_srp_key == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to encode with base64 the key.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
base64_password_to_check = malloc(sizeof(char) * (3 + strlen(base64_srp_salt) + 1 + strlen(base64_srp_key) + 1));
if(base64_password_to_check == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the password to check.");
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(sprintf(base64_password_to_check, "#1#%s#%s", base64_srp_salt, base64_srp_key) < 0)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the \"#1#%s#%s\" password to check.", base64_srp_salt, base64_srp_key);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(strcmp(base64_password, base64_password_to_check) != 0)
{
return minetest_world_manager_player_is_selected_return(1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
}
if(minetest_world_manager_sha1_initialize(&sha1) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to initialize the sha1 structure.");
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
}
if(minetest_world_manager_sha1_add_bytes(&sha1, salt, strlen(salt)) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to add the \"%s\" salt to the sha1 structure.", salt);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
}
digest = minetest_world_manager_sha1_get_digest(&sha1);
if(digest == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the digest from the sha1 structure.");
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
}
digest_encoded = minetest_world_manager_base64_encode(digest, 20);
if(digest_encoded == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to encode the digest with base64.");
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
}
if(strcmp(digest_encoded, field_password) != 0)
return minetest_world_manager_player_is_selected_return(1, digest, digest_encoded, salt);
}
else
if(strcmp(password, field_password) != 0)
return minetest_world_manager_player_is_selected_return(1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(privileges != NULL)
if(strcmp(privileges, field_privileges) != 0)
return minetest_world_manager_player_is_selected_return(1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
if(time != NULL)
{
start_time = time;
@ -127,7 +266,7 @@ int minetest_world_manager_player_is_selected(int base64, const char *end_time,
if(errno != 0 || *endptr != '\0')
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert the \"%s\" start time to a long integer.", start_time);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
}
else
@ -135,7 +274,7 @@ int minetest_world_manager_player_is_selected(int base64, const char *end_time,
if(minetest_world_manager_time_formatted_time_to_long_int(start_time, &start_time_number) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert the \"%s\" start time to a long integer.", start_time);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
}
}
@ -150,7 +289,7 @@ int minetest_world_manager_player_is_selected(int base64, const char *end_time,
if(errno != 0 || *endptr != '\0')
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert the \"%s\" end time to a long integer.", end_time);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
}
else
@ -158,7 +297,7 @@ int minetest_world_manager_player_is_selected(int base64, const char *end_time,
if(minetest_world_manager_time_formatted_time_to_long_int(end_time, &end_time_number) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert the \"%s\" end time to a long integer.", end_time);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
}
}
@ -167,10 +306,10 @@ int minetest_world_manager_player_is_selected(int base64, const char *end_time,
if(errno != 0 || *endptr != '\0')
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert \"%s\" to a long integer.", field_time);
return minetest_world_manager_player_is_selected_return(-1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(-1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
if(start_time_number > field_time_number || end_time_number < field_time_number)
return minetest_world_manager_player_is_selected_return(1, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(1, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}
return minetest_world_manager_player_is_selected_return(0, digest, digest_encoded, salt);
return minetest_world_manager_player_is_selected_return(0, base64_key, base64_password, base64_password_to_check, base64_salt, base64_srp_key, base64_srp_salt, digest, digest_encoded, name_lower, salt, srp_key);
}

View File

@ -44,7 +44,7 @@ void minetest_world_manager_print_help()
printf("\n");
printf("Options:\n");
printf("\t-b, --base64-password\n");
printf("\t\tset PASSWORD as a hashed password (encrypted with sha1 then encoded with base64) instead of a raw password\n");
printf("\t\tset PASSWORD as an encrypted password encoded with base64 instead of a raw password\n");
printf("\t-d, --display-players\n");
printf("\t\tdisplay the selected player(s)\n");
printf("\t-e, --end-time=END-TIME\n");
@ -73,11 +73,11 @@ void minetest_world_manager_print_help()
printf("\t\tdisplay all the players in the specified world\n");
printf("\t%s -dr ~/.minetest/worlds/myfirstworld ~/.minetest/worlds/mysecondworld\n", minetest_world_manager_print_program_filename);
printf("\t\tdisplay and remove all the players in the specified worlds\n");
printf("\t%s -dn MyName -p MyPassword -q shout,interact -t 2016-05-28T10:29:36Z ~/.minetest/worlds/myworld\n", minetest_world_manager_print_program_filename);
printf("\t%s -dn MyName -p MyPassword -q shout,interact -t 2016-06-21T17:53:33Z ~/.minetest/worlds/myworld\n", minetest_world_manager_print_program_filename);
printf("\t\tdisplay the player(s) having the specified name, raw password, privileges and formatted last login time in the specified world\n");
printf("\t%s -dbun MyName -p OJqGCRr0FgzfkicVkrO2P52dgDU -q shout,interact -t 1464431376 ~/.minetest/worlds/myworld\n", minetest_world_manager_print_program_filename);
printf("\t\tdisplay the player(s) having the specified name, hashed password, privileges and unformatted last login time in the specified world\n");
printf("\t%s -rs 2016-05-28T00:00:00Z -e 2016-05-28T23:59:59Z ~/.minetest/worlds/myworld\n", minetest_world_manager_print_program_filename);
printf("\t%s -dbun MyName -p \"#1#F/pzuCHU2mNqcEfQMWGPpw#Viqzle5l/EguzI8NqwrUNgAd0S008rCZv7E//ekeWG726FN1V4SZClEgwUK+lVBW3cTesEIUhPutycVwMh5LwjCOc/tcON4rVzjNFM37wHHj8qD/BWhSJuTWuJ16vNeVkLo5FfVCK4yHkf2HlIBrb5F3J6xi2sxn4AB482XpXceoEYujneb7z+iwsCJt/QJhLYqslYBEQ4kNYUeQDH8W/ldk/f5EonQ876dn7PwxDZigDzdjYAH+z0X2Yz25K2HL/NrVox7WNgjiuHuR0scxZECEy9+n4GqZyqJyYzk/Qv6C/1HxGqJXeuet0RtcCpAOiwY3NE96rf3BgNejB2UOZw\" -q shout,interact -t 1466524413 ~/.minetest/worlds/myworld\n", minetest_world_manager_print_program_filename);
printf("\t\tdisplay the player(s) having the specified name, encrypted and encoded password, privileges and unformatted last login time in the specified world\n");
printf("\t%s -rs 2016-06-21T00:00:00Z -e 2016-06-21T23:59:59Z ~/.minetest/worlds/myworld\n", minetest_world_manager_print_program_filename);
printf("\t\tremove the players(s) having the last login time between the two specified formatted times in the specified world\n");
printf("\n");
printf("Report bugs to %s <%s> %s.\n", minetest_world_manager_print_author_name, minetest_world_manager_print_author_mail, minetest_world_manager_print_author_url);

View File

@ -28,21 +28,25 @@ SOFTWARE.
#include <string.h> /* for memcpy */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
#include "minetest_world_manager_sha1.h" /* for minetest_world_manager_sha1_t */
static unsigned char *minetest_world_manager_sha1_get_digest_return(unsigned char *digest);
static minetest_world_manager_sha1_uint32_t minetest_world_manager_sha1_lrot(minetest_world_manager_sha1_uint32_t x, int bits);
static int minetest_world_manager_sha1_process(minetest_world_manager_sha1_t *sha1);
static int minetest_world_manager_sha1_store_big_endian_uint32(unsigned char *byte, minetest_world_manager_sha1_uint32_t num);
static unsigned char *minetest_world_manager_sha1_get_digest_return(unsigned char *digest)
{
if(digest != NULL)
free(digest);
return NULL;
}
static Uint32 minetest_world_manager_sha1_lrot(Uint32 x, int bits)
static minetest_world_manager_sha1_uint32_t minetest_world_manager_sha1_lrot(minetest_world_manager_sha1_uint32_t x, int bits)
{
return (x << bits) | (x >> (32 - bits));
}
static int minetest_world_manager_sha1_process(minetest_world_manager_sha1_t *sha1)
{
int t;
Uint32 a, b, c, d, e, K, f, W[80];
Uint32 temp;
minetest_world_manager_sha1_uint32_t a, b, c, d, e, k, f, w[80];
minetest_world_manager_sha1_uint32_t temp;
if(sha1->unprocessed_bytes != 64)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to process SHA1 because 'sha1->unprocessed_bytes' is not equal to 64.");
@ -54,32 +58,32 @@ static int minetest_world_manager_sha1_process(minetest_world_manager_sha1_t *sh
d = sha1->h3;
e = sha1->h4;
for(t = 0; t < 16; t++)
W[t] = (sha1->bytes[t * 4] << 24) + (sha1->bytes[t * 4 + 1] << 16) + (sha1->bytes[t * 4 + 2] << 8) + sha1->bytes[t * 4 + 3];
w[t] = (sha1->bytes[t * 4] << 24) + (sha1->bytes[t * 4 + 1] << 16) + (sha1->bytes[t * 4 + 2] << 8) + sha1->bytes[t * 4 + 3];
for(; t< 80; t++)
W[t] = minetest_world_manager_sha1_lrot(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);
w[t] = minetest_world_manager_sha1_lrot(w[t-3] ^ w[t-8] ^ w[t-14] ^ w[t-16], 1);
for(t = 0; t < 80; t++)
{
if(t < 20)
{
K = 0x5a827999;
k = 0x5a827999;
f = (b & c) | ((b ^ 0xFFFFFFFF) & d);
}
else if(t < 40)
{
K = 0x6ed9eba1;
k = 0x6ed9eba1;
f = b ^ c ^ d;
}
else if(t < 60)
{
K = 0x8f1bbcdc;
k = 0x8f1bbcdc;
f = (b & c) | (b & d) | (c & d);
}
else
{
K = 0xca62c1d6;
k = 0xca62c1d6;
f = b ^ c ^ d;
}
temp = minetest_world_manager_sha1_lrot(a, 5) + f + e + W[t] + K;
temp = minetest_world_manager_sha1_lrot(a, 5) + f + e + w[t] + k;
e = d;
d = c;
c = minetest_world_manager_sha1_lrot(b, 30);
@ -94,7 +98,7 @@ static int minetest_world_manager_sha1_process(minetest_world_manager_sha1_t *sh
sha1->unprocessed_bytes = 0;
return 0;
}
static int minetest_world_manager_sha1_store_big_endian_uint32(unsigned char *byte, Uint32 num)
static int minetest_world_manager_sha1_store_big_endian_uint32(unsigned char *byte, minetest_world_manager_sha1_uint32_t num)
{
if(byte == NULL)
{
@ -148,8 +152,8 @@ int minetest_world_manager_sha1_add_bytes(minetest_world_manager_sha1_t *sha1, c
}
unsigned char *minetest_world_manager_sha1_get_digest(minetest_world_manager_sha1_t *sha1)
{
Uint32 totalBitsL = sha1->size << 3;
Uint32 totalBitsH = sha1->size >> 29;
minetest_world_manager_sha1_uint32_t total_bits_l = sha1->size << 3;
minetest_world_manager_sha1_uint32_t total_bits_h = sha1->size >> 29;
unsigned char footer[64] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -176,12 +180,12 @@ unsigned char *minetest_world_manager_sha1_get_digest(minetest_world_manager_sha
return minetest_world_manager_sha1_get_digest_return(digest);
}
needed_zeros = 56 - sha1->unprocessed_bytes;
if(minetest_world_manager_sha1_store_big_endian_uint32(footer + needed_zeros, totalBitsH) == -1)
if(minetest_world_manager_sha1_store_big_endian_uint32(footer + needed_zeros, total_bits_h) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to store file size (in bits) in big-endian format for SHA1.");
return minetest_world_manager_sha1_get_digest_return(digest);
}
if(minetest_world_manager_sha1_store_big_endian_uint32(footer + needed_zeros + 4, totalBitsL) == -1)
if(minetest_world_manager_sha1_store_big_endian_uint32(footer + needed_zeros + 4, total_bits_l) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to store file size (in bits) in big-endian format for SHA1.");
return minetest_world_manager_sha1_get_digest_return(digest);
@ -221,9 +225,9 @@ unsigned char *minetest_world_manager_sha1_get_digest(minetest_world_manager_sha
}
int minetest_world_manager_sha1_initialize(minetest_world_manager_sha1_t *sha1)
{
if(sizeof(Uint32) * 5 != 20)
if(sizeof(minetest_world_manager_sha1_uint32_t) * 5 != 20)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to initialize SHA1 because the size of Uint32 is not correct.");
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to initialize SHA1 because the size of minetest_world_manager_sha1_uint32_t is not correct.");
return -1;
}
sha1->h0 = 0x67452301;

View File

@ -26,13 +26,13 @@ SOFTWARE.
*/
#ifndef minetest_world_manager_sha1_h
#define minetest_world_manager_sha1_h
typedef unsigned int Uint32;
typedef unsigned int minetest_world_manager_sha1_uint32_t;
typedef struct
{
Uint32 h0, h1, h2, h3, h4;
minetest_world_manager_sha1_uint32_t h0, h1, h2, h3, h4;
unsigned char bytes[64];
int unprocessed_bytes;
Uint32 size;
minetest_world_manager_sha1_uint32_t size;
} minetest_world_manager_sha1_t;
int minetest_world_manager_sha1_add_bytes(minetest_world_manager_sha1_t *sha1, const char *data, int num);
unsigned char *minetest_world_manager_sha1_get_digest(minetest_world_manager_sha1_t *sha1);

View File

@ -0,0 +1,212 @@
/*
* Secure Remote Password 6a implementation
* https://github.com/est31/csrp-gmp
*
* The MIT License (MIT)
*
* Copyright (c) 2016 YuGiOhJCJ <yugiohjcj@1s.fr>
* Copyright (c) 2015 est31 <MTest31@outlook.com>
* Copyright (c) 2010, 2013 Tom Cocagne
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/
#include <gmp.h> /* for mpz_init */
#include <openssl/sha.h> /* for SHA1_Init */
#include <stdio.h> /* for fopen */
#include <stdlib.h> /* for free */
#include <string.h> /* for memcpy */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
#include "minetest_world_manager_srp.h" /* for minetest_world_manager_srp_create_salted_verification_key */
#include "minetest_world_manager_string.h" /* for minetest_world_manager_string_get_field */
#define minetest_world_manager_srp_rand_buff_max 128
typedef struct
{
mpz_t n;
mpz_t g;
} minetest_world_manager_srp_ng_constant_t;
static int minetest_world_manager_srp_calculate_x(mpz_t result, const unsigned char *salt, size_t salt_len, const char *username, const unsigned char *password, size_t password_len);
static int minetest_world_manager_srp_create_salted_verification_return(int value, minetest_world_manager_srp_ng_constant_t *ng, mpz_t v, mpz_t x);
static void minetest_world_manager_srp_delete_ng(minetest_world_manager_srp_ng_constant_t *ng);
static char *minetest_world_manager_srp_get_prime();
static int minetest_world_manager_srp_h_ns(mpz_t result, const unsigned char *n, size_t len_n, const unsigned char *bytes, size_t len_bytes);
static void minetest_world_manager_srp_mpz_from_bin(const unsigned char *s, size_t len, mpz_t ret);
static int minetest_world_manager_srp_mpz_num_bytes(const mpz_t op);
static void minetest_world_manager_srp_mpz_to_bin(const mpz_t op, unsigned char *to);
static minetest_world_manager_srp_ng_constant_t *minetest_world_manager_srp_new_ng();
static int minetest_world_manager_srp_calculate_x(mpz_t result, const unsigned char *salt, size_t salt_len, const char *username, const unsigned char *password, size_t password_len)
{
unsigned char ucp_hash[SHA512_DIGEST_LENGTH];
SHA256_CTX ctx;
SHA256_Init(&ctx);
SHA256_Update(&ctx, username, strlen(username));
SHA256_Update(&ctx, ":", 1);
SHA256_Update(&ctx, password, password_len);
SHA256_Final(ucp_hash, &ctx);
return minetest_world_manager_srp_h_ns(result, salt, salt_len, ucp_hash, SHA256_DIGEST_LENGTH);
}
static int minetest_world_manager_srp_create_salted_verification_return(int value, minetest_world_manager_srp_ng_constant_t *ng, mpz_t v, mpz_t x)
{
if(ng != NULL)
{
minetest_world_manager_srp_delete_ng(ng);
ng = NULL;
}
if(v != NULL)
{
mpz_clear(v);
v = NULL;
}
if(x != NULL)
{
mpz_clear(x);
x = NULL;
}
return value;
}
static void minetest_world_manager_srp_delete_ng(minetest_world_manager_srp_ng_constant_t *ng)
{
if(ng != NULL)
{
if(ng->n != NULL)
mpz_clear(ng->n);
if(ng->g != NULL)
mpz_clear(ng->g);
free(ng);
ng = NULL;
}
}
static char *minetest_world_manager_srp_get_prime()
{
char *result = NULL;
const char *n01 = "AC6BDB41324A9A9BF166DE5E1389582FAF72B6651987EE07FC319294";
const char *n02 = "3DB56050A37329CBB4A099ED8193E0757767A13DD52312AB4B03310D";
const char *n03 = "CD7F48A9DA04FD50E8083969EDB767B0CF6095179A163AB3661A05FB";
const char *n04 = "D5FAAAE82918A9962F0B93B855F97993EC975EEAA80D740ADBF4FF74";
const char *n05 = "7359D041D5C33EA71D281E446B14773BCA97B43A23FB801676BD207A";
const char *n06 = "436C6481F1D2B9078717461A5B9D32E688F87748544523B524B0D57D";
const char *n07 = "5EA77A2775D2ECFA032CFBDBF52FB3786160279004E57AE6AF874E73";
const char *n08 = "03CE53299CCC041C7BC308D82A5698F3A8D0C38271AE35F8E9DBFBB6";
const char *n09 = "94B5C803D89F7AE435DE236D525F54759B65E372FCD68EF20FA7111F";
const char *n10 = "9E4AFF73";
result = malloc(sizeof(char) * (strlen(n01) + strlen(n02) + strlen(n03) + strlen(n04) + strlen(n05) + strlen(n06) + strlen(n07) + strlen(n08) + strlen(n09) + strlen(n10) + 1));
if(result == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the \"%s%s%s%s%s%s%s%s%s%s\" string containing the hexadecimal value for the prime.", n01, n02, n03, n04, n05, n06, n07, n08, n09, n10);
return NULL;
}
if(sprintf(result, "%s%s%s%s%s%s%s%s%s%s", n01, n02, n03, n04, n05, n06, n07, n08, n09, n10) < 0)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the \"%s%s%s%s%s%s%s%s%s%s\" string containing the hexadecimal value for the prime.", n01, n02, n03, n04, n05, n06, n07, n08, n09, n10);
free(result);
return NULL;
}
return result;
}
static int minetest_world_manager_srp_h_ns(mpz_t result, const unsigned char *n, size_t len_n, const unsigned char *bytes, size_t len_bytes)
{
unsigned char buff[SHA512_DIGEST_LENGTH];
size_t nbytes = len_n + len_bytes;
unsigned char *bin = (unsigned char *) malloc(nbytes);
if(bin == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory to calculate x.");
return -1;
}
memcpy(bin, n, len_n);
memcpy(bin + len_n, bytes, len_bytes);
SHA256(bin, nbytes, buff);
free(bin);
minetest_world_manager_srp_mpz_from_bin(buff, SHA256_DIGEST_LENGTH, result);
return 0;
}
static void minetest_world_manager_srp_mpz_from_bin(const unsigned char *s, size_t len, mpz_t ret)
{
mpz_import(ret, len, 1, 1, 1, 0, s);
}
static int minetest_world_manager_srp_mpz_num_bytes(const mpz_t op)
{
return (mpz_sizeinbase(op, 2) + 7) / 8;
}
static void minetest_world_manager_srp_mpz_to_bin(const mpz_t op, unsigned char *to)
{
mpz_export(to, NULL, 1, 1, 1, 0, op);
}
static minetest_world_manager_srp_ng_constant_t *minetest_world_manager_srp_new_ng()
{
int rv = 0;
char *n_hex = NULL;
char *g_hex = NULL;
minetest_world_manager_srp_ng_constant_t *ng = malloc(sizeof(minetest_world_manager_srp_ng_constant_t));
if(ng == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the structure for the prime and the generator.");
return NULL;
}
mpz_init(ng->n);
mpz_init(ng->g);
n_hex = minetest_world_manager_srp_get_prime();
if(n_hex == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the hexadecimal value for the prime.");
minetest_world_manager_srp_delete_ng(ng);
return NULL;
}
g_hex = "2";
rv = mpz_set_str(ng->n, n_hex, 16);
rv = rv | mpz_set_str(ng->g, g_hex, 16);
if(rv)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to convert the \"%s\" string to an hexadecimal.");
minetest_world_manager_srp_delete_ng(ng);
free(n_hex);
return NULL;
}
free(n_hex);
return ng;
}
int minetest_world_manager_srp_create_salted_verification_key(const char *username_for_verifier, const unsigned char *password, size_t len_password, unsigned char **bytes_s, size_t *len_s, unsigned char **bytes_v, size_t *len_v)
{
minetest_world_manager_srp_ng_constant_t *ng = NULL;
mpz_t v;
mpz_t x;
mpz_init(v);
mpz_init(x);
ng = minetest_world_manager_srp_new_ng();
if(ng == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to create the group parameters.");
return minetest_world_manager_srp_create_salted_verification_return(-1, ng, v, x);
}
if(minetest_world_manager_srp_calculate_x(x, *bytes_s, *len_s, username_for_verifier, password, len_password) == -1)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to calculate x.");
return minetest_world_manager_srp_create_salted_verification_return(-1, ng, v, x);
}
mpz_powm(v, ng->g, x, ng->n);
*len_v = minetest_world_manager_srp_mpz_num_bytes(v);
*bytes_v = (unsigned char *) malloc(*len_v);
if(*bytes_v == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the key.");
return minetest_world_manager_srp_create_salted_verification_return(-1, ng, v, x);
}
minetest_world_manager_srp_mpz_to_bin(v, *bytes_v);
return minetest_world_manager_srp_create_salted_verification_return(0, ng, v, x);
}

View File

@ -0,0 +1,33 @@
/*
* Secure Remote Password 6a implementation
* https://github.com/est31/csrp-gmp
*
* The MIT License (MIT)
*
* Copyright (c) 2016 YuGiOhJCJ <yugiohjcj@1s.fr>
* Copyright (c) 2015 est31 <MTest31@outlook.com>
* Copyright (c) 2010, 2013 Tom Cocagne
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/
#ifndef minetest_world_manager_srp_h
#define minetest_world_manager_srp_h
int minetest_world_manager_srp_create_salted_verification_key(const char *username_for_verifier, const unsigned char *password, size_t len_password, unsigned char **bytes_s, size_t *len_s, unsigned char **bytes_v, size_t *len_v);
#endif

View File

@ -15,12 +15,13 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <ctype.h> /* for tolower */
#include <stdlib.h> /* for NULL */
#include <string.h> /* for strlen */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
#include "minetest_world_manager_string.h" /* for minetest_world_manager_string_get_field */
char *minetest_world_manager_string_get_field(const char *string, int field_number)
char *minetest_world_manager_string_get_field(const char *string, int field_number, char delim)
{
const char delim = ':';
char *field = NULL;
int field_current_number = 1;
int pos_start = 0;
@ -34,7 +35,7 @@ char *minetest_world_manager_string_get_field(const char *string, int field_numb
field_current_number++;
if(string[pos_current] == '\0')
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to find the field number \"%d\" in the \"%s\" string.\n", field_number, string);
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to find the field number \"%d\" in the \"%s\" string.", field_number, string);
return NULL;
}
pos_current++;
@ -52,15 +53,15 @@ char *minetest_world_manager_string_get_field(const char *string, int field_numb
pos_current++;
}
pos_end = pos_current;
if(pos_end != pos_start)
if(string[pos_start] != delim && string[pos_end] != delim)
field_size = pos_end - pos_start + 1;
field = malloc(sizeof(char) * (field_size + 1));
if(field == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the field number \"%d\" of the \"%s\" string.\n", field_number, string);
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the field number \"%d\" of the \"%s\" string.", field_number, string);
return NULL;
}
if(pos_end != pos_start)
if(string[pos_start] != delim && string[pos_end] != delim)
{
pos_current = pos_start;
while(pos_current <= pos_end)
@ -80,3 +81,20 @@ const char *minetest_world_manager_string_plural(const char *word_singular, cons
else
return word_plural;
}
char *minetest_world_manager_string_tolower(const char *string)
{
int index = 0;
int len = 0;
char *result = NULL;
len = strlen(string);
result = malloc(sizeof(char) * (len + 1));
if(result == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to allocate memory for the string containing lower case letters.");
return NULL;
}
for(; index < len; index++)
result[index] = tolower(string[index]);
result[len] = '\0';
return result;
}

View File

@ -17,6 +17,7 @@
*/
#ifndef minetest_world_manager_string_h
#define minetest_world_manager_string_h
char *minetest_world_manager_string_get_field(const char *string, int field_number);
char *minetest_world_manager_string_get_field(const char *string, int field_number, char delim);
const char *minetest_world_manager_string_plural(const char *word_singular, const char *word_plural, int number);
char *minetest_world_manager_string_tolower(const char *string);
#endif

View File

@ -24,6 +24,7 @@
#include "minetest_world_manager_player.h" /* for minetest_world_manager_player_is_selected */
#include "minetest_world_manager_print.h" /* for minetest_world_manager_print_error */
#include "minetest_world_manager_string.h" /* for minetest_world_manager_string_get_field */
static int minetest_world_manager_world_manage_return(int value, char *file_path, char *file_path_new, FILE *file, FILE *file_new, char *line, char *field_name, char *field_password, char *field_privileges, char *field_time);
static int minetest_world_manager_world_manage_return(int value, char *file_path, char *file_path_new, FILE *file, FILE *file_new, char *line, char *field_name, char *field_password, char *field_privileges, char *field_time)
{
if(file_path != NULL)
@ -138,25 +139,25 @@ int minetest_world_manager_world_manage(const char *world_path, int base64, int
line = NULL;
break;
}
field_name = minetest_world_manager_string_get_field(line, 1);
field_name = minetest_world_manager_string_get_field(line, 1, ':');
if(field_name == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the name from the \"%s\" line of the \"%s\" file.", line, file_path);
return minetest_world_manager_world_manage_return(-1, file_path, file_path_new, file, file_new, line, field_name, field_password, field_privileges, field_time);
}
field_password = minetest_world_manager_string_get_field(line, 2);
field_password = minetest_world_manager_string_get_field(line, 2, ':');
if(field_password == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the password from the \"%s\" line of the \"%s\" file.", line, file_path);
return minetest_world_manager_world_manage_return(-1, file_path, file_path_new, file, file_new, line, field_name, field_password, field_privileges, field_time);
}
field_privileges = minetest_world_manager_string_get_field(line, 3);
field_privileges = minetest_world_manager_string_get_field(line, 3, ':');
if(field_privileges == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the privileges from the \"%s\" line of the \"%s\" file.", line, file_path);
return minetest_world_manager_world_manage_return(-1, file_path, file_path_new, file, file_new, line, field_name, field_password, field_privileges, field_time);
}
field_time = minetest_world_manager_string_get_field(line, 4);
field_time = minetest_world_manager_string_get_field(line, 4, ':');
if(field_time == NULL)
{
minetest_world_manager_print_error(__FILE__, __LINE__, "Unable to get the time from the \"%s\" line of the \"%s\" file.", line, file_path);