* 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
parent
4b0ada50b5
commit
8a1aedd2a1
163
ChangeLog
163
ChangeLog
|
@ -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.
|
||||
|
|
|
@ -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
README
2
README
|
@ -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.
|
||||
|
|
23
configure.ac
23
configure.ac
|
@ -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])
|
||||
|
|
|
@ -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
|
||||
|
|
625
src/Makefile.in
625
src/Makefile.in
|
@ -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:
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue