From 3dcc93a65d2fed8151724e67d6ed82c078d25823 Mon Sep 17 00:00:00 2001 From: aschwarz Date: Sat, 11 Feb 2023 15:24:36 +0100 Subject: [PATCH] ftp_ansicht repariert und neues msd --- msd/.gitignore | 16 + msd/.htaccess | 2 +- msd/README.md | 76 + msd/ReadMe/ReadMe.txt | 2 +- msd/ReadMe/changelog_deutsch.txt | 16 - msd/ReadMe/changelog_english.txt | 16 - msd/ReadMe/install_deutsch.txt | 5 - msd/ReadMe/install_english.txt | 5 - msd/ReadMe/install_francais.txt | 5 - msd/ReadMe/install_italiano.txt | 6 - msd/ReadMe/license_deutsch.txt | 105 - msd/composer.json | 14 + msd/composer.lock | 755 +++ msd/config.php | 198 +- msd/config_overview.php | 1937 +++--- msd/css/{msd => mod}/icons/arrow_down.gif | Bin msd/css/{msd => mod}/icons/arrow_up.gif | Bin msd/css/{msd => mod}/icons/arrowdown.gif | Bin msd/css/{msd => mod}/icons/arrowleft.gif | Bin msd/css/{msd => mod}/icons/arrowup.gif | Bin msd/css/{msd => mod}/icons/blank.gif | Bin msd/css/{msd => mod}/icons/browse.gif | Bin msd/css/{msd => mod}/icons/close.gif | Bin msd/css/{msd => mod}/icons/delete.gif | Bin msd/css/{msd => mod}/icons/edit.gif | Bin msd/css/{msd => mod}/icons/gz.gif | Bin msd/css/{msd => mod}/icons/index.gif | Bin msd/css/{msd => mod}/icons/key_fulltext.gif | Bin msd/css/{msd => mod}/icons/key_nokey.gif | Bin msd/css/{msd => mod}/icons/key_primary.gif | Bin msd/css/{msd => mod}/icons/key_unique.gif | Bin msd/css/{msd => mod}/icons/mysql_help.gif | Bin msd/css/{msd => mod}/icons/notok.gif | Bin msd/css/{msd => mod}/icons/ok.gif | Bin msd/css/{msd => mod}/icons/openfile.gif | Bin .../{msd => mod}/icons/progressbar_dump.gif | Bin .../icons/progressbar_restore.gif | Bin .../{msd => mod}/icons/progressbar_speed.gif | Bin msd/css/{msd => mod}/icons/rename.gif | Bin msd/css/{msd => mod}/icons/search.gif | Bin msd/css/{msd => mod}/icons/table_truncate.gif | Bin .../icons/table_truncate_reset.gif | Bin msd/css/{msd => mod}/pics/bg-body.gif | Bin msd/css/{msd => mod}/pics/bg-buttons.gif | Bin msd/css/{msd => mod}/pics/bg-headings.gif | Bin msd/css/{msd => mod}/pics/blank.gif | Bin msd/css/{msd => mod}/pics/h1_logo.gif | Bin msd/css/{msd => mod}/pics/loveyourdata.gif | Bin msd/css/{msd => mod}/pics/navi_bg.jpg | Bin msd/css/{msd => mod}/style.css | 4 +- .../icons/arrow_down.gif | Bin .../icons/arrow_up.gif | Bin .../icons/arrowdown.gif | Bin .../icons/arrowleft.gif | Bin .../icons/arrowup.gif | Bin .../{msd_green => mod_green}/icons/blank.gif | Bin .../{msd_green => mod_green}/icons/browse.gif | Bin .../{msd_green => mod_green}/icons/close.gif | Bin .../{msd_green => mod_green}/icons/delete.gif | Bin .../{msd_green => mod_green}/icons/edit.gif | Bin msd/css/{msd_green => mod_green}/icons/gz.gif | Bin .../{msd_green => mod_green}/icons/index.gif | Bin .../icons/key_fulltext.gif | Bin .../icons/key_nokey.gif | Bin .../icons/key_primary.gif | Bin .../icons/key_unique.gif | Bin .../icons/mysql_help.gif | Bin .../{msd_green => mod_green}/icons/nokey.gif | Bin .../{msd_green => mod_green}/icons/notok.gif | Bin msd/css/{msd_green => mod_green}/icons/ok.gif | Bin .../icons/openfile.gif | Bin .../icons/progressbar_dump.gif | Bin .../icons/progressbar_restore.gif | Bin .../icons/progressbar_speed.gif | Bin .../{msd_green => mod_green}/icons/rename.gif | Bin .../{msd_green => mod_green}/icons/search.gif | Bin .../icons/table_truncate.gif | Bin .../icons/table_truncate_reset.gif | Bin .../{msd_green => mod_green}/pics/body_bg.gif | Bin .../{msd_green => mod_green}/pics/h1_logo.gif | Bin .../pics/loveyourdata.gif | Bin .../pics/mainnavi.gif | Bin .../{msd_green => mod_green}/pics/navi_bg.jpg | Bin .../pics/overall_bg.gif | Bin .../pics/pagetitle.gif | Bin msd/css/msd_green/style.css | 725 --- msd/dump.php | 799 +-- msd/filemanagement.php | 893 ++- msd/help.php | 70 +- msd/images/logo.gif | Bin 5219 -> 0 bytes msd/images/qrcode.png | Bin 0 -> 37957 bytes msd/inc/define_icons.php | 43 +- msd/inc/functions.php | 1306 ++-- msd/inc/functions_dump.php | 977 ++- msd/inc/functions_files.php | 826 ++- msd/inc/functions_global.php | 2272 +++---- msd/inc/functions_imexport.php | 731 ++- msd/inc/functions_restore.php | 703 ++- msd/inc/functions_sql.php | 1971 +++--- msd/inc/header.php | 46 +- msd/inc/home/apr1_md5/apr1_md5.php | 79 + msd/inc/home/apr1_md5/license.txt | 22 + msd/inc/home/apr1_md5/origin_url.txt | 1 + msd/inc/home/databases.php | 382 +- msd/inc/home/home.php | 177 +- msd/inc/home/mysql_variables.php | 177 +- msd/inc/home/protection_create.php | 248 +- msd/inc/home/protection_delete.php | 8 +- msd/inc/home/protection_edit.php | 91 +- msd/inc/home/system.php | 164 +- msd/inc/home/update.php | 87 + msd/inc/mysql.php | 513 -- msd/inc/mysqli.php | 543 ++ msd/inc/runtime.php | 199 +- msd/inc/sql_importexport.php | 531 +- msd/inc/sql_tools.php | 322 +- msd/inc/sqlbrowser/mysql_search.php | 686 +-- msd/inc/sqlbrowser/sql_commands.php | 162 +- msd/inc/sqlbrowser/sql_dataview.php | 712 +-- .../sql_record_insert_inputmask.php | 64 +- .../sql_record_update_inputmask.php | 80 +- msd/inc/sqlbrowser/sql_tables.php | 955 ++- msd/inc/sqlbrowser/sqlbox.php | 118 +- msd/inc/sqllib.php | 68 +- msd/inc/tabellenabfrage.php | 189 - msd/inc/table_query.php | 181 + msd/inc/template.php | 758 ++- msd/index.php | 28 +- msd/install.php | 974 ++- msd/js/script.js | 9 +- msd/language/ar/help.html | 147 + msd/language/ar/help.php | 129 - msd/language/ar/lang.php | 217 +- msd/language/ar/lang_config_overview.php | 236 +- msd/language/ar/lang_dump.php | 109 +- msd/language/ar/lang_filemanagement.php | 154 +- msd/language/ar/lang_help.php | 66 +- msd/language/ar/lang_install.php | 171 +- msd/language/ar/lang_log.php | 14 +- msd/language/ar/lang_main.php | 162 +- msd/language/ar/lang_restore.php | 38 +- msd/language/ar/lang_sql.php | 383 +- msd/language/ch/help.html | 146 + msd/language/ch/help.php | 125 - msd/language/ch/lang.php | 217 +- msd/language/ch/lang_config_overview.php | 230 +- msd/language/ch/lang_dump.php | 95 +- msd/language/ch/lang_filemanagement.php | 148 +- msd/language/ch/lang_help.php | 60 +- msd/language/ch/lang_install.php | 159 +- msd/language/ch/lang_log.php | 12 +- msd/language/ch/lang_main.php | 155 +- msd/language/ch/lang_restore.php | 36 +- msd/language/ch/lang_sql.php | 377 +- msd/language/da/help.html | 147 + msd/language/da/help.php | 129 - msd/language/da/lang.php | 217 +- msd/language/da/lang_config_overview.php | 237 +- msd/language/da/lang_dump.php | 109 +- msd/language/da/lang_filemanagement.php | 150 +- msd/language/da/lang_help.php | 72 +- msd/language/da/lang_install.php | 162 +- msd/language/da/lang_log.php | 16 +- msd/language/da/lang_main.php | 158 +- msd/language/da/lang_restore.php | 36 +- msd/language/da/lang_sql.php | 377 +- msd/language/{de_du/help.php => de/help.html} | 77 +- msd/language/de/lang.php | 217 +- msd/language/de/lang_config_overview.php | 236 +- msd/language/de/lang_dump.php | 109 +- msd/language/de/lang_filemanagement.php | 157 +- msd/language/de/lang_help.php | 77 +- msd/language/de/lang_install.php | 172 +- msd/language/de/lang_log.php | 15 +- msd/language/de/lang_main.php | 164 +- msd/language/de/lang_restore.php | 39 +- msd/language/de/lang_sql.php | 377 +- msd/language/{de/help.php => de_du/help.html} | 78 +- msd/language/de_du/lang.php | 217 +- msd/language/de_du/lang_config_overview.php | 236 +- msd/language/de_du/lang_dump.php | 108 +- msd/language/de_du/lang_filemanagement.php | 154 +- msd/language/de_du/lang_help.php | 74 +- msd/language/de_du/lang_install.php | 169 +- msd/language/de_du/lang_log.php | 12 +- msd/language/de_du/lang_main.php | 160 +- msd/language/de_du/lang_restore.php | 36 +- msd/language/de_du/lang_sql.php | 377 +- msd/language/el/help.html | 149 + msd/language/el/help.php | 130 - msd/language/el/lang.php | 221 +- msd/language/el/lang_config_overview.php | 235 +- msd/language/el/lang_dump.php | 107 +- msd/language/el/lang_filemanagement.php | 152 +- msd/language/el/lang_help.php | 75 +- msd/language/el/lang_install.php | 170 +- msd/language/el/lang_log.php | 14 +- msd/language/el/lang_main.php | 161 +- msd/language/el/lang_restore.php | 40 +- msd/language/el/lang_sql.php | 380 +- msd/language/en/help.html | 147 + msd/language/en/help.php | 130 - msd/language/en/lang.php | 217 +- msd/language/en/lang_config_overview.php | 233 +- msd/language/en/lang_dump.php | 107 +- msd/language/en/lang_filemanagement.php | 150 +- msd/language/en/lang_help.php | 66 +- msd/language/en/lang_install.php | 167 +- msd/language/en/lang_log.php | 12 +- msd/language/en/lang_main.php | 157 +- msd/language/en/lang_restore.php | 36 +- msd/language/en/lang_sql.php | 377 +- msd/language/es/help.html | 149 + msd/language/es/help.php | 162 - msd/language/es/lang.php | 217 +- msd/language/es/lang_config_overview.php | 233 +- msd/language/es/lang_dump.php | 109 +- msd/language/es/lang_filemanagement.php | 152 +- msd/language/es/lang_help.php | 64 +- msd/language/es/lang_install.php | 167 +- msd/language/es/lang_log.php | 12 +- msd/language/es/lang_main.php | 157 +- msd/language/es/lang_restore.php | 36 +- msd/language/es/lang_sql.php | 379 +- msd/language/fr/help.html | 148 + msd/language/fr/help.php | 119 - msd/language/fr/lang.php | 217 +- msd/language/fr/lang_config_overview.php | 239 +- msd/language/fr/lang_dump.php | 109 +- msd/language/fr/lang_filemanagement.php | 148 +- msd/language/fr/lang_help.php | 64 +- msd/language/fr/lang_install.php | 162 +- msd/language/fr/lang_log.php | 12 +- msd/language/fr/lang_main.php | 155 +- msd/language/fr/lang_restore.php | 36 +- msd/language/fr/lang_sql.php | 380 +- msd/language/it/help.html | 149 + msd/language/it/help.php | 126 - msd/language/it/lang.php | 217 +- msd/language/it/lang_config_overview.php | 231 +- msd/language/it/lang_dump.php | 109 +- msd/language/it/lang_filemanagement.php | 148 +- msd/language/it/lang_help.php | 58 +- msd/language/it/lang_install.php | 159 +- msd/language/it/lang_log.php | 12 +- msd/language/it/lang_main.php | 155 +- msd/language/it/lang_restore.php | 36 +- msd/language/it/lang_sql.php | 377 +- msd/language/lang_list.php | 179 +- msd/language/pt_br/help.html | 147 + msd/language/pt_br/help.php | 156 - msd/language/pt_br/lang.php | 217 +- msd/language/pt_br/lang_config_overview.php | 235 +- msd/language/pt_br/lang_dump.php | 107 +- msd/language/pt_br/lang_filemanagement.php | 150 +- msd/language/pt_br/lang_help.php | 72 +- msd/language/pt_br/lang_install.php | 167 +- msd/language/pt_br/lang_log.php | 12 +- msd/language/pt_br/lang_main.php | 157 +- msd/language/pt_br/lang_restore.php | 36 +- msd/language/pt_br/lang_sql.php | 377 +- msd/language/sw/help.html | 146 + msd/language/sw/help.php | 117 - msd/language/sw/lang.php | 217 +- msd/language/sw/lang_config_overview.php | 231 +- msd/language/sw/lang_dump.php | 101 +- msd/language/sw/lang_filemanagement.php | 148 +- msd/language/sw/lang_help.php | 66 +- msd/language/sw/lang_install.php | 158 +- msd/language/sw/lang_log.php | 12 +- msd/language/sw/lang_main.php | 155 +- msd/language/sw/lang_restore.php | 36 +- msd/language/sw/lang_sql.php | 377 +- msd/language/tr/help.html | 147 + msd/language/tr/help.php | 124 - msd/language/tr/lang.php | 217 +- msd/language/tr/lang_config_overview.php | 229 +- msd/language/tr/lang_dump.php | 107 +- msd/language/tr/lang_filemanagement.php | 150 +- msd/language/tr/lang_help.php | 72 +- msd/language/tr/lang_install.php | 166 +- msd/language/tr/lang_log.php | 12 +- msd/language/tr/lang_main.php | 155 +- msd/language/tr/lang_restore.php | 36 +- msd/language/tr/lang_sql.php | 377 +- msd/language/vn/help.html | 147 + msd/language/vn/help.php | 129 - msd/language/vn/lang.php | 221 +- msd/language/vn/lang_config_overview.php | 238 +- msd/language/vn/lang_dump.php | 107 +- msd/language/vn/lang_filemanagement.php | 152 +- msd/language/vn/lang_help.php | 75 +- msd/language/vn/lang_install.php | 170 +- msd/language/vn/lang_log.php | 16 +- msd/language/vn/lang_main.php | 162 +- msd/language/vn/lang_restore.php | 40 +- msd/language/vn/lang_sql.php | 380 +- msd/license.txt | 278 + msd/log.php | 230 +- msd/main.php | 120 +- msd/menu.php | 200 +- msd/{msd_cron => mod_cron}/crondump.pl | 114 +- msd/{msd_cron => mod_cron}/perltest.pl | 9 +- msd/{msd_cron => mod_cron}/simpletest.pl | 14 +- msd/refresh_dblist.php | 44 +- msd/restore.php | 587 +- msd/sql.php | 519 +- msd/tpl/home/home.tpl | 38 +- msd/tpl/home/protection_create.tpl | 88 +- msd/tpl/menu/footer.tpl | 4 +- msd/tpl/menu/header.tpl | 12 +- msd/tpl/restore_select_tables.tpl | 6 +- msd/tpl/sqlbrowser/mysql_search.tpl | 2 +- .../sql_record_insert_inputmask.tpl | 2 +- .../sql_record_update_inputmask.tpl | 2 +- msd/vendor/autoload.php | 25 + msd/vendor/composer/ClassLoader.php | 581 ++ msd/vendor/composer/InstalledVersions.php | 352 ++ msd/vendor/composer/LICENSE | 21 + msd/vendor/composer/autoload_classmap.php | 10 + msd/vendor/composer/autoload_files.php | 10 + msd/vendor/composer/autoload_namespaces.php | 9 + msd/vendor/composer/autoload_psr4.php | 19 + msd/vendor/composer/autoload_real.php | 50 + msd/vendor/composer/autoload_static.php | 103 + msd/vendor/composer/installed.json | 763 +++ msd/vendor/composer/installed.php | 125 + msd/vendor/composer/platform_check.php | 26 + msd/vendor/composer/semver/CHANGELOG.md | 209 + msd/vendor/composer/semver/LICENSE | 19 + msd/vendor/composer/semver/README.md | 98 + msd/vendor/composer/semver/composer.json | 59 + msd/vendor/composer/semver/src/Comparator.php | 113 + .../composer/semver/src/CompilingMatcher.php | 94 + .../composer/semver/src/Constraint/Bound.php | 122 + .../semver/src/Constraint/Constraint.php | 435 ++ .../src/Constraint/ConstraintInterface.php | 75 + .../src/Constraint/MatchAllConstraint.php | 85 + .../src/Constraint/MatchNoneConstraint.php | 83 + .../semver/src/Constraint/MultiConstraint.php | 325 + msd/vendor/composer/semver/src/Interval.php | 98 + msd/vendor/composer/semver/src/Intervals.php | 478 ++ msd/vendor/composer/semver/src/Semver.php | 129 + .../composer/semver/src/VersionParser.php | 586 ++ msd/vendor/desarrolla2/cache/.formatter.yml | 18 + .../cache/.github/workflows/php.yml | 73 + msd/vendor/desarrolla2/cache/.gitignore | 9 + msd/vendor/desarrolla2/cache/.scrutinizer.yml | 31 + msd/vendor/desarrolla2/cache/LICENSE | 19 + msd/vendor/desarrolla2/cache/README.md | 174 + msd/vendor/desarrolla2/cache/build.xml | 100 + msd/vendor/desarrolla2/cache/composer.json | 67 + .../cache/docs/implementations/apcu.md | 25 + .../cache/docs/implementations/chain.md | 37 + .../cache/docs/implementations/file.md | 82 + .../cache/docs/implementations/memcached.md | 28 + .../cache/docs/implementations/memory.md | 23 + .../cache/docs/implementations/mongodb.md | 45 + .../cache/docs/implementations/mysqli.md | 47 + .../cache/docs/implementations/notcache.md | 13 + .../cache/docs/implementations/phpfile.md | 74 + .../cache/docs/implementations/predis.md | 31 + .../desarrolla2/cache/docs/performance.md | 40 + msd/vendor/desarrolla2/cache/phpcs.xml | 8 + msd/vendor/desarrolla2/cache/phpstan.neon | 8 + msd/vendor/desarrolla2/cache/phpunit.xml.dist | 39 + .../desarrolla2/cache/src/AbstractCache.php | 296 + .../desarrolla2/cache/src/AbstractFile.php | 216 + msd/vendor/desarrolla2/cache/src/Apcu.php | 88 + .../desarrolla2/cache/src/CacheInterface.php | 58 + msd/vendor/desarrolla2/cache/src/Chain.php | 192 + .../src/Exception/BadMethodCallException.php | 25 + .../cache/src/Exception/CacheException.php | 25 + .../Exception/InvalidArgumentException.php | 25 + .../Exception/UnexpectedValueException.php | 25 + msd/vendor/desarrolla2/cache/src/File.php | 175 + .../cache/src/File/BasicFilename.php | 68 + .../cache/src/File/TrieFilename.php | 121 + .../desarrolla2/cache/src/Memcached.php | 218 + msd/vendor/desarrolla2/cache/src/Memory.php | 165 + msd/vendor/desarrolla2/cache/src/MongoDB.php | 273 + msd/vendor/desarrolla2/cache/src/Mysqli.php | 312 + msd/vendor/desarrolla2/cache/src/NotCache.php | 93 + .../cache/src/Option/FilenameTrait.php | 91 + .../cache/src/Option/InitializeTrait.php | 65 + .../cache/src/Option/PrefixTrait.php | 49 + .../desarrolla2/cache/src/Option/TtlTrait.php | 54 + .../cache/src/Packer/JsonPacker.php | 69 + .../cache/src/Packer/MongoDBBinaryPacker.php | 77 + .../cache/src/Packer/NopPacker.php | 57 + .../cache/src/Packer/PackerInterface.php | 47 + .../cache/src/Packer/PackingTrait.php | 86 + .../cache/src/Packer/SerializePacker.php | 78 + msd/vendor/desarrolla2/cache/src/PhpFile.php | 111 + msd/vendor/desarrolla2/cache/src/Predis.php | 245 + .../cache/tests/AbstractCacheTest.php | 93 + .../desarrolla2/cache/tests/ApcuCacheTest.php | 44 + .../desarrolla2/cache/tests/ChainTest.php | 216 + .../desarrolla2/cache/tests/FileTest.php | 40 + .../desarrolla2/cache/tests/FileTrieTest.php | 43 + .../cache/tests/FileTtlFileTest.php | 42 + .../desarrolla2/cache/tests/MemcachedTest.php | 47 + .../desarrolla2/cache/tests/MemoryTest.php | 44 + .../desarrolla2/cache/tests/MongoDBTest.php | 53 + .../desarrolla2/cache/tests/MysqliTest.php | 75 + .../desarrolla2/cache/tests/NotCacheTest.php | 88 + .../desarrolla2/cache/tests/PhpFileTest.php | 40 + .../desarrolla2/cache/tests/PredisTest.php | 52 + .../cache/tests/performance/Apc.php | 21 + .../cache/tests/performance/File.php | 21 + .../cache/tests/performance/Mongo.php | 21 + .../cache/tests/performance/NoCache.php | 21 + .../cache/tests/performance/common.php | 43 + .../flysystem-sftp/ConnectionProvider.php | 12 + .../flysystem-sftp/ConnectivityChecker.php | 12 + .../FixatedConnectivityChecker.php | 36 + msd/vendor/league/flysystem-sftp/README.md | 7 + .../league/flysystem-sftp/SftpAdapter.php | 334 + .../flysystem-sftp/SftpConnectionProvider.php | 236 + .../SimpleConnectivityChecker.php | 15 + .../StubSftpConnectionProvider.php | 59 + .../flysystem-sftp/UnableToAuthenticate.php | 26 + .../UnableToConnectToSftpHost.php | 16 + .../UnableToEstablishAuthenticityOfHost.php | 16 + .../flysystem-sftp/UnableToLoadPrivateKey.php | 16 + .../league/flysystem-sftp/composer.json | 23 + msd/vendor/league/flysystem/INFO.md | 2 + msd/vendor/league/flysystem/LICENSE | 19 + msd/vendor/league/flysystem/composer.json | 48 + .../flysystem/config.subsplit-publish.json | 49 + .../league/flysystem/docker-compose.yml | 58 + msd/vendor/league/flysystem/readme.md | 45 + msd/vendor/league/flysystem/src/Config.php | 43 + .../flysystem/src/CorruptedPathDetected.php | 13 + .../flysystem/src/DirectoryAttributes.php | 110 + .../league/flysystem/src/DirectoryListing.php | 84 + .../league/flysystem/src/FileAttributes.php | 139 + .../league/flysystem/src/Filesystem.php | 163 + .../flysystem/src/FilesystemAdapter.php | 108 + .../flysystem/src/FilesystemException.php | 11 + .../src/FilesystemOperationFailed.php | 22 + .../flysystem/src/FilesystemOperator.php | 9 + .../league/flysystem/src/FilesystemReader.php | 66 + .../league/flysystem/src/FilesystemWriter.php | 58 + .../flysystem/src/InvalidStreamProvided.php | 11 + .../src/InvalidVisibilityProvided.php | 20 + .../src/Local/LocalFilesystemAdapter.php | 419 ++ .../league/flysystem/src/MountManager.php | 334 + .../league/flysystem/src/PathNormalizer.php | 10 + .../league/flysystem/src/PathPrefixer.php | 60 + .../flysystem/src/PathTraversalDetected.php | 28 + .../flysystem/src/PortableVisibilityGuard.php | 19 + .../src/ProxyArrayAccessToProperties.php | 62 + .../flysystem/src/StorageAttributes.php | 40 + .../flysystem/src/SymbolicLinkEncountered.php | 28 + .../src/UnableToCheckFileExistence.php | 21 + .../league/flysystem/src/UnableToCopyFile.php | 48 + .../flysystem/src/UnableToCreateDirectory.php | 44 + .../flysystem/src/UnableToDeleteDirectory.php | 48 + .../flysystem/src/UnableToDeleteFile.php | 45 + .../flysystem/src/UnableToMountFilesystem.php | 32 + .../league/flysystem/src/UnableToMoveFile.php | 48 + .../league/flysystem/src/UnableToReadFile.php | 45 + .../src/UnableToResolveFilesystemMount.php | 20 + .../src/UnableToRetrieveMetadata.php | 76 + .../flysystem/src/UnableToSetVisibility.php | 49 + .../flysystem/src/UnableToWriteFile.php | 45 + .../PortableVisibilityConverter.php | 109 + .../UnixVisibility/VisibilityConverter.php | 14 + .../src/UnreadableFileEncountered.php | 28 + .../league/flysystem/src/Visibility.php | 11 + .../src/WhitespacePathNormalizer.php | 49 + .../league/mime-type-detection/CHANGELOG.md | 31 + msd/vendor/league/mime-type-detection/LICENSE | 19 + .../league/mime-type-detection/composer.json | 34 + .../src/EmptyExtensionToMimeTypeMap.php | 13 + .../src/ExtensionMimeTypeDetector.php | 42 + .../src/ExtensionToMimeTypeMap.php | 10 + .../src/FinfoMimeTypeDetector.php | 92 + .../src/GeneratedExtensionToMimeTypeMap.php | 1227 ++++ .../src/MimeTypeDetector.php | 19 + .../src/OverridingExtensionToMimeTypeMap.php | 30 + msd/vendor/monolog/monolog/CHANGELOG.md | 608 ++ msd/vendor/monolog/monolog/LICENSE | 19 + msd/vendor/monolog/monolog/README.md | 112 + msd/vendor/monolog/monolog/UPGRADE.md | 72 + msd/vendor/monolog/monolog/composer.json | 81 + .../Monolog/Attribute/AsMonologProcessor.php | 46 + .../monolog/src/Monolog/DateTimeImmutable.php | 49 + .../monolog/src/Monolog/ErrorHandler.php | 307 + .../Monolog/Formatter/ChromePHPFormatter.php | 83 + .../Monolog/Formatter/ElasticaFormatter.php | 89 + .../Formatter/ElasticsearchFormatter.php | 89 + .../Monolog/Formatter/FlowdockFormatter.php | 111 + .../Monolog/Formatter/FluentdFormatter.php | 88 + .../Monolog/Formatter/FormatterInterface.php | 42 + .../Formatter/GelfMessageFormatter.php | 160 + .../Formatter/GoogleCloudLoggingFormatter.php | 39 + .../src/Monolog/Formatter/HtmlFormatter.php | 142 + .../src/Monolog/Formatter/JsonFormatter.php | 224 + .../src/Monolog/Formatter/LineFormatter.php | 246 + .../src/Monolog/Formatter/LogglyFormatter.php | 45 + .../Monolog/Formatter/LogmaticFormatter.php | 66 + .../Monolog/Formatter/LogstashFormatter.php | 101 + .../Monolog/Formatter/MongoDBFormatter.php | 162 + .../Monolog/Formatter/NormalizerFormatter.php | 287 + .../src/Monolog/Formatter/ScalarFormatter.php | 51 + .../Monolog/Formatter/WildfireFormatter.php | 139 + .../src/Monolog/Handler/AbstractHandler.php | 112 + .../Handler/AbstractProcessingHandler.php | 69 + .../Monolog/Handler/AbstractSyslogHandler.php | 106 + .../src/Monolog/Handler/AmqpHandler.php | 170 + .../Monolog/Handler/BrowserConsoleHandler.php | 293 + .../src/Monolog/Handler/BufferHandler.php | 167 + .../src/Monolog/Handler/ChromePHPHandler.php | 196 + .../src/Monolog/Handler/CouchDBHandler.php | 77 + .../src/Monolog/Handler/CubeHandler.php | 167 + .../monolog/src/Monolog/Handler/Curl/Util.php | 71 + .../Monolog/Handler/DeduplicationHandler.php | 186 + .../Handler/DoctrineCouchDBHandler.php | 47 + .../src/Monolog/Handler/DynamoDbHandler.php | 104 + .../src/Monolog/Handler/ElasticaHandler.php | 129 + .../Monolog/Handler/ElasticsearchHandler.php | 218 + .../src/Monolog/Handler/ErrorLogHandler.php | 91 + .../Monolog/Handler/FallbackGroupHandler.php | 71 + .../src/Monolog/Handler/FilterHandler.php | 212 + .../ActivationStrategyInterface.php | 29 + .../ChannelLevelActivationStrategy.php | 77 + .../ErrorLevelActivationStrategy.php | 46 + .../Monolog/Handler/FingersCrossedHandler.php | 252 + .../src/Monolog/Handler/FirePHPHandler.php | 180 + .../src/Monolog/Handler/FleepHookHandler.php | 135 + .../src/Monolog/Handler/FlowdockHandler.php | 132 + .../Handler/FormattableHandlerInterface.php | 37 + .../Handler/FormattableHandlerTrait.php | 60 + .../src/Monolog/Handler/GelfHandler.php | 57 + .../src/Monolog/Handler/GroupHandler.php | 132 + .../monolog/src/Monolog/Handler/Handler.php | 62 + .../src/Monolog/Handler/HandlerInterface.php | 85 + .../src/Monolog/Handler/HandlerWrapper.php | 136 + .../src/Monolog/Handler/IFTTTHandler.php | 74 + .../src/Monolog/Handler/InsightOpsHandler.php | 76 + .../src/Monolog/Handler/LogEntriesHandler.php | 70 + .../src/Monolog/Handler/LogglyHandler.php | 160 + .../src/Monolog/Handler/LogmaticHandler.php | 106 + .../src/Monolog/Handler/MailHandler.php | 95 + .../src/Monolog/Handler/MandrillHandler.php | 83 + .../Handler/MissingExtensionException.php | 21 + .../src/Monolog/Handler/MongoDBHandler.php | 86 + .../Monolog/Handler/NativeMailerHandler.php | 174 + .../src/Monolog/Handler/NewRelicHandler.php | 199 + .../src/Monolog/Handler/NoopHandler.php | 40 + .../src/Monolog/Handler/NullHandler.php | 60 + .../src/Monolog/Handler/OverflowHandler.php | 149 + .../src/Monolog/Handler/PHPConsoleHandler.php | 263 + .../src/Monolog/Handler/ProcessHandler.php | 191 + .../Handler/ProcessableHandlerInterface.php | 44 + .../Handler/ProcessableHandlerTrait.php | 77 + .../src/Monolog/Handler/PsrHandler.php | 95 + .../src/Monolog/Handler/PushoverHandler.php | 246 + .../src/Monolog/Handler/RedisHandler.php | 101 + .../Monolog/Handler/RedisPubSubHandler.php | 67 + .../src/Monolog/Handler/RollbarHandler.php | 131 + .../Monolog/Handler/RotatingFileHandler.php | 207 + .../src/Monolog/Handler/SamplingHandler.php | 132 + .../src/Monolog/Handler/SendGridHandler.php | 102 + .../src/Monolog/Handler/Slack/SlackRecord.php | 387 ++ .../src/Monolog/Handler/SlackHandler.php | 256 + .../Monolog/Handler/SlackWebhookHandler.php | 130 + .../src/Monolog/Handler/SocketHandler.php | 448 ++ .../src/Monolog/Handler/SqsHandler.php | 62 + .../src/Monolog/Handler/StreamHandler.php | 221 + .../Monolog/Handler/SwiftMailerHandler.php | 115 + .../Monolog/Handler/SymfonyMailerHandler.php | 111 + .../src/Monolog/Handler/SyslogHandler.php | 68 + .../Monolog/Handler/SyslogUdp/UdpSocket.php | 88 + .../src/Monolog/Handler/SyslogUdpHandler.php | 150 + .../Monolog/Handler/TelegramBotHandler.php | 274 + .../src/Monolog/Handler/TestHandler.php | 231 + .../Handler/WebRequestRecognizerTrait.php | 24 + .../Handler/WhatFailureGroupHandler.php | 67 + .../Monolog/Handler/ZendMonitorHandler.php | 101 + .../monolog/monolog/src/Monolog/LogRecord.php | 34 + .../monolog/monolog/src/Monolog/Logger.php | 701 +++ .../src/Monolog/Processor/GitProcessor.php | 77 + .../Monolog/Processor/HostnameProcessor.php | 36 + .../Processor/IntrospectionProcessor.php | 123 + .../Processor/MemoryPeakUsageProcessor.php | 37 + .../src/Monolog/Processor/MemoryProcessor.php | 61 + .../Processor/MemoryUsageProcessor.php | 37 + .../Monolog/Processor/MercurialProcessor.php | 77 + .../Monolog/Processor/ProcessIdProcessor.php | 30 + .../Monolog/Processor/ProcessorInterface.php | 30 + .../Processor/PsrLogMessageProcessor.php | 86 + .../src/Monolog/Processor/TagProcessor.php | 61 + .../src/Monolog/Processor/UidProcessor.php | 59 + .../src/Monolog/Processor/WebProcessor.php | 111 + .../monolog/monolog/src/Monolog/Registry.php | 134 + .../src/Monolog/ResettableInterface.php | 34 + .../monolog/src/Monolog/SignalHandler.php | 120 + .../monolog/src/Monolog/Test/TestCase.php | 85 + .../monolog/monolog/src/Monolog/Utils.php | 284 + msd/vendor/phpseclib/phpseclib/AUTHORS | 7 + msd/vendor/phpseclib/phpseclib/BACKERS.md | 14 + msd/vendor/phpseclib/phpseclib/LICENSE | 20 + msd/vendor/phpseclib/phpseclib/README.md | 101 + msd/vendor/phpseclib/phpseclib/appveyor.yml | 27 + msd/vendor/phpseclib/phpseclib/composer.json | 76 + .../phpseclib/phpseclib/Crypt/AES.php | 126 + .../phpseclib/phpseclib/Crypt/Base.php | 2907 +++++++++ .../phpseclib/phpseclib/Crypt/Blowfish.php | 992 +++ .../phpseclib/phpseclib/Crypt/DES.php | 1449 +++++ .../phpseclib/phpseclib/Crypt/Hash.php | 893 +++ .../phpseclib/phpseclib/Crypt/RC2.php | 694 +++ .../phpseclib/phpseclib/Crypt/RC4.php | 348 ++ .../phpseclib/phpseclib/Crypt/RSA.php | 3342 ++++++++++ .../phpseclib/phpseclib/Crypt/Random.php | 280 + .../phpseclib/phpseclib/Crypt/Rijndael.php | 941 +++ .../phpseclib/phpseclib/Crypt/TripleDES.php | 460 ++ .../phpseclib/phpseclib/Crypt/Twofish.php | 852 +++ .../phpseclib/phpseclib/File/ANSI.php | 577 ++ .../phpseclib/phpseclib/File/ASN1.php | 1469 +++++ .../phpseclib/phpseclib/File/ASN1/Element.php | 47 + .../phpseclib/phpseclib/File/X509.php | 5102 ++++++++++++++++ .../phpseclib/phpseclib/Math/BigInteger.php | 3787 ++++++++++++ .../phpseclib/phpseclib/phpseclib/Net/SCP.php | 349 ++ .../phpseclib/phpseclib/Net/SFTP.php | 3901 ++++++++++++ .../phpseclib/phpseclib/Net/SFTP/Stream.php | 796 +++ .../phpseclib/phpseclib/Net/SSH1.php | 1662 +++++ .../phpseclib/phpseclib/Net/SSH2.php | 5423 +++++++++++++++++ .../phpseclib/phpseclib/System/SSH/Agent.php | 361 ++ .../phpseclib/System/SSH/Agent/Identity.php | 241 + .../phpseclib/phpseclib/bootstrap.php | 17 + .../phpseclib/phpseclib/phpseclib/openssl.cnf | 6 + msd/vendor/psr/log/LICENSE | 19 + msd/vendor/psr/log/Psr/Log/AbstractLogger.php | 128 + .../log/Psr/Log/InvalidArgumentException.php | 7 + msd/vendor/psr/log/Psr/Log/LogLevel.php | 18 + .../psr/log/Psr/Log/LoggerAwareInterface.php | 18 + .../psr/log/Psr/Log/LoggerAwareTrait.php | 26 + .../psr/log/Psr/Log/LoggerInterface.php | 125 + msd/vendor/psr/log/Psr/Log/LoggerTrait.php | 142 + msd/vendor/psr/log/Psr/Log/NullLogger.php | 30 + msd/vendor/psr/log/Psr/Log/Test/DummyTest.php | 18 + .../log/Psr/Log/Test/LoggerInterfaceTest.php | 138 + .../psr/log/Psr/Log/Test/TestLogger.php | 147 + msd/vendor/psr/log/README.md | 58 + msd/vendor/psr/log/composer.json | 26 + .../psr/simple-cache/src/CacheException.php | 10 + .../psr/simple-cache/src/CacheInterface.php | 114 + .../src/InvalidArgumentException.php | 13 + .../php-auto-update/.editorconfig | 11 + .../.github/workflows/phpunit.yml | 39 + .../visualappeal/php-auto-update/.gitignore | 5 + .../visualappeal/php-auto-update/Dockerfile | 12 + .../visualappeal/php-auto-update/LICENSE.md | 7 + .../visualappeal/php-auto-update/README.md | 29 + .../visualappeal/php-auto-update/SECURITY.md | 16 + .../php-auto-update/composer.json | 37 + .../php-auto-update/docker-compose.yaml | 7 + .../example/client/files/file1.php | 1 + .../example/client/files/file2.php | 1 + .../php-auto-update/example/client/index.php | 19 + .../example/client/somefile.php | 1 + .../example/client/update/.gitignore | 2 + .../php-auto-update/src/AutoUpdate.php | 1019 ++++ .../src/Exceptions/DownloadException.php | 5 + .../src/Exceptions/ParserException.php | 5 + .../php-auto-update/tests/AutoUpdateTest.php | 181 + .../php-auto-update/tests/UnitTests.xml | 7 + .../tests/fixtures/noUpdateAvailable.ini | 8 + .../tests/fixtures/noUpdateAvailable.json | 5 + .../fixtures/noUpdateAvailable.json.master | 5 + .../tests/fixtures/updateAvailable.ini | 8 + .../tests/fixtures/updateAvailable.json | 5 + .../tests/fixtures/updateAvailable.json.dev | 5 + msd/work/config/myoosdumper.conf.php | 26 +- msd/work/config/myoosdumper.php | 120 +- msd/work/log/mysqldump.log.gz | Bin 464 -> 0 bytes msd/work/log/mysqldump_perl.complete.log.gz | Bin 200324 -> 0 bytes msd/work/log/mysqldump_perl.log.gz | Bin 33919 -> 0 bytes 681 files changed, 96753 insertions(+), 24555 deletions(-) create mode 100644 msd/.gitignore create mode 100644 msd/README.md delete mode 100644 msd/ReadMe/changelog_deutsch.txt delete mode 100644 msd/ReadMe/changelog_english.txt delete mode 100644 msd/ReadMe/install_deutsch.txt delete mode 100644 msd/ReadMe/install_english.txt delete mode 100644 msd/ReadMe/install_francais.txt delete mode 100644 msd/ReadMe/install_italiano.txt delete mode 100644 msd/ReadMe/license_deutsch.txt create mode 100644 msd/composer.json create mode 100644 msd/composer.lock rename msd/css/{msd => mod}/icons/arrow_down.gif (100%) rename msd/css/{msd => mod}/icons/arrow_up.gif (100%) rename msd/css/{msd => mod}/icons/arrowdown.gif (100%) rename msd/css/{msd => mod}/icons/arrowleft.gif (100%) rename msd/css/{msd => mod}/icons/arrowup.gif (100%) rename msd/css/{msd => mod}/icons/blank.gif (100%) rename msd/css/{msd => mod}/icons/browse.gif (100%) rename msd/css/{msd => mod}/icons/close.gif (100%) rename msd/css/{msd => mod}/icons/delete.gif (100%) rename msd/css/{msd => mod}/icons/edit.gif (100%) rename msd/css/{msd => mod}/icons/gz.gif (100%) rename msd/css/{msd => mod}/icons/index.gif (100%) rename msd/css/{msd => mod}/icons/key_fulltext.gif (100%) rename msd/css/{msd => mod}/icons/key_nokey.gif (100%) rename msd/css/{msd => mod}/icons/key_primary.gif (100%) rename msd/css/{msd => mod}/icons/key_unique.gif (100%) rename msd/css/{msd => mod}/icons/mysql_help.gif (100%) rename msd/css/{msd => mod}/icons/notok.gif (100%) rename msd/css/{msd => mod}/icons/ok.gif (100%) rename msd/css/{msd => mod}/icons/openfile.gif (100%) rename msd/css/{msd => mod}/icons/progressbar_dump.gif (100%) rename msd/css/{msd => mod}/icons/progressbar_restore.gif (100%) rename msd/css/{msd => mod}/icons/progressbar_speed.gif (100%) rename msd/css/{msd => mod}/icons/rename.gif (100%) rename msd/css/{msd => mod}/icons/search.gif (100%) rename msd/css/{msd => mod}/icons/table_truncate.gif (100%) rename msd/css/{msd => mod}/icons/table_truncate_reset.gif (100%) rename msd/css/{msd => mod}/pics/bg-body.gif (100%) rename msd/css/{msd => mod}/pics/bg-buttons.gif (100%) rename msd/css/{msd => mod}/pics/bg-headings.gif (100%) rename msd/css/{msd => mod}/pics/blank.gif (100%) rename msd/css/{msd => mod}/pics/h1_logo.gif (100%) rename msd/css/{msd => mod}/pics/loveyourdata.gif (100%) rename msd/css/{msd => mod}/pics/navi_bg.jpg (100%) rename msd/css/{msd => mod}/style.css (99%) rename msd/css/{msd_green => mod_green}/icons/arrow_down.gif (100%) rename msd/css/{msd_green => mod_green}/icons/arrow_up.gif (100%) rename msd/css/{msd_green => mod_green}/icons/arrowdown.gif (100%) rename msd/css/{msd_green => mod_green}/icons/arrowleft.gif (100%) rename msd/css/{msd_green => mod_green}/icons/arrowup.gif (100%) rename msd/css/{msd_green => mod_green}/icons/blank.gif (100%) rename msd/css/{msd_green => mod_green}/icons/browse.gif (100%) rename msd/css/{msd_green => mod_green}/icons/close.gif (100%) rename msd/css/{msd_green => mod_green}/icons/delete.gif (100%) rename msd/css/{msd_green => mod_green}/icons/edit.gif (100%) rename msd/css/{msd_green => mod_green}/icons/gz.gif (100%) rename msd/css/{msd_green => mod_green}/icons/index.gif (100%) rename msd/css/{msd_green => mod_green}/icons/key_fulltext.gif (100%) rename msd/css/{msd_green => mod_green}/icons/key_nokey.gif (100%) rename msd/css/{msd_green => mod_green}/icons/key_primary.gif (100%) rename msd/css/{msd_green => mod_green}/icons/key_unique.gif (100%) rename msd/css/{msd_green => mod_green}/icons/mysql_help.gif (100%) rename msd/css/{msd_green => mod_green}/icons/nokey.gif (100%) rename msd/css/{msd_green => mod_green}/icons/notok.gif (100%) rename msd/css/{msd_green => mod_green}/icons/ok.gif (100%) rename msd/css/{msd_green => mod_green}/icons/openfile.gif (100%) rename msd/css/{msd_green => mod_green}/icons/progressbar_dump.gif (100%) rename msd/css/{msd_green => mod_green}/icons/progressbar_restore.gif (100%) rename msd/css/{msd_green => mod_green}/icons/progressbar_speed.gif (100%) rename msd/css/{msd_green => mod_green}/icons/rename.gif (100%) rename msd/css/{msd_green => mod_green}/icons/search.gif (100%) rename msd/css/{msd_green => mod_green}/icons/table_truncate.gif (100%) rename msd/css/{msd_green => mod_green}/icons/table_truncate_reset.gif (100%) rename msd/css/{msd_green => mod_green}/pics/body_bg.gif (100%) rename msd/css/{msd_green => mod_green}/pics/h1_logo.gif (100%) rename msd/css/{msd_green => mod_green}/pics/loveyourdata.gif (100%) rename msd/css/{msd_green => mod_green}/pics/mainnavi.gif (100%) rename msd/css/{msd_green => mod_green}/pics/navi_bg.jpg (100%) rename msd/css/{msd_green => mod_green}/pics/overall_bg.gif (100%) rename msd/css/{msd_green => mod_green}/pics/pagetitle.gif (100%) delete mode 100644 msd/css/msd_green/style.css delete mode 100644 msd/images/logo.gif create mode 100644 msd/images/qrcode.png create mode 100644 msd/inc/home/apr1_md5/apr1_md5.php create mode 100644 msd/inc/home/apr1_md5/license.txt create mode 100644 msd/inc/home/apr1_md5/origin_url.txt create mode 100644 msd/inc/home/update.php delete mode 100644 msd/inc/mysql.php create mode 100644 msd/inc/mysqli.php delete mode 100644 msd/inc/tabellenabfrage.php create mode 100644 msd/inc/table_query.php create mode 100644 msd/language/ar/help.html delete mode 100644 msd/language/ar/help.php create mode 100644 msd/language/ch/help.html delete mode 100644 msd/language/ch/help.php create mode 100644 msd/language/da/help.html delete mode 100644 msd/language/da/help.php rename msd/language/{de_du/help.php => de/help.html} (63%) rename msd/language/{de/help.php => de_du/help.html} (62%) create mode 100644 msd/language/el/help.html delete mode 100644 msd/language/el/help.php create mode 100644 msd/language/en/help.html delete mode 100644 msd/language/en/help.php create mode 100644 msd/language/es/help.html delete mode 100644 msd/language/es/help.php create mode 100644 msd/language/fr/help.html delete mode 100644 msd/language/fr/help.php create mode 100644 msd/language/it/help.html delete mode 100644 msd/language/it/help.php create mode 100644 msd/language/pt_br/help.html delete mode 100644 msd/language/pt_br/help.php create mode 100644 msd/language/sw/help.html delete mode 100644 msd/language/sw/help.php create mode 100644 msd/language/tr/help.html delete mode 100644 msd/language/tr/help.php create mode 100644 msd/language/vn/help.html delete mode 100644 msd/language/vn/help.php create mode 100644 msd/license.txt rename msd/{msd_cron => mod_cron}/crondump.pl (93%) rename msd/{msd_cron => mod_cron}/perltest.pl (94%) rename msd/{msd_cron => mod_cron}/simpletest.pl (77%) create mode 100644 msd/vendor/autoload.php create mode 100644 msd/vendor/composer/ClassLoader.php create mode 100644 msd/vendor/composer/InstalledVersions.php create mode 100644 msd/vendor/composer/LICENSE create mode 100644 msd/vendor/composer/autoload_classmap.php create mode 100644 msd/vendor/composer/autoload_files.php create mode 100644 msd/vendor/composer/autoload_namespaces.php create mode 100644 msd/vendor/composer/autoload_psr4.php create mode 100644 msd/vendor/composer/autoload_real.php create mode 100644 msd/vendor/composer/autoload_static.php create mode 100644 msd/vendor/composer/installed.json create mode 100644 msd/vendor/composer/installed.php create mode 100644 msd/vendor/composer/platform_check.php create mode 100644 msd/vendor/composer/semver/CHANGELOG.md create mode 100644 msd/vendor/composer/semver/LICENSE create mode 100644 msd/vendor/composer/semver/README.md create mode 100644 msd/vendor/composer/semver/composer.json create mode 100644 msd/vendor/composer/semver/src/Comparator.php create mode 100644 msd/vendor/composer/semver/src/CompilingMatcher.php create mode 100644 msd/vendor/composer/semver/src/Constraint/Bound.php create mode 100644 msd/vendor/composer/semver/src/Constraint/Constraint.php create mode 100644 msd/vendor/composer/semver/src/Constraint/ConstraintInterface.php create mode 100644 msd/vendor/composer/semver/src/Constraint/MatchAllConstraint.php create mode 100644 msd/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php create mode 100644 msd/vendor/composer/semver/src/Constraint/MultiConstraint.php create mode 100644 msd/vendor/composer/semver/src/Interval.php create mode 100644 msd/vendor/composer/semver/src/Intervals.php create mode 100644 msd/vendor/composer/semver/src/Semver.php create mode 100644 msd/vendor/composer/semver/src/VersionParser.php create mode 100644 msd/vendor/desarrolla2/cache/.formatter.yml create mode 100644 msd/vendor/desarrolla2/cache/.github/workflows/php.yml create mode 100644 msd/vendor/desarrolla2/cache/.gitignore create mode 100644 msd/vendor/desarrolla2/cache/.scrutinizer.yml create mode 100644 msd/vendor/desarrolla2/cache/LICENSE create mode 100644 msd/vendor/desarrolla2/cache/README.md create mode 100644 msd/vendor/desarrolla2/cache/build.xml create mode 100644 msd/vendor/desarrolla2/cache/composer.json create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/apcu.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/chain.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/file.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/memcached.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/memory.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/mongodb.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/mysqli.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/notcache.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/phpfile.md create mode 100644 msd/vendor/desarrolla2/cache/docs/implementations/predis.md create mode 100644 msd/vendor/desarrolla2/cache/docs/performance.md create mode 100644 msd/vendor/desarrolla2/cache/phpcs.xml create mode 100644 msd/vendor/desarrolla2/cache/phpstan.neon create mode 100644 msd/vendor/desarrolla2/cache/phpunit.xml.dist create mode 100644 msd/vendor/desarrolla2/cache/src/AbstractCache.php create mode 100644 msd/vendor/desarrolla2/cache/src/AbstractFile.php create mode 100644 msd/vendor/desarrolla2/cache/src/Apcu.php create mode 100644 msd/vendor/desarrolla2/cache/src/CacheInterface.php create mode 100644 msd/vendor/desarrolla2/cache/src/Chain.php create mode 100644 msd/vendor/desarrolla2/cache/src/Exception/BadMethodCallException.php create mode 100644 msd/vendor/desarrolla2/cache/src/Exception/CacheException.php create mode 100644 msd/vendor/desarrolla2/cache/src/Exception/InvalidArgumentException.php create mode 100644 msd/vendor/desarrolla2/cache/src/Exception/UnexpectedValueException.php create mode 100644 msd/vendor/desarrolla2/cache/src/File.php create mode 100644 msd/vendor/desarrolla2/cache/src/File/BasicFilename.php create mode 100644 msd/vendor/desarrolla2/cache/src/File/TrieFilename.php create mode 100644 msd/vendor/desarrolla2/cache/src/Memcached.php create mode 100644 msd/vendor/desarrolla2/cache/src/Memory.php create mode 100644 msd/vendor/desarrolla2/cache/src/MongoDB.php create mode 100644 msd/vendor/desarrolla2/cache/src/Mysqli.php create mode 100644 msd/vendor/desarrolla2/cache/src/NotCache.php create mode 100644 msd/vendor/desarrolla2/cache/src/Option/FilenameTrait.php create mode 100644 msd/vendor/desarrolla2/cache/src/Option/InitializeTrait.php create mode 100644 msd/vendor/desarrolla2/cache/src/Option/PrefixTrait.php create mode 100644 msd/vendor/desarrolla2/cache/src/Option/TtlTrait.php create mode 100644 msd/vendor/desarrolla2/cache/src/Packer/JsonPacker.php create mode 100644 msd/vendor/desarrolla2/cache/src/Packer/MongoDBBinaryPacker.php create mode 100644 msd/vendor/desarrolla2/cache/src/Packer/NopPacker.php create mode 100644 msd/vendor/desarrolla2/cache/src/Packer/PackerInterface.php create mode 100644 msd/vendor/desarrolla2/cache/src/Packer/PackingTrait.php create mode 100644 msd/vendor/desarrolla2/cache/src/Packer/SerializePacker.php create mode 100644 msd/vendor/desarrolla2/cache/src/PhpFile.php create mode 100644 msd/vendor/desarrolla2/cache/src/Predis.php create mode 100644 msd/vendor/desarrolla2/cache/tests/AbstractCacheTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/ApcuCacheTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/ChainTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/FileTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/FileTrieTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/FileTtlFileTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/MemcachedTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/MemoryTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/MongoDBTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/MysqliTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/NotCacheTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/PhpFileTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/PredisTest.php create mode 100644 msd/vendor/desarrolla2/cache/tests/performance/Apc.php create mode 100644 msd/vendor/desarrolla2/cache/tests/performance/File.php create mode 100644 msd/vendor/desarrolla2/cache/tests/performance/Mongo.php create mode 100644 msd/vendor/desarrolla2/cache/tests/performance/NoCache.php create mode 100644 msd/vendor/desarrolla2/cache/tests/performance/common.php create mode 100644 msd/vendor/league/flysystem-sftp/ConnectionProvider.php create mode 100644 msd/vendor/league/flysystem-sftp/ConnectivityChecker.php create mode 100644 msd/vendor/league/flysystem-sftp/FixatedConnectivityChecker.php create mode 100644 msd/vendor/league/flysystem-sftp/README.md create mode 100644 msd/vendor/league/flysystem-sftp/SftpAdapter.php create mode 100644 msd/vendor/league/flysystem-sftp/SftpConnectionProvider.php create mode 100644 msd/vendor/league/flysystem-sftp/SimpleConnectivityChecker.php create mode 100644 msd/vendor/league/flysystem-sftp/StubSftpConnectionProvider.php create mode 100644 msd/vendor/league/flysystem-sftp/UnableToAuthenticate.php create mode 100644 msd/vendor/league/flysystem-sftp/UnableToConnectToSftpHost.php create mode 100644 msd/vendor/league/flysystem-sftp/UnableToEstablishAuthenticityOfHost.php create mode 100644 msd/vendor/league/flysystem-sftp/UnableToLoadPrivateKey.php create mode 100644 msd/vendor/league/flysystem-sftp/composer.json create mode 100644 msd/vendor/league/flysystem/INFO.md create mode 100644 msd/vendor/league/flysystem/LICENSE create mode 100644 msd/vendor/league/flysystem/composer.json create mode 100644 msd/vendor/league/flysystem/config.subsplit-publish.json create mode 100644 msd/vendor/league/flysystem/docker-compose.yml create mode 100644 msd/vendor/league/flysystem/readme.md create mode 100644 msd/vendor/league/flysystem/src/Config.php create mode 100644 msd/vendor/league/flysystem/src/CorruptedPathDetected.php create mode 100644 msd/vendor/league/flysystem/src/DirectoryAttributes.php create mode 100644 msd/vendor/league/flysystem/src/DirectoryListing.php create mode 100644 msd/vendor/league/flysystem/src/FileAttributes.php create mode 100644 msd/vendor/league/flysystem/src/Filesystem.php create mode 100644 msd/vendor/league/flysystem/src/FilesystemAdapter.php create mode 100644 msd/vendor/league/flysystem/src/FilesystemException.php create mode 100644 msd/vendor/league/flysystem/src/FilesystemOperationFailed.php create mode 100644 msd/vendor/league/flysystem/src/FilesystemOperator.php create mode 100644 msd/vendor/league/flysystem/src/FilesystemReader.php create mode 100644 msd/vendor/league/flysystem/src/FilesystemWriter.php create mode 100644 msd/vendor/league/flysystem/src/InvalidStreamProvided.php create mode 100644 msd/vendor/league/flysystem/src/InvalidVisibilityProvided.php create mode 100644 msd/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php create mode 100644 msd/vendor/league/flysystem/src/MountManager.php create mode 100644 msd/vendor/league/flysystem/src/PathNormalizer.php create mode 100644 msd/vendor/league/flysystem/src/PathPrefixer.php create mode 100644 msd/vendor/league/flysystem/src/PathTraversalDetected.php create mode 100644 msd/vendor/league/flysystem/src/PortableVisibilityGuard.php create mode 100644 msd/vendor/league/flysystem/src/ProxyArrayAccessToProperties.php create mode 100644 msd/vendor/league/flysystem/src/StorageAttributes.php create mode 100644 msd/vendor/league/flysystem/src/SymbolicLinkEncountered.php create mode 100644 msd/vendor/league/flysystem/src/UnableToCheckFileExistence.php create mode 100644 msd/vendor/league/flysystem/src/UnableToCopyFile.php create mode 100644 msd/vendor/league/flysystem/src/UnableToCreateDirectory.php create mode 100644 msd/vendor/league/flysystem/src/UnableToDeleteDirectory.php create mode 100644 msd/vendor/league/flysystem/src/UnableToDeleteFile.php create mode 100644 msd/vendor/league/flysystem/src/UnableToMountFilesystem.php create mode 100644 msd/vendor/league/flysystem/src/UnableToMoveFile.php create mode 100644 msd/vendor/league/flysystem/src/UnableToReadFile.php create mode 100644 msd/vendor/league/flysystem/src/UnableToResolveFilesystemMount.php create mode 100644 msd/vendor/league/flysystem/src/UnableToRetrieveMetadata.php create mode 100644 msd/vendor/league/flysystem/src/UnableToSetVisibility.php create mode 100644 msd/vendor/league/flysystem/src/UnableToWriteFile.php create mode 100644 msd/vendor/league/flysystem/src/UnixVisibility/PortableVisibilityConverter.php create mode 100644 msd/vendor/league/flysystem/src/UnixVisibility/VisibilityConverter.php create mode 100644 msd/vendor/league/flysystem/src/UnreadableFileEncountered.php create mode 100644 msd/vendor/league/flysystem/src/Visibility.php create mode 100644 msd/vendor/league/flysystem/src/WhitespacePathNormalizer.php create mode 100644 msd/vendor/league/mime-type-detection/CHANGELOG.md create mode 100644 msd/vendor/league/mime-type-detection/LICENSE create mode 100644 msd/vendor/league/mime-type-detection/composer.json create mode 100644 msd/vendor/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php create mode 100644 msd/vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php create mode 100644 msd/vendor/league/mime-type-detection/src/ExtensionToMimeTypeMap.php create mode 100644 msd/vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php create mode 100644 msd/vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php create mode 100644 msd/vendor/league/mime-type-detection/src/MimeTypeDetector.php create mode 100644 msd/vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php create mode 100644 msd/vendor/monolog/monolog/CHANGELOG.md create mode 100644 msd/vendor/monolog/monolog/LICENSE create mode 100644 msd/vendor/monolog/monolog/README.md create mode 100644 msd/vendor/monolog/monolog/UPGRADE.md create mode 100644 msd/vendor/monolog/monolog/composer.json create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/ErrorHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/Handler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/LogRecord.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Logger.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Registry.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/ResettableInterface.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/SignalHandler.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Test/TestCase.php create mode 100644 msd/vendor/monolog/monolog/src/Monolog/Utils.php create mode 100644 msd/vendor/phpseclib/phpseclib/AUTHORS create mode 100644 msd/vendor/phpseclib/phpseclib/BACKERS.md create mode 100644 msd/vendor/phpseclib/phpseclib/LICENSE create mode 100644 msd/vendor/phpseclib/phpseclib/README.md create mode 100644 msd/vendor/phpseclib/phpseclib/appveyor.yml create mode 100644 msd/vendor/phpseclib/phpseclib/composer.json create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/AES.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/DES.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/RC2.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/RC4.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/File/X509.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Net/SCP.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/bootstrap.php create mode 100644 msd/vendor/phpseclib/phpseclib/phpseclib/openssl.cnf create mode 100644 msd/vendor/psr/log/LICENSE create mode 100644 msd/vendor/psr/log/Psr/Log/AbstractLogger.php create mode 100644 msd/vendor/psr/log/Psr/Log/InvalidArgumentException.php create mode 100644 msd/vendor/psr/log/Psr/Log/LogLevel.php create mode 100644 msd/vendor/psr/log/Psr/Log/LoggerAwareInterface.php create mode 100644 msd/vendor/psr/log/Psr/Log/LoggerAwareTrait.php create mode 100644 msd/vendor/psr/log/Psr/Log/LoggerInterface.php create mode 100644 msd/vendor/psr/log/Psr/Log/LoggerTrait.php create mode 100644 msd/vendor/psr/log/Psr/Log/NullLogger.php create mode 100644 msd/vendor/psr/log/Psr/Log/Test/DummyTest.php create mode 100644 msd/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php create mode 100644 msd/vendor/psr/log/Psr/Log/Test/TestLogger.php create mode 100644 msd/vendor/psr/log/README.md create mode 100644 msd/vendor/psr/log/composer.json create mode 100644 msd/vendor/psr/simple-cache/src/CacheException.php create mode 100644 msd/vendor/psr/simple-cache/src/CacheInterface.php create mode 100644 msd/vendor/psr/simple-cache/src/InvalidArgumentException.php create mode 100644 msd/vendor/visualappeal/php-auto-update/.editorconfig create mode 100644 msd/vendor/visualappeal/php-auto-update/.github/workflows/phpunit.yml create mode 100644 msd/vendor/visualappeal/php-auto-update/.gitignore create mode 100644 msd/vendor/visualappeal/php-auto-update/Dockerfile create mode 100644 msd/vendor/visualappeal/php-auto-update/LICENSE.md create mode 100644 msd/vendor/visualappeal/php-auto-update/README.md create mode 100644 msd/vendor/visualappeal/php-auto-update/SECURITY.md create mode 100644 msd/vendor/visualappeal/php-auto-update/composer.json create mode 100644 msd/vendor/visualappeal/php-auto-update/docker-compose.yaml create mode 100644 msd/vendor/visualappeal/php-auto-update/example/client/files/file1.php create mode 100644 msd/vendor/visualappeal/php-auto-update/example/client/files/file2.php create mode 100644 msd/vendor/visualappeal/php-auto-update/example/client/index.php create mode 100644 msd/vendor/visualappeal/php-auto-update/example/client/somefile.php create mode 100644 msd/vendor/visualappeal/php-auto-update/example/client/update/.gitignore create mode 100644 msd/vendor/visualappeal/php-auto-update/src/AutoUpdate.php create mode 100644 msd/vendor/visualappeal/php-auto-update/src/Exceptions/DownloadException.php create mode 100644 msd/vendor/visualappeal/php-auto-update/src/Exceptions/ParserException.php create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/AutoUpdateTest.php create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/UnitTests.xml create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/fixtures/noUpdateAvailable.ini create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/fixtures/noUpdateAvailable.json create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/fixtures/noUpdateAvailable.json.master create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/fixtures/updateAvailable.ini create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/fixtures/updateAvailable.json create mode 100644 msd/vendor/visualappeal/php-auto-update/tests/fixtures/updateAvailable.json.dev delete mode 100644 msd/work/log/mysqldump.log.gz delete mode 100644 msd/work/log/mysqldump_perl.complete.log.gz delete mode 100644 msd/work/log/mysqldump_perl.log.gz diff --git a/msd/.gitignore b/msd/.gitignore new file mode 100644 index 00000000..c5be9858 --- /dev/null +++ b/msd/.gitignore @@ -0,0 +1,16 @@ +/.php-cs-fixer.cache +/work/config/myoosdumper.conf.php +/work/config/myoosdumper.php +/work/config/sql_statements +/work/log/*.gz +*.bak +/work/config/*.php +/work/backup/*.gz +/work/structure/*.gz +/.project +/.buildpath +/.settings +/work/cache +/work/temp +/work/log/update.log +/nbproject diff --git a/msd/.htaccess b/msd/.htaccess index b7c87f6f..ec3ec769 100644 --- a/msd/.htaccess +++ b/msd/.htaccess @@ -3,5 +3,5 @@ RewriteEngine off AuthName "MyOOS-Dumper" AuthType Basic -AuthUserFile "/var/www/web360/htdocs/leitgedanken_utf8/msd/.htpasswd" +AuthUserFile "/var/www/web360/htdocs/leitgedanken_php8/msd/.htpasswd" require valid-user \ No newline at end of file diff --git a/msd/README.md b/msd/README.md new file mode 100644 index 00000000..5befd68a --- /dev/null +++ b/msd/README.md @@ -0,0 +1,76 @@ +# [MyOOS [Dumper]](https://www.oos-shop.de) +=============== + +MyOOS [Dumper] is an open source community project. MyOOS [Dumper] is a backup program for MySQL databases. With it, backup copies of the data (forum, store, blog, etc.) can be created and restored if necessary. Especially for web space without shell access MyOOS [Dumper] is a useful alternative. + +Requirements +------------ + +- PHP version 7.4 or higher. +- MySQL version 5.6 or higher. +- Apache version 2.4 or higher. + + +Installation +------------ + +1. [Download MyOOS [Dumper]](https://github.com/r23/MyOOS-Dumper/releases) +2. Unzip the downloaded zip file +3. Extract the file into an empty directory and upload everything from the directory Myoos-Dumper to the server. +4. Go to install.php with your browser. The installation routine guides you through the individual steps and helps you to create the access data and database. + + +Documentation +------------- + +### MyOOS [Dumper] +Use your browser to open the [doku.oos-shop.de](https://doku.oos-shop.de/myoos-benutzerhandbuch/ueber-myoos/eine-einfuehrung-in-das-myoos-shopsystem/ueber-mysqldumper/) page for links to documentation. + + +Support +------------- +For free support, visit our support site: (https://foren.myoos.de/viewforum.php?f=40) + + + +Wish list / Future attractions +------------- +Do you have any suggestions for improvement? Feel free to contact the development team via the forum: (https://foren.myoos.de/viewforum.php?f=40) + + + + +Contribute +------------- +If you would like to help us improve the MyOOS project, we welcome your pull requests via GitHub here. +https://github.com/r23/MyOOS-Dumper + + +License +------------- +MyOOS [Dumper] Copyright (c) 2013 - by the MyOOS Development Team. + +based on MySQLDumper 1.24.4 +MySqlDumper Copyright (C)2004-2009 Daniel Schlichtholz (admin@mysqldumper.de) + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +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, write to the Free Software Foundation, Inc., 675 Mass +Ave, Cambridge, MA 02139, USA. + +Released under the GNU General Public License. You can find the whole license text in the `license.txt` file. + + +## Further reading + +* [MyOOS](https://www.oos-shop.de) - Homepage of MyOOS +* [MyOOS Forum](https://foren.myoos.de/viewforum.php?f=40) - Community forum diff --git a/msd/ReadMe/ReadMe.txt b/msd/ReadMe/ReadMe.txt index 920489b3..4cfd19cf 100644 --- a/msd/ReadMe/ReadMe.txt +++ b/msd/ReadMe/ReadMe.txt @@ -1,4 +1,4 @@ -MyOOS [Dumper] Copyright (c) 2016 - by the MyOOS Development Team. +MyOOS [Dumper] Copyright (c) 2013 - by the MyOOS Development Team. based on MySQLDumper 1.24.4 MySqlDumper Copyright (C)2004-2009 Daniel Schlichtholz (admin@mysqldumper.de) diff --git a/msd/ReadMe/changelog_deutsch.txt b/msd/ReadMe/changelog_deutsch.txt deleted file mode 100644 index 369e9358..00000000 --- a/msd/ReadMe/changelog_deutsch.txt +++ /dev/null @@ -1,16 +0,0 @@ -MyOOS [Dumper] Version 4.2.0 - -Folgende Dinge wurden geändert: -- Funktion 'ereg' ist veraltet, wir verwenden 'preg_match' -- Funktion 'split' ist veraltet, wir verweden 'explode' oder 'preg_split' -- Funktion 'mysql_list_tables' is veraltet -- PHP mysql Erweiterung ist seit PHP 5.5.0 veraltet und wurde in PHP 7.0.0 entfernt. Wir verwenden mysqli - - - -MyOOS [Dumper] based on MySQLDumper 1.24.4 - -Wer Du es ganz genau wissen möchtest, dann schaue Dir das changelog auf GitHub an. Hier ist akribisch -jede Änderung am Code dokumentiert: - -https://github.com/r23/MyOOS/tree/master/msd diff --git a/msd/ReadMe/changelog_english.txt b/msd/ReadMe/changelog_english.txt deleted file mode 100644 index c4197e5a..00000000 --- a/msd/ReadMe/changelog_english.txt +++ /dev/null @@ -1,16 +0,0 @@ -MyOOS Version 4.2.0 - -We addressed the following issues: -- Function 'ereg' is deprecated, we use 'preg_match' -- Function 'split' is deprecated, we use 'explode' or 'preg_split' -- Function 'mysql_list_tables' is deprecated -- PHP 'mysql' extension is deprecated as of PHP 5.5.0, and has been removed as of PHP 7.0.0. Instead. - - -MyOOS [Dumper] based on MySQLDumper 1.24.4 - - -When you want to know more, just take a look at the changelog of my code changes at GitHub . Each change -of the code is documented here: - -https://github.com/r23/MyOOS/tree/master/msd diff --git a/msd/ReadMe/install_deutsch.txt b/msd/ReadMe/install_deutsch.txt deleted file mode 100644 index 963134da..00000000 --- a/msd/ReadMe/install_deutsch.txt +++ /dev/null @@ -1,5 +0,0 @@ -Installation: - -- lade den Ordner mysqldumper in einen beliebeigen Ordner auf Deinen Webspace hoch -- Starte das Script im Browser (http://example.org/mysqldumper/) -- Folge den Installationsanweisungen diff --git a/msd/ReadMe/install_english.txt b/msd/ReadMe/install_english.txt deleted file mode 100644 index b50efff0..00000000 --- a/msd/ReadMe/install_english.txt +++ /dev/null @@ -1,5 +0,0 @@ -Installation: - -- upload the folder mysqldumper to any folder on your webspace -- start the script in your browser (http://example.org/mysqldumper/) -- Follow the Installatio assistent \ No newline at end of file diff --git a/msd/ReadMe/install_francais.txt b/msd/ReadMe/install_francais.txt deleted file mode 100644 index c3443240..00000000 --- a/msd/ReadMe/install_francais.txt +++ /dev/null @@ -1,5 +0,0 @@ -Installation: - -- Envoyer le r�pertoire "mysqldumper" sur votre serveur -- D�buter le script en saisissant l'adresse suivante dans votre navigateur (http://example.org/mysqldumper/) -- Suivez les instructions d'installation du script diff --git a/msd/ReadMe/install_italiano.txt b/msd/ReadMe/install_italiano.txt deleted file mode 100644 index 14a6ea81..00000000 --- a/msd/ReadMe/install_italiano.txt +++ /dev/null @@ -1,6 +0,0 @@ -Installazione: - -- carica la cartella mysqldumper sul tuo spazio web -- metti i diritti del file config.php a 777 -- fai partire lo script nel tuo Browser (http://example.org/mysqldumper/) -- segui la installazione \ No newline at end of file diff --git a/msd/ReadMe/license_deutsch.txt b/msd/ReadMe/license_deutsch.txt deleted file mode 100644 index 629c6a8b..00000000 --- a/msd/ReadMe/license_deutsch.txt +++ /dev/null @@ -1,105 +0,0 @@ -GNU General Public License -Deutsche Übersetzung der Version 2, Juni 1991 - -Copyright © 1989, 1991 Free Software Foundation, Inc. - -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - - -Diese Übersetzung ist kein rechtskräftiger Ersatz für die englischsprachige Originalversion! - - -Vorwort -Die meisten Softwarelizenzen sind daraufhin entworfen worden, Ihnen die Freiheit zu nehmen, die Software weiterzugeben und zu verändern. Im Gegensatz dazu soll Ihnen die GNU General Public License , die Allgemeine Öffentliche GNU-Lizenz, ebendiese Freiheit garantieren. Sie soll sicherstellen, daß die Software für alle Benutzer frei ist. Diese Lizenz gilt für den Großteil der von der Free Software Foundation herausgegebenen Software und für alle anderen Programme, deren Autoren ihr Datenwerk dieser Lizenz unterstellt haben. Auch Sie können diese Möglichkeit der Lizenzierung für Ihre Programme anwenden. (Ein anderer Teil der Software der Free Software Foundation unterliegt stattdessen der GNU Library General Public License , der Allgemeinen Öffentlichen GNU-Lizenz für Bibliotheken.) [Mittlerweile wurde die GNU Library Public License von der GNU Lesser Public License abgelöst - Anmerkung des Übersetzers.] - -Die Bezeichnung ,,freie`` Software bezieht sich auf Freiheit, nicht auf den Preis. Unsere Lizenzen sollen Ihnen die Freiheit garantieren, Kopien freier Software zu verbreiten (und etwas für diesen Service zu berechnen, wenn Sie möchten), die Möglichkeit, die Software im Quelltext zu erhalten oder den Quelltext auf Wunsch zu bekommen. Die Lizenzen sollen garantieren, daß Sie die Software ändern oder Teile davon in neuen freien Programmen verwenden dürfen - und daß Sie wissen, daß Sie dies alles tun dürfen. - -Um Ihre Rechte zu schützen, müssen wir Einschränkungen machen, die es jedem verbieten, Ihnen diese Rechte zu verweigern oder Sie aufzufordern, auf diese Rechte zu verzichten. Aus diesen Einschränkungen folgen bestimmte Verantwortlichkeiten für Sie, wenn Sie Kopien der Software verbreiten oder sie verändern. - -Beispielsweise müssen Sie den Empfängern alle Rechte gewähren, die Sie selbst haben, wenn Sie - kostenlos oder gegen Bezahlung - Kopien eines solchen Programms verbreiten. Sie müssen sicherstellen, daß auch die Empfänger den Quelltext erhalten bzw. erhalten können. Und Sie müssen ihnen diese Bedingungen zeigen, damit sie ihre Rechte kennen. - -Wir schützen Ihre Rechte in zwei Schritten: (1) Wir stellen die Software unter ein Urheberrecht (Copyright), und (2) wir bieten Ihnen diese Lizenz an, die Ihnen das Recht gibt, die Software zu vervielfältigen, zu verbreiten und/oder zu verändern. - -Um die Autoren und uns zu schützen, wollen wir darüberhinaus sicherstellen, daß jeder erfährt, daß für diese freie Software keinerlei Garantie besteht. Wenn die Software von jemand anderem modifiziert und weitergegeben wird, möchten wir, daß die Empfänger wissen, daß sie nicht das Original erhalten haben, damit irgendwelche von anderen verursachte Probleme nicht den Ruf des ursprünglichen Autors schädigen. - -Schließlich und endlich ist jedes freie Programm permanent durch Software-Patente bedroht. Wir möchten die Gefahr ausschließen, daß Distributoren eines freien Programms individuell Patente lizensieren - mit dem Ergebnis, daß das Programm proprietär würde. Um dies zu verhindern, haben wir klargestellt, daß jedes Patent entweder für freie Benutzung durch jedermann lizenziert werden muß oder überhaupt nicht lizenziert werden darf. - -Es folgen die genauen Bedingungen für die Vervielfältigung, Verbreitung und Bearbeitung: - - -Allgemeine Öffentliche GNU-Lizenz -Bedingungen für die Vervielfältigung, -Verbreitung und Bearbeitung -§0. Diese Lizenz gilt für jedes Programm und jedes andere Datenwerk, in dem ein entsprechender Vermerk des Copyright-Inhabers darauf hinweist, daß das Datenwerk unter den Bestimmungen dieser General Public License verbreitet werden darf. Im folgenden wird jedes derartige Programm oder Datenwerk als ,,das Programm`` bezeichnet; die Formulierung ,,auf dem Programm basierendes Datenwerk`` bezeichnet das Programm sowie jegliche Bearbeitung des Programms im urheberrechtlichen Sinne, also ein Datenwerk, welches das Programm, auch auszugsweise, sei es unverändert oder verändert und/oder in eine andere Sprache übersetzt, enthält. (Im folgenden wird die Übersetzung ohne Einschränkung als ,,Bearbeitung`` eingestuft.) Jeder Lizenznehmer wird im folgenden als ,,Sie`` angesprochen. - -Andere Handlungen als Vervielfältigung, Verbreitung und Bearbeitung werden von dieser Lizenz nicht berührt; sie fallen nicht in ihren Anwendungsbereich. Der Vorgang der Ausführung des Programms wird nicht eingeschränkt, und die Ausgaben des Programms unterliegen dieser Lizenz nur, wenn der Inhalt ein auf dem Programm basierendes Datenwerk darstellt (unabhängig davon, daß die Ausgabe durch die Ausführung des Programmes erfolgte). Ob dies zutrifft, hängt von den Funktionen des Programms ab. - -§1. Sie dürfen auf beliebigen Medien unveränderte Kopien des Quelltextes des Programms, wie sie ihn erhalten haben, anfertigen und verbreiten. Voraussetzung hierfür ist, daß Sie mit jeder Kopie einen entsprechenden Copyright-Vermerk sowie einen Haftungsausschluß veröffentlichen, alle Vermerke, die sich auf diese Lizenz und das Fehlen einer Garantie beziehen, unverändert lassen und desweiteren allen anderen Empfängern des Programms zusammen mit dem Programm eine Kopie dieser Lizenz zukommen lassen. - -Sie dürfen für den eigentlichen Kopiervorgang eine Gebühr verlangen. Wenn Sie es wünschen, dürfen Sie auch gegen Entgeld eine Garantie für das Programm anbieten. - -§2. Sie dürfen Ihre Kopie(n) des Programms oder eines Teils davon verändern, wodurch ein auf dem Programm basierendes Datenwerk entsteht; Sie dürfen derartige Bearbeitungen unter den Bestimmungen von Paragraph 1 vervielfältigen und verbreiten, vorausgesetzt, daß zusätzlich alle im folgenden genannten Bedingungen erfüllt werden: - - -1. -Sie müssen die veränderten Dateien mit einem auffälligen Vermerk versehen, der auf die von Ihnen vorgenommene Modifizierung und das Datum jeder Änderung hinweist. - -2. -Sie müssen dafür sorgen, daß jede von Ihnen verbreitete oder veröffentlichte Arbeit, die ganz oder teilweise von dem Programm oder Teilen davon abgeleitet ist, Dritten gegenüber als Ganzes unter den Bedingungen dieser Lizenz ohne Lizenzgebühren zur Verfügung gestellt wird. - -3. -Wenn das veränderte Programm normalerweise bei der Ausführung interaktiv Kommandos einliest, müssen Sie dafür sorgen, daß es, wenn es auf dem üblichsten Wege für solche interaktive Nutzung gestartet wird, eine Meldung ausgibt oder ausdruckt, die einen geeigneten Copyright-Vermerk enthält sowie einen Hinweis, daß es keine Gewährleistung gibt (oder anderenfalls, daß Sie Garantie leisten), und daß die Benutzer das Programm unter diesen Bedingungen weiter verbreiten dürfen. Auch muß der Benutzer darauf hingewiesen werden, wie er eine Kopie dieser Lizenz ansehen kann. (Ausnahme: Wenn das Programm selbst interaktiv arbeitet, aber normalerweise keine derartige Meldung ausgibt, muß Ihr auf dem Programm basierendes Datenwerk auch keine solche Meldung ausgeben). - -Diese Anforderungen gelten für das bearbeitete Datenwerk als Ganzes. Wenn identifizierbare Teile des Datenwerkes nicht von dem Programm abgeleitet sind und vernünftigerweise als unabhängige und eigenständige Datenwerke für sich selbst zu betrachten sind, dann gelten diese Lizenz und ihre Bedingungen nicht für die betroffenen Teile, wenn Sie diese als eigenständige Datenwerke weitergeben. Wenn Sie jedoch dieselben Abschnitte als Teil eines Ganzen weitergeben, das ein auf dem Programm basierendes Datenwerk darstellt, dann muß die Weitergabe des Ganzen nach den Bedingungen dieser Lizenz erfolgen, deren Bedingungen für weitere Lizenznehmer somit auf das gesamte Ganze ausgedehnt werden - und somit auf jeden einzelnen Teil, unabhängig vom jeweiligen Autor. - -Somit ist es nicht die Absicht dieses Abschnittes, Rechte für Datenwerke in Anspruch zu nehmen oder Ihnen die Rechte für Datenwerke streitig zu machen, die komplett von Ihnen geschrieben wurden; vielmehr ist es die Absicht, die Rechte zur Kontrolle der Verbreitung von Datenwerken, die auf dem Programm basieren oder unter seiner auszugsweisen Verwendung zusammengestellt worden sind, auszuüben. - -Ferner bringt auch das einfache Zusammenlegen eines anderen Datenwerkes, das nicht auf dem Programm basiert, mit dem Programm oder einem auf dem Programm basierenden Datenwerk auf ein- und demselben Speicher- oder Vertriebsmedium dieses andere Datenwerk nicht in den Anwendungsbereich dieser Lizenz. - -§3. Sie dürfen das Programm (oder ein darauf basierendes Datenwerk gemäß Paragraph 2) als Objectcode oder in ausführbarer Form unter den Bedingungen der Paragraphen 1 und 2 kopieren und weitergeben - vorausgesetzt, daß Sie außerdem eine der folgenden Leistungen erbringen: - - -1. -Liefern Sie das Programm zusammen mit dem vollständigen zugehörigen maschinenlesbaren Quelltext auf einem für den Datenaustausch üblichen Medium aus, wobei die Verteilung unter den Bedingungen der Paragraphen 1 und 2 erfolgen muß. Oder: - -2. -Liefern Sie das Programm zusammen mit einem mindestens drei Jahre lang gültigen schriftlichen Angebot aus, jedem Dritten eine vollständige maschinenlesbare Kopie des Quelltextes zur Verfügung zu stellen - zu nicht höheren Kosten als denen, die durch den physikalischen Kopiervorgang anfallen -, wobei der Quelltext unter den Bedingungen der Paragraphen 1 und 2 auf einem für den Datenaustausch üblichen Medium weitergegeben wird. Oder: - -3. -Liefern Sie das Programm zusammen mit dem schriftlichen Angebot der Zurverfügungstellung des Quelltextes aus, das Sie selbst erhalten haben. (Diese Alternative ist nur für nicht-kommerzielle Verbreitung zulässig und nur, wenn Sie das Programm als Objectcode oder in ausführbarer Form mit einem entsprechenden Angebot gemäß Absatz b erhalten haben.) - -Unter dem Quelltext eines Datenwerkes wird diejenige Form des Datenwerkes verstanden, die für Bearbeitungen vorzugsweise verwendet wird. Für ein ausführbares Programm bedeutet ,,der komplette Quelltext``: Der Quelltext aller im Programm enthaltenen Module einschließlich aller zugehörigen Modulschnittstellen-Definitionsdateien sowie der zur Compilation und Installation verwendeten Skripte. Als besondere Ausnahme jedoch braucht der verteilte Quelltext nichts von dem zu enthalten, was üblicherweise (entweder als Quelltext oder in binärer Form) zusammen mit den Hauptkomponenten des Betriebssystems (Kernel, Compiler usw.) geliefert wird, unter dem das Programm läuft - es sei denn, diese Komponente selbst gehört zum ausführbaren Programm. - -Wenn die Verbreitung eines ausführbaren Programms oder von Objectcode dadurch erfolgt, daß der Kopierzugriff auf eine dafür vorgesehene Stelle gewährt wird, so gilt die Gewährung eines gleichwertigen Zugriffs auf den Quelltext als Verbreitung des Quelltextes, auch wenn Dritte nicht dazu gezwungen sind, den Quelltext zusammen mit dem Objectcode zu kopieren. - -§4. Sie dürfen das Programm nicht vervielfältigen, verändern, weiter lizenzieren oder verbreiten, sofern es nicht durch diese Lizenz ausdrücklich gestattet ist. Jeder anderweitige Versuch der Vervielfältigung, Modifizierung, Weiterlizenzierung und Verbreitung ist nichtig und beendet automatisch Ihre Rechte unter dieser Lizenz. Jedoch werden die Lizenzen Dritter, die von Ihnen Kopien oder Rechte unter dieser Lizenz erhalten haben, nicht beendet, solange diese die Lizenz voll anerkennen und befolgen. - -§5. Sie sind nicht verpflichtet, diese Lizenz anzunehmen, da Sie sie nicht unterzeichnet haben. Jedoch gibt Ihnen nichts anderes die Erlaubnis, das Programm oder von ihm abgeleitete Datenwerke zu verändern oder zu verbreiten. Diese Handlungen sind gesetzlich verboten, wenn Sie diese Lizenz nicht anerkennen. Indem Sie das Programm (oder ein darauf basierendes Datenwerk) verändern oder verbreiten, erklären Sie Ihr Einverständnis mit dieser Lizenz und mit allen ihren Bedingungen bezüglich der Vervielfältigung, Verbreitung und Veränderung des Programms oder eines darauf basierenden Datenwerks. - -§6. Jedesmal, wenn Sie das Programm (oder ein auf dem Programm basierendes Datenwerk) weitergeben, erhält der Empfänger automatisch vom ursprünglichen Lizenzgeber die Lizenz, das Programm entsprechend den hier festgelegten Bestimmungen zu vervielfältigen, zu verbreiten und zu verändern. Sie dürfen keine weiteren Einschränkungen der Durchsetzung der hierin zugestandenen Rechte des Empfängers vornehmen. Sie sind nicht dafür verantwortlich, die Einhaltung dieser Lizenz durch Dritte durchzusetzen. - -§7. Sollten Ihnen infolge eines Gerichtsurteils, des Vorwurfs einer Patentverletzung oder aus einem anderen Grunde (nicht auf Patentfragen begrenzt) Bedingungen (durch Gerichtsbeschluß, Vergleich oder anderweitig) auferlegt werden, die den Bedingungen dieser Lizenz widersprechen, so befreien Sie diese Umstände nicht von den Bestimmungen dieser Lizenz. Wenn es Ihnen nicht möglich ist, das Programm unter gleichzeitiger Beachtung der Bedingungen in dieser Lizenz und Ihrer anderweitigen Verpflichtungen zu verbreiten, dann dürfen Sie als Folge das Programm überhaupt nicht verbreiten. Wenn zum Beispiel ein Patent nicht die gebührenfreie Weiterverbreitung des Programms durch diejenigen erlaubt, die das Programm direkt oder indirekt von Ihnen erhalten haben, dann besteht der einzige Weg, sowohl das Patentrecht als auch diese Lizenz zu befolgen, darin, ganz auf die Verbreitung des Programms zu verzichten. - -Sollte sich ein Teil dieses Paragraphen als ungültig oder unter bestimmten Umständen nicht durchsetzbar erweisen, so soll dieser Paragraph seinem Sinne nach angewandt werden; im übrigen soll dieser Paragraph als Ganzes gelten. - -Zweck dieses Paragraphen ist nicht, Sie dazu zu bringen, irgendwelche Patente oder andere Eigentumsansprüche zu verletzen oder die Gültigkeit solcher Ansprüche zu bestreiten; dieser Paragraph hat einzig den Zweck, die Integrität des Verbreitungssystems der freien Software zu schützen, das durch die Praxis öffentlicher Lizenzen verwirklicht wird. Viele Leute haben großzügige Beiträge zu dem großen Angebot der mit diesem System verbreiteten Software im Vertrauen auf die konsistente Anwendung dieses Systems geleistet; es liegt am Autor/Geber, zu entscheiden, ob er die Software mittels irgendeines anderen Systems verbreiten will; ein Lizenznehmer hat auf diese Entscheidung keinen Einfluß. - -Dieser Paragraph ist dazu gedacht, deutlich klarzustellen, was als Konsequenz aus dem Rest dieser Lizenz betrachtet wird. - -§8. Wenn die Verbreitung und/oder die Benutzung des Programms in bestimmten Staaten entweder durch Patente oder durch urheberrechtlich geschützte Schnittstellen eingeschränkt ist, kann der Urheberrechtsinhaber, der das Programm unter diese Lizenz gestellt hat, eine explizite geographische Begrenzung der Verbreitung angeben, in der diese Staaten ausgeschlossen werden, so daß die Verbreitung nur innerhalb und zwischen den Staaten erlaubt ist, die nicht ausgeschlossen sind. In einem solchen Fall beinhaltet diese Lizenz die Beschränkung, als wäre sie in diesem Text niedergeschrieben. - -§9. Die Free Software Foundation kann von Zeit zu Zeit überarbeitete und/oder neue Versionen der General Public License veröffentlichen. Solche neuen Versionen werden vom Grundprinzip her der gegenwärtigen entsprechen, können aber im Detail abweichen, um neuen Problemen und Anforderungen gerecht zu werden. - -Jede Version dieser Lizenz hat eine eindeutige Versionsnummer. Wenn in einem Programm angegeben wird, daß es dieser Lizenz in einer bestimmten Versionsnummer oder ,,jeder späteren Version`` (``any later version'') unterliegt, so haben Sie die Wahl, entweder den Bestimmungen der genannten Version zu folgen oder denen jeder beliebigen späteren Version, die von der Free Software Foundation veröffentlicht wurde. Wenn das Programm keine Versionsnummer angibt, können Sie eine beliebige Version wählen, die je von der Free Software Foundation veröffentlicht wurde. - -§10. Wenn Sie den Wunsch haben, Teile des Programms in anderen freien Programmen zu verwenden, deren Bedingungen für die Verbreitung anders sind, schreiben Sie an den Autor, um ihn um die Erlaubnis zu bitten. Für Software, die unter dem Copyright der Free Software Foundation steht, schreiben Sie an die Free Software Foundation ; wir machen zu diesem Zweck gelegentlich Ausnahmen. Unsere Entscheidung wird von den beiden Zielen geleitet werden, zum einen den freien Status aller von unserer freien Software abgeleiteten Datenwerke zu erhalten und zum anderen das gemeinschaftliche Nutzen und Wiederverwenden von Software im allgemeinen zu fördern. - - -Keine Gewährleistung - -§11. Da das Programm ohne jegliche Kosten lizenziert wird, besteht keinerlei Gewährleistung für das Programm, soweit dies gesetzlich zulässig ist. Sofern nicht anderweitig schriftlich bestätigt, stellen die Copyright-Inhaber und/oder Dritte das Programm so zur Verfügung, ,,wie es ist``, ohne irgendeine Gewährleistung, weder ausdrücklich noch implizit, einschließlich - aber nicht begrenzt auf - Marktreife oder Verwendbarkeit für einen bestimmten Zweck. Das volle Risiko bezüglich Qualität und Leistungsfähigkeit des Programms liegt bei Ihnen. Sollte sich das Programm als fehlerhaft herausstellen, liegen die Kosten für notwendigen Service, Reparatur oder Korrektur bei Ihnen. - -§12. In keinem Fall, außer wenn durch geltendes Recht gefordert oder schriftlich zugesichert, ist irgendein Copyright-Inhaber oder irgendein Dritter, der das Programm wie oben erlaubt modifiziert oder verbreitet hat, Ihnen gegenüber für irgendwelche Schäden haftbar, einschließlich jeglicher allgemeiner oder spezieller Schäden, Schäden durch Seiteneffekte (Nebenwirkungen) oder Folgeschäden, die aus der Benutzung des Programms oder der Unbenutzbarkeit des Programms folgen (einschließlich - aber nicht beschränkt auf - Datenverluste, fehlerhafte Verarbeitung von Daten, Verluste, die von Ihnen oder anderen getragen werden müssen, oder dem Unvermögen des Programms, mit irgendeinem anderen Programm zusammenzuarbeiten), selbst wenn ein Copyright-Inhaber oder Dritter über die Möglichkeit solcher Schäden unterrichtet worden war. - - -Ende der Bedingungen diff --git a/msd/composer.json b/msd/composer.json new file mode 100644 index 00000000..b894f827 --- /dev/null +++ b/msd/composer.json @@ -0,0 +1,14 @@ +{ + "require": { + "php": "^7.4 || ^8.0", + "ext-ftp": "*", + "ext-mysqli": "*", + "ext-openssl": "*", + "ext-curl": "*", + "ext-json": "*", + "ext-zip": "*", + "ext-zlib": "*", + "league/flysystem-sftp": "^2.0", + "visualappeal/php-auto-update": "^1.0.2" + } +} diff --git a/msd/composer.lock b/msd/composer.lock new file mode 100644 index 00000000..5df68cc0 --- /dev/null +++ b/msd/composer.lock @@ -0,0 +1,755 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "531d14fef9748689e0b5fca816d3f8f1", + "packages": [ + { + "name": "composer/semver", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" + }, + { + "name": "desarrolla2/cache", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/desarrolla2/Cache.git", + "reference": "0b8f985d09abfc04a2c1535943f6f07b7206161a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/desarrolla2/Cache/zipball/0b8f985d09abfc04a2c1535943f6f07b7206161a", + "reference": "0b8f985d09abfc04a2c1535943f6f07b7206161a", + "shasum": "" + }, + "require": { + "php": ">=7.2.0", + "psr/simple-cache": "^1.0" + }, + "provide": { + "psr/simple-cache-implementation": "1.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "ext-apcu": "*", + "ext-json": "*", + "ext-memcached": "*", + "ext-mysqli": "*", + "mikey179/vfsstream": "v1.6.8", + "mongodb/mongodb": "^1.3", + "phpstan/phpstan": "^0.12.29", + "phpunit/phpunit": "^8.3 || ^9.0", + "predis/predis": "~1.0.0", + "symfony/phpunit-bridge": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Desarrolla2\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel González", + "homepage": "http://desarrolla2.com/" + }, + { + "name": "Arnold Daniels", + "homepage": "https://jasny.net/" + } + ], + "description": "Provides an cache interface for several adapters Apc, Apcu, File, Mongo, Memcache, Memcached, Mysql, Mongo, Redis is supported.", + "homepage": "https://github.com/desarrolla2/Cache/", + "keywords": [ + "apc", + "apcu", + "cache", + "file", + "memcache", + "memcached", + "mongo", + "mysql", + "psr-16", + "redis", + "simple-cache" + ], + "support": { + "issues": "https://github.com/desarrolla2/Cache/issues", + "source": "https://github.com/desarrolla2/Cache/tree/v3.0.2" + }, + "time": "2022-03-27T23:04:06+00:00" + }, + { + "name": "league/flysystem", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "8aaffb653c5777781b0f7f69a5d937baf7ab6cdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8aaffb653c5777781b0f7f69a5d937baf7ab6cdb", + "reference": "8aaffb653c5777781b0f7f69a5d937baf7ab6cdb", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/mime-type-detection": "^1.0.0", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "guzzlehttp/ringphp": "<1.1.1" + }, + "require-dev": { + "async-aws/s3": "^1.5", + "async-aws/simple-s3": "^1.0", + "aws/aws-sdk-php": "^3.132.4", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "friendsofphp/php-cs-fixer": "^3.2", + "google/cloud-storage": "^1.23", + "phpseclib/phpseclib": "^2.0", + "phpstan/phpstan": "^0.12.26", + "phpunit/phpunit": "^8.5 || ^9.4", + "sabre/dav": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/2.5.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-09-17T21:02:32+00:00" + }, + { + "name": "league/flysystem-sftp", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-sftp.git", + "reference": "e30acbc9be024bb7df6ee4b159f2c8db3efcb6a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-sftp/zipball/e30acbc9be024bb7df6ee4b159f2c8db3efcb6a7", + "reference": "e30acbc9be024bb7df6ee4b159f2c8db3efcb6a7", + "shasum": "" + }, + "require": { + "league/flysystem": "^2.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^7.2 || ^8.0", + "phpseclib/phpseclib": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\PhpseclibV2\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "SFTP filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "sftp" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-sftp/issues", + "source": "https://github.com/thephpleague/flysystem-sftp/tree/2.5.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "abandoned": "league/flysystem-sftp-v3", + "time": "2022-04-27T17:27:27+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-04-17T13:12:02+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2022-07-24T11:55:47+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "2.0.41", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "7e763c6f97ec1fcb37c46aa8ecfc20a2c71d9c1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/7e763c6f97ec1fcb37c46aa8ecfc20a2c71d9c1b", + "reference": "7e763c6f97ec1fcb37c46aa8ecfc20a2c71d9c1b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phing/phing": "~2.7", + "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4", + "squizlabs/php_codesniffer": "~2.0" + }, + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations.", + "ext-xml": "Install the XML extension to load XML formatted public keys." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/2.0.41" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2022-12-23T16:44:18+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "visualappeal/php-auto-update", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/VisualAppeal/PHP-Auto-Update.git", + "reference": "4454361a0fa346c7fb179deef11585c79715b645" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/VisualAppeal/PHP-Auto-Update/zipball/4454361a0fa346c7fb179deef11585c79715b645", + "reference": "4454361a0fa346c7fb179deef11585c79715b645", + "shasum": "" + }, + "require": { + "composer/semver": "^3.0", + "desarrolla2/cache": "^3.0", + "ext-curl": "*", + "ext-json": "*", + "ext-zip": "*", + "monolog/monolog": "^2.1", + "php": ">=7.2.0", + "psr/log": "1.1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "roave/security-advisories": "dev-master" + }, + "type": "library", + "autoload": { + "psr-4": { + "VisualAppeal\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tim Helfensdörfer", + "email": "tim@visualappeal.de" + } + ], + "description": "Autoupdater for PHP", + "support": { + "issues": "https://github.com/VisualAppeal/PHP-Auto-Update/issues", + "source": "https://github.com/VisualAppeal/PHP-Auto-Update/tree/1.0.2" + }, + "time": "2021-11-27T22:39:05+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.4 || ^8.0", + "ext-ftp": "*", + "ext-mysqli": "*", + "ext-openssl": "*", + "ext-curl": "*", + "ext-json": "*", + "ext-zip": "*", + "ext-zlib": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/msd/config.php b/msd/config.php index 866bae6f..465dd9bd 100644 --- a/msd/config.php +++ b/msd/config.php @@ -1,22 +1,6 @@ 1000 -$config['processlist_refresh']=3000; +$config['processlist_refresh'] = 3000; -$config['empty_db_before_restore']=0; -$config['optimize_tables_beforedump']=0; -$config['stop_with_error']=1; +$config['empty_db_before_restore'] = 0; +$config['optimize_tables_beforedump'] = 0; +$config['use_binary_container'] = 0; +$config['stop_with_error'] = 1; +$config['ignore_enable_keys'] = 0; // For sending a mail after backup set send_mail to 1, otherless set to 0 -$config['send_mail']=0; +$config['send_mail'] = 0; // Attach the backup 0=no 1=yes -$config['send_mail_dump']=0; +$config['send_mail_dump'] = 0; // set the recieve adress for the mail -$config['email_recipient']=''; -$config['email_recipient_cc']=''; +$config['email_recipient'] = ''; +$config['email_recipient_cc'] = ''; // set the sender adress (the script) -$config['email_sender']=''; +$config['email_sender'] = ''; //max. Size of Email-Attach, here 3 MB -$config['email_maxsize1']=3; -$config['email_maxsize2']=2; +$config['email_maxsize1'] = 3; +$config['email_maxsize2'] = 2; // FTP Server Configuration for Transfer -$config['ftp_transfer'][0]=0; -$config['ftp_timeout'][0]=30; -$config['ftp_useSSL'][0]=0; -$config['ftp_mode'][0]=0; -$config['ftp_server'][0]=''; // Adress of FTP-Server -$config['ftp_port'][0]='21'; // Port -$config['ftp_user'][0]=''; // Username -$config['ftp_pass'][0]=''; // Password -$config['ftp_dir'][0]=''; // Upload-Directory +$config['ftp_transfer'][0] = 0; +$config['ftp_timeout'][0] = 30; +$config['ftp_useSSL'][0] = 0; +$config['ftp_mode'][0] = 0; +$config['ftp_server'][0] = ''; // Adress of FTP-Server +$config['ftp_port'][0] = '21'; // Port +$config['ftp_user'][0] = ''; // Username +$config['ftp_pass'][0] = ''; // Password +$config['ftp_dir'][0] = ''; // Upload-Directory -$config['ftp_transfer'][1]=0; -$config['ftp_timeout'][1]=30; -$config['ftp_useSSL'][1]=0; -$config['ftp_mode'][1]=0; -$config['ftp_server'][1]=''; -$config['ftp_port'][1]='21'; -$config['ftp_user'][1]=''; -$config['ftp_pass'][1]=''; -$config['ftp_dir'][1]=''; +$config['ftp_transfer'][1] = 0; +$config['ftp_timeout'][1] = 30; +$config['ftp_useSSL'][1] = 0; +$config['ftp_mode'][1] = 0; +$config['ftp_server'][1] = ''; +$config['ftp_port'][1] = '21'; +$config['ftp_user'][1] = ''; +$config['ftp_pass'][1] = ''; +$config['ftp_dir'][1] = ''; -$config['ftp_transfer'][2]=0; -$config['ftp_timeout'][2]=30; -$config['ftp_useSSL'][2]=0; -$config['ftp_mode'][2]=0; -$config['ftp_server'][2]=''; -$config['ftp_port'][2]='21'; -$config['ftp_user'][2]=''; -$config['ftp_pass'][2]=''; -$config['ftp_dir'][2]=''; +$config['ftp_transfer'][2] = 0; +$config['ftp_timeout'][2] = 30; +$config['ftp_useSSL'][2] = 0; +$config['ftp_mode'][2] = 0; +$config['ftp_server'][2] = ''; +$config['ftp_port'][2] = '21'; +$config['ftp_user'][2] = ''; +$config['ftp_pass'][2] = ''; +$config['ftp_dir'][2] = ''; + +// SFTP Server Configuration for Transfer +$config['sftp_transfer'][0] = 0; +$config['sftp_timeout'][0] = 30; +$config['sftp_server'][0] = ''; // Adress of SFTP-Server +$config['sftp_port'][0] = '22'; // Port +$config['sftp_user'][0] = ''; // Username +$config['sftp_pass'][0] = ''; // Password +$config['sftp_dir'][0] = ''; // Upload-Directory +$config['sftp_path_to_private_key'][0] = null; // private key (optional, default: null) can be used instead of password, set to null if password is set +$config['sftp_secret_passphrase_for_private_key'][0] = null; // passphrase (optional, default: null), set to null if privateKey is not used or has no passphrase +$config['sftp_fingerprint'][0] = null; // host fingerprint (optional, default: null), + +$config['sftp_transfer'][1] = 0; +$config['sftp_timeout'][1] = 30; +$config['sftp_server'][1] = ''; +$config['sftp_port'][1] = '22'; +$config['sftp_user'][1] = ''; +$config['sftp_pass'][1] = ''; +$config['sftp_dir'][1] = ''; +$config['sftp_path_to_private_key'][1] = null; +$config['sftp_secret_passphrase_for_private_key'][1] = null; +$config['sftp_fingerprint'][1] = null; + +$config['sftp_transfer'][2] = 0; +$config['sftp_timeout'][2] = 30; +$config['sftp_server'][2] = ''; +$config['sftp_port'][2] = '22'; +$config['sftp_user'][2] = ''; +$config['sftp_pass'][2] = ''; +$config['sftp_dir'][2] = ''; +$config['sftp_path_to_private_key'][2] = null; +$config['sftp_secret_passphrase_for_private_key'][2] = null; +$config['sftp_fingerprint'][2] = null; //Multipart 0=off 1=on -$config['multi_part']=0; -$config['multipartgroesse1']=1; -$config['multipartgroesse2']=2; -$config['multipart_groesse']=0; +$config['multi_part'] = 0; +$config['multipartgroesse1'] = 1; +$config['multipartgroesse2'] = 2; +$config['multipart_groesse'] = 0; //Auto-Delete 0=off 1=on -$config['auto_delete']=0; -$config['max_backup_files']=3; +$config['auto_delete'] = 0; +$config['max_backup_files'] = 3; //configuration file -$config['cron_configurationfile']='myoosdumper.conf.php'; +$config['cron_configurationfile'] = 'myoosdumper.conf.php'; //path to perl, for windows use e.g. C:perlbinperl.exe -$config['cron_perlpath']='/usr/bin/perl'; +$config['cron_perlpath'] = '/usr/bin/perl'; //mailer use sendmail(1) or SMTP(0) -$config['cron_use_sendmail']=1; +$config['cron_use_sendmail'] = 1; //path to sendmail -$sendmail_path=ini_get('sendmail_path'); -$config['cron_sendmail']=$sendmail_path>'' ? $sendmail_path: '/usr/lib/sendmail -t -oi -oem'; +$sendmail_path = ini_get('sendmail_path'); +$config['cron_sendmail'] = $sendmail_path > '' ? $sendmail_path : '/usr/lib/sendmail -t -oi -oem'; //adress of smtp-server -$config['cron_smtp']='localhost'; +$config['cron_smtp'] = 'localhost'; //smtp-port -$config['cron_smtp_port']=25; -$config['cron_extender']=0; -$config['cron_compression']=1; -$config['cron_printout']=1; -$config['cron_completelog']=1; -$config['cron_comment']=''; -$config['multi_dump']=0; -$config['logcompression']=1; -$config['log_maxsize1']=1; -$config['log_maxsize2']=2; -$config['log_maxsize']=1048576; +$config['cron_smtp_port'] = 25; +$config['cron_extender'] = 0; +$config['cron_compression'] = 1; +$config['cron_printout'] = 1; +$config['cron_completelog'] = 1; +$config['cron_comment'] = ''; +$config['multi_dump'] = 0; +$config['logcompression'] = 1; +$config['log_maxsize1'] = 1; +$config['log_maxsize2'] = 2; +$config['log_maxsize'] = 1048576; diff --git a/msd/config_overview.php b/msd/config_overview.php index b53fc862..84b1efca 100644 --- a/msd/config_overview.php +++ b/msd/config_overview.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -18,988 +18,1232 @@ define('OOS_VALID_MOD', true); -if (!@ob_start("ob_gzhandler")) @ob_start(); +if (!@ob_start('ob_gzhandler')) { + @ob_start(); +} + function print_save_button() { - global $lang; - $t=''; - return $t; + global $lang; + $t = ''; + + return $t; } -// wenn neue Sprache angewählt wurde schon vor dem includen übernehmen -if (isset($_POST['save']) && $_POST['language'] != $_POST['lang_old']) -{ - $config['language']=$_POST['language']; - $temp_lang=$config['language']; - include_once ( './inc/header.php' ); // Normal prodecure (resets config[language]) - $config['language']=$temp_lang; // re-set language - include ( './language/lang_list.php' ); // This re-initializes $lang[] and loads appropiate language files +// if new language was selected already before include +if (isset($_POST['save']) && $_POST['language'] != $_POST['lang_old']) { + $config['language'] = $_POST['language']; + $temp_lang = $config['language']; + include_once './inc/header.php'; // Normal prodecure (resets config[language]) + $config['language'] = $temp_lang; // re-set language + include './language/lang_list.php'; // This re-initializes $lang[] and loads appropiate language files +} else { + include_once './inc/header.php'; // language not changed, go on as usual } -else - include_once ( './inc/header.php' ); // language not changed, go on as usual -include_once ( './inc/runtime.php' ); -include_once ( './inc/functions_sql.php' ); -include_once ( './language/' . $config['language'] . '/lang_help.php' ); -include_once ( './language/' . $config['language'] . '/lang_config_overview.php' ); -include_once ( './language/' . $config['language'] . '/lang_sql.php' ); +include_once './inc/runtime.php'; +include_once './inc/functions_sql.php'; +include_once './language/'.$config['language'].'/lang_help.php'; +include_once './language/'.$config['language'].'/lang_config_overview.php'; +include_once './language/'.$config['language'].'/lang_sql.php'; -$msg=''; -$sel=( isset($_POST['sel']) ) ? $_POST['sel'] : 'db'; -if (isset($_GET['sel'])) $sel=$_GET['sel']; +$msg = ''; +$sel = (isset($_POST['sel'])) ? $_POST['sel'] : 'db'; -$old_config_file=$config['config_file']; -if (isset($_GET['config'])) -{ - unset($databases); - $databases=array(); - if (isset($_POST['save'])) unset($_POST['save']); - if (read_config($_GET['config'])) - { - $config['config_file']=$_GET['config']; - $_SESSION['config_file']=$config['config_file']; - $msg="" . sprintf($lang['L_CONFIG_LOADED'],$config['config_file']) . ""; - $msg.=''; - } - else - { - read_config($old_config_file); - $msg='

' . sprintf($lang['L_ERROR_LOADING_CONFIGFILE'],$config['config_file']) . '

'; - } +if (isset($_GET['sel'])) { + $sel = $_GET['sel']; } -if (isset($_GET['config_delete'])) -{ - $del_config=urldecode($_GET['config_delete']); - if ($del_config == $config['config_file']) - { - //aktuell gewaehlte Konfiguration wurde geloescht - $config['config_file']='myoosdumper'; - $_SESSION['config_file']=$config['config_file']; - read_config($config['config_file']); // Standard laden - } - - $del=@unlink($config['paths']['config'] . $del_config . '.php'); - if ($del) $del=@unlink($config['paths']['config'] . $del_config . '.conf.php'); - if ($del === false) $msg='

' . sprintf($lang['L_ERROR_DELETING_CONFIGFILE'],$del_config) . '

'; - else $msg='

' . sprintf($lang['L_SUCCESS_DELETING_CONFIGFILE'],$del_config) . '

' . ''; //refresh menu-frame - $sel='configs'; +$old_config_file = $config['config_file']; +if (isset($_GET['config'])) { + unset($databases); + $databases = []; + if (isset($_POST['save'])) { + unset($_POST['save']); + } + if (read_config($_GET['config'])) { + $config['config_file'] = $_GET['config']; + $_SESSION['config_file'] = $config['config_file']; + $msg = ''.sprintf($lang['L_CONFIG_LOADED'], $config['config_file']).''; + $msg .= ''; + } else { + read_config($old_config_file); + $msg = '

'.sprintf($lang['L_ERROR_LOADING_CONFIGFILE'], $config['config_file']).'

'; + } } -include_once ( './inc/define_icons.php' ); +if (isset($_GET['config_delete'])) { + $del_config = urldecode($_GET['config_delete']); + if ($del_config == $config['config_file']) { + // currently selected configuration was deleted + $config['config_file'] = 'myoosdumper'; + $_SESSION['config_file'] = $config['config_file']; + read_config($config['config_file']); // Load standard + } -$config['files']['parameter']=$config['paths']['config'] . $config['config_file'] . '.php'; -$config['theme']=( !isset($config['theme']) ) ? 'msd' : $config['theme']; -$config['cron_smtp_port']=( !isset($config['cron_smtp_port']) ) ? 25 : $config['cron_smtp_port']; - -if (!isset($command)) $command=0; - -$checkFTP=Array( - - " 

 
 ", - " 

 
 ", - " 

 
 " -); -$checkFTP[$i]=""; -$ftptested=-1; -if (( isset($_POST['testFTP0']) ) || ( isset($_POST['testFTP1']) ) || ( isset($_POST['testFTP2']) )) -{ - $config['ftp_transfer']=array(); - $config['ftp_timeout']=array(); - $config['ftp_mode']=array(); - $config['ftp_useSSL']=array(); - - for ($i=0; $i < 3; $i++) - { - $config['ftp_transfer'][$i]=( isset($_POST['ftp_transfer'][$i]) ) ? $_POST['ftp_transfer'][$i] : 0; - $config['ftp_timeout'][$i]=( isset($_POST['ftp_timeout'][$i]) ) ? $_POST['ftp_timeout'][$i] : 30; - $config['ftp_useSSL'][$i]=( isset($_POST['ftp_useSSL'][$i]) ) ? $_POST['ftp_useSSL'][$i] : 0; - $config['ftp_mode'][$i]=( isset($_POST['ftp_mode'][$i]) ) ? 1 : 0; - $config['ftp_server'][$i]=( isset($_POST['ftp_server'][$i]) ) ? $_POST['ftp_server'][$i] : ''; - $config['ftp_port'][$i]=( isset($_POST['ftp_port'][$i]) ) ? $_POST['ftp_port'][$i] : 21; - $config['ftp_user'][$i]=( isset($_POST['ftp_user'][$i]) ) ? $_POST['ftp_user'][$i] : ''; - $config['ftp_pass'][$i]=( isset($_POST['ftp_pass'][$i]) ) ? $_POST['ftp_pass'][$i] : ''; - $config['ftp_dir'][$i]=( isset($_POST['ftp_dir'][$i]) ) ? stripslashes($_POST['ftp_dir'][$i]) : '/'; - if ($config['ftp_dir'][$i] == "" || ( strlen($config['ftp_dir'][$i]) > 1 && substr($config['ftp_dir'][$i],-1) != "/" )) $config['ftp_dir'][$i].="/"; - if (isset($_POST['testFTP' . $i])) - { - $checkFTP[$i]='
' . $lang['L_TESTCONNECTION'] . ' FTP-Connection ' . ( $i + 1 ) . '

' . TesteFTP($i) . '
'; - $ftptested=$i; - } - } + $del = @unlink($config['paths']['config'].$del_config.'.php'); + if ($del) { + $del = @unlink($config['paths']['config'].$del_config.'.conf.php'); + } + if (false === $del) { + $msg = '

'.sprintf($lang['L_ERROR_DELETING_CONFIGFILE'], $del_config).'

'; + } else { + $msg = '

'.sprintf($lang['L_SUCCESS_DELETING_CONFIGFILE'], $del_config).'

'.''; //refresh menu-frame + } + $sel = 'configs'; } -$showVP=false; -$oldtheme=$config['theme']; -$oldscposition=$config['interface_server_caption_position']; +include_once './inc/define_icons.php'; -if ($ftptested > -1) -{ - $ftp_server[$ftptested]=$_POST['ftp_server'][$ftptested]; - $ftp_port[$ftptested]=$_POST['ftp_port'][$ftptested]; - $ftp_user[$ftptested]=$_POST['ftp_user'][$ftptested]; - $ftp_pass[$ftptested]=$_POST['ftp_pass'][$ftptested]; - $ftp_dir_s='ftp_dir[' . $ftptested . ']'; - $f=$_POST['ftp_dir']; - $ftp_dir[$ftptested]=stripslashes($f[$ftptested]); - // Eingaben merken - $config['ftp_transfer'][$ftptested]=( isset($_POST['ftp_transfer'][$ftptested]) ) ? $_POST['ftp_transfer'][$ftptested] : 0; - $config['ftp_timeout'][$ftptested]=( isset($_POST['ftp_timeout'][$ftptested]) ) ? $_POST['ftp_timeout'][$ftptested] : 30; - $config['ftp_useSSL'][$ftptested]=( isset($_POST['ftp_useSSL'][$ftptested]) ) ? $_POST['ftp_useSSL'][$ftptested] : 0; - $config['ftp_mode'][$ftptested]=( isset($_POST['ftp_mode'][$ftptested]) ) ? 1 : 0; - $config['ftp_server'][$ftptested]=$ftp_server[$ftptested]; - $config['ftp_port'][$ftptested]=$ftp_port[$ftptested]; - $config['ftp_user'][$ftptested]=$ftp_user[$ftptested]; - $config['ftp_pass'][$ftptested]=$ftp_pass[$ftptested]; - $config['ftp_dir'][$ftptested]=$ftp_dir[$ftptested]; +$config['files']['parameter'] = $config['paths']['config'].$config['config_file'].'.php'; +$config['theme'] = (!isset($config['theme'])) ? 'mod' : $config['theme']; +$config['cron_smtp_port'] = (!isset($config['cron_smtp_port'])) ? 25 : $config['cron_smtp_port']; - if ($ftp_dir[$ftptested] == "" || ( strlen($ftp_dir[$ftptested]) > 1 && substr($ftp_dir[$ftptested],-1) != "/" )) $ftp_dir[$ftptested].="/"; - WriteParams(); +if (!isset($command)) { + $command = 0; } -echo MSDHeader(); +$checkFTP = [ + ' 

 
 ', + ' 

 
 ', + ' 

 
 ', +]; +$checkFTP[$i] = ''; +$ftptested = -1; -if (isset($_POST['load'])) -{ - $msg=SetDefault(true); - $msg=nl2br($msg) . "
" . $lang['L_LOAD_SUCCESS'] . "
"; - echo ''; +if ((isset($_POST['testFTP0'])) || (isset($_POST['testFTP1'])) || (isset($_POST['testFTP2']))) { + $config['ftp_transfer'] = []; + $config['ftp_timeout'] = []; + $config['ftp_mode'] = []; + $config['ftp_useSSL'] = []; + + for ($i = 0; $i < 3; ++$i) { + $config['ftp_transfer'][$i] = (isset($_POST['ftp_transfer'][$i])) ? $_POST['ftp_transfer'][$i] : 0; + $config['ftp_timeout'][$i] = (isset($_POST['ftp_timeout'][$i])) ? $_POST['ftp_timeout'][$i] : 30; + $config['ftp_useSSL'][$i] = (isset($_POST['ftp_useSSL'][$i])) ? $_POST['ftp_useSSL'][$i] : 0; + $config['ftp_mode'][$i] = (isset($_POST['ftp_mode'][$i])) ? 1 : 0; + $config['ftp_server'][$i] = (isset($_POST['ftp_server'][$i])) ? $_POST['ftp_server'][$i] : ''; + $config['ftp_port'][$i] = (isset($_POST['ftp_port'][$i])) ? $_POST['ftp_port'][$i] : 21; + $config['ftp_user'][$i] = (isset($_POST['ftp_user'][$i])) ? $_POST['ftp_user'][$i] : ''; + $config['ftp_pass'][$i] = (isset($_POST['ftp_pass'][$i])) ? $_POST['ftp_pass'][$i] : ''; + $config['ftp_dir'][$i] = (isset($_POST['ftp_dir'][$i])) ? stripslashes($_POST['ftp_dir'][$i]) : '/'; + if ('' == $config['ftp_dir'][$i] || (strlen($config['ftp_dir'][$i]) > 1 && '/' != substr($config['ftp_dir'][$i], -1))) { + $config['ftp_dir'][$i] .= '/'; + } + if (isset($_POST['testFTP'.$i])) { + $checkFTP[$i] = '
'.$lang['L_TESTCONNECTION'].' FTP-Connection '.($i + 1).'

'.TesteFTP($i).'
'; + $ftptested = $i; + } + } } -if (isset($_POST['save'])) -{ - $save_config=true; - //Parameter auslesen - $config['multi_dump']=( isset($_POST['MultiDBDump']) ) ? $_POST['MultiDBDump'] : 0; - $config['compression']=$_POST['compression']; - $config['language']=$_POST['language']; - if (!isset($_POST['server_caption'])) $config['interface_server_caption']=0; - else $config['interface_server_caption']=$_POST['server_caption']; - $config['interface_server_caption_position']=isset($_POST['server_caption_position']) ? $_POST['server_caption_position'] : 0; - $config['interface_sqlboxsize']=$_POST['sqlboxsize']; - $config['theme']=$_POST['theme']; - $config['interface_table_compact']=( isset($_POST['interface_table_compact']) ) ? $_POST['interface_table_compact'] : 1; +// SFTP +$checkSFTP = [ + ' 

 
 ', + ' 

 
 ', + ' 

 
 ', +]; +$checkSFTP[$i] = ''; +$sftptested = -1; +if ((isset($_POST['testSFTP0'])) || (isset($_POST['testSFTP1'])) || (isset($_POST['testSFTP2']))) { + $config['sftp_transfer'] = []; - $config['email_recipient']=$_POST['email0']; - $config['email_recipient_cc']=$_POST['email_recipient_cc']; - $config['email_sender']=$_POST['email1']; - $config['send_mail']=$_POST['send_mail']; - $config['send_mail_dump']=$_POST['send_mail_dump']; + $config['sftp_timeout'] = []; - $config['email_maxsize1']=$_POST['email_maxsize1']; - if ($config['email_maxsize1'] == "") $config['email_maxsize1']=0; - $config['email_maxsize2']=$_POST['email_maxsize2']; - $config['email_maxsize']=$config['email_maxsize1'] * ( ( $config['email_maxsize2'] == 1 ) ? 1024 : 1024 * 1024 ); + for ($i = 0; $i < 3; ++$i) { + $config['sftp_transfer'][$i] = (isset($_POST['sftp_transfer'][$i])) ? $_POST['sftp_transfer'][$i] : 0; + $config['sftp_timeout'][$i] = (isset($_POST['sftp_timeout'][$i])) ? $_POST['sftp_timeout'][$i] : 30; + $config['sftp_server'][$i] = (isset($_POST['sftp_server'][$i])) ? $_POST['sftp_server'][$i] : ''; + $config['sftp_port'][$i] = (isset($_POST['sftp_port'][$i])) ? $_POST['sftp_port'][$i] : 22; + $config['sftp_user'][$i] = (isset($_POST['sftp_user'][$i])) ? $_POST['sftp_user'][$i] : ''; + $config['sftp_pass'][$i] = (isset($_POST['sftp_pass'][$i])) ? $_POST['sftp_pass'][$i] : ''; + $config['sftp_dir'][$i] = (isset($_POST['sftp_dir'][$i])) ? stripslashes($_POST['sftp_dir'][$i]) : '/'; - $config['memory_limit']=$_POST['memory_limit']; - if ($config['memory_limit'] == "") $config['memory_limit']=0; - $config['minspeed']=$_POST['minspeed']; - if ($config['minspeed'] < 50) $config['minspeed']=50; - $config['maxspeed']=$_POST['maxspeed']; - if ($config['maxspeed'] < $config['minspeed']) $config['maxspeed']=$config['minspeed'] * 2; - $config['stop_with_error']=$_POST['stop_with_error']; - $config['ignore_enable_keys']=isset($_POST['ignore_enable_keys']) ? (int) $_POST['ignore_enable_keys']:0; + $config['sftp_path_to_private_key'][$i] = (isset($_POST['sftp_path_to_private_key'][$i])) ? stripslashes($_POST['sftp_path_to_private_key'][$i]) : null; + $config['sftp_secret_passphrase_for_private_key'][$i] = (isset($_POST['sftp_secret_passphrase_for_private_key'][$i])) ? stripslashes($_POST['sftp_secret_passphrase_for_private_key'][$i]) : null; + $config['sftp_fingerprint'][$i] = (isset($_POST['sftp_fingerprint'][$i])) ? stripslashes($_POST['sftp_fingerprint'][$i]) : null; - $config['multi_part']=$_POST['multi_part']; - $config['multipartgroesse1']=isset($_POST['multipartgroesse1']) ? floatval(str_replace(',','.',$_POST['multipartgroesse1'])) : 0; - $config['multipartgroesse2']=isset($_POST['multipartgroesse2']) ? intval($_POST['multipartgroesse2']) : 0; - if ($config['multipartgroesse1'] < 100 && $config['multipartgroesse2'] == 1) $config['multipartgroesse1']=100; - if ($config['multipartgroesse1'] < 1 && $config['multipartgroesse2'] == 2) $config['multipartgroesse1']=1; + if ('' == $config['sftp_dir'][$i] || (strlen($config['sftp_dir'][$i]) > 1 && '/' != substr($config['sftp_dir'][$i], -1))) { + $config['sftp_dir'][$i] .= '/'; + } - $oldlogcompression=$config['logcompression']; - $config['logcompression']=( isset($_POST['logcompression']) && $_POST['logcompression'] == 1 ) ? 1 : 0; - $config['log_maxsize1']=$_POST['log_maxsize1']; - if ($config['log_maxsize1'] == "") $config['log_maxsize1']=0; - $config['log_maxsize2']=$_POST['log_maxsize2']; - $config['log_maxsize']=$config['log_maxsize1'] * ( ( $config['log_maxsize2'] == 1 ) ? 1024 : 1024 * 1024 ); + if (isset($_POST['testSFTP'.$i])) { + $checkSFTP[$i] = '
'.$lang['L_TESTCONNECTION'].' SFTP-Connection '.($i + 1).'

'.TesteSFTP($i).'
'; + $sftptested = $i; + } + } +} - $config['auto_delete']=$_POST['auto_delete']; - $config['max_backup_files']=$_POST['max_backup_files']; +$showVP = false; +$oldtheme = $config['theme'] ?? 'mod'; +$oldscposition = $config['interface_server_caption_position'] ?? ''; - $config['empty_db_before_restore']=$_POST['empty_db_before_restore']; - $config['optimize_tables_beforedump']=$_POST['optimize_tables']; - $config['cron_dbindex']=$_POST['cron_dbindex']; - $config['cron_comment']=$_POST['cron_comment']; +if ($ftptested > -1) { + $ftp_server[$ftptested] = $_POST['ftp_server'][$ftptested]; + $ftp_port[$ftptested] = $_POST['ftp_port'][$ftptested]; + $ftp_user[$ftptested] = $_POST['ftp_user'][$ftptested]; + $ftp_pass[$ftptested] = $_POST['ftp_pass'][$ftptested]; + $ftp_dir_s = 'ftp_dir['.$ftptested.']'; + $f = $_POST['ftp_dir']; + $ftp_dir[$ftptested] = stripslashes($f[$ftptested]); + // Remember inputs + $config['ftp_transfer'][$ftptested] = (isset($_POST['ftp_transfer'][$ftptested])) ? $_POST['ftp_transfer'][$ftptested] : 0; + $config['sftp'][$ftptested] = (isset($_POST['sftp'][$ftptested])) ? $_POST['sftp'][$ftptested] : 0; + $config['ftp_timeout'][$ftptested] = (isset($_POST['ftp_timeout'][$ftptested])) ? $_POST['ftp_timeout'][$ftptested] : 30; + $config['ftp_useSSL'][$ftptested] = (isset($_POST['ftp_useSSL'][$ftptested])) ? $_POST['ftp_useSSL'][$ftptested] : 0; + $config['ftp_mode'][$ftptested] = (isset($_POST['ftp_mode'][$ftptested])) ? 1 : 0; + $config['ftp_server'][$ftptested] = $ftp_server[$ftptested]; + $config['ftp_port'][$ftptested] = $ftp_port[$ftptested]; + $config['ftp_user'][$ftptested] = $ftp_user[$ftptested]; + $config['ftp_pass'][$ftptested] = $ftp_pass[$ftptested]; + $config['ftp_dir'][$ftptested] = $ftp_dir[$ftptested]; - $config['cron_extender']=$_POST['cron_extender']; - // cron_select_savepath/ - if (!isset($_POST['cron_select_savepath'])) $_POST['cron_select_savepath']=$config['config_file']; - if (isset($_POST['cron_savepath_new']) && !empty($_POST['cron_savepath_new'])) - { - $tmp_configfilename=utf8_decode(trim($_POST['cron_savepath_new'])); - if (!preg_match("/^[a-z.-_]+$/i",$tmp_configfilename,$matches)) - { - $save_config=false; - $msg.='

' . sprintf($lang['L_ERROR_CONFIGFILE_NAME'],$_POST['cron_savepath_new']) . '

'; - } - else - { - $config['config_file']=$_POST['cron_savepath_new']; - $config['cron_configurationfile']=$_POST['cron_savepath_new'] . ".conf.php"; - } - } + if ('' == $ftp_dir[$ftptested] || (strlen($ftp_dir[$ftptested]) > 1 && '/' != substr($ftp_dir[$ftptested], -1))) { + $ftp_dir[$ftptested] .= '/'; + } + WriteParams(); +} - $config['cron_execution_path']=$_POST['cron_execution_path']; - if ($config['cron_execution_path'] == "") $config['cron_execution_path']="msd_cron/"; - if (strlen($config['cron_execution_path']) > 1 && substr($config['cron_execution_path'],-1) != "/") $config['cron_execution_path'].="/"; +if ($sftptested > -1) { + $sftp_server[$sftptested] = $_POST['sftp_server'][$sftptested]; + $sftp_port[$sftptested] = $_POST['sftp_port'][$sftptested]; + $sftp_user[$sftptested] = $_POST['sftp_user'][$sftptested]; + $sftp_pass[$sftptested] = $_POST['sftp_pass'][$sftptested]; + $sftp_dir_s = 'sftp_dir['.$sftptested.']'; + $f = $_POST['sftp_dir']; + $sftp_dir[$sftptested] = stripslashes($f[$sftptested]); + if ('' == $sftp_dir[$sftptested] || (strlen($sftp_dir[$sftptested]) > 1 && '/' != substr($sftp_dir[$sftptested], -1))) { + $sftp_dir[$sftptested] .= '/'; + } - $config['cron_use_sendmail']=$_POST['cron_use_sendmail']; - $config['cron_sendmail']=$_POST['cron_sendmail']; - $config['cron_smtp']=isset($_POST['cron_smtp']) ? $_POST['cron_smtp'] : 'localhost'; + $sftp_path_to_private_key[$sftptested] = stripslashes($_POST['sftp_path_to_private_key'][$sftptested]); + $sftp_secret_passphrase_for_private_key[$sftptested] = stripslashes($_POST['sftp_secret_passphrase_for_private_key'][$sftptested]); + $sftp_fingerprint[$sftptested] = stripslashes($_POST['sftp_fingerprint'][$sftptested]); - $config['cron_printout']=$_POST['cron_printout']; - $config['cron_completelog']=$_POST['cron_completelog']; - $config['cron_compression']=$_POST['compression']; - $config['cron_completelog']=$_POST['cron_completelog']; + // Remember inputs + $config['sftp_transfer'][$sftptested] = (isset($_POST['sftp_transfer'][$sftptested])) ? $_POST['sftp_transfer'][$sftptested] : 0; + $config['sftp_timeout'][$sftptested] = (isset($_POST['sftp_timeout'][$sftptested])) ? $_POST['sftp_timeout'][$sftptested] : 30; + $config['sftp_server'][$sftptested] = $sftp_server[$sftptested]; + $config['sftp_port'][$sftptested] = $sftp_port[$sftptested]; + $config['sftp_user'][$sftptested] = $sftp_user[$sftptested]; + $config['sftp_pass'][$sftptested] = $sftp_pass[$sftptested]; + $config['sftp_dir'][$sftptested] = $sftp_dir[$sftptested]; + $config['sftp_path_to_private_key'][$sftptested] = $sftp_path_to_private_key[$sftptested]; + $config['sftp_secret_passphrase_for_private_key'][$sftptested] = $sftp_secret_passphrase_for_private_key[$sftptested]; + $config['sftp_fingerprint'][$sftptested] = $sftp_fingerprint[$sftptested]; - $databases['multi']=Array(); - $databases['multi_praefix']=Array(); - $databases['multi_commandbeforedump']=Array(); - $databases['multi_commandafterdump']=Array(); + WriteParams(); +} - if (isset($databases['Name'][0]) && $databases['Name'][0] > '') - { - for ($i=0; $i < count($databases['Name']); $i++) - { - $databases['praefix'][$i]=isset($_POST['dbpraefix_' . $i]) ? $_POST['dbpraefix_' . $i] : ''; - $databases['command_before_dump'][$i]=( !isset($_POST['command_before_' . $i]) ) ? "" : $_POST['command_before_' . $i]; - $databases['command_after_dump'][$i]=( !isset($_POST['command_after_' . $i]) ) ? "" : $_POST['command_after_' . $i]; - if (isset($_POST['db_multidump_' . $i]) && $_POST['db_multidump_' . $i] == "db_multidump_$i") - { - $databases['multi'][]=$databases['Name'][$i]; - $databases['multi_praefix'][]=$databases['praefix'][$i]; - $databases['multi_commandbeforedump'][]=$databases['command_before_dump'][$i]; - $databases['multi_commandafterdump'][]=$databases['command_after_dump'][$i]; - } - } - } - $databases['multisetting']=( count($databases['multi']) > 0 ) ? implode(";",$databases['multi']) : ""; - $databases['multisetting_praefix']=( count($databases['multi']) > 0 ) ? implode(";",$databases['multi_praefix']) : ""; - $databases['multisetting_commandbeforedump']=( count($databases['multi']) > 0 ) ? implode(";",$databases['multi_commandbeforedump']) : ""; - $databases['multisetting_commandafterdump']=( count($databases['multi']) > 0 ) ? implode(";",$databases['multi_commandafterdump']) : ""; +echo MODHeader(); - if ($config['cron_dbindex'] == -2) - { - $datenbanken=count($databases['Name']); - $cron_db_array=str_replace(";","|",$databases['multisetting']); - $cron_dbpraefix_array=str_replace(";","|",$databases['multisetting_praefix']); - $cron_db_cbd_array=str_replace(";","|",$databases['multisetting_commandbeforedump']); - $cron_db_cad_array=str_replace(";","|",$databases['multisetting_commandafterdump']); +if (isset($_POST['load'])) { + $msg = SetDefault(true); + $msg = nl2br($msg).'
'.$lang['L_LOAD_SUCCESS'].'
'; + echo ''; +} - } - elseif ($config['cron_dbindex'] == -3) - { - $cron_db_array=implode("|",$databases['Name']); - $cron_dbpraefix_array=implode("|",$databases['praefix']); - $cron_db_cbd_array = isset($databases['command_before_dump']) && !empty($databases['command_before_dump']) ? implode("|",$databases['command_before_dump']) : ""; - $cron_db_cad_array = isset($databases['command_after_dump']) && !empty($databases['command_after_dump']) ? implode("|",$databases['command_after_dump']) : ""; - } +if (isset($_POST['save'])) { + $save_config = true; + //Read parameters + $config['multi_dump'] = $_POST['MultiDBDump'] ?? 0; + $config['compression'] = $_POST['compression'] ?? 0; + $config['language'] = $_POST['language']; + $config['interface_server_caption'] = $_POST['server_caption'] ?? 0; + $config['interface_server_caption_position'] = isset($_POST['server_caption_position']) ? $_POST['server_caption_position'] : 0; + $config['interface_sqlboxsize'] = $_POST['sqlboxsize']; + $config['theme'] = $_POST['theme']; + $config['interface_table_compact'] = (isset($_POST['interface_table_compact'])) ? $_POST['interface_table_compact'] : 1; - $config['ftp_transfer']=array(); - $config['ftp_timeout']=array(); - $config['ftp_mode']=array(); - $config['ftp_useSSL']=array(); + // if (isset($_POST['selected_config'])) $new_config = $_POST['selected_config']; - for ($i=0; $i < 3; $i++) - { - $checkFTP[$i]=""; - $config['ftp_transfer'][$i]=isset($_POST['ftp_transfer'][$i]) ? $_POST['ftp_transfer'][$i] : $config['ftp_transfer'][$i]; - $config['ftp_timeout'][$i]=isset($_POST['ftp_timeout'][$i]) ? $_POST['ftp_timeout'][$i] : 30; - $config['ftp_useSSL'][$i]=isset($_POST['ftp_useSSL'][$i]) ? 1 : 0; + if (isset($_POST['email0'])) { + $config['email_recipient'] = $_POST['email0']; + } + if (isset($_POST['email_recipient_cc'])) { + $config['email_recipient_cc'] = $_POST['email_recipient_cc']; + } + if (isset($_POST['email1'])) { + $config['email_sender'] = $_POST['email1']; + } + $config['send_mail'] = isset($_POST['send_mail']) ? $_POST['send_mail'] : 0; + $config['send_mail_dump'] = isset($_POST['send_mail_dump']) ? $_POST['send_mail_dump'] : 0; - $config['ftp_mode'][$i]=isset($_POST['ftp_mode'][$i]) ? 1 : 0; - $config['ftp_server'][$i]=$_POST['ftp_server'][$i]; - $config['ftp_port'][$i]=$_POST['ftp_port'][$i]; - $config['ftp_user'][$i]=$_POST['ftp_user'][$i]; - $config['ftp_pass'][$i]=$_POST['ftp_pass'][$i]; - $config['ftp_dir'][$i]=stripslashes($_POST['ftp_dir'][$i]); - if ($config['ftp_port'][$i] == 0) $config['ftp_port'][$i]=21; - if ($config['ftp_dir'][$i] == "" || ( strlen($config['ftp_dir'][$i]) > 1 && substr($config['ftp_dir'][$i],-1) != "/" )) $config['ftp_dir'][$i].="/"; - } + if (isset($_POST['email_maxsize1'])) { + $config['email_maxsize1'] = $_POST['email_maxsize1']; + } + if ('' == $config['email_maxsize1']) { + $config['email_maxsize1'] = 0; + } + if (isset($_POST['email_maxsize2'])) { + $config['email_maxsize2'] = $_POST['email_maxsize2']; + } + $config['email_maxsize'] = $config['email_maxsize1'] * ((1 == $config['email_maxsize2']) ? 1024 : 1024 * 1024); - $config['bb_width']=$_POST['bb_width']; - $config['bb_textcolor']=$_POST['bb_textcolor']; - $config['sql_limit']=$_POST['sql_limit']; + if (isset($_POST['memory_limit'])) { + $config['memory_limit'] = $_POST['memory_limit']; + } + if ('' == $config['memory_limit']) { + $config['memory_limit'] = 0; + } + if (isset($_POST['minspeed'])) { + $config['minspeed'] = $_POST['minspeed']; + } + if ($config['minspeed'] < 5) { + $config['minspeed'] = 5; + } + if (isset($_POST['maxspeed'])) { + $config['maxspeed'] = $_POST['maxspeed']; + } + if ($config['maxspeed'] < $config['minspeed']) { + $config['maxspeed'] = $config['minspeed'] * 2; + } + if (isset($_POST['stop_with_error'])) { + $config['stop_with_error'] = $_POST['stop_with_error']; + } + $config['ignore_enable_keys'] = isset($_POST['ignore_enable_keys']) ? (int) $_POST['ignore_enable_keys'] : 0; - if ($config['dbhost'] != $_POST['dbhost'] || $config['dbuser'] != $_POST['dbuser'] || $config['dbpass'] != $_POST['dbpass'] || $config['dbport'] != $_POST['dbport'] || $config['dbsocket'] != $_POST['dbsocket']) - { - //neue Verbindungsparameter - $show_VP=true; + $config['multi_part'] = isset($_POST['multi_part']) ? $_POST['multi_part'] : 0; + if (1 == $config['multi_part']) { + $config['multipartgroesse1'] = isset($_POST['multipartgroesse1']) ? floatval(str_replace(',', '.', $_POST['multipartgroesse1'])) : 0; + $config['multipartgroesse2'] = isset($_POST['multipartgroesse2']) ? intval($_POST['multipartgroesse2']) : 0; + } + if ($config['multipartgroesse1'] < 100 && 1 == $config['multipartgroesse2']) { + $config['multipartgroesse1'] = 100; + } + if ($config['multipartgroesse1'] < 1 && 2 == $config['multipartgroesse2']) { + $config['multipartgroesse1'] = 1; + } - //alte Parameter sichern - $old['dbhost']=$config['dbhost']; - $old['dbuser']=$config['dbuser']; - $old['dbpass']=$config['dbpass']; - $old['dbport']=$config['dbport']; - $old['dbsocket']=$config['dbsocket']; + $config['logcompression'] = isset($config['logcompression']) ? $config['logcompression'] : 0; + $oldlogcompression = $config['logcompression']; + $config['logcompression'] = (isset($_POST['logcompression']) && 1 == $_POST['logcompression']) ? 1 : 0; + if (isset($_POST['log_maxsize1'])) { + $config['log_maxsize1'] = $_POST['log_maxsize1']; + } + if ('' == $config['log_maxsize1']) { + $config['log_maxsize1'] = 0; + } + if (isset($_POST['log_maxsize2'])) { + $config['log_maxsize2'] = $_POST['log_maxsize2']; + } + $config['log_maxsize'] = $config['log_maxsize1'] * ((1 == $config['log_maxsize2']) ? 1024 : 1024 * 1024); - //neu setzen - $config['dbhost']=$_POST['dbhost']; - $config['dbuser']=$_POST['dbuser']; - $config['dbpass']=$_POST['dbpass']; - $config['dbport']=$_POST['dbport']; - $config['dbsocket']=$_POST['dbsocket']; - if (MSD_mysql_connect()) - { - // neue Verbindungsdaten wurden akzeptiert -> manuelle DB-Liste von anderem User löschen - SetDefault(); - $msg.=''; - } - else - { - //alte Werte holen - $config['dbhost']=$old['dbhost']; - $config['dbuser']=$old['dbuser']; - $config['dbpass']=$old['dbpass']; - $config['dbport']=$old['dbport']; - $config['dbsocket']=$old['dbsocket']; - $msg.='

' . $lang['L_WRONG_CONNECTIONPARS'] . '

'; - } - } + $config['auto_delete'] = isset($_POST['auto_delete']) ? $_POST['auto_delete'] : 0; + if (isset($_POST['max_backup_files'])) { + $config['max_backup_files'] = $_POST['max_backup_files']; + } - // Manuelles hinzufügen einer Datenbank - if ($_POST['add_db_manual'] > '') - { - $to_add=trim($_POST['add_db_manual']); - $found=false; - // Prüfen, ob die DB bereits in der Liste vorhanden ist - if (isset($databases['Name'][0])) - { - foreach ($databases['Name'] as $existing_db) - { - if ($existing_db == $to_add) $found=true; - } - } - if ($found) $add_db_message=sprintf($lang['L_DB_IN_LIST'],$to_add); - else - { - if (MSD_mysql_connect()) - { - $res=@mysqli_select_db($config['dbconnection'], $to_add); - if (!$res === false) - { - $databases['Name'][] = $to_add; - //Menü aktualisieren, damit die DB in der Selectliste erscheint - echo ''; - } - else - $add_db_message=sprintf($lang['L_DB_MANUAL_ERROR'],$to_add); - $showVP=true; - } - } - } + $config['empty_db_before_restore'] = isset($_POST['empty_db_before_restore']) ? $_POST['empty_db_before_restore'] : 0; + $config['optimize_tables_beforedump'] = isset($_POST['optimize_tables']) ? $_POST['optimize_tables'] : 0; + $config['use_binary_container'] = isset($_POST['binary_container']) ? $_POST['binary_container'] : 0; + if (isset($_POST['cron_dbindex'])) { + $config['cron_dbindex'] = $_POST['cron_dbindex']; + } + if (isset($_POST['cron_comment'])) { + $config['cron_comment'] = $_POST['cron_comment']; + } - //Nach einer Uebernahme einer neuen Configuration vor dem Schreiben ueberfluessige Indexe entfernen - $anzahl_datenbanken=sizeof($databases['Name']); - if (sizeof($databases['praefix']) > $anzahl_datenbanken) - { - for ($i=sizeof($databases['praefix']); $i >= $anzahl_datenbanken; $i--) - { - unset($databases['praefix'][$i]); - unset($databases['command_before_dump'][$i]); - unset($databases['command_after_dump'][$i]); - } - if ($databases['db_selected_index'] >= $anzahl_datenbanken) $databases['db_selected_index']=0; - } + if (isset($_POST['cron_extender'])) { + $config['cron_extender'] = $_POST['cron_extender']; + } + // cron_select_savepath/ + if (!isset($_POST['cron_select_savepath'])) { + $_POST['cron_select_savepath'] = $config['config_file']; + } + if (isset($_POST['cron_savepath_new']) && !empty($_POST['cron_savepath_new'])) { + $tmp_configfilename = utf8_decode(trim($_POST['cron_savepath_new'])); + if (!preg_match('/^[a-z.-_]+$/i', $tmp_configfilename, $matches)) { + $save_config = false; + $msg .= '

'.sprintf($lang['L_ERROR_CONFIGFILE_NAME'], $_POST['cron_savepath_new']).'

'; + } else { + $config['config_file'] = $_POST['cron_savepath_new']; + $config['cron_configurationfile'] = $_POST['cron_savepath_new'].'.conf.php'; + } + } - // und wegschreiben - if ($save_config) - { - if (WriteParams(false) == true) - { - //neue Sprache? Dann Menue links auch aktualisieren - if ($_SESSION['config']['language'] != $config['language'] || $_POST['scaption_old'] != $config['interface_server_caption'] || $oldtheme != $config['theme'] || $oldscposition != $config['interface_server_caption_position']) - { - $msg.=''; - if (isset($_POST['cron_savepath_new']) && $_POST['cron_savepath_new'] > '') $msg.='

' . $lang['L_SUCCESS_CONFIGFILE_CREATED'] . '

'; - } - //Parameter laden - read_config($config['config_file']); - if ($config['logcompression'] != $oldlogcompression) DeleteLog(); - $msg.='

' . sprintf($lang['L_SAVE_SUCCESS'],$config['config_file']) . '

'; - $msg.=''; - } - else - $msg.='

' . $lang['L_SAVE_ERROR'] . '

'; - } + if (isset($_POST['cron_execution_path'])) { + $config['cron_execution_path'] = $_POST['cron_execution_path']; + } + if ('' == $config['cron_execution_path']) { + $config['cron_execution_path'] = 'mod_cron/'; + } + if (strlen($config['cron_execution_path']) > 1 && '/' != substr($config['cron_execution_path'], -1)) { + $config['cron_execution_path'] .= '/'; + } + if (isset($_POST['cron_use_sendmail'])) { + $config['cron_use_sendmail'] = $_POST['cron_use_sendmail']; + } + if (isset($_POST['cron_sendmail'])) { + $config['cron_sendmail'] = $_POST['cron_sendmail']; + } + $config['cron_smtp'] = isset($_POST['cron_smtp']) ? $_POST['cron_smtp'] : 'localhost'; + + $config['cron_printout'] = isset($_POST['cron_printout']) ? $_POST['cron_printout'] : 0; + $config['cron_completelog'] = isset($_POST['cron_completelog']) ? $_POST['cron_completelog'] : 0; + $config['cron_compression'] = isset($_POST['compression']) ? $_POST['compression'] : 0; + if (isset($_POST['cron_completelog'])) { + $config['cron_completelog'] = $_POST['cron_completelog']; + } + + $databases['multi'] = []; + $databases['multi_praefix'] = []; + $databases['multi_commandbeforedump'] = []; + $databases['multi_commandafterdump'] = []; + + if (isset($databases['Name'][0]) && $databases['Name'][0] > '') { + for ($i = 0; $i < count($databases['Name']); ++$i) { + $databases['praefix'][$i] = isset($_POST['dbpraefix_'.$i]) ? $_POST['dbpraefix_'.$i] : ''; + $databases['command_before_dump'][$i] = (!isset($_POST['command_before_'.$i])) ? '' : $_POST['command_before_'.$i]; + $databases['command_after_dump'][$i] = (!isset($_POST['command_after_'.$i])) ? '' : $_POST['command_after_'.$i]; + if (isset($_POST['db_multidump_'.$i]) && $_POST['db_multidump_'.$i] == "db_multidump_$i") { + $databases['multi'][] = $databases['Name'][$i]; + $databases['multi_praefix'][] = $databases['praefix'][$i]; + $databases['multi_commandbeforedump'][] = $databases['command_before_dump'][$i]; + $databases['multi_commandafterdump'][] = $databases['command_after_dump'][$i]; + } + } + } + $databases['multisetting'] = (count($databases['multi']) > 0) ? implode(';', $databases['multi']) : ''; + $databases['multisetting_praefix'] = (count($databases['multi']) > 0) ? implode(';', $databases['multi_praefix']) : ''; + $databases['multisetting_commandbeforedump'] = (count($databases['multi']) > 0) ? implode(';', $databases['multi_commandbeforedump']) : ''; + $databases['multisetting_commandafterdump'] = (count($databases['multi']) > 0) ? implode(';', $databases['multi_commandafterdump']) : ''; + + + if (-2 == $config['cron_dbindex']) { + $datenbanken = count($databases['Name']); + $cron_db_array = str_replace(';', '|', $databases['multisetting']); + $cron_dbpraefix_array = str_replace(';', '|', $databases['multisetting_praefix']); + $cron_db_cbd_array = str_replace(';', '|', $databases['multisetting_commandbeforedump']); + $cron_db_cad_array = str_replace(';', '|', $databases['multisetting_commandafterdump']); + } elseif (-3 == $config['cron_dbindex']) { + $cron_db_array = implode('|', $databases['Name']); + $cron_dbpraefix_array = implode('|', $databases['praefix']); + $cron_db_cbd_array = isset($databases['command_before_dump']) && !empty($databases['command_before_dump']) ? implode('|', $databases['command_before_dump']) : ''; + $cron_db_cad_array = isset($databases['command_after_dump']) && !empty($databases['command_after_dump']) ? implode('|', $databases['command_after_dump']) : ''; + } + + $config['ftp_transfer'] = []; + $config['ftp_timeout'] = []; + $config['ftp_mode'] = []; + $config['ftp_useSSL'] = []; + + $config['ftp_server'] = []; + $config['ftp_port'] = []; + $config['ftp_user'] = []; + $config['ftp_pass'] = []; + $config['ftp_dir'] = []; + + for ($i = 0; $i < 3; ++$i) { + $checkFTP[$i] = ''; + $config['ftp_transfer'][$i] = isset($_POST['ftp_transfer'][$i]) ? $_POST['ftp_transfer'][$i] : 0; + $config['ftp_timeout'][$i] = isset($_POST['ftp_timeout'][$i]) ? $_POST['ftp_timeout'][$i] : 30; + $config['ftp_useSSL'][$i] = isset($_POST['ftp_useSSL'][$i]) ? 1 : 0; + + $config['ftp_mode'][$i] = isset($_POST['ftp_mode'][$i]) ? 1 : 0; + $config['ftp_server'][$i] = isset($_POST['ftp_server'][$i]) ? $_POST['ftp_server'][$i] : ''; + $config['ftp_port'][$i] = isset($_POST['ftp_port'][$i]) ? $_POST['ftp_port'][$i] : 0; + $config['ftp_user'][$i] = isset($_POST['ftp_user'][$i]) ? $_POST['ftp_user'][$i] : ''; + $config['ftp_pass'][$i] = isset($_POST['ftp_pass'][$i]) ? $_POST['ftp_pass'][$i] : ''; + $config['ftp_dir'][$i] = isset($_POST['ftp_dir'][$i]) ? stripslashes($_POST['ftp_dir'][$i]) : ''; + if (0 == $config['ftp_port'][$i]) { + $config['ftp_port'][$i] = 21; + } + if ('' == $config['ftp_dir'][$i] || (strlen($config['ftp_dir'][$i]) > 1 && '/' != substr($config['ftp_dir'][$i], -1))) { + $config['ftp_dir'][$i] .= '/'; + } + } + + $config['sftp_transfer'] = []; + $config['sftp_timeout'] = []; + + $config['sftp_server'] = []; + $config['sftp_port'] = []; + $config['sftp_user'] = []; + $config['sftp_pass'] = []; + $config['sftp_dir'] = []; + + $config['sftp_path_to_private_key'] = []; + $config['sftp_secret_passphrase_for_private_key'] = []; + $config['sftp_fingerprint'] = []; + + for ($i = 0; $i < 3; ++$i) { + $checkFTP[$i] = ''; + $config['sftp_transfer'][$i] = isset($_POST['sftp_transfer'][$i]) ? $_POST['sftp_transfer'][$i] : 0; + $config['sftp_timeout'][$i] = isset($_POST['sftp_timeout'][$i]) ? $_POST['sftp_timeout'][$i] : 30; + + $config['sftp_server'][$i] = isset($_POST['sftp_server'][$i]) ? $_POST['sftp_server'][$i] : ''; + $config['sftp_port'][$i] = isset($_POST['sftp_port'][$i]) ? $_POST['sftp_port'][$i] : 0; + $config['sftp_user'][$i] = isset($_POST['sftp_user'][$i]) ? $_POST['sftp_user'][$i] : ''; + $config['sftp_pass'][$i] = isset($_POST['sftp_pass'][$i]) ? $_POST['sftp_pass'][$i] : ''; + $config['sftp_dir'][$i] = isset($_POST['sftp_dir'][$i]) ? stripslashes($_POST['sftp_dir'][$i]) : ''; + + $config['sftp_path_to_private_key'][$i] = (isset($_POST['sftp_path_to_private_key'][$i])) ? stripslashes($_POST['sftp_path_to_private_key'][$i]) : null; + $config['sftp_secret_passphrase_for_private_key'][$i] = (isset($_POST['sftp_secret_passphrase_for_private_key'][$i])) ? stripslashes($_POST['sftp_secret_passphrase_for_private_key'][$i]) : null; + $config['sftp_fingerprint'][$i] = (isset($_POST['sftp_fingerprint'][$i])) ? stripslashes($_POST['sftp_fingerprint'][$i]) : null; + + if (0 == $config['sftp_port'][$i]) { + $config['sftp_port'][$i] = 22; + } + if ('' == $config['sftp_dir'][$i] || (strlen($config['sftp_dir'][$i]) > 1 && '/' != substr($config['sftp_dir'][$i], -1))) { + $config['sftp_dir'][$i] .= '/'; + } + } + + $config['bb_width'] = $_POST['bb_width']; + $config['bb_textcolor'] = $_POST['bb_textcolor']; + $config['sql_limit'] = $_POST['sql_limit']; + + if ($config['dbhost'] != $_POST['dbhost'] || $config['dbuser'] != $_POST['dbuser'] || $config['dbpass'] != $_POST['dbpass'] || $config['dbport'] != $_POST['dbport'] || $config['dbsocket'] != $_POST['dbsocket']) { + // new connection parameters + $show_VP = true; + + // Save old parameters + $old['dbhost'] = $config['dbhost']; + $old['dbuser'] = $config['dbuser']; + $old['dbpass'] = $config['dbpass']; + $old['dbport'] = $config['dbport']; + $old['dbsocket'] = $config['dbsocket']; + + //set new + $config['dbhost'] = $_POST['dbhost']; + $config['dbuser'] = $_POST['dbuser']; + $config['dbpass'] = $_POST['dbpass']; + $config['dbport'] = $_POST['dbport']; + $config['dbsocket'] = $_POST['dbsocket']; + if (mod_mysqli_connect()) { + // new connection data was accepted -> manually delete DB list from other user + SetDefault(); + $msg .= ''; + } else { + // Get old values + $config['dbhost'] = $old['dbhost']; + $config['dbuser'] = $old['dbuser']; + $config['dbpass'] = $old['dbpass']; + $config['dbport'] = $old['dbport']; + $config['dbsocket'] = $old['dbsocket']; + $msg .= '

'.$lang['L_WRONG_CONNECTIONPARS'].'

'; + } + } + + // Manuelles hinzufügen einer Datenbank + if ($_POST['add_db_manual'] > '') { + $to_add = trim($_POST['add_db_manual']); + $found = false; + // Check if the DB already exists in the list + if (isset($databases['Name'][0])) { + foreach ($databases['Name'] as $existing_db) { + if ($existing_db == $to_add) { + $found = true; + } + } + } + if ($found) { + $add_db_message = sprintf($lang['L_DB_IN_LIST'], $to_add); + } else { + if (mod_mysqli_connect()) { + $res = mysqli_select_db($config['dbconnection'], $to_add); + if (false === !$res) { + $databases['Name'][] = $to_add; + // Refresh menu so that the DB appears in the select list + echo ''; + } else { + $add_db_message = sprintf($lang['L_DB_MANUAL_ERROR'], $to_add); + } + $showVP = true; + } + } + } + + // After a transfer of a new configuration remove superfluous indexes before writing + $number_databases = sizeof($databases['Name']); + if (sizeof($databases['praefix']) > $number_databases) { + for ($i = sizeof($databases['praefix']); $i >= $number_databases; --$i) { + unset($databases['praefix'][$i]); + unset($databases['command_before_dump'][$i]); + unset($databases['command_after_dump'][$i]); + } + if ($databases['db_selected_index'] >= $number_databases) { + $databases['db_selected_index'] = 0; + } + } + + // and write away + if ($save_config) { + if (true == WriteParams(false)) { + // new language? Then also update menu on the left + if ($_SESSION['config']['language'] != $config['language'] || $_POST['scaption_old'] != $config['interface_server_caption'] || $oldtheme != $config['theme'] || $oldscposition != $config['interface_server_caption_position']) { + $msg .= ''; + if (isset($_POST['cron_savepath_new']) && $_POST['cron_savepath_new'] > '') { + $msg .= '

'.$lang['L_SUCCESS_CONFIGFILE_CREATED'].'

'; + } + } + // Load parameters + read_config($config['config_file']); + if ($config['logcompression'] != $oldlogcompression) { + DeleteLog(); + } + $msg .= '

'.sprintf($lang['L_SAVE_SUCCESS'], $config['config_file']).'

'; + $msg .= ''; + } else { + $msg .= '

'.$lang['L_SAVE_ERROR'].'

'; + } + } } ReadSQL(); ?> - ' . $nl; -$aus['formstart'].='
'; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -$aus['formstart'].='
' . $nl; -//$aus['formstart'].='
' . $nl; +// Output parts +$aus['formstart'] = headline($lang['L_CONFIG_HEADLINE'].': '.$config['config_file']); +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +$aus['formstart'] .= '
'.$nl; +//$aus['formstart'] .= '
'.$nl; +//$aus['formstart'] .= ''; +$aus['formstart'] .= '


'.$nl; +$aus['formstart'] .= ''.$nl; +//$aus['formstart'] .= ''.$nl; +$aus['formstart'] .= '
'.$msg.$nl; -//$aus['formstart'].=''; -$aus['formstart'].='


' . $nl; -$aus['formstart'].='' . $nl; -//$aus['formstart'].='' . $nl; -$aus['formstart'].='
' . $msg . $nl; +// Configuration files +$aus['conf'] = '
'.$lang['L_CONFIGFILES'].''.$nl.$nl; -// Konfigurationsdateien -$aus['conf']='
' . $lang['L_CONFIGFILES'] . '' . $nl . $nl; +$aus['conf'] .= ''; +$aus['conf'] .= ''; +$aus['conf'] .= ''; +$aus['conf'] .= ''; +$aus['conf'] .= '
'.$lang['L_CREATE_CONFIGFILE'].':'.print_save_button().'
'; -$aus['conf'].=''; -$aus['conf'].=''; -$aus['conf'].=''; -$aus['conf'].=''; -$aus['conf'].='
' . $lang['L_CREATE_CONFIGFILE'] . ':' . print_save_button() . '
'; +$aus['conf'] .= '
'; +$aus['conf'] .= ''; -$aus['conf'].='
#'.$lang['L_CONFIGFILE'].' / '.$lang['L_MYSQL_DATA'].''.$lang['L_CONFIGURATIONS'].''.$lang['L_ACTION'].'
'; -$aus['conf'].=''; +$i = 0; +$old_config = $config; +$configs = get_config_filenames(); -$i=0; -$old_config=$config; -$configs=get_config_filenames(); -if (sizeof($configs) > 0) -{ - foreach ($configs as $c) - { - $i++; - unset($databases); - read_config($c); - $aus['conf'].=''; +if (sizeof($configs) > 0) { + foreach ($configs as $c) { + ++$i; + unset($databases); + read_config($c); + $aus['conf'] .= ''; - $aus['conf'].=''; + $aus['conf'] .= ''; - // Einstellungen - $aus['conf'].=''; - $aus['conf'].='
#' . $lang['L_CONFIGFILE'] . ' / ' . $lang['L_MYSQL_DATA'] . '' . $lang['L_CONFIGURATIONS'] . '' . $lang['L_ACTION'] . '
' . $i . '.'.$i.'.'; + // Settings + $aus['conf'] .= ''; - $aus['conf'].=''; - $aus['conf'].=''; // filename + $aus['conf'] .= '
' . $lang['L_NAME'] . ':' . $c . '
'; + $aus['conf'] .= ''; // filename + $aus['conf'] .= ''; + $aus['conf'] .= ''; + $aus['conf'] .= ''; - $aus['conf'].=''; - $aus['conf'].=''; - $aus['conf'].=$lang['L_DBS'] . ':'; + // Show database list + $aus['conf'] .= ''; - // Datenbankliste anzeigen - $aus['conf'].=''; + $aus['conf'] .= '
'.$lang['L_NAME'].':'.$c.'
'.$lang['L_DB_HOST'].':'.$config['dbhost'].'
'.$lang['L_DB_USER'].':'.$config['dbuser'].'
'; - $aus['conf'].='
' . $lang['L_DB_HOST'] . ':' . $config['dbhost'] . '
' . $lang['L_DB_USER'] . ':' . $config['dbuser'] . '
'; + $aus['conf'] .= $lang['L_DBS'].':'; + $aus['conf'] .= ''; + $aus['conf'] .= $icon['search'].''.sizeof($databases['Name']).''; + $aus['conf'] .= '
'; - $aus['conf'].=''; - $aus['conf'].=$icon['search'] . '' . sizeof($databases['Name']) . ''; - $aus['conf'].='
'; + $aus['conf'] .= '
'; - $aus['conf'].='
'; + $aus['conf'] .= ''; - $aus['conf'].='
'; + // Build string from multidump DBs + $toolboxstring = ''; + $databases['multi'] = []; + if (isset($databases['multisetting'])) { + $databases['multi'] = explode(';', $databases['multisetting']); + } + $multi_praefixe = []; + if (isset($databases['multisetting_praefix'])) { + $multi_praefixe = explode(';', $databases['multisetting_praefix']); + } + if (is_array($databases['multi'])) { + for ($x = 0; $x < sizeof($databases['multi']); ++$x) { + if ($x > 0) { + $toolboxstring .= ', '; + } + $toolboxstring .= $databases['multi'][$x]; + if (isset($multi_praefixe[$x]) && $multi_praefixe[$x] > '') { + $toolboxstring .= ' (\''.$multi_praefixe[$x].'\')'; + } + } + } - // String aus Multidump-DBs aufbauen - $toolboxstring=''; - $databases['multi']=array(); - if (isset($databases['multisetting'])) $databases['multi']=explode(";",$databases['multisetting']); - $multi_praefixe=array(); - if (isset($databases['multisetting_praefix'])) $multi_praefixe=explode(";",$databases['multisetting_praefix']); - if (is_array($databases['multi'])) - { - for ($x=0; $x < sizeof($databases['multi']); $x++) - { - if ($x > 0) $toolboxstring.=', '; - $toolboxstring.=$databases['multi'][$x]; - if (isset($multi_praefixe[$x]) && $multi_praefixe[$x] > '') $toolboxstring.=' (\'' . $multi_praefixe[$x] . '\')'; - } - } + // DB list for PHP + if (isset($config['multi_dump']) && (1 == $config['multi_dump'])) { // Multidump + $aus['conf'] .= table_output($lang['L_BACKUP_DBS_PHP'], $toolboxstring); + } else { + // Current DB + $text = isset($databases['db_actual']) ? $databases['db_actual'] : ''; + if (isset($databases['db_selected_index']) && isset($databases['praefix'][$databases['db_selected_index']]) && $databases['praefix'][$databases['db_selected_index']] > '') { + $text .= " ('".$databases['praefix'][$databases['db_selected_index']]."')"; + } + $aus['conf'] .= table_output($lang['L_BACKUP_DBS_PHP'], $text); + } - // DB-Liste fuer PHP - if ($config['multi_dump'] == 1) // Multidump - { - $aus['conf'].=table_output($lang['L_BACKUP_DBS_PHP'],$toolboxstring); - } - else - { - // aktuelle DB - $text=isset($databases['db_actual']) ? $databases['db_actual'] : ''; - if (isset($databases['db_selected_index']) && isset($databases['praefix'][$databases['db_selected_index']]) && $databases['praefix'][$databases['db_selected_index']] > '') $text.=" ('" . $databases['praefix'][$databases['db_selected_index']] . "')"; - $aus['conf'].=table_output($lang['L_BACKUP_DBS_PHP'],$text); - } + // DB list for Perl + // Fallback if index is not yet set from old configuration files -> save all DBs + if (!isset($config['cron_dbindex'])) { + $config['cron_dbindex'] = -3; + } + if (-2 == $config['cron_dbindex']) { + $aus['conf'] .= table_output($lang['L_BACKUP_DBS_PERL'], $toolboxstring); + } elseif (-3 == $config['cron_dbindex']) { + $text = $lang['L_ALL']; + $aus['conf'] .= table_output($lang['L_BACKUP_DBS_PERL'], $text); + } else { + $text = isset($databases['Name'][$config['cron_dbindex']]) ? $databases['Name'][$config['cron_dbindex']] : ''; + if (isset($databases['praefix'][$config['cron_dbindex']]) && $databases['praefix'][$config['cron_dbindex']] > '') { + $text .= " ('".$databases['praefix'][$config['cron_dbindex']]."')"; + } + $aus['conf'] .= table_output($lang['L_BACKUP_DBS_PERL'], $text); + } - // DB-Liste fuer Perl - // Fallback falls aus alten Konfigurationsdateien der Index noch nicht gesetzt ist -> alle DBs sichern - if (!isset($config['cron_dbindex'])) $config['cron_dbindex']=-3; - if ($config['cron_dbindex'] == -2) - { - $aus['conf'].=table_output($lang['L_BACKUP_DBS_PERL'],$toolboxstring); - } - elseif ($config['cron_dbindex'] == -3) - { - $text=$lang['L_ALL']; - $aus['conf'].=table_output($lang['L_BACKUP_DBS_PERL'],$text); - } - else - { - $text=isset($databases['Name'][$config['cron_dbindex']]) ? $databases['Name'][$config['cron_dbindex']] : ''; - if (isset($databases['praefix'][$config['cron_dbindex']]) && $databases['praefix'][$config['cron_dbindex']] > '') $text.=" ('" . $databases['praefix'][$config['cron_dbindex']] . "')"; - $aus['conf'].=table_output($lang['L_BACKUP_DBS_PERL'],$text); - } + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { // Multipart + $aus['conf'] .= table_output($lang['L_MULTI_PART'], $lang['L_YES'].', '.$lang['L_FILESIZE'].' '.byte_output($config['multipart_groesse'])); + } - if ($config['multi_part'] == 1) // Multipart - { - $aus['conf'].=table_output($lang['L_MULTI_PART'],$lang['L_YES'] . ", " . $lang['L_FILESIZE'] . " " . byte_output($config['multipart_groesse'])); - } + if (isset($config['send_mail']) && (1 == $config['send_mail'])) { // Email + $aus['conf'] .= table_output($lang['L_SEND_MAIL_FORM'], $lang['L_YES'].', '.$lang['L_EMAIL_ADRESS'].': '.$config['email_recipient']); + if ($config['email_recipient_cc'] > '') { + $aus['conf'] .= table_output($lang['L_EMAIL_CC'], $config['email_recipient_cc']); + } + $text = $lang['L_YES'].', '.$lang['L_MAX_UPLOAD_SIZE'].': '; + $bytes = $config['email_maxsize1'] * 1024; + if (2 == $config['email_maxsize2']) { + $bytes = $bytes * 1024; + } + $text .= byte_output($bytes); + if (1 == $config['send_mail_dump']) { + $aus['conf'] .= table_output($lang['L_SEND_MAIL_DUMP'], $text); + } + } - if ($config['send_mail'] == 1) //Email - { - $aus['conf'].=table_output($lang['L_SEND_MAIL_FORM'],$lang['L_YES'] . ", " . $lang['L_EMAIL_ADRESS'] . ": " . $config['email_recipient']); - if ($config['email_recipient_cc'] > '') $aus['conf'].=table_output($lang['L_EMAIL_CC'],$config['email_recipient_cc']); - $text=$lang['L_YES'] . ", " . $lang['L_MAX_UPLOAD_SIZE'] . ": "; - $bytes=$config['email_maxsize1'] * 1024; - if ($config['email_maxsize2'] == 2) $bytes=$bytes * 1024; - $text.=byte_output($bytes); - if ($config['send_mail_dump'] == 1) $aus['conf'].=table_output($lang['L_SEND_MAIL_DUMP'],$text); + for ($x = 0; $x < 3; ++$x) { + // FTP + if (isset($config['ftp_transfer'][$x]) && $config['ftp_transfer'][$x] > 0) { + $aus['conf'] .= table_output($lang['L_FTP'], sprintf($lang['L_FTP_SEND_TO'], $config['ftp_server'][$x], $config['ftp_dir'][$x])); + } + // SFTP + if (isset($config['sftp_transfer'][$x]) && $config['sftp_transfer'][$x] > 0) { + $aus['conf'] .= table_output($lang['L_SFTP'], sprintf($lang['L_SFTP_SEND_TO'], $config['sftp_server'][$x], $config['sftp_dir'][$x])); + } + } + $aus['conf'] .= '
'; + $aus['conf'] .= ''.$icon['edit'].''; - } + if ('myoosdumper' != $c) { // && $old_config['config_file']!= $c) + $aus['conf'] .= ''.$icon['delete'].''; + } else { + $aus['conf'] .= ' '; + } - for ($x=0; $x < 3; $x++) - { - if (isset($config['ftp_transfer'][$x]) && $config['ftp_transfer'][$x] > 0) - { - //$aus['conf'].=table_output($lang['L_FTP'],sprintf($lang['L_FTP_SEND_TO'],$config['ftp_server'][$x],$config['ftp_dir'][$x]),1,2); - $aus['conf'].=table_output($lang['L_FTP'],sprintf($lang['L_FTP_SEND_TO'],$config['ftp_server'][$x],$config['ftp_dir'][$x])); - } - } - $aus['conf'].='
'; - $aus['conf'].='' . $icon['edit'] . ''; - - if ($c != 'myoosdumper') // && $old_config['config_file']!=$c) -$aus['conf'].='' . $icon['delete'] . ''; - else $aus['conf'].=' '; - - $aus['conf'].=''; - } + $aus['conf'] .= ''; + } } -$configfile=$old_config['config_file']; -$config=$old_config; +$configfile = $old_config['config_file']; +$config = $old_config; unset($databases); -$databases=array(); +$databases = []; read_config($configfile); -$aus['conf'].=''; -$aus['conf'].='
' . $nl . $nl; +$aus['conf'] .= ''; +$aus['conf'] .= '
'.$nl.$nl; -// Zugangsdaten -$aus['db']='
' . $lang['L_CONNECTIONPARS'] . '' . $nl . $nl; -$aus['db'].='
'.$lang['L_DB_BACKUPPARS'].''; -$aus['db'].=''; +$aus['db'] .= '
'; -//Wenn Datenbanken vorhanden sind -if (isset($databases['Name'][0]) && $databases['Name'][0] > '') -{ - if (!isset($databases['multi']) || ( !is_array($databases['multi']) )) $databases['multi']=array(); - if (count($databases['Name']) == 1) - { - $databases['db_actual']=$databases['Name'][0]; - $databases['db_selected_index']=0; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - } - else - { +// If databases are available +if (isset($databases['Name'][0]) && $databases['Name'][0] > '') { + if (!isset($databases['multi']) || (!is_array($databases['multi']))) { + $databases['multi'] = []; + } + if (1 == count($databases['Name'])) { + $databases['db_actual'] = $databases['Name'][0]; + $databases['db_selected_index'] = 0; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + } else { $disabled = ''; - if (in_array($databases['db_actual'], $dontBackupDatabases)) $disabled = ' disabled="disabled"'; + if (in_array($databases['db_actual'], $dontBackupDatabases)) { + $disabled = ' disabled="disabled"'; + } - $aus['db'].=''; - $aus['db'].='
' . Help($lang['L_HELP_DB'],"conf1") . $lang['L_LIST_DB'] . '' . $databases['db_actual'] . '
' . Help($lang['L_HELP_PRAEFIX'],"conf2") . $lang['L_PRAEFIX'] . '
' . Help($lang['L_HELP_COMMANDS'],"") . 'Command before Dump' . ComboCommandDump(0,$databases['db_selected_index']) . '
' . Help($lang['L_HELP_COMMANDS'],"") . 'Command after Dump' . ComboCommandDump(1,$databases['db_selected_index']) . '' . $lang['L_SQL_BEFEHLE'] . '
'.Help($lang['L_HELP_DB'], 'conf1').$lang['L_LIST_DB'].''.$databases['db_actual'].'
'.Help($lang['L_HELP_PRAEFIX'], 'conf2').$lang['L_PRAEFIX'].'
'.Help($lang['L_HELP_COMMANDS'], '').'Command before Dump'.ComboCommandDump(0, $databases['db_selected_index']).'
'.Help($lang['L_HELP_COMMANDS'], '').'Command after Dump'.ComboCommandDump(1, $databases['db_selected_index']).''.$lang['L_SQL_BEFEHLE'].'
' . Help($lang['L_HELP_DB'],"conf1") . $lang['L_LIST_DB'] . ' ' . $lang['L_ACTIVATE_MULTIDUMP'] . '
'; - $aus['db'].=''; - $aus['db'].=''; + $aus['db'] .= ''; + $aus['db'] .= ''; -$aus['db'].='
' . $lang['L_DB'] . 'Multidump
(' . $lang['L_ALL'] . ' ' . $lang['L_NONE'] . ')
' . Help($lang['L_HELP_PRAEFIX'],"conf2") . $lang['L_PRAEFIX'] . '' . Help($lang['L_HELP_COMMANDS'],"",11) . 'Command before Dump' . Help($lang['L_HELP_COMMANDS'],"",11) . 'Command after Dump' . $lang['L_SQL_BEFEHLE'] . '
'.Help($lang['L_HELP_DB'], 'conf1').$lang['L_LIST_DB'].' '.$lang['L_ACTIVATE_MULTIDUMP'].'
'; + $aus['db'] .= ''; + $aus['db'] .= ''; - //erst die aktuelle DB - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; + //erst die aktuelle DB + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; + $aus['db'] .= ''; - $dbacombo=$dbbcombo=""; - $j=0; - for ($i=0; $i < count($databases['Name']); $i++) - { - if ($i != $databases['db_selected_index']) - { - $j++; - $disabled = ''; - if (in_array($databases['Name'][$i], $dontBackupDatabases)) $disabled = ' disabled="disabled"'; - if (!isset($databases['praefix'][$i])) $databases['praefix'][$i] = ''; - $aus['db'].=''; - $aus['db'].=''; - $aus['db'].=''; + $aus['db'] .= ''; + $aus['db'] .= ''; - $aus['db'].=''; - $aus['db'].=''; - } - } - } + $aus['db'] .= $disabled.'>'; + $aus['db'] .= ''; + $aus['db'] .= ''; + } + } + } +} else { + $aus['db'] .= ''; } -else - $aus['db'].=''; -$aus['db'].='
'.$lang['L_DB'].'Multidump
('.$lang['L_ALL'].' '.$lang['L_NONE'].')
'.Help($lang['L_HELP_PRAEFIX'], 'conf2').$lang['L_PRAEFIX'].''.Help($lang['L_HELP_COMMANDS'], '', 11).'Command before Dump'.Help($lang['L_HELP_COMMANDS'], '', 11).'Command after Dump'.$lang['L_SQL_BEFEHLE'].'
' . $databases['db_actual'] . '' . ComboCommandDump(0,$databases['db_selected_index'], $disabled) - . '' . ComboCommandDump(1,$databases['db_selected_index'], $disabled) . '' . $lang['L_SQL_BEFEHLE'] . '
'.$databases['db_actual'].''.ComboCommandDump(0, $databases['db_selected_index'], $disabled) + .''.ComboCommandDump(1, $databases['db_selected_index'], $disabled).''.$lang['L_SQL_BEFEHLE'].'
' . $databases['Name'][$i] . ''.$databases['Name'][$i].'' . ComboCommandDump(0,$i, $disabled) . '' - . ComboCommandDump(1,$i, $disabled) . '' . $lang['L_SQL_BEFEHLE'] . '
'.ComboCommandDump(0, $i, $disabled).'' + .ComboCommandDump(1, $i, $disabled).''.$lang['L_SQL_BEFEHLE'].'
'.$lang['L_NO_DB_FOUND'].'
' . $lang['L_NO_DB_FOUND'] . '
'; +$aus['db'] .= '
'; +$aus['db'] .= '
'; // sonstige Einstellungen -$aus['global1']='
' . $lang['L_GENERAL'] . ''; +$aus['global1'] = '
'.$lang['L_GENERAL'].'
'; -$aus['global1'].=''; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; -$aus['global1'].=''; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; -$aus['global1'].=''; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; -$aus['global1'].='
' . Help("","") . 'Logfiles:  ' . $lang['L_COMPRESSED'] . '
'; -$aus['global1'].='' . $lang['L_MAXSIZE'] . ':    '; -$aus['global1'].='
'.Help('', '').'Logfiles:  '.$lang['L_COMPRESSED'].'
'; +$aus['global1'] .= ''.$lang['L_MAXSIZE'].':    '; +$aus['global1'] .= ''; +$aus['global1'] .= '
' . Help($lang['L_HELP_MEMORYLIMIT'],"") . $lang['L_MEMORY_LIMIT'] . ':  '; -$aus['global1'].=' Bytes   ' . $lang['L_AUTODETECT'] . ''; -$aus['global1'].='
'.Help($lang['L_HELP_MEMORYLIMIT'], '').$lang['L_MEMORY_LIMIT'].':   Bytes   '.$lang['L_AUTODETECT'].''; +$aus['global1'] .= '
' . Help($lang['L_HELP_SPEED'],"") . $lang['L_SPEED'] . ':  ' . $lang['L_TO'] . ' 
'.Help($lang['L_HELP_SPEED'], '').$lang['L_SPEED'].':  '.$lang['L_TO'].' 
' . $lang['L_DUMP'] . ''; +$aus['global1'] .= '
'.$lang['L_DUMP'].''; -$aus['global1'].=''; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; //Multipart-Backup --> -$aus['global1'].=''; -$aus['global1'].=''; -$aus['global1'].='>  '; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; +$aus['global1'] .= '>  '; +$aus['global1'] .= ''; +$aus['global1'] .= ''; -$aus['global1'].='
' . Help($lang['L_HELP_ZIP'],"conf3") . $lang['L_GZIP'] . ':  ' . $lang['L_ACTIVATED']; -$aus['global1'].='    ' . $lang['L_NOT_ACTIVATED'] . '
'.Help($lang['L_HELP_ZIP'], 'conf3').$lang['L_GZIP'].': '; +$aus['global1'] .= '
' . Help($lang['L_HELP_MULTIPART'],"") . $lang['L_MULTI_PART'] . ': '; -$aus['global1'].=' ' . $lang['L_YES']; -$aus['global1'].='   ' . $lang['L_NO']; -$aus['global1'].='
' . Help($lang['L_HELP_MULTIPARTGROESSE'],"") . $lang['L_MULTI_PART_GROESSE'] . ':  '; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= '
'.Help($lang['L_HELP_MULTIPARTGROESSE'], '').$lang['L_MULTI_PART_GROESSE'].': '; -$aus['global1'].=' ' . $lang['L_ACTIVATED']; -$aus['global1'].='    ' . $lang['L_NOT_ACTIVATED'] . '
' . $lang['L_RESTORE'] . ''; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; + +$aus['global1'] .= '
' . Help($lang['L_HELP_EMPTY_DB_BEFORE_RESTORE'],"conf4") . $lang['L_EMPTY_DB_BEFORE_RESTORE'] . ': '; -$aus['global1'].=' ' . $lang['L_YES']; -$aus['global1'].='    ' . $lang['L_NO']; -$aus['global1'].='
'.Help($lang['L_HELP_OPTIMIZE'], '').$lang['L_OPTIMIZE'].':'; +$aus['global1'] .= '
' . Help("","") . $lang['L_ERRORHANDLING_RESTORE'] . ':'; -$aus['global1'].=' ' . $lang['L_EHRESTORE_CONTINUE'] . '
'; -$aus['global1'].=' ' . $lang['L_EHRESTORE_STOP']; -$aus['global1'].='
'.Help($lang['L_HELP_BINARY'], '').$lang['L_BINARY'].':'; +$aus['global1'] .= '
'.$lang['L_RESTORE'].''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; + +$aus['global1'] .= ''; +$aus['global1'] .= ''; if (!isset($config['ignore_enable_keys'])) { $config['ignore_enable_keys'] = 0; } -$aus['global1'].=''; +$aus['global1'] .= ''; +$aus['global1'] .= ''; -$aus['global1'].='
'.Help($lang['L_HELP_EMPTY_DB_BEFORE_RESTORE'], 'conf4').$lang['L_EMPTY_DB_BEFORE_RESTORE'].': '; +$aus['global1'] .= '
'.Help('', '').$lang['L_ERRORHANDLING_RESTORE'].': '.$lang['L_EHRESTORE_CONTINUE']; +$aus['global1'] .= '    '.$lang['L_EHRESTORE_STOP']; +$aus['global1'] .= '
Ignore "ENABLE KEYS":'; -$aus['global1'].=' ' . $lang['L_YES']; -$aus['global1'].='    ' . $lang['L_NO']; -$aus['global1'].='
Ignore "ENABLE KEYS":'; +$aus['global1'] .= '
'; -$aus['global1'].=print_save_button(); -$aus['global1'].='
'; +$aus['global1'] .= ''; +$aus['global1'] .= print_save_button(); +$aus['global1'] .= '
'; //Interface --> -$aus['global3']='
' . $lang['L_CONFIG_INTERFACE'] . ''; -$aus['global3'].=''; -$aus['global3'].=''; +$aus['global3'] = '
'.$lang['L_CONFIG_INTERFACE'].'
' . Help($lang['L_HELP_LANG'],"conf11") . $lang['L_LANGUAGE'] . ': 
'; +$aus['global3'] .= ''; +$aus['global3'] .= ''; -$aus['global3'].=''; -$aus['global3'].=''; +$config['interface_server_caption'] = isset($config['interface_server_caption']) ? $config['interface_server_caption'] : ''; +$aus['global3'] .= ''; -$aus['global3'].='
'.Help($lang['L_HELP_LANG'], 'conf11').$lang['L_LANGUAGE'].': 
' . Help($lang['L_HELP_SERVERCAPTION'],"") . $lang['L_SERVERCAPTION'] . ': ' . $lang['L_ACTIVATED'] . '   '; -$aus['global3'].=' ' . $lang['L_IN_MAINFRAME'] . '   ' . $lang['L_IN_LEFTFRAME'] . ''; -$aus['global3'].='
' . Help("","") . 'Theme:
' . $lang['L_SQL_BROWSER'] . ''; -$aus['global3'].=''; -$aus['global3'].=''; -$aus['global3'].=''; -$aus['global3'].=''; -$aus['global3'].=''; -$aus['global3'].='
' . Help("","") . $lang['L_SQLBOXHEIGHT'] . ':  Pixel
' . Help("","") . $lang['L_SQLLIMIT'] . ':  
' . Help("","") . $lang['L_BBPARAMS'] . ': '; -$aus['global3'].=''; -$aus['global3'].=''; -$aus['global3'].=''; +$aus['global3'] .= ''; + +$aus['global3'] .= ''; + +$aus['global3'] .= '
' . $lang['L_WIDTH'] . ': pixel
' . $lang['L_BBTEXTCOLOR'] . ': 
'.Help($lang['L_HELP_SERVERCAPTION'], '').$lang['L_SERVERCAPTION'].':
'; +$aus['global3'] .= ' '.$lang['L_IN_MAINFRAME'].'   '.$lang['L_IN_LEFTFRAME'].''; +$aus['global3'] .= '
'.Help('', '').'Theme:
'.$lang['L_SQL_BROWSER'].''; +$aus['global3'] .= ''; + +$config['interface_sqlboxsize'] = isset($config['interface_sqlboxsize']) ? $config['interface_sqlboxsize'] : ''; +$aus['global3'] .= ''; + +$aus['global3'] .= ''; +$aus['global3'] .= ''; +$aus['global3'] .= ''; +$aus['global3'] .= ''; -$aus['global3'].=''; +$aus['global3'] .= ''; +$aus['global3'] .= ''; -$aus['global3'].='
'.Help('', '').$lang['L_SQLBOXHEIGHT'].':  Pixel
'.Help('', '').$lang['L_SQLLIMIT'].':  
'.Help('', '').$lang['L_BBPARAMS'].': '; +$aus['global3'] .= ''; +$aus['global3'] .= ''; +$aus['global3'] .= '
'.$lang['L_WIDTH'].': pixel
'.$lang['L_BBTEXTCOLOR'].': 
'; -$aus['global3'].='
' . Help("","") . 'SQL-Grid:  normal   '; -$aus['global3'].=' compact
'.Help('', '').'SQL-Grid:  normal   '; +$aus['global3'] .= ' compact
' . print_save_button() . ''; +$aus['global3'] .= '
'.print_save_button().'
'; -//automatisches Löschen--> -$aus['global2']='
' . $lang['L_CONFIG_AUTODELETE'] . ''; -$aus['global2'].=''; -$aus['global2'].=''; -$aus['global2'].=''; -$aus['global2'].='
' . Help($lang['L_HELP_AD1'],"conf8") . $lang['L_AUTODELETE'] . ':  ' . $lang['L_ACTIVATED']; -$aus['global2'].='    ' . $lang['L_NOT_ACTIVATED']; -$aus['global2'].='
' . Help($lang['L_HELP_AD3'],"conf10") . $lang['L_NUMBER_OF_FILES_FORM'] . ':  '; -$aus['global2'].='
' . print_save_button() . '
'; +//automatic delete--> +$aus['global2'] = '
'.$lang['L_CONFIG_AUTODELETE'].''; +$aus['global2'] .= ''; +$aus['global2'] .= ''; + +$aus['global2'] .= ''; +$aus['global2'] .= '
'.Help($lang['L_HELP_AD1'], 'conf8').$lang['L_AUTODELETE'].': '; +$aus['global2'] .= '
'.Help($lang['L_HELP_AD3'], 'conf10').$lang['L_NUMBER_OF_FILES_FORM'].':  '; +$aus['global2'] .= '
'.print_save_button().'
'; //Email--> -if (!isset($config['email_recipient_cc'])) $config['email_recipient_cc']=''; // backwards compatibility if field is undefined -$aus['transfer1']='
' . $lang['L_CONFIG_EMAIL'] . ''; -$aus['transfer1'].=''; -$aus['transfer1'].=''; -$aus['transfer1'].=''; +if (!isset($config['email_recipient_cc'])) { + $config['email_recipient_cc'] = ''; +} // backwards compatibility if field is undefined +$aus['transfer1'] = '
'.$lang['L_EMAIL_NOTIFICATION'].'
' . $lang['L_SEND_MAIL_FORM'] . ':  ' . $lang['L_YES']; -$aus['transfer1'].='    ' . $lang['L_NO']; -$aus['transfer1'].='
' . $lang['L_EMAIL_ADRESS'] . ': 
' . $lang['L_EMAIL_CC'] . ': 
'; +$aus['transfer1'] .= ''; +$aus['transfer1'] .= ''; -$aus['transfer1'].=''; -$aus['transfer1'].=''; -$aus['transfer1'].=''; -$aus['transfer1'].='
'.$lang['L_SEND_MAIL_FORM'].': '; +$aus['global3'] .= '
' . $lang['L_EMAIL_SENDER'] . ': 
' . $lang['L_SEND_MAIL_DUMP'] . ': '; -$aus['transfer1'].=' ' . $lang['L_YES']; -$aus['transfer1'].='    ' . $lang['L_NO']; -$aus['transfer1'].='
' . $lang['L_EMAIL_MAXSIZE'] . ': '; -$aus['transfer1'].='  '; -$aus['transfer1'].='
' . $lang['L_CRON_MAILPRG'] . ': '; -$aus['transfer1'].=''; -$aus['transfer1'].='
 sendmail
 SMTP
 SMTP-Port: ' . $config['cron_smtp_port'] . '
' . print_save_button() . '
'; +$aus['transfer1'] .= ''.$lang['L_EMAIL_ADRESS'].': '; +$aus['transfer1'] .= ''.$lang['L_EMAIL_CC'].': '; +$aus['global3'] .= ''; + +$aus['transfer1'] .= ''.$lang['L_EMAIL_SENDER'].': '; +$aus['global3'] .= ''; + +$aus['transfer1'] .= ''.$lang['L_SEND_MAIL_DUMP'].': '; +$aus['transfer1'] .= ''; +$aus['global3'] .= ''; + +$aus['transfer1'] .= ''.$lang['L_EMAIL_MAXSIZE'].': '; +$aus['transfer1'] .= '  '; +$aus['transfer1'] .= ''; + +$aus['transfer1'] .= ''.$lang['L_CRON_MAILPRG'].': '; +$aus['transfer1'] .= ''; +$aus['transfer1'] .= ''; +$aus['transfer1'] .= '
 sendmail
 SMTP
 SMTP-Port: '.$config['cron_smtp_port'].''; +$aus['global3'] .= '
'.print_save_button().'
'; //FTP--> -$aus['transfer2']='
' . $lang['L_CONFIG_FTP'] . ''; -for ($i=0; $i < 3; $i++) -{ - $aus['transfer2'].='
FTP-Connection ' . ( $i + 1 ) . ''; +$aus['transfer2'] = '
'.$lang['L_CONFIG_FTP'].''; +for ($i = 0; $i < 3; ++$i) { + $aus['transfer2'] .= '
FTP-Connection '.($i + 1).'
'; - $aus['transfer2'].=''; - $aus['transfer2'].=''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= ''; - $aus['transfer2'].=''; - $aus['transfer2'].=''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= ''; - $aus['transfer2'].=''; - $aus['transfer2'].=''; + $aus['transfer2'] .= ''; - $aus['transfer2'].=''; + $aus['transfer2'] .= '
' . Help($lang['L_HELP_FTPTRANSFER'],"") . $lang['L_FTP_TRANSFER'] . ':  ' . $lang['L_ACTIVATED']; - $aus['transfer2'].='    ' . $lang['L_NOT_ACTIVATED'] . '
'.Help($lang['L_HELP_FTPTRANSFER'], '').$lang['L_FTP_TRANSFER'].': 
' . Help($lang['L_HELP_FTPTIMEOUT'],"") . $lang['L_FTP_TIMEOUT'] . ':  sec
'.Help($lang['SFTP'], '').$lang['L_FTP_TIMEOUT'].':  sec
' . Help($lang['L_HELP_FTP_MODE'],"") . $lang['L_FTP_CHOOSE_MODE'] . ':  '; - $aus['transfer2'].=$lang['L_FTP_PASSIVE'] . '
'; + $aus['transfer2'] .= '
'.Help($lang['L_HELP_FTP_MODE'], '').$lang['L_FTP_CHOOSE_MODE'].':  '; + $aus['transfer2'] .= $lang['L_FTP_PASSIVE'].'
'; - $aus['transfer2'].='
' . Help($lang['L_HELP_FTPSSL'],"") . $lang['L_FTP_SSL'] . ': '; - $aus['transfer2'].=' ' . $lang['L_FTP_USESSL'] . '
'; + $aus['transfer2'] .= '
'.Help($lang['L_HELP_FTPSSL'], '').$lang['L_FTP_SSL'].': '; + $aus['transfer2'] .= ' '.$lang['L_FTP_USESSL'].'
'; - $aus['transfer2'].='

' . $checkFTP[$i] . '
'; - $aus['transfer2'].=''; - $aus['transfer2'].=''; - $aus['transfer2'].=''; - $aus['transfer2'].=''; - $aus['transfer2'].=''; - $aus['transfer2'].='
' . Help($lang['L_HELP_FTPSERVER'],"conf14",12) . $lang['L_FTP_SERVER'] . ': 
' . Help($lang['L_HELP_FTPPORT'],"conf15",12) . $lang['L_FTP_PORT'] . ': 
' . Help($lang['L_HELP_FTPUSER'],"conf16",12) . $lang['L_FTP_USER'] . ': 
' . Help($lang['L_HELP_FTPPASS'],"conf17",12) . $lang['L_FTP_PASS'] . ': 
' . Help($lang['L_HELP_FTPDIR'],"conf18",12) . $lang['L_FTP_DIR'] . ': 
' . print_save_button() . '
'; + $aus['transfer2'] .= '
'.$checkFTP[$i].''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= ''; + $aus['transfer2'] .= '
'.Help($lang['L_HELP_FTPSERVER'], 'conf14', 12).$lang['L_FTP_SERVER'].': 
'.Help($lang['L_HELP_FTPPORT'], 'conf15', 12).$lang['L_FTP_PORT'].': 
'.Help($lang['L_HELP_FTPUSER'], 'conf16', 12).$lang['L_FTP_USER'].': 
'.Help($lang['L_HELP_FTPPASS'], 'conf17', 12).$lang['L_FTP_PASS'].': 
'.Help($lang['L_HELP_FTPDIR'], 'conf18', 12).$lang['L_FTP_DIR'].': 
'.print_save_button().'
'; } -$aus['transfer2'].='
'; +$aus['transfer2'] .= ''; -//Crondump -$aus['cron']='
' . $lang['L_CONFIG_CRONPERL'] . ''; -$aus['cron'].=''; -$aus['cron'].=''; -$aus['cron'].=''; -$aus['cron'].=''; -$aus['cron'].=''; -$aus['cron'].=''; -$aus['cron'].=''; +// SFTP--> +$aus['transfer3'] = '
'.$lang['L_CONFIG_SFTP'].''; +for ($i = 0; $i < 3; ++$i) { + $aus['transfer3'] .= '
SFTP-Connection '.($i + 1).'
' . Help($lang['L_HELP_CRONEXTENDER'],"") . $lang['L_CRON_EXTENDER'] . ':  .pl'; -$aus['cron'].='    .cgi'; -$aus['cron'].='
' . Help($lang['L_HELP_CRONEXECPATH'],"") . $lang['L_CRON_EXECPATH'] . ': 
' . Help($lang['L_HELP_CRONPRINTOUT'],"") . $lang['L_CRON_PRINTOUT'] . ':  ' . $lang['L_YES']; -$aus['cron'].='    ' . $lang['L_NO'] . '
' . Help($lang['L_HELP_CRONCOMPLETELOG'],"") . $lang['L_CRON_COMPLETELOG'] . ':  ' . $lang['L_YES']; -$aus['cron'].='    ' . $lang['L_NO'] . '
'; -$aus['cron'].=''; -$aus['cron'].=''; + $aus['transfer3'] .= ''; + $aus['transfer3'] .= ''; + $aus['transfer3'] .= ''; -if (isset($databases['Name'][0]) && $databases['Name'][0] > '') -{ - $datenbanken=count($databases['Name']); - for ($i=0; $i < $datenbanken; $i++) - { - $aus['cron'].='
' . Help($lang['L_HELP_CRONDBINDEX'],"conf14") . $lang['L_CRON_CRONDBINDEX'] . ': 
'.Help($lang['L_HELP_SFTPTRANSFER'], '').$lang['L_SFTP_TRANSFER'].': 
'.Help($lang['SFTP'], '').$lang['L_SFTP_TIMEOUT'].':  sec
'; + $aus['transfer3'] .= ''; + $aus['transfer3'] .= ''; + $aus['transfer3'] .= ''; + $aus['transfer3'] .= ''; + $aus['transfer3'] .= ''; + + $aus['transfer3'] .= ''; + + $aus['transfer3'] .= ''; + + $aus['transfer3'] .= ''; + + $aus['transfer3'] .= '
'.Help($lang['L_HELP_SFTPSERVER'], 'conf14', 12).$lang['L_SFTP_SERVER'].': 
'.Help($lang['L_HELP_SFTPPORT'], 'conf15', 12).$lang['L_SFTP_PORT'].': 
'.Help($lang['L_HELP_SFTPUSER'], 'conf16', 12).$lang['L_SFTP_USER'].': 
'.Help($lang['L_HELP_SFTPPASS'], 'conf17', 12).$lang['L_SFTP_PASS'].': 
'.Help($lang['L_HELP_SFTPDIR'], 'conf18', 12).$lang['L_SFTP_DIR'].': 
'.$lang['L_SFTP_SFTP_PATH_TO_PRIVATE_KEY'].':  (optional, default: null)
'.$lang['L_SFTP_SECRET_PASSPHRASE_FOR_PRIVATE_KEY'].':  (optional, default: null)
'.$lang['L_SFTP_FINGERPRINT'].':  (optional, default: null)
'.print_save_button().'
'; +} +$aus['transfer3'] .= '
'; + +// Crondump +$aus['cron'] = '
'.$lang['L_CONFIG_CRONPERL'].''; +$aus['cron'] .= ''; +$aus['cron'] .= ''; +$aus['cron'] .= ''; + +$aus['cron'] .= ''; +$aus['cron'] .= ''; +$aus['cron'] .= ''; +$aus['cron'] .= ''; +$aus['cron'] .= ''."\n"; +$aus['cron'] .= ''; // comment -$aus['cron'].=''; -$aus['cron'].=''; -$aus['cron'].='
'.Help($lang['L_HELP_CRONEXTENDER'], '').$lang['L_CRON_EXTENDER'].':  .pl'; +$aus['cron'] .= '    .cgi'; + +$aus['cron'] .= '
'.Help($lang['L_HELP_CRONEXECPATH'], '').$lang['L_CRON_EXECPATH'].': 
'.Help($lang['L_HELP_CRONPRINTOUT'], '').$lang['L_CRON_PRINTOUT'].': '; + +$aus['cron'] .= '
'.Help($lang['L_HELP_CRONCOMPLETELOG'], '').$lang['L_CRON_COMPLETELOG'].': '; + +$aus['cron'] .= '
'.Help($lang['L_HELP_CRONDBINDEX'], 'conf14').$lang['L_CRON_CRONDBINDEX'].': ' . "\n"; -$aus['cron'].='
' . $lang['L_CRON_COMMENT'] . ': 
' . print_save_button() . '
'; +$config['cron_comment'] = isset($config['cron_comment']) ? $config['cron_comment'] : ''; +$aus['cron'] .= ''.$lang['L_CRON_COMMENT'].': '; +$aus['cron'] .= ''; +$aus['cron'] .= ''.print_save_button().''; //Formular-Buttons --> -$aus['formende']='
'; +$aus['formende'] = '
'; // AUSGABE echo $aus['formstart']; @@ -1009,16 +1253,21 @@ echo $aus['global2']; echo $aus['global3']; echo $aus['transfer1']; echo $aus['transfer2']; +echo $aus['transfer3']; echo $aus['cron']; echo $aus['conf']; echo $aus['formende']; -echo ''; -echo MSDFooter(); -$_SESSION['config']=$config; +echo MODFooter(); +$_SESSION['config'] = $config; ob_end_flush(); +exit(); diff --git a/msd/css/msd/icons/arrow_down.gif b/msd/css/mod/icons/arrow_down.gif similarity index 100% rename from msd/css/msd/icons/arrow_down.gif rename to msd/css/mod/icons/arrow_down.gif diff --git a/msd/css/msd/icons/arrow_up.gif b/msd/css/mod/icons/arrow_up.gif similarity index 100% rename from msd/css/msd/icons/arrow_up.gif rename to msd/css/mod/icons/arrow_up.gif diff --git a/msd/css/msd/icons/arrowdown.gif b/msd/css/mod/icons/arrowdown.gif similarity index 100% rename from msd/css/msd/icons/arrowdown.gif rename to msd/css/mod/icons/arrowdown.gif diff --git a/msd/css/msd/icons/arrowleft.gif b/msd/css/mod/icons/arrowleft.gif similarity index 100% rename from msd/css/msd/icons/arrowleft.gif rename to msd/css/mod/icons/arrowleft.gif diff --git a/msd/css/msd/icons/arrowup.gif b/msd/css/mod/icons/arrowup.gif similarity index 100% rename from msd/css/msd/icons/arrowup.gif rename to msd/css/mod/icons/arrowup.gif diff --git a/msd/css/msd/icons/blank.gif b/msd/css/mod/icons/blank.gif similarity index 100% rename from msd/css/msd/icons/blank.gif rename to msd/css/mod/icons/blank.gif diff --git a/msd/css/msd/icons/browse.gif b/msd/css/mod/icons/browse.gif similarity index 100% rename from msd/css/msd/icons/browse.gif rename to msd/css/mod/icons/browse.gif diff --git a/msd/css/msd/icons/close.gif b/msd/css/mod/icons/close.gif similarity index 100% rename from msd/css/msd/icons/close.gif rename to msd/css/mod/icons/close.gif diff --git a/msd/css/msd/icons/delete.gif b/msd/css/mod/icons/delete.gif similarity index 100% rename from msd/css/msd/icons/delete.gif rename to msd/css/mod/icons/delete.gif diff --git a/msd/css/msd/icons/edit.gif b/msd/css/mod/icons/edit.gif similarity index 100% rename from msd/css/msd/icons/edit.gif rename to msd/css/mod/icons/edit.gif diff --git a/msd/css/msd/icons/gz.gif b/msd/css/mod/icons/gz.gif similarity index 100% rename from msd/css/msd/icons/gz.gif rename to msd/css/mod/icons/gz.gif diff --git a/msd/css/msd/icons/index.gif b/msd/css/mod/icons/index.gif similarity index 100% rename from msd/css/msd/icons/index.gif rename to msd/css/mod/icons/index.gif diff --git a/msd/css/msd/icons/key_fulltext.gif b/msd/css/mod/icons/key_fulltext.gif similarity index 100% rename from msd/css/msd/icons/key_fulltext.gif rename to msd/css/mod/icons/key_fulltext.gif diff --git a/msd/css/msd/icons/key_nokey.gif b/msd/css/mod/icons/key_nokey.gif similarity index 100% rename from msd/css/msd/icons/key_nokey.gif rename to msd/css/mod/icons/key_nokey.gif diff --git a/msd/css/msd/icons/key_primary.gif b/msd/css/mod/icons/key_primary.gif similarity index 100% rename from msd/css/msd/icons/key_primary.gif rename to msd/css/mod/icons/key_primary.gif diff --git a/msd/css/msd/icons/key_unique.gif b/msd/css/mod/icons/key_unique.gif similarity index 100% rename from msd/css/msd/icons/key_unique.gif rename to msd/css/mod/icons/key_unique.gif diff --git a/msd/css/msd/icons/mysql_help.gif b/msd/css/mod/icons/mysql_help.gif similarity index 100% rename from msd/css/msd/icons/mysql_help.gif rename to msd/css/mod/icons/mysql_help.gif diff --git a/msd/css/msd/icons/notok.gif b/msd/css/mod/icons/notok.gif similarity index 100% rename from msd/css/msd/icons/notok.gif rename to msd/css/mod/icons/notok.gif diff --git a/msd/css/msd/icons/ok.gif b/msd/css/mod/icons/ok.gif similarity index 100% rename from msd/css/msd/icons/ok.gif rename to msd/css/mod/icons/ok.gif diff --git a/msd/css/msd/icons/openfile.gif b/msd/css/mod/icons/openfile.gif similarity index 100% rename from msd/css/msd/icons/openfile.gif rename to msd/css/mod/icons/openfile.gif diff --git a/msd/css/msd/icons/progressbar_dump.gif b/msd/css/mod/icons/progressbar_dump.gif similarity index 100% rename from msd/css/msd/icons/progressbar_dump.gif rename to msd/css/mod/icons/progressbar_dump.gif diff --git a/msd/css/msd/icons/progressbar_restore.gif b/msd/css/mod/icons/progressbar_restore.gif similarity index 100% rename from msd/css/msd/icons/progressbar_restore.gif rename to msd/css/mod/icons/progressbar_restore.gif diff --git a/msd/css/msd/icons/progressbar_speed.gif b/msd/css/mod/icons/progressbar_speed.gif similarity index 100% rename from msd/css/msd/icons/progressbar_speed.gif rename to msd/css/mod/icons/progressbar_speed.gif diff --git a/msd/css/msd/icons/rename.gif b/msd/css/mod/icons/rename.gif similarity index 100% rename from msd/css/msd/icons/rename.gif rename to msd/css/mod/icons/rename.gif diff --git a/msd/css/msd/icons/search.gif b/msd/css/mod/icons/search.gif similarity index 100% rename from msd/css/msd/icons/search.gif rename to msd/css/mod/icons/search.gif diff --git a/msd/css/msd/icons/table_truncate.gif b/msd/css/mod/icons/table_truncate.gif similarity index 100% rename from msd/css/msd/icons/table_truncate.gif rename to msd/css/mod/icons/table_truncate.gif diff --git a/msd/css/msd/icons/table_truncate_reset.gif b/msd/css/mod/icons/table_truncate_reset.gif similarity index 100% rename from msd/css/msd/icons/table_truncate_reset.gif rename to msd/css/mod/icons/table_truncate_reset.gif diff --git a/msd/css/msd/pics/bg-body.gif b/msd/css/mod/pics/bg-body.gif similarity index 100% rename from msd/css/msd/pics/bg-body.gif rename to msd/css/mod/pics/bg-body.gif diff --git a/msd/css/msd/pics/bg-buttons.gif b/msd/css/mod/pics/bg-buttons.gif similarity index 100% rename from msd/css/msd/pics/bg-buttons.gif rename to msd/css/mod/pics/bg-buttons.gif diff --git a/msd/css/msd/pics/bg-headings.gif b/msd/css/mod/pics/bg-headings.gif similarity index 100% rename from msd/css/msd/pics/bg-headings.gif rename to msd/css/mod/pics/bg-headings.gif diff --git a/msd/css/msd/pics/blank.gif b/msd/css/mod/pics/blank.gif similarity index 100% rename from msd/css/msd/pics/blank.gif rename to msd/css/mod/pics/blank.gif diff --git a/msd/css/msd/pics/h1_logo.gif b/msd/css/mod/pics/h1_logo.gif similarity index 100% rename from msd/css/msd/pics/h1_logo.gif rename to msd/css/mod/pics/h1_logo.gif diff --git a/msd/css/msd/pics/loveyourdata.gif b/msd/css/mod/pics/loveyourdata.gif similarity index 100% rename from msd/css/msd/pics/loveyourdata.gif rename to msd/css/mod/pics/loveyourdata.gif diff --git a/msd/css/msd/pics/navi_bg.jpg b/msd/css/mod/pics/navi_bg.jpg similarity index 100% rename from msd/css/msd/pics/navi_bg.jpg rename to msd/css/mod/pics/navi_bg.jpg diff --git a/msd/css/msd/style.css b/msd/css/mod/style.css similarity index 99% rename from msd/css/msd/style.css rename to msd/css/mod/style.css index edab7691..fa7f7c3d 100644 --- a/msd/css/msd/style.css +++ b/msd/css/mod/style.css @@ -3,7 +3,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -17,7 +17,7 @@ /* @MySQLDumper STYLESHEET - @name msd + @name mod @copyright MySQLDumper - Daniel Schlichtholz @author Ingo Wagener , Daniel Schlichtholz, Christian Gresshoener @date 2008-02-28 13:39:07 diff --git a/msd/css/msd_green/icons/arrow_down.gif b/msd/css/mod_green/icons/arrow_down.gif similarity index 100% rename from msd/css/msd_green/icons/arrow_down.gif rename to msd/css/mod_green/icons/arrow_down.gif diff --git a/msd/css/msd_green/icons/arrow_up.gif b/msd/css/mod_green/icons/arrow_up.gif similarity index 100% rename from msd/css/msd_green/icons/arrow_up.gif rename to msd/css/mod_green/icons/arrow_up.gif diff --git a/msd/css/msd_green/icons/arrowdown.gif b/msd/css/mod_green/icons/arrowdown.gif similarity index 100% rename from msd/css/msd_green/icons/arrowdown.gif rename to msd/css/mod_green/icons/arrowdown.gif diff --git a/msd/css/msd_green/icons/arrowleft.gif b/msd/css/mod_green/icons/arrowleft.gif similarity index 100% rename from msd/css/msd_green/icons/arrowleft.gif rename to msd/css/mod_green/icons/arrowleft.gif diff --git a/msd/css/msd_green/icons/arrowup.gif b/msd/css/mod_green/icons/arrowup.gif similarity index 100% rename from msd/css/msd_green/icons/arrowup.gif rename to msd/css/mod_green/icons/arrowup.gif diff --git a/msd/css/msd_green/icons/blank.gif b/msd/css/mod_green/icons/blank.gif similarity index 100% rename from msd/css/msd_green/icons/blank.gif rename to msd/css/mod_green/icons/blank.gif diff --git a/msd/css/msd_green/icons/browse.gif b/msd/css/mod_green/icons/browse.gif similarity index 100% rename from msd/css/msd_green/icons/browse.gif rename to msd/css/mod_green/icons/browse.gif diff --git a/msd/css/msd_green/icons/close.gif b/msd/css/mod_green/icons/close.gif similarity index 100% rename from msd/css/msd_green/icons/close.gif rename to msd/css/mod_green/icons/close.gif diff --git a/msd/css/msd_green/icons/delete.gif b/msd/css/mod_green/icons/delete.gif similarity index 100% rename from msd/css/msd_green/icons/delete.gif rename to msd/css/mod_green/icons/delete.gif diff --git a/msd/css/msd_green/icons/edit.gif b/msd/css/mod_green/icons/edit.gif similarity index 100% rename from msd/css/msd_green/icons/edit.gif rename to msd/css/mod_green/icons/edit.gif diff --git a/msd/css/msd_green/icons/gz.gif b/msd/css/mod_green/icons/gz.gif similarity index 100% rename from msd/css/msd_green/icons/gz.gif rename to msd/css/mod_green/icons/gz.gif diff --git a/msd/css/msd_green/icons/index.gif b/msd/css/mod_green/icons/index.gif similarity index 100% rename from msd/css/msd_green/icons/index.gif rename to msd/css/mod_green/icons/index.gif diff --git a/msd/css/msd_green/icons/key_fulltext.gif b/msd/css/mod_green/icons/key_fulltext.gif similarity index 100% rename from msd/css/msd_green/icons/key_fulltext.gif rename to msd/css/mod_green/icons/key_fulltext.gif diff --git a/msd/css/msd_green/icons/key_nokey.gif b/msd/css/mod_green/icons/key_nokey.gif similarity index 100% rename from msd/css/msd_green/icons/key_nokey.gif rename to msd/css/mod_green/icons/key_nokey.gif diff --git a/msd/css/msd_green/icons/key_primary.gif b/msd/css/mod_green/icons/key_primary.gif similarity index 100% rename from msd/css/msd_green/icons/key_primary.gif rename to msd/css/mod_green/icons/key_primary.gif diff --git a/msd/css/msd_green/icons/key_unique.gif b/msd/css/mod_green/icons/key_unique.gif similarity index 100% rename from msd/css/msd_green/icons/key_unique.gif rename to msd/css/mod_green/icons/key_unique.gif diff --git a/msd/css/msd_green/icons/mysql_help.gif b/msd/css/mod_green/icons/mysql_help.gif similarity index 100% rename from msd/css/msd_green/icons/mysql_help.gif rename to msd/css/mod_green/icons/mysql_help.gif diff --git a/msd/css/msd_green/icons/nokey.gif b/msd/css/mod_green/icons/nokey.gif similarity index 100% rename from msd/css/msd_green/icons/nokey.gif rename to msd/css/mod_green/icons/nokey.gif diff --git a/msd/css/msd_green/icons/notok.gif b/msd/css/mod_green/icons/notok.gif similarity index 100% rename from msd/css/msd_green/icons/notok.gif rename to msd/css/mod_green/icons/notok.gif diff --git a/msd/css/msd_green/icons/ok.gif b/msd/css/mod_green/icons/ok.gif similarity index 100% rename from msd/css/msd_green/icons/ok.gif rename to msd/css/mod_green/icons/ok.gif diff --git a/msd/css/msd_green/icons/openfile.gif b/msd/css/mod_green/icons/openfile.gif similarity index 100% rename from msd/css/msd_green/icons/openfile.gif rename to msd/css/mod_green/icons/openfile.gif diff --git a/msd/css/msd_green/icons/progressbar_dump.gif b/msd/css/mod_green/icons/progressbar_dump.gif similarity index 100% rename from msd/css/msd_green/icons/progressbar_dump.gif rename to msd/css/mod_green/icons/progressbar_dump.gif diff --git a/msd/css/msd_green/icons/progressbar_restore.gif b/msd/css/mod_green/icons/progressbar_restore.gif similarity index 100% rename from msd/css/msd_green/icons/progressbar_restore.gif rename to msd/css/mod_green/icons/progressbar_restore.gif diff --git a/msd/css/msd_green/icons/progressbar_speed.gif b/msd/css/mod_green/icons/progressbar_speed.gif similarity index 100% rename from msd/css/msd_green/icons/progressbar_speed.gif rename to msd/css/mod_green/icons/progressbar_speed.gif diff --git a/msd/css/msd_green/icons/rename.gif b/msd/css/mod_green/icons/rename.gif similarity index 100% rename from msd/css/msd_green/icons/rename.gif rename to msd/css/mod_green/icons/rename.gif diff --git a/msd/css/msd_green/icons/search.gif b/msd/css/mod_green/icons/search.gif similarity index 100% rename from msd/css/msd_green/icons/search.gif rename to msd/css/mod_green/icons/search.gif diff --git a/msd/css/msd_green/icons/table_truncate.gif b/msd/css/mod_green/icons/table_truncate.gif similarity index 100% rename from msd/css/msd_green/icons/table_truncate.gif rename to msd/css/mod_green/icons/table_truncate.gif diff --git a/msd/css/msd_green/icons/table_truncate_reset.gif b/msd/css/mod_green/icons/table_truncate_reset.gif similarity index 100% rename from msd/css/msd_green/icons/table_truncate_reset.gif rename to msd/css/mod_green/icons/table_truncate_reset.gif diff --git a/msd/css/msd_green/pics/body_bg.gif b/msd/css/mod_green/pics/body_bg.gif similarity index 100% rename from msd/css/msd_green/pics/body_bg.gif rename to msd/css/mod_green/pics/body_bg.gif diff --git a/msd/css/msd_green/pics/h1_logo.gif b/msd/css/mod_green/pics/h1_logo.gif similarity index 100% rename from msd/css/msd_green/pics/h1_logo.gif rename to msd/css/mod_green/pics/h1_logo.gif diff --git a/msd/css/msd_green/pics/loveyourdata.gif b/msd/css/mod_green/pics/loveyourdata.gif similarity index 100% rename from msd/css/msd_green/pics/loveyourdata.gif rename to msd/css/mod_green/pics/loveyourdata.gif diff --git a/msd/css/msd_green/pics/mainnavi.gif b/msd/css/mod_green/pics/mainnavi.gif similarity index 100% rename from msd/css/msd_green/pics/mainnavi.gif rename to msd/css/mod_green/pics/mainnavi.gif diff --git a/msd/css/msd_green/pics/navi_bg.jpg b/msd/css/mod_green/pics/navi_bg.jpg similarity index 100% rename from msd/css/msd_green/pics/navi_bg.jpg rename to msd/css/mod_green/pics/navi_bg.jpg diff --git a/msd/css/msd_green/pics/overall_bg.gif b/msd/css/mod_green/pics/overall_bg.gif similarity index 100% rename from msd/css/msd_green/pics/overall_bg.gif rename to msd/css/mod_green/pics/overall_bg.gif diff --git a/msd/css/msd_green/pics/pagetitle.gif b/msd/css/mod_green/pics/pagetitle.gif similarity index 100% rename from msd/css/msd_green/pics/pagetitle.gif rename to msd/css/mod_green/pics/pagetitle.gif diff --git a/msd/css/msd_green/style.css b/msd/css/msd_green/style.css deleted file mode 100644 index 57b3afdf..00000000 --- a/msd/css/msd_green/style.css +++ /dev/null @@ -1,725 +0,0 @@ -/* ---------------------------------------------------------------------- - - MyOOS [Dumper] - http://www.oos-shop.de/ - - Copyright (c) 2016 by the MyOOS Development Team. - ---------------------------------------------------------------------- - Based on: - - MySqlDumper - http://www.mysqldumper.de - - Copyright (C)2004-2011 Daniel Schlichtholz (admin@mysqldumper.de) - ---------------------------------------------------------------------- - Released under the GNU General Public License - ---------------------------------------------------------------------- */ - -/* - @MySQLDumper STYLESHEET - @name msd_green - @copyright MySQLDumper - Daniel Schlichtholz - @author Ingo Wagener , Daniel Schlichtholz, Christian Gresshoener - @date 2006-04-11 16:26:00 - @lastmodified 2009-09-15 00:21:30 - @media screen and projection -*/ -*,.normargin { - margin: 0; - padding: 0; -} - -img { - border: 0; -} - -body { - font: 12px/1.5 Verdana, Helvetica, sans-serif; /* Important IE Bugfix: No spaces in font-attribute between px and slash */ - color: #4E5665; - background: #C7D1D0; -} - -body.content { - min-width: 540px; -} - -.menu-frame { - font: 12px/1.5 Verdana, Helvetica, sans-serif; - background-color: #738C88; - color: #eee; -} - -/* LINKS */ -a { - color: #4E5665; - text-decoration: underline; - font: 12px verdana, sans-serif -} - -a:hover { - color: #E87B00; - text-decoration: none -} - -a.ul { - text-decoration: underline; -} - -/* general */ -#pagetitle { - font-size: 1.5em; - font-weight: bold; - background: url(pics/pagetitle.gif); - background-repeat: repeat-x; - letter-spacing: 2px; - color: white; - padding: 2px 6px; - border-bottom: 1px solid #A9AFBB; - height: 26px; - overflow: hidden; -} - -#server0 { - position: absolute; - bottom: 4px; - text-align: center; - left: 10px; - color: white; -} - -#server1 { - position: absolute; - right: 16px; - text-align: center; - padding: 10px; -} - -a.server { - color: #333333; - font-size: 10px; -} - -a.server:hover { - text-decoration: underline; - color: white; -} - -.version { - display: block; - position: absolute; - top: 31px; - left: 0; - width: 190px; - z-index: 5; - text-align: center; - font-size: 11px; - font-weight: bold; -} - -.small { - font-size: 11px; -} - -.ssmall { - font-size: 10px; -} - -.success { - font-weight: bold; -} - -.error { - color: red; - font-weight: bold; -} - -.explain { - text-decoration: none; - border-bottom: 1px dotted; -} - -.explain:hover { - cursor: help; -} - -.active_db { - font-weight: bold; - border-bottom: 1px dotted; - color: #9AA2B1; -} - -table td { - text-align: left; - vertical-align: top; - padding: 0 6px; -} - -table th { - padding: 0 6px; -} - -table.bdr,.bdr { - border: 1px solid #ddd !important; - border-collapse: collapse !important; -} - -/* MENU */ -#wrapmenu { - background: url(pics/pagetitle.gif) #A9AFBB; - background-repeat: repeat-x; -} - -#db-select { - font: 12px Verdana, Helvetica, sans-serif; - color: #4E5665; - background: #A9AFBB; -} - -#menu { - position:absolute; - margin: 0px; - top: 222px; - left:0; - width:190px; - height:160px; - background-color: #738C88; - border-top: 1px solid #9AA2B1 -} - -#menu ul { - list-style: none; -} - -#menu ul li { - height: 20px; -} - -#menu ul li a { - display: block; - position: relative; /*fuer den ie*/ - font: 11px/20px verdana, sans-serif; - text-decoration: none; - color: #4E5665; - background: url(pics/mainnavi.gif) repeat-x 0 -20px; - padding: 0 15px; - height: 20px; - text-align: left; -} - -#menu ul li a:hover { - color: #fff; - background: url(pics/mainnavi.gif) repeat-x 0 0px; -} - -/*der aktive link in der navi*/ -#menu ul li.active a { - font-weight: bold; - color: #fff; - background: url(pics/mainnavi.gif) repeat-x 0 -40px; - display: block; -} - -#menu p,#menu p a { - color: #fff; - line-height: 1.5; - font-size: 11px; -} - -#version { - position:absolute; - top:30px; - left:0; - margin:0; - padding:0; - height:191px; - color: #4E5665; - z-index:10; - border-top:1px solid #A9AFBB; -} -.version-line -{ - position:absolute; - top:-1px; - left:0; - width:190px; - text-align:center; - font: 11px/20px verdana, sans-serif; -} - -#version a:link, -#version a:active, -#version a:hover, -#version a:visited -{ color: #4E5665; } - - -#selectConfig -{ - position:absolute; - top:380px; - left:0; - width:190px; - height: 196px; - z-index:5; -} - -table.bdr,.bdr { - border: 1px solid #4E5665 !important; - border-collapse: collapse !important; -} - -#db-selectbox,#config-selectbox { - position: relative; - top: 0px; - width: 190px; - background: transparent; - text-align: center; - font: 11px/1.5 Verdana, Helvetica, sans-serif; - color: white; -} - -#db-selectbox a,#config-selectbox a { - font: 11px/1.5 Verdana, Helvetica, sans-serif; - color: white; - text-decoration: underline; -} - -#db-selectbox a:hover,#config-selectbox a:hover { - text-decoration: none -} - -fieldset { - margin: 10px; - padding: 5px; - border: 1px solid #ddd; - color: #256777; -} - -body.content legend { - font-weight: bold; -} - -body.menu fieldset p { - margin: 5px 0 0; - text-align: center; -} - -#configSelect legend,#dbSelect legend,#dbSelect a { - font: 11px/1.5 Verdana, Helvetica, sans-serif; - color: #eee; -} - -/* MAIN */ -#topnavi { - list-style: none; - margin: 10px 0 20px; - padding: 5px 0px; -} - -#topnavi li { - float: left; - margin-right: 6px; -} - -#topnavi li a { - float: left; - font: 0.8em verdana, arial, sans-serif; - border: 1px solid #4E5665; - background-color: #A9B2B1; - color: #4E5665; - margin: 3px; - padding: 3px 23px 4px 23px; - cursor: pointer; - text-decoration: none; - white-space: nowrap; -} - -#topnavi li a span { - display: none; -} - -#content { - margin-left: 12px; - background-color: #C7D1D0; -} - -#content p { - margin-bottom: 8px; -} - -/*Tabellen */ -table tr.dbrow { - background: #E4E9E8; -} - -table tr.dbrow1 { - background: #D5DDDC; -} - -table tr.dbrowsel { - background: #fff; -} - -table td.treffer { - background: #000; -} - -/* Treffer bei der MySQL-Suche */ -table tr.dbrow .treffer,table tr.dbrow1 .treffer { - color: yellow; - background-color: #738C88; -} - -table.bordersmall,table.border { - border: 2px solid #738C88; - width: 84%; -} - -table.border th,table.bordersmall th { - font-size: 11px; - color: #738C88; -} - -table tr.thead th,table tr.thead td { - background-color: #A5B6B4; - color: #738C88; - border: 1px solid #738C88; -} - -table.border tr.thead,table.bordersmall tr.thead { - height: 24px; -} - -table td.sum { - background-color: red; - font-weight: bold; - text-align: right; -} - -table.bordersmall input,table.bordersmall select,table.bordersmall td,#sqlheaderbox select - { - border: 1px solid #738C88; - font-size: 11px; -} - -.tdcompact { - width: 100px; - height: 16px; - overflow: hidden; - font-size: 11px; -} - -.tdnormal { - white-space: nowrap; - padding: 4px; -} - -.sqlheadmenu a { - -} - -/* FORM-Elements */ -#content .Formbutton,#content .Formtext { - white-space: nowrap; - margin: 6px; - font: 10px verdana, sans-serif; - border: 1px solid #4E5665; - background: #A9B2B1; - color: #4E5665; - padding: 2px 10px; - cursor: pointer; - overflow: visible; - text-decoration: none; -} - -#content a.Formbutton { - padding: 2px 23px 3px 23px; -} - -label { - cursor: pointer; -} - -.Formbutton { - cursor: pointer; -} - -.Formbutton:disabled { - cursor: default !important; -} - -#content .Formtext { - padding: 2px; - overflow: hidden; - cursor: text; -} - -#content .SQLbutton { - font-size: 11px; - background: #E4E9E8; - cursor: pointer; -} - -#content textarea #thta { - font-size: 11px; - color: blue; - width: 400px; - height: 300px; - overflow: scroll; -} - -#content textarea { - width: 100%; - background: #B3C2C0; -} - -input.radio,input.checkbox { - background-color: transparent; -} - -/* Colors for Formelements */ -input.text,input.small { - background: #B3C2C0; - color: #4E5665; -} - -select { - background: #B3C2C0; - color: #4E5665; -} - -textarea { - background: #B3C2C0; - color: #4E5665; -} - -/* for Geckos */ -input[disabled] { - color: #888 !important; -} - -/*horizontales Men� */ -#hormenu { - -} - -#hormenu ul { - border-bottom: thin solid #D5DDDC; - margin-bottom: 8px; - width: 80%; -} - -#hormenu ul li { - display: inline; -} - -#hormenu ul li a { - font: 11px/20px verdana, sans-serif; - text-decoration: none; - color: #4E5665; - padding: 0 14px; - border: 0; -} - -#hormenu ul li a:hover { - color: #E87B00; -} - -#hormenu ul li#active a { - font: bold 11px/20px verdana, sans-serif; - text-decoration: none; - color: #E87B00; - float: left; - padding: 0 14px; -} - -#hormenu ul li#active a:hover { - color: #E87B00; -} - -/* spezielle Elemente */ -.MySQLbox { - font-size: 10pt; - padding: 6px; - background: #000; - color: #fff; - border: thin solid #999999; - height: 200px; - width: 80%; - text-align: left; - overflow: auto; -} - -#content #mysqlbox { - border: 1px solid #738C88; - background: #D5DDDC; -} - -#content #sqlheaderbox,.sqlbox-warning { - white-space: nowrap; - vertical-align: top; - padding: 8px; - border: 1px solid #738C88; - color: #256777; - line-height: 22px; -} - -#sqlheaderbox .Formbutton { - line-height: 12px; - padding: 2px; - margin: 0px; -} - -#sqltextarea { - width: 100% !important; - overflow: auto; - background-color: #B3C2C0; -} - -#content #sqlheaderbox { - white-space: nowrap; - height: 20px; - vertical-align: middle; - padding-top: 2px; -} - -#content #sqleditbox { - border: 1px solid #738C88; - background: #E4E9E8; - margin-bottom: 10px; -} - -#content #sqleditbox form { - margin: 10px; -} - -#content #sqleditbox p { - background: #A5B6B4; - font-weight: bold; - text-align: center; -} - -#content #sqlnewbox { - border: 1px solid #738C88; - background: #E4E9E8; -} - -#content #sqlnewbox p { - background: #A5B6B4; - font-weight: bold; - text-align: center; -} - -#content #sqloutbox { - font-size: 11px; - width: 700px; - padding: 6px; - background: #D5DDDC; - border: 1px solid #738C88; - overflow: auto; - height: 240px; -} - -#content p.autodel { - font-size: 11px; - border-bottom: 1px dashed #fff; - margin-bottom: 12px; -} - -#content .Logbox { - font: 12px/1.2 "Courier New", Courier, monospace; - padding: 6px; - border: thin solid #738C88; - height: 320px; - width: 90%; - text-align: left; - overflow: auto; -} - -#content .Logbox span { - color: #738C88; -} - -#content .backupmsg { - padding-left: 20px; - font-size: 11px; -} - -#content .backupmsg .success,#content .backupmsg a { - color: #999; - font-size: 11px; -} - -#content .backupmsg .error { - color: red; -} - -/* TEXT */ -h1 { - font-size: 16px; -} - -h5 { - font-size: 14px; - margin: 12px 0; -} - -h6 { - font-size: 11px; - background: #D1D4DC; - border: 1px solid #9AA2B1; - text-indent: 12px; - margin: 8px 0; -} - -/* Config */ -#configleft { - float: left; - width: 160px; - margin-top: 24px; -} - -#configleft .Formbutton { - width: 130px; - margin: 8px 0; -} - -#configleft .ConfigButton { - width: 130px; - font-size: 11px; - background: #E4E9E8; - cursor: pointer; -} - -#configleft .ConfigButtonSelected { - width: 130px; - font-size: 11px; - background: #D5DDDC; -} - -#configright { - font-size: 11px; - margin-left: 160px; -} - -#configright fieldset { - border: 1px solid #D5DDDC; - padding: 12px; - width: 90%; -} - -#configright legend { - color: #646968; - margin: 8px 0; -} - -#footer { - font-size: 11px; - text-align: center; - border-top: 1px dashed #eee; - margin-top: 36px; -} - -#footer a { - font-size: 11px; -} \ No newline at end of file diff --git a/msd/dump.php b/msd/dump.php index 5678c431..5d3359b4 100644 --- a/msd/dump.php +++ b/msd/dump.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -18,454 +18,461 @@ define('OOS_VALID_MOD', true); -if (!@ob_start("ob_gzhandler")) @ob_start(); +if (!@ob_start('ob_gzhandler')) { + @ob_start(); +} + session_name('MyOOSDumperID'); session_start(); -$aus2=$page_parameter=$a=$out=''; -include_once ('./inc/functions_dump.php'); +$aus2 = $page_parameter = $a = $out = ''; +include_once './inc/functions_dump.php'; -// beim Erstaufruf Konfigurationsdatei auslesen und in Session speichern -if (isset($_GET['config'])) -{ - // Session loeschen, damit keine alten Werte des letzten Laufs uebernommen werden - if (isset($_SESSION['dump'])) unset($_SESSION['dump']); - $search=array( - - '/','\\',':','@'); - $replace=array( - - '','','',''); - $config_file=str_replace($search,$replace,$_GET['config']); - if (is_readable($config['paths']['config'].$config_file.'.php')) - { - $config['files']['parameter']=$config['paths']['config'].$config_file.'.php'; - $_SESSION['config_file']=$config_file; - read_config($config['paths']['config'].$config['files']['parameter']); - $_SESSION['config']=$config; - } - else - die("Hacking attempt or configuration not found!"); +// read configuration file on first call and save it in session +if (isset($_GET['config'])) { + // Session loeschen, damit keine alten Werte des letzten Laufs uebernommen werden + if (isset($_SESSION['dump'])) { + unset($_SESSION['dump']); + } + $search = [ + '/', '\\', ':', '@', ]; + $replace = [ + '', '', '', '', ]; + $config_file = str_replace($search, $replace, $_GET['config']); + if (is_readable($config['paths']['config'].$config_file.'.php')) { + $config['files']['parameter'] = $config['paths']['config'].$config_file.'.php'; + $_SESSION['config_file'] = $config_file; + read_config($config['paths']['config'].$config['files']['parameter']); + $_SESSION['config'] = $config; + } else { + exit('Hacking attempt or configuration not found!'); + } } -$config=$_SESSION['config']; -include ('./'.$config['files']['parameter']); -$config['files']['iconpath']='./css/'.$config['theme'].'/icons/'; -include ('./inc/mysql.php'); -include ('./language/'.$config['language'].'/lang.php'); -include ('./language/'.$config['language'].'/lang_dump.php'); +$config = $_SESSION['config']; -$pageheader=MSDHeader(); -$DumpFertig=0; -$relativ_path='./'; -$flipped=array_flip($databases['Name']); +include './'.$config['files']['parameter']; +$config['files']['iconpath'] = './css/'.$config['theme'].'/icons/'; +include './inc/mysqli.php'; +include './language/'.$config['language'].'/lang.php'; +include './language/'.$config['language'].'/lang_dump.php'; -if (isset($_SESSION['dump'])&&!isset($_GET['config'])) -{ - $dump=$_SESSION['dump']; -} -else -{ - $dump['tables']=Array(); - $dump['records']=Array(); - $dump['skip_data']=Array(); - $dump['totalrecords']=0; - $dump['dbindex']=0; - //$_POST-Parameter lesen - $dump['kommentar']=(isset($_GET['comment'])) ? urldecode($_GET['comment']):''; - if (isset($_POST['kommentar'])) $dump['kommentar']=urldecode($_POST['kommentar']); - if (get_magic_quotes_gpc()) $dump['kommentar']=stripslashes($dump['kommentar']); +$pageheader = MODHeader(); +$DumpFertig = 0; +$relativ_path = './'; +$flipped = array_flip($databases['Name']); - $dump['backupdatei']=(isset($_POST['backupdatei'])) ? $_POST['backupdatei']:''; - $dump['part']=(isset($_POST['part'])) ? $_POST['part']:1; - $dump['part_offset']=(isset($_POST['part_offset'])) ? $_POST['part_offset']:0; - $dump['verbraucht']=(isset($_POST['verbraucht'])) ? $_POST['verbraucht']:0; - $dump['errors']=(isset($_POST['errors'])) ? $_POST['errors']:0; - $dump['table_offset']=(isset($_POST['table_offset'])) ? $_POST['table_offset']:-1; - $dump['zeilen_offset']=(isset($_POST['zeilen_offset'])) ? $_POST['zeilen_offset']:0; - $dump['filename_stamp']=(isset($_POST['filename_stamp'])) ? $_POST['filename_stamp']:''; - $dump['anzahl_zeilen']=(isset($_POST['anzahl_zeilen'])) ? $_POST['anzahl_zeilen']:(($config['minspeed']>0) ? $config['minspeed']:50); - $dump['dump_encoding']=(isset($_POST['dump_encoding'])) ? urldecode($_POST['dump_encoding']):''; +if (isset($_SESSION['dump']) && !isset($_GET['config'])) { + $dump = $_SESSION['dump']; +} else { + $dump['tables'] = []; + $dump['records'] = []; + $dump['skip_data'] = []; + $dump['totalrecords'] = 0; + $dump['dbindex'] = 0; + // Read $_POST parameter + $dump['kommentar'] = (isset($_GET['comment'])) ? urldecode($_GET['comment']) : ''; + if (isset($_POST['kommentar'])) { + $dump['kommentar'] = urldecode($_POST['kommentar']); + } - if (isset($_GET['sel_dump_encoding'])) - { - // Erstaufruf -> encoding auswerten - include_once ('./inc/functions_sql.php'); - get_sql_encodings(); - $encodingline=$config['mysql_possible_character_sets'][$_GET['sel_dump_encoding']]; - $encoding=explode(' ',$encodingline); - $dump['dump_encoding']=isset($encoding[0]) ? $encoding[0]:$encodingline; - } - include ('./inc/define_icons.php'); - $dump['tabellen_gesamt']=0; + $dump['backupdatei'] = (isset($_POST['backupdatei'])) ? $_POST['backupdatei'] : ''; + $dump['part'] = (isset($_POST['part'])) ? $_POST['part'] : 1; + $dump['part_offset'] = (isset($_POST['part_offset'])) ? $_POST['part_offset'] : 0; + $dump['verbraucht'] = (isset($_POST['verbraucht'])) ? $_POST['verbraucht'] : 0; + $dump['errors'] = (isset($_POST['errors'])) ? $_POST['errors'] : 0; + $dump['table_offset'] = (isset($_POST['table_offset'])) ? $_POST['table_offset'] : -1; + $dump['zeilen_offset'] = (isset($_POST['zeilen_offset'])) ? $_POST['zeilen_offset'] : 0; + $dump['filename_stamp'] = (isset($_POST['filename_stamp'])) ? $_POST['filename_stamp'] : ''; + $dump['anzahl_zeilen'] = (isset($_POST['anzahl_zeilen'])) ? $_POST['anzahl_zeilen'] : (((isset($config['minspeed']) && $config['minspeed'] > 0)) ? $config['minspeed'] : 50); + $dump['dump_encoding'] = (isset($_POST['dump_encoding'])) ? urldecode($_POST['dump_encoding']) : ''; + + if (isset($_GET['sel_dump_encoding'])) { + // First call -> evaluate encoding + include_once './inc/functions_sql.php'; + get_sql_encodings(); + $encodingline = $config['mysql_possible_character_sets'][$_GET['sel_dump_encoding']]; + $encoding = explode(' ', $encodingline); + $dump['dump_encoding'] = isset($encoding[0]) ? $encoding[0] : $encodingline; + } + include './inc/define_icons.php'; + $dump['tabellen_gesamt'] = 0; } -$mp2=array( +$mp2 = [ +'Bytes', 'Kilobytes', 'Megabytes', 'Gigabytes', ]; -'Bytes','Kilobytes','Megabytes','Gigabytes'); - -FillMultiDBArrays(); -if ($databases['db_actual_tableselected']!=''&&$config['multi_dump']==0) -{ - $dump['tblArray']=explode('|',$databases['db_actual_tableselected']); - $tbl_sel=true; - $msgTbl=sprintf($lang['L_NR_TABLES_SELECTED'],count($dump['tblArray'])); +FillMultiDBarrays(); +if ('' != $databases['db_actual_tableselected'] && 0 == $config['multi_dump']) { + $dump['tblArray'] = explode('|', $databases['db_actual_tableselected']); + $tbl_sel = true; + $msgTbl = sprintf($lang['L_NR_TABLES_SELECTED'], count($dump['tblArray'])); } -// Korrektur -> Multi-DB-Array ist gefuellt (damit die Infos in der Konfig nicht verloren gehen), aber Multidump ist nicht aktiviert) -if ($config['multi_dump']==0) -{ - unset($databases['multi']); - $databases['multi']=array(); - $databases['multi'][0]=$databases['db_actual']; -} -else -{ - // wenn Multidump aktiviert ist, aber keine DB gewaehlt wurde -> aktuelle DB uebernehmen - if (!isset($databases['multi'][0])) $databases['multi'][0]=$databases['db_actual']; - // find correct dbindex -> take dbname from $databases['multi'] and get the correct index - // from $databases['Name'] -> needed to set $dump['dbindex'] for first run of command_before_dump - $dump['dbindex']=$flipped[$databases['multi'][0]]; +// Correction -> Multi-DB-array is filled (so that the info is not lost in the config), but multidump is not activated) +if (isset($config['multi_dump']) && (0 == $config['multi_dump'])) { + unset($databases['multi']); + $databases['multi'] = []; + $databases['multi'][0] = $databases['db_actual']; +} else { + // if multidump is activated, but no DB is selected -> take over current DB + if (!isset($databases['multi'][0])) { + $databases['multi'][0] = $databases['db_actual']; + } + // find correct dbindex -> take dbname from $databases['multi'] and get the correct index + // from $databases['Name'] -> needed to set $dump['dbindex'] for first run of command_before_dump + $dump['dbindex'] = $flipped[$databases['multi'][0]]; } -//Zeitzähler aktivieren -$dump['max_zeit']=intval($config['max_execution_time']*$config['time_buffer']); -$dump['startzeit']=time(); -$xtime=(isset($_POST['xtime'])) ? $_POST['xtime']:time(); -$dump['countdata']=(!empty($_POST['countdata'])) ? $_POST['countdata']:0; -$dump['aufruf']=(!empty($_POST['aufruf'])) ? $_POST['aufruf']:0; -MSD_mysql_connect($dump['dump_encoding']); -if ($dump['table_offset']==-1) ExecuteCommand('b'); +// Activate time counter +$dump['max_zeit'] = intval($config['max_execution_time'] * $config['time_buffer']); +$dump['startzeit'] = time(); +$xtime = (isset($_POST['xtime'])) ? $_POST['xtime'] : time(); +$dump['countdata'] = (!empty($_POST['countdata'])) ? $_POST['countdata'] : 0; +$dump['aufruf'] = (!empty($_POST['aufruf'])) ? $_POST['aufruf'] : 0; +mod_mysqli_connect($dump['dump_encoding']); + +if (-1 == $dump['table_offset']) { + ExecuteCommand('b'); +} // only read tableinfos the first time and save it to session to speed up backing up process -if (!isset($_SESSION['dump'])) getDBInfos(); - -$num_tables=count($dump['tables']); - -if ($config['optimize_tables_beforedump']==1&&$dump['table_offset']==-1) $out.=sprintf($lang['L_NR_TABLES_OPTIMIZED'],$num_tables).'
'; -$dump['data']=''; -$dump['dbindex']=(isset($_POST['dbindex'])) ? $_POST['dbindex']:$flipped[$databases['multi'][0]]; - -//Ausgaben-Header bauen -$aus_header[]=headline('Backup: '.(($config['multi_dump']==1) ? 'Multidump ('.count($databases['multi']).' '.$lang['L_DBS'].')':$lang['L_DB'].': '.$databases['Name'][$dump['dbindex']].(($databases['praefix'][$dump['dbindex']]!='') ? ' ('.$lang['L_WITHPRAEFIX'].' '.$databases['praefix'][$dump['dbindex']].')':''))); -if (isset($aus_error)&&count($aus_error)>0) $aus_header=array_merge($aus_header,$aus_error); - -if ($num_tables==0) -{ - //keine Tabellen gefunden - $aus[]='

'.$lang['L_ERROR'].': '.sprintf($lang['L_DUMP_NOTABLES'],$databases['Name'][$dump['dbindex']]).'

'; - if (!$config['multi_dump']==1) - { - echo $pageheader; - echo get_page_parameter($dump); - echo implode("\n",$aus); - echo ''; - exit(); - } +if (!isset($_SESSION['dump'])) { + getDBInfos(); } -else -{ - if ($dump['table_offset']==-1) - { - // File anlegen, da Erstaufruf - new_file(); - $dump['table_offset']=0; // jetzt kanns losgehen - flush(); - } - else - { - // SQL-Befehle ermitteln - $dump['restzeilen']=$dump['anzahl_zeilen']; - while (($dump['table_offset']<$num_tables)&&($dump['restzeilen']>0)) - { - $table=substr($dump['tables'][$dump['table_offset']],strpos($dump['tables'][$dump['table_offset']],'|')+1); - $adbname=substr($dump['tables'][$dump['table_offset']],0,strpos($dump['tables'][$dump['table_offset']],'|')); - if ($databases['Name'][$dump['dbindex']]!=$adbname) - { - //neue Datenbank - $dump['data'].="\nSET FOREIGN_KEY_CHECKS=1;"; - $dump['data'].="\n".$mysql_commentstring.' EOB'."\n\n"; - WriteToDumpFile(); - WriteLog('Dump \''.$dump['backupdatei'].'\' finished.'); - ExecuteCommand('a'); - if ($config['multi_part']==1) - { - $out.=$lang['L_FINISHED'].'
'; - $dateistamm=substr($dump['backupdatei'],0,strrpos($dump['backupdatei'],'part_')).'part_'; - $dateiendung=($config['compression']==1) ? '.sql.gz':'.sql'; - for($i=1;$i<($dump['part']-$dump['part_offset']);$i++) - { - $mpdatei=$dateistamm.$i.$dateiendung; - clearstatcache(); - $sz=byte_output(@filesize($config['paths']['backup'].$mpdatei)); - $out.=$lang['L_FILE'].' '.$mpdatei.' ('.$sz.') '.$lang['L_DUMP_SUCCESSFUL'].'
'; - } - } - else - { - clearstatcache(); - $out.=$lang['L_FINISHED'].'
'.$dump['backupdatei'].' ('.byte_output(filesize($config['paths']['backup'].$dump['backupdatei'])).')
'; - } - if ($config['send_mail']==1) DoEmail(); - for($i=0;$i<3;$i++) - { - if ($config['ftp_transfer'][$i]==1) DoFTP($i); - } - if (isset($flipped[$adbname])) $dump['dbindex']=$flipped[$adbname]; - $dump['part_offset']=$dump['part']-1; - $out.='

'; - ExecuteCommand('b'); - new_file(); - } +$num_tables = count($dump['tables']); - $aktuelle_tabelle=$dump['table_offset']; - if ($dump['zeilen_offset']==0) - { - if ($config['minspeed']>0) - { - $dump['anzahl_zeilen']=$config['minspeed']; - $dump['restzeilen']=$config['minspeed']; - } +if ((isset($config['optimize_tables_beforedump']) && (1 == $config['optimize_tables_beforedump'])) && -1 == $dump['table_offset']) { + $out .= sprintf($lang['L_NR_TABLES_OPTIMIZED'], $num_tables).'
'; +} +$dump['data'] = ''; +$dump['dbindex'] = (isset($_POST['dbindex'])) ? $_POST['dbindex'] : $flipped[$databases['multi'][0]]; - $create_statement=''; - $create_statement=get_def($adbname,$table); +// Build output header +$aus_header[] = headline('Backup: '.((isset($config['multi_dump']) && (1 == $config['multi_dump'])) ? 'Multidump ('.count($databases['multi']).' '.$lang['L_DBS'].')' : $lang['L_DB'].': '.$databases['Name'][$dump['dbindex']].(('' != $databases['praefix'][$dump['dbindex']]) ? ' ('.$lang['L_WITHPRAEFIX'].' '.$databases['praefix'][$dump['dbindex']].')' : ''))); +if (isset($aus_error) && count($aus_error) > 0) { + $aus_header = array_merge($aus_header, $aus_error); +} - if (!($create_statement===false)) - { - $dump['data'].=$create_statement; - } - else - { - WriteToDumpFile(); // save data we have up to now - // error reading table definition - $read_create_error=sprintf($lang['L_FATAL_ERROR_DUMP'],$table,$adbname).': '.mysqli_error($config['dbconnection']); - Errorlog("DUMP",$databases['db_actual'],'',$read_create_error,0); - WriteLog($read_create_error); - if ($config['stop_with_error']>0) - { - die($read_create_error); - } - $dump['errors']++; - } - } - WriteToDumpFile(); - if (!in_array($adbname.'|'.$table,$dump['skip_data'])&&$dump['table_types'][getDBIndex($adbname,$table)]!='VIEW') - { - get_content($adbname,$table); - $dump['restzeilen']--; - } - else - { - // skip data - if ($dump['table_types'][getDBIndex($adbname,$table)]!='VIEW') $dump['data'].='/*!40000 ALTER TABLE `'.$table.'` ENABLE KEYS */;'."\n"; - WriteToDumpFile(); - $dump['table_offset']++; - } - if ($config['memory_limit']>0&&strlen($dump['data'])>$config['memory_limit']) WriteToDumpFile(); - } - } +if (0 == $num_tables) { + // no tables found + $aus[] = '

'.$lang['L_ERROR'].': '.sprintf($lang['L_DUMP_NOTABLES'], $databases['Name'][$dump['dbindex']]).'

'; + if (1 == !$config['multi_dump']) { + echo $pageheader; + echo get_page_parameter($dump); + echo implode("\n", $aus); + echo ''; + exit(); + } +} else { + if (-1 == $dump['table_offset']) { + // Create file, since first call + new_file(); + $dump['table_offset'] = 0; // now it can start + flush(); + } else { + // Determine SQL commands + $dump['restzeilen'] = $dump['anzahl_zeilen']; + while (($dump['table_offset'] < $num_tables) && ($dump['restzeilen'] > 0)) { + $table = substr($dump['tables'][$dump['table_offset']], strpos($dump['tables'][$dump['table_offset']], '|') + 1); + $adbname = substr($dump['tables'][$dump['table_offset']], 0, strpos($dump['tables'][$dump['table_offset']], '|')); + if ($databases['Name'][$dump['dbindex']] != $adbname) { + //neue Datenbank + $dump['data'] .= "\nSET FOREIGN_KEY_CHECKS=1;"; + $dump['data'] .= "\n".$mysql_commentstring.' EOB'."\n\n"; + WriteToDumpFile(); + WriteLog('Dump \''.$dump['backupdatei'].'\' finished.'); + ExecuteCommand('a'); + if (1 == $config['multi_part']) { + $out .= $lang['L_FINISHED'].'
'; + $dateistamm = substr($dump['backupdatei'], 0, strrpos($dump['backupdatei'], 'part_')).'part_'; + $dateiendung = (1 == $config['compression']) ? '.sql.gz' : '.sql'; + for ($i = 1; $i < ($dump['part'] - $dump['part_offset']); ++$i) { + $mpdatei = $dateistamm.$i.$dateiendung; + clearstatcache(); + $sz = byte_output(@filesize($config['paths']['backup'].$mpdatei)); + $out .= $lang['L_FILE'].' '.$mpdatei.' ('.$sz.') '.$lang['L_DUMP_SUCCESSFUL'].'
'; + } + } else { + clearstatcache(); + $out .= $lang['L_FINISHED'].'
'.$dump['backupdatei'].' ('.byte_output(filesize($config['paths']['backup'].$dump['backupdatei'])).')
'; + } + if (1 == $config['send_mail']) { + DoEmail(); + } - ///////////////////////////////// - // Anzeige - Fortschritt - ///////////////////////////////// - if ($config['multi_dump']==1) - { - $mudbs=''; - $count_dbs=count($databases['multi']); - for($i=0;$i<$count_dbs;$i++) - { - if ($databases['Name'][$dump['dbindex']]==$databases['multi'][$i]) $mudbs.=''.$databases['multi'][$i].'   '; - else - $mudbs.=''.$databases['multi'][$i].'   '; - } - } - if ($config['multi_part']==1) $aus[]='
Multipart-Backup: '.$config['multipartgroesse1'].' '.$mp2[$config['multipartgroesse2']].'
'; + for ($i = 0; $i < 3; ++$i) { + if (isset($config['ftp_transfer'][$i]) && (1 == $config['ftp_transfer'][$i])) { + DoFTP($i); + } + if (isset($config['sftp_transfer'][$i]) && (1 == $config['sftp_transfer'][$i])) { + DoSFTP($i); + } + } + if (isset($flipped[$adbname])) { + $dump['dbindex'] = $flipped[$adbname]; + } + $dump['part_offset'] = $dump['part'] - 1; + $out .= '

'; + ExecuteCommand('b'); + new_file(); + } - $aus[]='

'.$lang['L_DUMP_HEADLINE'].'

'; + $aktuelle_tabelle = $dump['table_offset']; + if (0 == $dump['zeilen_offset']) { + if (isset($config['minspeed']) && ($config['minspeed'] > 0)) { + $dump['anzahl_zeilen'] = $config['minspeed']; + $dump['restzeilen'] = $config['minspeed']; + } - if ($dump['kommentar']>'') $aus[]=$lang['L_COMMENT'].': '.$dump['kommentar'].'
'; - $aus[]=($config['multi_dump']==1) ? $lang['L_DB'].': '.$mudbs:$lang['L_DB'].': '.$databases['Name'][$dump['dbindex']].''; - $aus[]=(($databases['praefix'][$dump['dbindex']]!='') ? ' ('.$lang['L_WITHPRAEFIX'].' '.$databases['praefix'][$dump['dbindex']].')':'').'
'; - if (isset($tbl_sel)) $aus[]=$msgTbl.'

'; + $create_statement = ''; + $create_statement = get_def($adbname, $table); - if ($config['multi_part']==1) - { - $aus[]='Multipart-Backup File '.($dump['part']-$dump['part_offset']-1).'
'; - $aus2=', '.($dump['part']-1).' files'; - } - $aus[]=$lang['L_DUMP_FILENAME'].''.$dump['backupdatei'].'
'.$lang['L_CHARSET'].': '.$dump['dump_encoding'].''. + if (!(false === $create_statement)) { + $dump['data'] .= $create_statement; + } else { + WriteToDumpFile(); // save data we have up to now + // error reading table definition + $read_create_error = sprintf($lang['L_FATAL_ERROR_DUMP'], $table, $adbname).': '.mysqli_error($config['dbconnection']); + Errorlog('DUMP', $databases['db_actual'], '', $read_create_error, 0); + WriteLog($read_create_error); + if ($config['stop_with_error'] > 0) { + exit($read_create_error); + } + ++$dump['errors']; + } + } + WriteToDumpFile(); + if (!in_array($adbname.'|'.$table, $dump['skip_data']) && 'VIEW' != $dump['table_types'][getDBIndex($adbname, $table)]) { + get_content($adbname, $table); + --$dump['restzeilen']; + } else { + // skip data + if ('VIEW' != $dump['table_types'][getDBIndex($adbname, $table)]) { + $dump['data'] .= '/*!40000 ALTER TABLE `'.$table.'` ENABLE KEYS */;'."\n"; + } + WriteToDumpFile(); + ++$dump['table_offset']; + } + if ((isset($config['memory_limit']) && $config['memory_limit'] > 0) && strlen($dump['data']) > $config['memory_limit']) { + WriteToDumpFile(); + } + } + } - '
'.$lang['L_FILESIZE'].': '.byte_output($dump['filesize']).'

'.$lang['L_GZIP_COMPRESSION'].' '; - $aus[]=($config['compression']==1) ? $lang['L_ACTIVATED']:$lang['L_NOT_ACTIVATED']; - $aus[]='.
'; - if ($out>'') $aus[]='
'.$out.''; + /* + * Display - Progress + */ + if (isset($config['multi_dump']) && (1 == $config['multi_dump'])) { + $mudbs = ''; + $count_dbs = count($databases['multi']); + for ($i = 0; $i < $count_dbs; ++$i) { + if ($databases['Name'][$dump['dbindex']] == $databases['multi'][$i]) { + $mudbs .= ''.$databases['multi'][$i].'   '; + } else { + $mudbs .= ''.$databases['multi'][$i].'   '; + } + } + } + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { + $aus[] = '
Multipart-Backup: '.$config['multipartgroesse1'].' '.$mp2[$config['multipartgroesse2']].'
'; + } - if (isset($dump['tables'][$dump['table_offset']])) - { - $table=substr($dump['tables'][$dump['table_offset']],strpos($dump['tables'][$dump['table_offset']],'|')+1); - $adbname=substr($dump['tables'][$dump['table_offset']],0,strpos($dump['tables'][$dump['table_offset']],'|')); + $aus[] = '

'.$lang['L_DUMP_HEADLINE'].'

'; - // get nr of recorsd from dump-array - $record_string=$dump['records'][$dump['table_offset']]; - $record_string=explode('|',$record_string); - $dump['zeilen_total']=$record_string[1]; + if ($dump['kommentar'] > '') { + $aus[] = $lang['L_COMMENT'].': '.$dump['kommentar'].'
'; + } + $aus[] = ((isset($config['multi_dump']) && 1 == $config['multi_dump'])) ? $lang['L_DB'].': '.$mudbs : $lang['L_DB'].': '.$databases['Name'][$dump['dbindex']].''; + $aus[] = (('' != $databases['praefix'][$dump['dbindex']]) ? ' ('.$lang['L_WITHPRAEFIX'].' '.$databases['praefix'][$dump['dbindex']].')' : '').'
'; + if (isset($tbl_sel)) { + $aus[] = $msgTbl.'

'; + } - if ($dump['zeilen_total']>0) $fortschritt=intval((100*$dump['zeilen_offset'])/$dump['zeilen_total']); - else - $fortschritt=100; + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { + $aus[] = 'Multipart-Backup File '.($dump['part'] - $dump['part_offset'] - 1).'
'; + $aus2 = ', '.($dump['part'] - 1).' files'; + } + $aus[] = $lang['L_DUMP_FILENAME'].''.$dump['backupdatei'].'
'.$lang['L_CHARSET'].': '.$dump['dump_encoding'].''. - $aus[]=$lang['L_SAVING_TABLE'].''.($dump['table_offset']+1).' '.$lang['L_OF'].' '.sizeof($dump['tables']).'
'.$lang['L_ACTUAL_TABLE'].': '.$table.'

'.$lang['L_PROGRESS_TABLE'].':
'; + '
'.$lang['L_FILESIZE'].': '.byte_output($dump['filesize']).'

'.$lang['L_GZIP_COMPRESSION'].' '; + $aus[] = (isset($config['compression']) && (1 == $config['compression'])) ? $lang['L_ACTIVATED'] : $lang['L_NOT_ACTIVATED']; + $aus[] = '.
'; + if ($out > '') { + $aus[] = '
'.$out.''; + } - $aus[]=''.''.''.''; + if (isset($dump['tables'][$dump['table_offset']])) { + $table = substr($dump['tables'][$dump['table_offset']], strpos($dump['tables'][$dump['table_offset']], '|') + 1); + $adbname = substr($dump['tables'][$dump['table_offset']], 0, strpos($dump['tables'][$dump['table_offset']], '|')); - if ($dump['anzahl_zeilen']+$dump['zeilen_offset']>=$dump['zeilen_total']) - { - $eintrag=$dump['zeilen_offset']+1; - $zeilen_gesamt=$dump['zeilen_total']; - if ($zeilen_gesamt==0) $eintrag=0; - } - else - { - $zeilen_gesamt=$dump['zeilen_offset']+$dump['anzahl_zeilen']; - $eintrag=$dump['zeilen_offset']+1; - } + // get nr of recorsd from dump-array + $record_string = $dump['records'][$dump['table_offset']]; + $record_string = explode('|', $record_string); + $dump['zeilen_total'] = $record_string[1]; - $aus[]=''.'
 '.($fortschritt).'%
'.$lang['L_ENTRY'].' '.number_format($eintrag,0,',','.').' '.$lang['L_UPTO'].' '.number_format(($zeilen_gesamt),0,',','.').' '.$lang['L_OF'].' '.number_format($dump['zeilen_total'],0,',','.').'
'; + if ($dump['zeilen_total'] > 0) { + $fortschritt = intval((100 * $dump['zeilen_offset']) / $dump['zeilen_total']); + } else { + $fortschritt = 100; + } - $dump['tabellen_gesamt']=(isset($dump['tables'])) ? count($dump['tables']):0; + $aus[] = $lang['L_SAVING_TABLE'].''.($dump['table_offset'] + 1).' '.$lang['L_OF'].' '.sizeof($dump['tables']).'
'.$lang['L_ACTUAL_TABLE'].': '.$table.'

'.$lang['L_PROGRESS_TABLE'].':
'; - $noch_zu_speichern=$dump['totalrecords']-$dump['countdata']; - $prozent=($dump['totalrecords']>0) ? round(((100*$noch_zu_speichern)/$dump['totalrecords']),0):100; - if ($noch_zu_speichern==0||$prozent>100) $prozent=100; + $aus[] = ''.''.''.''; - $aus[]="\n".'
'.$lang['L_PROGRESS_OVER_ALL'].':'."\n".'
 '.($fortschritt).'%
'.''.''.'
'.(100-$prozent).'%
'; + if ($dump['anzahl_zeilen'] + $dump['zeilen_offset'] >= $dump['zeilen_total']) { + $eintrag = $dump['zeilen_offset'] + 1; + $zeilen_gesamt = $dump['zeilen_total']; + if (0 == $zeilen_gesamt) { + $eintrag = 0; + } + } else { + $zeilen_gesamt = $dump['zeilen_offset'] + $dump['anzahl_zeilen']; + $eintrag = $dump['zeilen_offset'] + 1; + } - //Speed-Anzeige - $fw=($config['maxspeed']==$config['minspeed']) ? 300:round(($dump['anzahl_zeilen']-$config['minspeed'])/($config['maxspeed']-$config['minspeed'])*300,0); - if ($fw>300) $fw=300; - $aus[]='
'.'
'.'Speed
'.$dump['anzahl_zeilen'].'
'.''.'
'.''.'
'.''.''.'
'.$config['minspeed'].''.$config['maxspeed'].'
'."\n".'
'. + $aus[] = ''.''.$lang['L_ENTRY'].' '.number_format($eintrag, 0, ',', '.').' '.$lang['L_UPTO'].' '.number_format(($zeilen_gesamt), 0, ',', '.').' '.$lang['L_OF'].' '.number_format($dump['zeilen_total'], 0, ',', '.').''; - //Status-Text - '

'.zeit_format(time()-$xtime).', '.$dump['aufruf'].' '.$lang['L_PAGE_REFRESHS'].$aus2; - $aus[]=($dump['errors']>0) ? ', '.$dump['errors'].' errors':''; - $aus[]='

'; - } - else - $dump['table_offset']++; - // Ende Anzeige - WriteToDumpFile(); - if (!isset($summe_eintraege)) $summe_eintraege=0; + $dump['tabellen_gesamt'] = (isset($dump['tables'])) ? count($dump['tables']) : 0; - if ($dump['table_offset']<=$dump['tabellen_gesamt']) - { - $dauer=time()-($xtime+$dump['verbraucht']); - $dump['verbraucht']+=$dauer; - $summe_eintraege+=$dump['anzahl_zeilen']; + $noch_zu_speichern = $dump['totalrecords'] - $dump['countdata']; + $prozent = ($dump['totalrecords'] > 0) ? round(((100 * $noch_zu_speichern) / $dump['totalrecords']), 0) : 100; + if (0 == $noch_zu_speichern || $prozent > 100) { + $prozent = 100; + } - //Zeitanpassung - if ($dauer<$dump['max_zeit']) - { - $dump['anzahl_zeilen']=$dump['anzahl_zeilen']*$config['tuning_add']; - if ($dauer<$dump['max_zeit']/2) $dump['anzahl_zeilen']*=1.8; - if ($dump['anzahl_zeilen']>$config['maxspeed']) $dump['anzahl_zeilen']=$config['maxspeed']; - } - else - { - $dump['anzahl_zeilen']=$dump['anzahl_zeilen']*$config['tuning_sub']; - if ($dump['anzahl_zeilen']<$config['minspeed']) $dump['anzahl_zeilen']=$config['minspeed']; - } - $dump['anzahl_zeilen']=intval($dump['anzahl_zeilen']); - $dump['aufruf']++; - } - else - { - //Backup fertig - $dump['data']="\nSET FOREIGN_KEY_CHECKS=1;"; - $dump['data'].="\n".$mysql_commentstring.' EOB'."\n\n"; - WriteToDumpFile(); - ExecuteCommand('a'); - chmod($config['paths']['backup'].$dump['backupdatei'],0777); - if ($config['multi_part']==1) - { - $out.="\n".'
'; - $dateistamm=substr($dump['backupdatei'],0,strrpos($dump['backupdatei'],'part_')).'part_'; - $dateiendung=($config['compression']==1) ? '.sql.gz':'.sql'; - clearstatcache(); - for($i=1;$i<($dump['part']-$dump['part_offset']);$i++) - { - $mpdatei=$dateistamm.$i.$dateiendung; - $sz=byte_output(@filesize($config['paths']['backup'].$mpdatei)); - $out.="\n".$lang['L_FILE'].' '.$mpdatei.' ('.$sz.') '.$lang['L_DUMP_SUCCESSFUL'].'
'; - } + $aus[] = "\n".'
'.$lang['L_PROGRESS_OVER_ALL'].':'."\n".''.''.''.'
'.(100 - $prozent).'%
'; - } - else - $out.="\n".'
'.$lang['L_FILE'].' '.$dump['backupdatei'].' ('.byte_output(filesize($config['paths']['backup'].$dump['backupdatei'])).')'.''.$lang['L_DUMP_SUCCESSFUL'].'
'; + //Speed-Anzeige + $config['maxspeed'] = isset($config['maxspeed']) ? $config['maxspeed'] : '1'; + $config['minspeed'] = isset($config['minspeed']) ? $config['minspeed'] : '1'; + $fw = ($config['maxspeed'] == $config['minspeed']) ? 300 : round(($dump['anzahl_zeilen'] - $config['minspeed']) / ($config['maxspeed'] - $config['minspeed']) * 300, 0); + if ($fw > 300) { + $fw = 300; + } + $aus[] = '
'.'
'.'Speed
'.$dump['anzahl_zeilen'].'
'.''.'
'.''.'
'.''.''.'
'.$config['minspeed'].''.$config['maxspeed'].'
'."\n".'
'. - $xtime=time()-$xtime; - $aus=Array(); - $aus[]='
'."\n"; - if ($config['multi_dump']==1) - { - WriteLog('Dump \''.$dump['backupdatei'].'\' finished.'); - WriteLog('Multidump: '.count($databases['multi']).' Databases in '.zeit_format($xtime).'.'); - } - else - WriteLog('Dump \''.$dump['backupdatei'].'\' finished in '.zeit_format($xtime).'.'); + //Status-Text + '

'.zeit_format(time() - $xtime).', '.$dump['aufruf'].' '.$lang['L_PAGE_REFRESHS'].$aus2; + $aus[] = ($dump['errors'] > 0) ? ', '.$dump['errors'].' errors' : ''; + $aus[] = '

'; + } else { + ++$dump['table_offset']; + } + // End display + WriteToDumpFile(); + if (!isset($summe_eintraege)) { + $summe_eintraege = 0; + } - if ($config['send_mail']==1) DoEmail(); - for($i=0;$i<3;$i++) - { - if ($config['ftp_transfer'][$i]==1) DoFTP($i); - } + if ($dump['table_offset'] <= $dump['tabellen_gesamt']) { + $dauer = time() - ($xtime + $dump['verbraucht']); + $dump['verbraucht'] += $dauer; + $summe_eintraege += $dump['anzahl_zeilen']; - $aus[]=''.$lang['L_DONE'].'
'; + // Time adjustment + if ($dauer < $dump['max_zeit']) { + $dump['anzahl_zeilen'] = $dump['anzahl_zeilen'] * $config['tuning_add']; + if ($dauer < $dump['max_zeit'] / 2) { + $dump['anzahl_zeilen'] *= 1.8; + } + if ($dump['anzahl_zeilen'] > $config['maxspeed']) { + $dump['anzahl_zeilen'] = $config['maxspeed']; + } + } else { + $dump['anzahl_zeilen'] = $dump['anzahl_zeilen'] * $config['tuning_sub']; + if ($dump['anzahl_zeilen'] < $config['minspeed']) { + $dump['anzahl_zeilen'] = $config['minspeed']; + } + } + $dump['anzahl_zeilen'] = intval($dump['anzahl_zeilen']); + ++$dump['aufruf']; + } else { + // Backup ready + $dump['data'] = "\nSET FOREIGN_KEY_CHECKS=1;"; + $dump['data'] .= "\n".$mysql_commentstring.' EOB'."\n\n"; + WriteToDumpFile(); + ExecuteCommand('a'); + chmod($config['paths']['backup'].$dump['backupdatei'], 0777); + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { + $out .= "\n".'
'; + $dateistamm = substr($dump['backupdatei'], 0, strrpos($dump['backupdatei'], 'part_')).'part_'; + $dateiendung = (1 == $config['compression']) ? '.sql.gz' : '.sql'; + clearstatcache(); + for ($i = 1; $i < ($dump['part'] - $dump['part_offset']); ++$i) { + $mpdatei = $dateistamm.$i.$dateiendung; + $sz = byte_output(@filesize($config['paths']['backup'].$mpdatei)); + $out .= "\n".$lang['L_FILE'].' '.$mpdatei.' ('.$sz.') '.$lang['L_DUMP_SUCCESSFUL'].'
'; + } + } else { + $out .= "\n".'
'.$lang['L_FILE'].' '.$dump['backupdatei'].' ('.byte_output(filesize($config['paths']['backup'].$dump['backupdatei'])).')'.''.$lang['L_DUMP_SUCCESSFUL'].'
'; + } - if ($config['multi_dump']==1) - { - $aus[]=sprintf($lang['L_MULTIDUMP'],count($databases['multi'])).': '; - $aus[]=''.implode(', ',$databases['multi']).''; - $aus2=''; - $out=''; - } - else - { - $aus[]='
'.sprintf($lang['L_DUMP_ENDERGEBNIS'],$num_tables,number_format($dump['countdata'],0,',','.')); - } - if ($dump['errors']>0) $aus[]=sprintf($lang['L_DUMP_ERRORS'],$dump['errors']); + $xtime = time() - $xtime; + $aus = []; + $aus[] = '
'."\n"; + if (isset($config['multi_dump']) && (1 == $config['multi_dump'])) { + WriteLog('Dump \''.$dump['backupdatei'].'\' finished.'); + WriteLog('Multidump: '.count($databases['multi']).' Databases in '.zeit_format($xtime).'.'); + } else { + WriteLog('Dump \''.$dump['backupdatei'].'\' finished in '.zeit_format($xtime).'.'); + } - $aus[]='
'.$out.'
'.'

'.zeit_format($xtime).', '.$dump['aufruf'].' '.$lang['L_PAGE_REFRESHS'].$aus2.'

'."\n"; - $aus[]="\n".'
'; - $aus[]='   '; - $aus[]='   

'; - $aus[]='
'; + if (isset($config['send_mail']) && (1 == $config['send_mail'])) { + DoEmail(); + } + for ($i = 0; $i < 3; ++$i) { + if (isset($config['ftp_transfer'][$i]) && (1 == $config['ftp_transfer'][$i])) { + DoFTP($i); + } + if (isset($config['sftp_transfer'][$i]) && (1 == $config['sftp_transfer'][$i])) { + DoSFTP($i); + } + } - $DumpFertig=1; - } + $aus[] = ''.$lang['L_DONE'].'
'; + + if (isset($config['multi_dump']) && (1 == $config['multi_dump'])) { + $aus[] = sprintf($lang['L_MULTIDUMP'], count($databases['multi'])).': '; + $aus[] = ''.implode(', ', $databases['multi']).''; + $aus2 = ''; + $out = ''; + } else { + $aus[] = '
'.sprintf($lang['L_DUMP_ENDERGEBNIS'], $num_tables, number_format($dump['countdata'], 0, ',', '.')); + } + if ($dump['errors'] > 0) { + $aus[] = sprintf($lang['L_DUMP_ERRORS'], $dump['errors']); + } + + $aus[] = '
'.$out.'
'.'

'.zeit_format($xtime).', '.$dump['aufruf'].' '.$lang['L_PAGE_REFRESHS'].$aus2.'

'."\n"; + $aus[] = "\n".'
'; + $aus[] = '   '; + $aus[] = '   

'; + $aus[] = '
'; + + $DumpFertig = 1; + } } //===================================================================== -//================= Anzeige =========================================== +//================= Display =========================================== //===================================================================== +// Craft page +$aus = array_merge($aus_header, $aus); -//Seite basteln -$aus=array_merge($aus_header,$aus); - -$dump['xtime']=$xtime; -if ($DumpFertig!=1) -{ - // save actual values to session - $_SESSION['dump']=$dump; - $page_parameter=get_page_parameter($dump); - $pagefooter=''; - $selbstaufruf=$page_parameter.'
'; +$dump['xtime'] = $xtime; +if (1 != $DumpFertig) { + // save actual values to session + $_SESSION['dump'] = $dump; + $page_parameter = get_page_parameter($dump); + $pagefooter = ''; + $selbstaufruf = $page_parameter.'
'; +} else { + $dump = []; + $_SESSION['dump'] = $dump; + $pagefooter = MODFooter('', 1); + $selbstaufruf = ''; } -else -{ - $dump=array(); - $_SESSION['dump']=$dump; - $pagefooter=MSDFooter('',1); - $selbstaufruf=''; -} -$complete_page=$pageheader.implode("\n",$aus)."\n".$selbstaufruf."\n".$pagefooter; +$complete_page = $pageheader.implode("\n", $aus)."\n".$selbstaufruf."\n".$pagefooter; echo $complete_page; ob_end_flush(); diff --git a/msd/filemanagement.php b/msd/filemanagement.php index c25a2e46..1011bf19 100644 --- a/msd/filemanagement.php +++ b/msd/filemanagement.php @@ -1,10 +1,13 @@ '; - if (is_array($databases['multi'])) - { - for ($i=0; $i0) $toolboxstring.=', '; - $toolboxstring.=$databases['multi'][$i]; - if ($multi_praefixe[$i]>'') $toolboxstring.=' (\''.$multi_praefixe[$i].'\')'; - } - } +echo MODHeader(); + +$toolboxstring = ''; +$fpath = $config['paths']['backup']; +$dbactiv = (isset($_GET['dbactiv'])) ? $_GET['dbactiv'] : $databases['db_actual']; +$databases['multi'] = []; +if ('' == $databases['multisetting']) { + $databases['multi'][0] = $databases['db_actual']; +} else { + $databases['multi'] = explode(';', $databases['multisetting']); + $multi_praefixe = []; + $multi_praefixe = explode(';', $databases['multisetting_praefix']); + $toolboxstring = '
'; + if (is_array($databases['multi'])) { + for ($i = 0; $i < sizeof($databases['multi']); ++$i) { + if ($i > 0) { + $toolboxstring .= ', '; + } + $toolboxstring .= $databases['multi'][$i]; + if ($multi_praefixe[$i] > '') { + $toolboxstring .= ' (\''.$multi_praefixe[$i].'\')'; + } + } + } } //*** Abfrage ob Dump nach Tabellenaufruf *** -if (isset($_POST['dump_tbl'])) -{ - $check_dirs=TestWorkDir(); - if (!$check_dirs===true) die($check_dirs); - $databases['db_actual_tableselected']=substr($_POST['tbl_array'],0,strlen($_POST['tbl_array'])-1); - WriteParams(); - $dump['fileoperations']=0; - echo ''; - exit(); +if (isset($_POST['dump_tbl'])) { + $check_dirs = TestWorkDir(); + if (true === !$check_dirs) { + exit($check_dirs); + } + $databases['db_actual_tableselected'] = substr($_POST['tbl_array'], 0, strlen($_POST['tbl_array']) - 1); + WriteParams(); + $dump['fileoperations'] = 0; + echo ''; + exit(); } //*** Abfrage ob Dump *** -if (isset($_POST['dump'])) -{ - if (isset($_POST['tblfrage'])&&$_POST['tblfrage']==1) - { - //Tabellenabfrage - $tblfrage_refer="dump"; - include ("inc/tabellenabfrage.php"); - exit(); - } - else - { - @$check_dir=TestWorkDir(); - if (!$check_dir===true) die($check_dir); - $databases['db_actual_tableselected']=""; - WriteParams(); +if (isset($_POST['dump'])) { + if (isset($_POST['tblfrage']) && 1 == $_POST['tblfrage']) { + //Tabellenabfrage + $tblfrage_refer = 'dump'; + include 'inc/table_query.php'; + exit(); + } else { + @$check_dir = TestWorkDir(); + if (true === !$check_dir) { + exit($check_dir); + } + $databases['db_actual_tableselected'] = ''; + WriteParams(); + $dump['fileoperations'] = 0; - $dump['fileoperations']=0; - echo ''; - exit(); - } + $sUrl = 'dump.php?comment='.urlencode($dk).'&sel_dump_encoding='.$dump['sel_dump_encoding'].'&config='.urlencode($config['config_file']); + if ((isset($config['optimize_tables_beforedump']) && (1 == $config['optimize_tables_beforedump']))) { + echo '
'.$lang['L_DUMP_HEADLINE'].'

'; + echo '

'.sprintf($lang['L_DUMP_INFO'], $sUrl).'

'; + } + echo ''; + exit(); + } } //*** Abfrage ob Restore nach Tabellenaufruf *** -if (isset($_POST['restore_tbl'])) -{ - $databases['db_actual_tableselected']=substr($_POST['tbl_array'],0,strlen($_POST['tbl_array'])-1); - WriteParams(); - echo ''; +if (isset($_POST['restore_tbl'])) { + $databases['db_actual_tableselected'] = substr($_POST['tbl_array'], 0, strlen($_POST['tbl_array']) - 1); + WriteParams(); + echo ''; - exit(); + exit(); } //*** Abfrage ob Restore *** -if (isset($_POST['restore'])) -{ - if (isset($_POST['file'])) - { - if (isset($_POST['tblfrage'])&&$_POST['tblfrage']==1) - { - //Tabellenabfrage - $tblfrage_refer="restore"; - $filename=urldecode($_POST['file'][0]); - include ("inc/tabellenabfrage.php"); - exit(); - } - else - { - $file=$_POST['file'][0]; - $statusline=read_statusline_from_file($file); - if (isset($_POST['sel_dump_encoding_restore'])) - { - $encodingstring=$config['mysql_possible_character_sets'][$_POST['sel_dump_encoding_restore']]; - $encoding=explode(' ',$encodingstring); - $dump_encoding=$encoding[0]; - } - else - { - if (!isset($statusline['charset'])||trim($statusline['charset'])=='?') - { - echo headline($lang['L_FM_RESTORE'].': '.$file); +if (isset($_POST['restore'])) { + if (isset($_POST['file'])) { + if (isset($_POST['tblfrage']) && 1 == $_POST['tblfrage']) { + //Tabellenabfrage + $tblfrage_refer = 'restore'; + $filename = urldecode($_POST['file'][0]); + include 'inc/table_query.php'; + exit(); + } else { + $file = $_POST['file'][0]; + $statusline = read_statusline_from_file($file); + if (isset($_POST['sel_dump_encoding_restore'])) { + $encodingstring = $config['mysql_possible_character_sets'][$_POST['sel_dump_encoding_restore']]; + $encoding = explode(' ', $encodingstring); + $dump_encoding = $encoding[0]; + } else { + if (!isset($statusline['charset']) || '?' == trim($statusline['charset'])) { + echo headline($lang['L_FM_RESTORE'].': '.$file); - // if we can't detect encoding ask user - echo '
'.$lang['L_CHOOSE_CHARSET'].'

'; - echo '
'; - echo ''; + // if we can't detect encoding ask user + echo '
'.$lang['L_CHOOSE_CHARSET'].'

'; + echo ''; + echo '
'.$lang['L_FM_CHOOSE_ENCODING'].':'; - echo '
'; - echo $lang['L_MYSQL_CONNECTION_ENCODING'].':'.$config['mysql_standard_character_set'].'
'; - echo '
'.$lang['L_FM_CHOOSE_ENCODING'].':'; + echo '
'; + echo $lang['L_MYSQL_CONNECTION_ENCODING'].':'.$config['mysql_standard_character_set'].'

'; - echo ''; - echo '
'; - exit(); - } - else - $dump_encoding=$statusline['charset']; - } + echo '
'; + echo ''; + echo ''; + exit(); + } else { + $dump_encoding = $statusline['charset']; + } + } - $databases['db_actual_tableselected']=""; - WriteParams(); - echo ''; - exit(); - } - } - else - $msg.='

'.$lang['L_FM_NOFILE'].'

'; + $databases['db_actual_tableselected'] = ''; + WriteParams(); + echo ''; + exit(); + } + } else { + $msg .= '

'.$lang['L_FM_NOFILE'].'

'; + } } //*** Abfrage ob Delete *** -$del=array(); -if (isset($_POST['delete'])) -{ - if (isset($_POST['file'])) - { - $delfiles=Array(); - for ($i=0; $i'; +$del = []; +if (isset($_POST['delete'])) { + if (isset($_POST['file'])) { + $delfiles = []; + for ($i = 0; $i < count($_POST['file']); ++$i) { + if (false === !strpos($_POST['file'][$i], '_part_')) { + $delfiles[] = substr($_POST['file'][$i], 0, strpos($_POST['file'][$i], '_part_') + 6).'*'; + } else { + $delfiles[] = $_POST['file'][$i]; + } + } + for ($i = 0; $i < count($delfiles); ++$i) { + $del = array_merge($del, DeleteFilesM($fpath, $delfiles[$i])); + } + } else { + $msg .= '

'.$lang['L_FM_NOFILE'].'

'; + } } -if (isset($_POST['deleteauto'])) -{ - $delete_result=AutoDelete(); - if ($delete_result>'') $msg.='

'.$delete_result.'

'; +if (isset($_POST['deleteauto'])) { + $delete_result = AutoDelete(); + if ($delete_result > '') { + $msg .= '

'.$delete_result.'

'; + } } -if (isset($_POST['deleteall'])||isset($_POST['deleteallfilter'])) -{ - if (isset($_POST['deleteall'])) - { - $del=DeleteFilesM($fpath,"*.sql"); - $del=array_merge($del,DeleteFilesM($fpath,"*.gz")); - } - else - $del=DeleteFilesM($fpath,$databases['db_actual']."*"); +if (isset($_POST['deleteall']) || isset($_POST['deleteallfilter'])) { + if (isset($_POST['deleteall'])) { + $del = DeleteFilesM($fpath, '*.sql'); + $del = array_merge($del, DeleteFilesM($fpath, '*.gz')); + } else { + $del = DeleteFilesM($fpath, $databases['db_actual'].'*'); + } } // print file-delete-messages -if (is_array($del)&&sizeof($del)>0) -{ - foreach ($del as $filename=>$success) - { - if ($success) - { - $msg.=''; - $msg.=$lang['L_FM_DELETE1'].' \''.$filename.'\' '.$lang['L_FM_DELETE2']; - WriteLog("deleted '$filename'."); - $msg.='
'; - } - else - { - $msg.=''; - $msg.=$lang['L_FM_DELETE1'].' \''.$filename.'\' '.$lang['L_FM_DELETE3']; - WriteLog("deleted '$filename'."); - $msg.='
'; - } - } +if (is_array($del) && sizeof($del) > 0) { + foreach ($del as $filename => $success) { + if ($success) { + $msg .= ''; + $msg .= $lang['L_FM_DELETE1'].' \''.$filename.'\' '.$lang['L_FM_DELETE2']; + WriteLog("deleted '$filename'."); + $msg .= '
'; + } else { + $msg .= ''; + $msg .= $lang['L_FM_DELETE1'].' \''.$filename.'\' '.$lang['L_FM_DELETE3']; + WriteLog("deleted '$filename'."); + $msg .= '
'; + } + } } // Upload -if (isset($_POST['upload'])) -{ - $error=false; - if (!isset($_FILES['upfile']['name'])) echo ''.$lang['L_FM_UPLOADFILEREQUEST'].'

'; - else - { - if (!file_exists($fpath.$_FILES['upfile']['name'])) - { - // Extension ermitteln -strrpos fängt hinten an und ermittelt somit den letzten Punkt - $endung=strrchr($_FILES['upfile']['name'],"."); - $erlaubt= array ( - - ".gz", ".sql"); - if (!in_array($endung,$erlaubt)) - { - $msg.="".$lang['L_FM_UPLOADNOTALLOWED1']."
"; - $msg.=$lang['L_FM_UPLOADNOTALLOWED2']."
"; - } - else - { - if (!$error) - { - if (move_uploaded_file($_FILES['upfile']['tmp_name'],$fpath.$_FILES['upfile']['name'])) @chmod($fpath.$upfile_name,0777); - else - $error.="".$lang['L_FM_UPLOADMOVEERROR']."
"; - } - if ($error) $msg.=$error."".$lang['L_FM_UPLOADFAILED']."
"; - } - } - else - $msg.="".$lang['L_FM_UPLOADFILEEXISTS']."
"; - } +if (isset($_POST['upload'])) { + $error = false; + if (!isset($_FILES['upfile']['name'])) { + echo ''.$lang['L_FM_UPLOADFILEREQUEST'].'

'; + } else { + if (!file_exists($fpath.$_FILES['upfile']['name'])) { + // Extension ermitteln -strrpos fängt hinten an und ermittelt somit den letzten Punkt + $endung = strrchr($_FILES['upfile']['name'], '.'); + $erlaubt = [ + '.gz', '.sql', ]; + if (!in_array($endung, $erlaubt)) { + $msg .= ''.$lang['L_FM_UPLOADNOTALLOWED1'].'
'; + $msg .= $lang['L_FM_UPLOADNOTALLOWED2'].'
'; + } else { + if (!$error) { + if (move_uploaded_file($_FILES['upfile']['tmp_name'], $fpath.$_FILES['upfile']['name'])) { + @chmod($fpath.$upfile_name, 0777); + } else { + $error .= ''.$lang['L_FM_UPLOADMOVEERROR'].'
'; + } + } + if ($error) { + $msg .= $error.''.$lang['L_FM_UPLOADFAILED'].'
'; + } + } + } else { + $msg .= ''.$lang['L_FM_UPLOADFILEEXISTS'].'
'; + } + } } //Seitenteile vordefinieren -$href='filemanagement.php?action='.$action.'&kind='.$kind; -$tbl_abfrage=''; -if ($config['multi_dump']==0) $tbl_abfrage=''.$lang['L_FM_SELECTTABLES'].''; -$dk=(isset($_POST['dumpKommentar'])) ? htmlentities($_POST['dumpKommentar']) : ''; -$tbl_abfrage.=''.$lang['L_FM_COMMENT'].':'; -$autodel='

'.$lang['L_AUTODELETE'].": "; -$autodel.=($config['auto_delete']==0) ? $lang['L_NOT_ACTIVATED'] : $lang['L_ACTIVATED'].' ('.$config['max_backup_files'].' '.$lang['L_MAX_BACKUP_FILES_EACH2'].')'; -$autodel.='

'; +$href = 'filemanagement.php?action='.$action.'&kind='.$kind; +$tbl_abfrage = ''; +if (isset($config['multi_dump']) && (0 == $config['multi_dump'])) { + $tbl_abfrage = ''.$lang['L_FM_SELECTTABLES'].''; +} +$dk = (isset($_POST['dumpKommentar'])) ? htmlentities($_POST['dumpKommentar']) : ''; +$tbl_abfrage .= ''.$lang['L_FM_COMMENT'].':'; +$autodel = '

'.$lang['L_AUTODELETE'].': '; +$autodel .= (isset($config['auto_delete']) && (0 == $config['auto_delete'])) ? $lang['L_NOT_ACTIVATED'] : $lang['L_ACTIVATED']; +if (isset($config['max_backup_files'])) { + $autodel .= ' ('.$config['max_backup_files'].' '.$lang['L_MAX_BACKUP_FILES_EACH2'].')'; +} + +$autodel .= '

'; //Fallunterscheidung -switch ($action) -{ - case 'dump': +switch ($action) { + case 'dump': $dbName = $databases['Name'][$databases['db_selected_index']]; - if ($config['multi_dump']==0 && in_array($dbName, $dontBackupDatabases)) { + if ((isset($config['multi_dump']) && (0 == $config['multi_dump'])) && in_array($dbName, $dontBackupDatabases)) { echo headline($lang['L_FM_DUMP_HEADER'].' ("'.$lang['L_CONFIG_HEADLINE'].': '.$config['config_file'].'")'); echo ''.sprintf($lang['L_BACKUP_NOT_POSSIBLE'], $dbName).''; break; } - if ($config['multi_dump']==0) DBDetailInfo($databases['db_selected_index']); - $cext=($config['cron_extender']==0) ? "pl" : "cgi"; - $actualUrl=substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'],"/")+1); - if (substr($actualUrl,-1)!="/") $actualUrl.="/"; - if (substr($actualUrl,0,1)!="/") $actualUrl="/$actualUrl"; - $refdir=(substr($config['cron_execution_path'],0,1)=="/") ? "" : $actualUrl; - $scriptdir=$config['cron_execution_path'].'crondump.'.$cext; - $sfile=$config['cron_execution_path']."perltest.$cext"; - $simplefile=$config['cron_execution_path']."simpletest.$cext"; - $scriptentry=Realpfad("./").$config['paths']['config']; - $cronabsolute=(substr($config['cron_execution_path'],0,1)=="/") ? $_SERVER['DOCUMENT_ROOT'].$scriptdir : Realpfad("./").$scriptdir; - $confabsolute=$config['config_file']; - $scriptref=getServerProtocol().$_SERVER['SERVER_NAME'].$refdir.$config['cron_execution_path'].'crondump.'.$cext."?config=".$confabsolute; - $cronref="perl ".$cronabsolute." -config=".$confabsolute." -html_output=0"; + if (isset($config['multi_dump']) && (0 == $config['multi_dump'])) { + DBDetailInfo($databases['db_selected_index']); + } + $cext = (isset($config['cron_extender']) && (0 == $config['cron_extender'])) ? 'pl' : 'cgi'; + $actualUrl = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/') + 1); + if ('/' != substr($actualUrl, -1)) { + $actualUrl .= '/'; + } + if ('/' != substr($actualUrl, 0, 1)) { + $actualUrl = "/$actualUrl"; + } + $refdir = ('/' == substr($config['cron_execution_path'], 0, 1)) ? '' : $actualUrl; + $scriptdir = $config['cron_execution_path'].'crondump.'.$cext; + $sfile = $config['cron_execution_path']."perltest.$cext"; + $simplefile = $config['cron_execution_path']."simpletest.$cext"; + $scriptentry = Realpfad('./').$config['paths']['config']; + $cronabsolute = ('/' == substr($config['cron_execution_path'], 0, 1)) ? $_SERVER['DOCUMENT_ROOT'].$scriptdir : Realpfad('./').$scriptdir; + $confabsolute = $config['config_file']; + $scriptref = getServerProtocol().$_SERVER['SERVER_NAME'].$refdir.$config['cron_execution_path'].'crondump.'.$cext.'?config='.$confabsolute; + $cronref = 'perl '.$cronabsolute.' -config='.$confabsolute.' -html_output=0'; - //Ausgabe - echo headline($lang['L_FM_DUMP_HEADER'].' ("'.$lang['L_CONFIG_HEADLINE'].': '.$config['config_file'].'")'); - if (!is_writable($config['paths']['backup'])) die(''.sprintf($lang['L_WRONG_RIGHTS'],'work/backup','777').''); - echo ($msg>'') ? $msg.'
' : ''; - echo $autodel; + //Ausgabe + echo headline($lang['L_FM_DUMP_HEADER'].' ("'.$lang['L_CONFIG_HEADLINE'].': '.$config['config_file'].'")'); + if (!is_writable($config['paths']['backup'])) { + exit(''.sprintf($lang['L_WRONG_RIGHTS'], 'work/backup', '777').''); + } + echo ($msg > '') ? $msg.'
' : ''; + echo $autodel; - //Auswahl - echo '
+ //Auswahl + echo '
     
'; - echo '
'; + echo '
'; - //Dumpsettings - echo '
'.$lang['L_DUMP'].' (PHP)
'; + //Dumpsettings + echo '
'.$lang['L_DUMP'].' (PHP)
'; - echo '
'; - echo '
'; + echo '
'; + echo '
'; - echo '
'; - echo $tbl_abfrage; - echo ''; - echo ''; - echo ''; - echo '
'.$lang['L_MYSQL_CONNECTION_ENCODING'].':'.$config['mysql_standard_character_set'].'
'; - echo '
'; + echo '
'; + echo $tbl_abfrage; + echo ''; + echo ''; + echo ''; + echo '
'.$lang['L_MYSQL_CONNECTION_ENCODING'].':'.$config['mysql_standard_character_set'].'
'; + echo '
'; - echo '
'.$lang['L_FM_DUMPSETTINGS'].' (PHP)
'; + echo '
'.$lang['L_FM_DUMPSETTINGS'].' (PHP)
'; - echo ''; - echo ''; - echo '
'.$lang['L_DB'].':'; - if ($config['multi_dump']==1) - { - echo 'Multidump ('.count($databases['multi']).' '.$lang['L_DBS'].')'; - echo ''.$toolboxstring.''; - } - else - { - echo $databases['db_actual'].'  ('.$databases['Detailinfo']['tables']." Tables, ".$databases['Detailinfo']['records']." Records, ".byte_output($databases['Detailinfo']['size']).')'; + echo ''; + echo ''; - } - echo ''; + if ((isset($config['multi_dump']) && (0 == $config['multi_dump'])) && $databases['praefix'][$databases['db_selected_index']] > '') { + echo ''; + } - if ($config['multi_dump']==0&&$databases['praefix'][$databases['db_selected_index']]>'') - { - echo ''; - } + echo ''; - echo ''; + echo ''; - echo ''; + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { + echo ''; + } - if ($config['multi_part']==1) - { - echo ''; - } + if (isset($config['send_mail']) && (1 == $config['send_mail'])) { + $t = $config['email_recipient'].((1 == $config['send_mail_dump']) ? $lang['L_WITHATTACH'] : $lang['L_WITHOUTATTACH']); + } + echo ''; - if ($config['send_mail']==1) - { - $t=$config['email_recipient'].(($config['send_mail_dump']==1) ? $lang['L_WITHATTACH'] : $lang['L_WITHOUTATTACH']); - } - echo ''; + for ($x = 0; $x < 3; ++$x) { + if (isset($config['ftp_transfer'][$x]) && $config['ftp_transfer'][$x] > 0) { + echo table_output($lang['L_FTP_TRANSFER'], sprintf(str_replace('
', ' ', $lang['L_FTP_SEND_TO']), $config['ftp_server'][$x], $config['ftp_dir'][$x]), 1, 2); + } + if (isset($config['sftp_transfer'][$x]) && $config['sftp_transfer'][$x] > 0) { + echo table_output($lang['L_SFTP_TRANSFER'], sprintf(str_replace('
', ' ', $lang['L_SFTP_SEND_TO']), $config['sftp_server'][$x], $config['sftp_dir'][$x]), 1, 2); + } + } + //echo ''; + echo '
'.$lang['L_DB'].':'; + if (isset($config['multi_dump']) && (1 == $config['multi_dump'])) { + echo 'Multidump ('.count($databases['multi']).' '.$lang['L_DBS'].')'; + echo ''.$toolboxstring.''; + } else { + echo $databases['db_actual']; + if (isset($databases['Detailinfo'])) { + echo '   ('.$databases['Detailinfo']['tables'].' Tables, '.$databases['Detailinfo']['records'].' Records, '.byte_output($databases['Detailinfo']['size']).')'; + } + echo ''; + } + echo '
'.$lang['L_PRAEFIX'].':'; + echo $databases['praefix'][$databases['db_selected_index']]; + echo '
'.$lang['L_PRAEFIX'].':'; - echo $databases['praefix'][$databases['db_selected_index']]; - echo '
'.$lang['L_GZIP'].':'.((isset($config['compression']) && (1 == $config['compression'])) ? $lang['L_ACTIVATED'] : $lang['L_NOT_ACTIVATED']); + echo '
'.$lang['L_GZIP'].':'.(($config['compression']==1) ? $lang['L_ACTIVATED'] : $lang['L_NOT_ACTIVATED']); - echo '
'.$lang['L_MULTI_PART'].':'.((isset($config['multi_part']) && (1 == $config['multi_part'])) ? $lang['L_YES'] : $lang['L_NO']); + echo '
'.$lang['L_MULTI_PART'].':'.(($config['multi_part']==1) ? $lang['L_YES'] : $lang['L_NO']); - echo '
'.$lang['L_MULTI_PART_GROESSE'].':'.byte_output($config['multipart_groesse']).'
'.$lang['L_MULTI_PART_GROESSE'].':'.byte_output($config['multipart_groesse']).'
'.$lang['L_SEND_MAIL_FORM'].':'.((isset($config['send_mail']) && (1 == $config['send_mail'])) ? $t : $lang['L_NOT_ACTIVATED']); + echo '
'.$lang['L_SEND_MAIL_FORM'].':'.(($config['send_mail']==1) ? $t : $lang['L_NOT_ACTIVATED']); - echo '
'; - for ($x=0; $x<3; $x++) - { - if (isset($config['ftp_transfer'][$x])&&$config['ftp_transfer'][$x]>0) - { - echo table_output($lang['L_FTP_TRANSFER'],sprintf(str_replace('
',' ',$lang['L_FTP_SEND_TO']),$config['ftp_server'][$x],$config['ftp_dir'][$x]),1,2); - } - } - //echo '
'; + echo '

'; - echo '

'; + echo '
'; - echo '
'; + break; - break; + case 'restore': + echo headline(sprintf($lang['L_FM_RESTORE_HEADER'], $databases['db_actual'])); + echo ($msg > '') ? $msg : ''; + echo $autodel; + echo '
'; + echo '
'; + echo ''; + echo ''; - case 'restore': - echo headline(sprintf($lang['L_FM_RESTORE_HEADER'],$databases['db_actual'])); - echo ($msg>'') ? $msg : ''; - echo $autodel; - echo ''; - echo '
'; - echo ''; - echo ''; - echo FileList(); - echo ''; - echo '
'; - break; - case 'files': - $sysfedit=(isset($_POST['sysfedit'])) ? 1 : 0; - $sysfedit=(isset($_GET['sysfedit'])) ? $_GET['sysfedit'] : $sysfedit; - echo headline($lang['L_FILE_MANAGE']); - echo ($msg>'') ? $msg.'
' : ''; - echo $autodel; - echo '
'; - echo ''; - echo ''; - echo ''; - echo ''; - echo FileList().'
'; + echo FileList(); + echo ''; + echo '
'; + break; + case 'files': + $sysfedit = (isset($_POST['sysfedit'])) ? 1 : 0; + $sysfedit = (isset($_GET['sysfedit'])) ? $_GET['sysfedit'] : $sysfedit; + echo headline($lang['L_FILE_MANAGE']); + echo ($msg > '') ? $msg.'
' : ''; + echo $autodel; + echo '
'; + echo ''; + echo ''; + echo ''; + echo ''; + echo FileList().'
'; - echo '
'.$lang['L_FM_FILEUPLOAD'].'
'; - echo '
'; - echo ''; - echo ''; - echo '
'.$lang['L_MAX_UPLOAD_SIZE'].': '.$config['upload_max_filesize'].''; - echo '
'.$lang['L_MAX_UPLOAD_SIZE_INFO']; + echo '
'.$lang['L_FM_FILEUPLOAD'].'
'; + echo '
'; + echo ''; + echo ''; + echo '
'.$lang['L_MAX_UPLOAD_SIZE'].': '.$config['upload_max_filesize'].''; + echo '
'.$lang['L_MAX_UPLOAD_SIZE_INFO']; - echo '
'; + echo '
'; - echo '
Tools
'; - echo ''; - echo '
'; + echo '
Tools
'; + echo ''; + echo '
'; - break; - case "convert": - // Konverter - echo headline($lang['L_CONVERTER']); - echo '

'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'.$lang['L_CONVERT_TITLE'].'
'.$lang['L_CONVERT_FILE'].''.FilelisteCombo($config['paths']['backup'],$selectfile).'
'.$lang['L_CONVERT_FILENAME'].':
 '.$lang['L_COMPRESSED'].'

'; - if (isset($_POST['startconvert'])) - { - //$destfile.=($compressed==1) ? ".sql.gz" : ".sql"; - echo $lang['L_CONVERTING']." $selectfile ==> $destfile
"; - - if ($selectfile!=""&&file_exists($config['paths']['backup'].$selectfile)&&strlen($destfile)>2) - { - Converter($selectfile,$destfile,$compressed); - } - else - echo $lang['L_CONVERT_WRONG_PARAMETERS']; - } + break; + case 'convert': + // Konverter + echo headline($lang['L_CONVERTER']); + echo '

'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
'.$lang['L_CONVERT_TITLE'].'
'.$lang['L_CONVERT_FILE'].''.FilelisteCombo($config['paths']['backup'], $selectfile).'
'.$lang['L_CONVERT_FILENAME'].':
 '.$lang['L_COMPRESSED'].'

'; + if (isset($_POST['startconvert'])) { + //$destfile.=($compressed==1) ? ".sql.gz" : ".sql"; + echo $lang['L_CONVERTING']." $selectfile ==> $destfile
"; + if ('' != $selectfile && file_exists($config['paths']['backup'].$selectfile) && strlen($destfile) > 2) { + Converter($selectfile, $destfile, $compressed); + } else { + echo $lang['L_CONVERT_WRONG_PARAMETERS']; + } + } } -echo MSDFooter(); +echo MODFooter(); ob_end_flush(); +exit(); diff --git a/msd/help.php b/msd/help.php index bd964f0d..d50ad13d 100644 --- a/msd/help.php +++ b/msd/help.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -18,62 +18,16 @@ define('OOS_VALID_MOD', true); -if (!@ob_start("ob_gzhandler")) @ob_start(); -include ( './inc/header.php' ); -include ( MSD_PATH . 'language/' . $config['language'] . '/lang.php' ); -include ( MSD_PATH . 'language/' . $config['language'] . '/lang_help.php' ); -echo MSDHeader(0); +if (!@ob_start('ob_gzhandler')) { + @ob_start(); +} + +include './inc/header.php'; +include MOD_PATH.'language/'.$config['language'].'/lang.php'; +include MOD_PATH.'language/'.$config['language'].'/lang_help.php'; +echo MODHeader(0); echo headline($lang['L_CREDITS']); -include ( MSD_PATH . 'language/' . $config['language'] . '/help.php' ); -?> -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-0FcIH-t|)FhXZ`pi3NWpAq%Jd zaYa9RXaFfOv*p3R=T-dr%OTy9>uc-HBi!XMMc4E~ev-nw<&V43(zUgx{W@s2?RDUZqzwGUG{dz)ChW~DX>D1KJ9B=7efE3>! zI(<#7G{TbL=Ra&K@-0{_tfJY`$#JAGfaYo#78YS=dx2Ea{CA;uifI?+W3v&m_jiE6 zd_}mso3oqwN&Z!!`0?28H(pWct+%xlegbAG-DJgQ?{b#2us5A|X>Vsor)z9HpG{Pb zFZ}C^=&oR?UbuAWyeTyF=32G)j{x|WyOC=YwFSzl&y9&&p~#))V16Ch+S&a%ZW$V9wJG(eL-sODv6>)HI@V$0zcXQp&-X5Ud ziHMBk^l|{dw3gZmGBx~hpxQ=jTta>sDcF+|?Mm_>ZFs^ryam?NPbvCDt;C_EB_#QL zzWf#p_}|q2hyOJJkbKJZL>fIQIVJT5gPE3|k;%%+&dI%*mtRm=R9sSetE@mw`x^Uh zWmR=eZC!oCy~d{I8)5?Dg0e0x54s=rJbKLO?W=F=kUeZ@c&Y#C__OESiOH$NL1*aj z$lUb&!r~j=(&UWdrMZtI+HY6CeEs%)jq!eY<=5x+KU;tQZQq+Y^Yimm0c`I-1 zU}_y?CYE~PgDcgJ|NN9YTM?8Hy!7MqLac8(sN@w6LwgP~MByn3+gPz*i2?{vtvTx+zkjl-7uaVQv5+tl zwe(*QMEpI3s>tYkMHTqGVIri~v4Uf&`{E#o6Ei*v>7sX5L}@}NeN06aY@C-^zb;C$ ztPXsuD&>nV#Ow5?D&^@e0{Wjr2y)KeHA;C%GDwjlC95bG0QOrVLWY$$IGGxlPu}t2 zOZjODGQT(FB#MJI+1Jk;w)HHF3iS3?a|-nJ$uEx6TQ0vMJeLJKrFPppGj4cdxws(W z>culMF;TaJ)W66B5(<9Ad_c*wqYx1B`EdA1l60+7dC}nq)dlH~<|f3CTI#ESQfX{x zWzZ#`EVmb*p4^E9Q!R0IiZI4!K+y+NjVb-~`AmIF$fpktUdy!s7Q$T8KqDsu18)x8 zy_z9mq2Inx>cr!!<-W*n`uqs$-ldAx%;*;AT$n7n(ZKsFe~)u;i}S9LaBnOyDM7SA zo`3F^Fk4D^A91}5urJW(JW`A$t9$P0G;XR#cqM9d306I|l{!_zJj&XKA9Bl;yzo8= z`A~CJjVhg{sy<@rWyE;e6oFsuMCXjOSv>s9xR+_=e&+o%gPf?~y>nSa35my_nEk0+ ze#t-Qsz)Z!1)3rSOsv$Wp}Sm zWLw`ej~KY#Om zeq+3KaL}s|c}ak``)_UN`|h6NBWkIzjj{6(h5hg4uK!G75%}8{9PmLV2%LcJ?inU* zd0<6_2*yyfbD|}RoVaF5id)tPr*HpvgOerrc4^wc{Bw-z%Nv0#Q9AyLWPalrDAQnh~w|`v~ zkj3_bgxvo2b~Y*tfMTjF$6PN23nu&E)NdD{R3=*(N!5V(pygAwhVu}Tnz!ai_294e z;H+!@)5j}*KQVi$>5;ylj$&I`ig2@v{Y(>a6yTZLMRsDU4+nd{@T@fjlKr9Om1th4 zsIC1ijTmXLb6T6JEK0JTohaIQ8s=$3HyXCP-R2SoUoZ z)Bmc{Vom3XEfVI}cK=>k0$zdBD-7ZG>xI3e%F~zJ$^1VYQAchfJ;niODK0fRAWwBU z^RwQ9&Jjfh+aB`%i8&DNX>n6vGCO&Kq}YB$^ZWxdW1F0+G|_?odL7Q10lys6Z4^iz z%d>-vqg8aG+W85q)POv@>TI&}q7M&1PdbS1WK<5pmL z6vZEU7<1{D@Y_c`0Vw(O?MfpJ6e2m6!lx^x(blJr)U_J+i?TVcRde+gtrtPr2QhAU z)K4HJESnj44JfwWp`ycnRn9+Je@R*sdaNT@B;PG{S-QDG8}&}IIuE(5Fb{RDQXMvBxa zds+mkAJHe{(w2_H`iBmuYDrJM{1ti}m#6N3ys`7;b;4RXqBq#+1oqjLb1!d-RhyeK z;%ua05z|L`@BdE3i3y|{(>UrrBR7i|k{!PyC4mRw`wj}2V>wZ>>2IxGA9%C5*dgz~ zHyibm? z+oG?(Ki<3Dkes<`KMg4DTW+P-kn$b#UIQjNKm7#blk4OudtsIz}cqi17T_gr?XeZft^v1*ek&{S$Fo zEOIQu?kVzU!3(rDS<2?aRj4S$m_+;+f(+nzkSXzdn&S6x<5wnKVL*_-0$y<{>{oIS z9s}aZLB81VFHZdH-z3O*OY4n~jz14M{f@lO-$dR^(UT!Y>}(>%^Ysono$j2a6e|QU z+2#}dl)n5p7fTAl5_J$0=~)@)p+!yo5O>cO-r9UF_XG$QC{noPZ$G%&X9wcHttvfrf-VKI zM;rehNs}P?9&3UIVnMB~^prm!^hSp9O6ob&42u(}D;TeTGhW{%1;Ssbdl69U1!gyC zDDNtz)~n{%G0AAVfD|AuuU${t0(Aj>G%%Uf*u`A=5YeB9qUc0+SDFhtqW9eh6;y)l z7|S#FrA9$ED-l{MIsajye%Oo@4Sw!gXO8}> z98kimCOOVJESRz)>9=M7 z-j)-{^DxdTA;O&~L7FV^PIeY~vgDZ_OqC124?Jy=f@t_2B>P6K!QY^7 z$&-CWqHond$uXzjF|$W0Qyk;Cw(DDWOf2awT9;EWaQn|EDhu^!++u2{MkLZ1YIVC) zrQBaJnPhyE#sx%Flf8>5wM_^$4!orE|1E&V>@)k{mS6Nb(?f%*Y^BVRD`0P{Xj@^Y z|CZix$qC{Xyx%HVLDyKhqJ*1n=|_c|6y9wC!De$*0V=|64!PQTlhUpsgsD6po^$yD zqirj*WB9Dj{YtnBRd|$H%Ldf2z^6!GO%3GeNco^7B-I3$@Icjx1*)taXfwgbNS^7i ztFF@uI`^@H5L58RnRbj9ow1ehefAPm!i(0#&&aQ>am8IsBSP+=YoUKHrVv3C>TI|P zNhcg)++Mr1QQ0+OcaTtS$zdD(s#L5++p+4p8RaUxyaZ2S8x6euTK%B3??Ftn2(x7D zK_bY@v&E_7^&7U9OL43M<`(EjL49>;QFd$j?(27`yCrn6 zG>5o%w>uWwbwstx7PYg8AVBEwt7DS{+g<;m9XQ|xViU0wdWa|K!vbMs(1`;V(ZE&a zf|}T7`hn*27+`G90dU~s{)Iq){tm-qp@gCWEn?1vRpHMr*8CZvPjg6-Sv}Y=VtE~^ zhV2X!3|HYvT3|aB`{7Z2a2XziX5Do@GDx$jzQ_ZwCk-L2btSo^Ch6YE_hx)qYp^qY z$mQNIyQa6tMMi)Hnv%<_VuNbxge&{TjqkzMJAbGDZ zr{a${0*}c!C7nB=VK|)wTqf0+%|-$gpSvOoR+VF}fZ zfj$_BI0bHqQG#Hbk6LwZ+N;jpwUZf(Hd7Tco%c158;~y<7`K)=3c&UgAZImTp%`ct zesF{gi>pWaV6+UIxe+VmbvBk@5c%(MLZ zk@xP;7{o9RIJzG@dZ)fGrUZGnd$et8FzMf*2eBcS8FbbE+4lVNGKz9k_0!NjPzUnR zG4@bg9Bjh?-x|xA{#!b$KeB5uv40#*!m7Y|uyYzJWd=iMNl+NEr!E#0JPXimx;MoU zM$!}c%j04@lNt*sHxek?J>i%AbZn1Djm-G80e)sXY~lW-7Q650!720j=_D+az6z6@ zQ8;*Z=p0&LVs-0tr1cNv~&KFbcG=4{>g@sb@K}%IxV&aY3GjDhUT) z!HG!!uNAVz1s?3ae;QGhYYLUlP<6O(qD>_w6hy#L@CIq(nqTYK+X=>V=zB?aRQe+5xy2w zn?9*kFx;%auqZUuWsedib|sf2L}|>vDP7!Ox}YO7@Ofu3wE;oxsY@4l^LzZo6#$q^ b4~oJpZ0@|-jWbHy2@51Z#ODR50D%8LvD+tYo%i0nfBpZO z8P;mf={o!D+Euk{%U8Q2loX_p;PK(Xz`&4Xq$R$Bu7jY@Dl9bUKPSmK2IvCkAg$#L z28IB-N5B9FOV7jw1A}g|RMm9Rl$YZ(wzp*hn%EneGI`iKfT+R11cW^tfX3FQE~G}L z=9YGX{t4rY=BI z4_g~MXFd->@_+E<1Ks~^W+o^72Z@WdAi3z@4oNlTl}N?yolHr&m{=H%Sy;G8xp|pP zfJQ)LBO?YoY!3X=a_HAWV0MpkxJHda1PE_xO=J{FdL(#hMKSekkMH#%-r zR!%+;5gYG+Aq6Rn3D5=jza=&?<} z#{Qq%WyHmmob1gkZ9os4zeT4^ zpzR2>`OjScN@em_Dq}NaBU290R$=AjV&pO7FlOX64TADRPV_jgAKk{kb31yd99e>GeFPxJAA((}LGcegMF zG5ueu$UnPwwl{Ne2RfOGnu8|pf2)7Y|0~Izfo}gBxlMVDjJSEs7|l#fLDR;`!N~|T zGcyG(1P^G5S$WubO^yCz-2Y8(kjirKadPspvi*n3{=X6ZUvpw?0kktW1sPXn^8XKm z`9D(1e@glP9L#^)fB*jthWW2a{ik{{|98#%$Fu)renAWQk0y{!|9ksyZvy)AZ+~QJ z2bw1*khhTzWbOn5i(!+I5LNZaJk4@XRh3-6_b+ljAMy;%l;{GZOZ{YooEu=&eT&a} zzu_1|ToY4xaD{#*QXu1x5gQkO zD4wju5fMb9<`X!)H_%rLF6yp~r;4AGV&g2@0+!I~11%U77_bLOqEX>OtCq&(1g*G< zTb%i@YqmaqO}{P1Z!PDUeV4Bzg3ZmJ4Fuf0BrD>_d=p09dNLO-EU$`kH)usI0ERWc z`Mu&)iZf0(%)6r_O8U7UfQ1i0Q5VFb8CyMCTv?s_o(6r0AiZ3D5V-wDuKrV>7QZUYAKOE*iW3UDLJQG?mHs$vOhyPKdlN=}-( zXa}O^&RAAz$s?9Bb(*ohS0TKGZN~II6%WNJ6x>?XH-i08&+GhY>XFTAUGuKY@tprU zOWd2Q7TynK94Vie>U=_$6%e+!Q9hx<%)GN2mD8iOEmCskD<1>s%3V-SwKv^v6kYY{i&stDSFd!qFOnB{ zaizx(BMuoQCPh8ugs095#V?7)2<3Sk(Wg4(^w(ExI=-RS*P04VFc)zNYx4Yx)o`YF zU6l1P(TRK$skSmHsZ)gWqslyIUW5|%>bFl)0;17=9Dx1<3nI7^_kKI#nfLWgeZJB7 zL*2Jsw+hV#AO5MevtuCtBn-H$n^d+fwJ`S+xyAYc!b10To}!O8>X|E zV&Zq7_Db7`s)~AqOnkV--d383~ue=1ImCVB3HBZoxII>le+&Z>WM$a_95- zW_~%CrLP+i0|XL9XG`G_XmN#OgkO?#dN;73IPh=dVdszW{caC=_u90(t2R0=?awZa zCTj9$tSVEHg1eQE)0=k{#c{Tz5i{mQM6*MbjbW4;nvzZ~d`>pn-h_!<*I|jeXt4{_ zvp(x?@#tm4W}U-kt;0q_sJA7vmBdavA&ktsIZrhBk2jZbq82WZ^x4b~7nw}6Hc#Fb zWxh=Gf@ZC*sXj|nPNV`)Kj4w5CIA&yl8ncYC8SWjePeQPnvYousn-7Cb8Gu|pEcRi zFus;o#NyAp2{p)&xlMh2{3P#k<_$RlVQHXk(-&Z*US3|9*OW0_-FjAW;SZa!hPDjB zdL83r=m?chsARddNk`Bwof%Wka$$275N zftlut=(tbp+0x_ky$mU<4JR@ZdYd&|s=7kZOH6sv#T~7rl#I#mw?n-UVOd_6#7>#)~6Bp`r^b5+fQ;Zdte`Gw%K>UA3RB++0t9N*0PCUaVp$u7c88tKR>npB^;(>3V_R4B1o;&1 zl*PrvyC#DIN3$=xIS(NfF%BN#G(bahtr#N~P7a%BZ+?{da2ALx2Pk`n$B#lFgqE)e z@uH;GTqE9%0tgG&!^jjBL!!nYkPAMRAguwzM{vGrQjUYQ5TE&ztKP%Jd+Tu_tge$H z$*&#L$G}Tc;2e-=3$~UdtB?``R_4E0Tq_4ZWC#2zQPFGsSnu0PZbl}L$BoQKjp?sk ziAE$=N>rvsjh>u7?>9+Q=JqG;&P^99roWkELlJsHL)g$6`&D)pOu>ptDm>8*Rdg{> z6?WErnxS7%HWLL1U@Oc)vCNx9NdUyYp2kX^_ox%ARWw3t1kBs)W!}30Qk<1Rod}*(%n_O&iIOJH z%sx_y8P{CqtldtoW5D8MZhr zyaiV1`*>JQUHcD@ZpNVl6cy$4fnLWT_F;j`iMU1W1sPXKA^aFI^P-eLQfHAvzl;9# z^~rqPa2WWtV_OHtd=o&RE+8g@v?bEFYdv9nzdPoh<#Iuf=!1nWpp86rf%3%0*U>H2 zS&(J;L!`zfn9(d| zQ48;AkZ7U%yQUZ09n$5G=-Go%&;2(P)e)BlgD6C5`in=UjS^cNz zqP>X9h=|pFI+CC+{1mk!K9vE;2x9}oou|@Xz#Se(rJlCJ_yFg+@&d#~c|(%Aur7Q^ zU53H00tk#}cGsC^9QYyk3M2)gNy^H{63Uq4JeJIMtvm9O2sWuPUVhpu60#X#)7!Jp zTRqHvdx11UCY`DH(a=O$j7-Gs_S6_Ohyz%$Dkrgqvm?kxvzD;^koGoC7}4i1>SUcsTGU9mdN17I9EekcvU!k*79LJP$_G z+N4ILIZ2nebnArULaETm-#eoM4VzU;$0#>Mbf@jtGKS~%3;z@YL9+1T z@z~-<2+df`m=_=#p#a*2zo=0AeyYLtL2}iozcDOSio1MYerEE*6X`cXg~Q-Gwh(JM z|JF~ENTwSDjp#LbjH+Gc(|7Hu+^V0%ql$ScX_TwhX!MYOigWhKHD;~0){}(__sv7M z80SZn%TgFteig2({F;Z3E}`oxv4GnF;xT@+$LZ6=AN;Rh1gL*oA8xp+^~Xi+<%G9_OkEL;7%gT`nkGpfx^T+;R#Kg) z+#xg2O)w}+OF!Njj2{4FDcv?rnI}Qsn}tl?6FPVo{5_tSiWtfta{EednDT0tGctO) zapjw?rxKKRa=O2U9@m2Fh;D)c?e_Il}9eINc zy}8G&zU}(*hrxAv@0#7o!V+*Gy$!O>)fbOsKJRzX!(Rw#;SrC}AX9xdX_Nh45fXWa zCTgyq76`yK>zy#-gkL@fK_{WcN?6*vUJYX$eEoqZVQV3O+4SVdsY~rmY zhu^QEnbu}aRunt>X>-Y-S)@qxlZzJxA^U9F6mLSK&jLB|OCEwfWvom|?jh%~^=#-l zs>GfbC3=L4Ew|y+o|y>e0e`qp;gPz5Wr7m9^0pg+n6eUtXw&&3H0CZ&ULOIte{{_~ z(_Xvph@ZP}Jt!cD4V|*$fX%I2>tO}?B;~MEISy=b(JnL2ugb?JtBdK;3*B`D=~H;O zy%Y*5juH4*$2%ua5?)4u@Gwy_D{k2MgC?4`Av)? z)O{9-jXkj}8Iz5IcqEosA>)RLhCE#)y&n(x|A@> z06kd?B(iFr@AianYv*A7CX@=IF~N7e)kzte_h)8bqCh@d8UCgev2?uj;y2Lrv}r{| zNUuKoc-V&nUr=MM9kon7ubDjVdEc(M1U}W-`vR|co`4Lmk43zgc?C0WETXW1TqFOrz2@M$hWqf!3c!AcYbacpGl4(1e$$VAqc<}6G9 zOO#i%YNXgI@I+0&KtzKU5F$UJ00pRx{5F=GxBSaI#|c3SvGztvdULFf==lC#gr&Rl z7~)H0J+pW4oDC^vB!m*k1zX$uPw>(xniOsA{kd6ib+|&hnL6UYb!o~IgKoEADewZ+7|J>feo|KvL_Z+-Dgg!{uY}jTANP6N3b~^u;`W>A+ zd^v5Tt=^Ng_1wLSjRtnxREiy}qaZ$Jf4%j{v0oYyowu}e>WY{#`fQIDh7PezlRy|y zka@xn2VFC0!->D`sepGZAH%>4Lc%2-fXg{V4bJuUcO(b zkz6om1q!fgT|H8r#(!k`P3x;_?AAES5>&KaF~*FoscP(F#PrWu-=>QO7ND%9bqKZw zE73-F<@Om)=FM3xR<=jTP6#Jbpx~{Yq%xkfxUPrecabyIXZ&Qh!g6EcsBT}1n=e%< zFnDQePP6PGTD;R%uYLBkEJJ{ztv(FzgX#t5iqCgU;S>(xbp2Eb?}g$EN(PU8*C_QT z&^hKep(vuj7RN>G9izq@`x3;AYg~c9;{VgRw%*&q(zV1u-JeBHzR$ixo62!{_GvWCbeU`tj1*L2NIP~8A+z!c@4s_r6EZR|e+-UIisIMLy51%%(N*C(Mx`~* z1fn11(Z|6jjSK`7Ox; zW!k|SbYv-3e3#L5A@D4Po@Gv?gsKXAa}l+TEQiPMU%%y5BI><}L-r_VH$Ipk`tsEK zteuA4gPpC@GOm$bO5#~;yfYtyC#l;B{U$Wf2=6Z^%?hN&&Vp`JMu_L}^n_Nx(-Wx? z{^G0=o?MRlXnYLeD=8b`5tV~%A1tB+7NwBKGoTuLG`N;d=3ACrwkWqqlv_oWbRgB( z#sfeSJE%n)uLjy%tosADwY83Sf2O?{PFjOJK7LH7<-qBC%edn#8Gnt>l$yX}uT<&U zKy9cA+0UR!V^y@xy$Yt?KpRGrj#vO>n#d#l-9M5VS_Bp{ik(#iDa~ z5Wxe3*?|~_7g8;ZQEzZ=zujgoT@&_l;biYt3l@;m+7ZSmv+3r3qVof3x7JaY1OMRo zLvOH{Y?-Hupqg8a2`jf)T z1qMRj_P4g!<}i{44mKYLI8bT@TwMfb@ID#-P_nHl;K%GCL0gQ$KYh;hCwpoewB6wW ztzuAv!r1fDhQH(0R*TMOc^zv?9N(s9+dP_5v!Le9kG96E@`gvZJu|?Ws*HCLN}K)& zJ4)s=&BA3vy!q@kNqVI-1n-(?eTaR=D{9hq7Nu?;u3J#3C~vdv)ON!HsOP3C0GaX4UgPY8|Fn{*7bn?Aj6<*+E7I{0Rcc&o;59A0e|z&bs{`iL=Xiew8LTkAlLAM1YDJ6@{~GN{8)J)I6#AlS_;rFiq~@NsY2AUm|*MBT4)rp zpEP1UijdfO{NzjdAX8GZX0-TA^k*vo77as_p+kAWAI8#k+^uY*^ysd#O1w{f8B||aWEO|C(hQmu3p8N9@TDMEk z;{q>KzYnvrG+Yea(5ab;Ju>!I9+~s+FHZAwYk-Hd}A(KpCDSCquT5qMp8XYhZLwTWPU zRenJ>JMS*JqKC)XsKfLxB02T4xMKlc(=rJU=!$Dt0ubgBTlHKrKcezX?2FMx@5@5&M}^jii)^pnD%{)5KArMmlW~$->&$OxS1` zgddajMU=o1DzKkdv)TD?BV_wt%Tg0_B`ndzy{P0UGIi*S#=4_QH_~`Q$YpRO__~!W zmm3#EapGG74 zk%O`XqMvc;Gn{p++8W{zNk(<&cGt%eD!ZNvtMBl@RKI7a!r$=?-( zM;02sw&cmjHsXhP=x*MJIxI#r=&XsX^>bC?cj4r(zYV?XHsn6|~V$PSjT(SKz9nrf%cB?#+`ju93cJ(+~Rz{X(i4~Q~pbwE!XiZ zAGPE7*~RrOPDU;w?~VoL@9{7*_llj4x56~XiH;DR5);Z{(E=!YSTW_~j;Bu}2JhI= z*rfAonRUJfADbHGJZD~$XTjm4;D*a}_DU@t;KUp6c&0moYi92;2R}|0xA?-x@>60A zjz)dJh9~y4Xt}!z|Ip z-FurRWla1vxa&I?U)U>%urs(S$;suzkZ2zQVWRD>Kv(6Alf{^N**XROSC$jqGB{N0 z>pJtH4;e^(|KMHCsU5m%0HXnp?bO(?ZL<2@KCyx9_zL`Lp4L325(5j~q zodO)7^7sQr>_E`M=Cn$`35Jg~8I zcX3MUig;{azRT5}$HzW)wquOgUed`y@Ez)#iVk8%^E7UMO3=2GS@{P$z@?f# zxpTxet;Rcv)e<-+^3O8+lVVb(1DfF|6*uogOnIt{T8!~QPJONrdDW4OH;@rJ@`k~q zl`MGlHkn7Un}%ltzMPzaT9C;ewnCUeN-sBWE@;fC6DK@iURpMcB#t|n8#k}IHA3AG{C3#K5WB_X& zL1bVXUmEs`>AmG}+M+RXzl5f~+&)xLG#At<*F^M2m%t83XWBegpCbeeMhpTYtCt zG#4hEF0D<$zxf*@8&WdexMl_w+qXIU*q69d|J?AYLt(&p7>jA| zG72vKXT^o!i`ew(RT1AjiLX#oBsTY``4knve|n zuZ^2ZBhEN7P@vY8R*ykOF!T_Xt%z(Cc0&4t8qwsuJL(yh0(tem3tzH*_%@JIR64E< z<=rqi>cWepgK97)&M#eiw%$YangQfNr?M`Jx@#GUi{1Vhf*iG0dwWb6$rI)^qtm{0 z>@Qb6xm1n>S;h0Vb8xnZb^&&U7PtoH=pL)htrU&Q*D^I-ueT{VT%FHwBT_;X+bsDr zmf?Iid-#w%hPp`3IQnZXV+ji$&QKV!1Ubqm{w&>+?(K@XQrgEZCK>V{lQ%=6f9*8B ziqv>I8w@AhbQ!a1(jt)GIlPEM2Gy)bE2RzDRWE^q9d9=oovWr_I0)p;du(Q}PHiv1 zY;!*cHD*vS3q`(^^Q0cnAqn^_e050AD_4o#q;hizS@g81`m%o48%AGW{aQC?$lAHj zrCXKS{B(U3Qu1_F=kM^E_QDRdq0-4%9rZqz%!LG?Bn?njmT`IS{BUKscn<{M3%e~I z*n9AoCXFvABba5m_?WtRvL^*0QxJyS?EXjENzu=YAb$zwcEiP;N)5-V7nrnzj2o&@ z6u-N%44@`t`IgQmMQzFDEC6)>ZhE5gM`vZQm;Js_dnvA1k1qA$m@Z$PqG-)S0>7#r z+IxFMcVjzHlQ2tk#L-+)qG(1My)sWP!BaY8Zb4WRVUVQ)#5ku91Gr8BFm_1wI9kh@ zdJ>aMXGzVfJ(!u?2d=l;Tfp|*IxA2evs~{NokaW^OZ-O^@Lcjm6Hwr&^=l@Dl(R@h z%jQDTs(**vIK{y$gQ}zzOGM2+s=K=Kn*YPn2J4GwBBS#prQw;LhHGzdp`qxP@fjpLjbLvSj0hklr*t(`+^ zq~Mq7v^NLhvD=wXL$P~)RN)=E;45TaA=Xyx+@YKs4Py_UX5t@16HEde=du_xQGyDyi%9mug+VAH9^y4S%I|am*_il_#rEbIeOO zJ9l-?dKN7PPOIPOd&{>Z%(&bcy2S^=+;?GD_Gi^pZqz)V1-jM}NLxKWfo#$~Pwdls zWj4}HxNRiBAKI!Ndb(bm@J%O}D;SF0L?Gvpqo>#-1lq8BS^tY(b=_`<+l#at@z-cw4 z-odWtJSde5Tlzjl{DGVx#*r}>P>(XD4sv>+BaNC{J!+}=mGkq+Z_Tu8*!60F@LkVc zdRb77#|aX!2G5aCj)#aEKVxljsSMqyODR!_GI?nV{jK6>=eHS4b*VWMNlD#JJ10?N zcl;{AJsSkx5!>M|?FCXEt>A2&*x=1iq$+&LJhm#_@kT%V`UW}IKNNGs?JR(T@`c<4 ziTZo#x)Xb0k{ac(ra0#VJ|{0w@{aA(7|UKH9OL_7HQ(;2AG&DK71rUje`{Xt$90nI z?(x>ukmmI?^*6)x@BtQ63x8`VCs1iBXsDef>Q**8D8U);w3{!vo}oN>e;znVbv++R zNP`YX7{&e+8fq8IYs^gCMr9nmOaK6&>fc@IS{u~6sG-Sl#KS|(*G9UhcN z8}E>aaG^h(-_bF^nnKuRyr2M4258$5q5Z;xY1%b#!ef0*A=h;4kliAmJz$mmbwR74 z^~YC5yE9d_?;so_o<FAW`Hyzaplw%_Q86x zOPA7~8=|&E4@M%tr=^E46%+LwO_v_?mpA=w;GY#;X;dA%keR!r<1USP0*aafhS9wN zs~a}6fyx7iWRhQX&~YZo3wS_YO{5LMfb`ppUH;F`^e>WY+cIdb+9AIIK_g~~lt$N# z%A(cB>!==lpbfxtmS#Y%V$`dF36;_UC#hWdu-KeU*dz;Iii)88)v#+lh;mFxu^FP) zO{UL;gW5t<4dyKCD_NR(l8KQsfA%kkeAcN4Pp{uBHFTUWSRo&H3W^Rd~h zEO4eaO(#lyf80~3)|)4Q*{C0qY+#5~c}8&G&k0q<_dVCrh_zv^n(T#xadPx<=@63y zIRQuRTQlE^Kyw|s(b6wtL=wv3sQEglA|88f29T$8_q;a-#~Yhs;4e`c>o0{Gp3ocQ zn?B&?usmOV-fhovzQ(c6WMi|)bb3NCq0g@V^mE(oyMZDkzfZgShAI|LgX6=zNhx|4 z(>8uHen0@3$y8}T=Air8|5O8(M-L=qXmoW}c|h(lz_TNk9x7yE&|lVW@O8~EBtUCB zVxb*F43^dXiuv1c29)W-h?hg4#mTjKrnj?rLx4&zZ$sNmN$j;BGOComzz6q=>0JdQ z#4nS!g;6#Ys3h)i1&vMai6;XIcZCVkc#BNQoN~pO^LA9Ec9xl<9K}7RBsx*3To=D7nnq z1rdOjLQ2L52myh@hRCBeD~KJ!fC1WP4EM@Vfa41OOg&lXMaJ^$GjdZ-~I)o*-D z$#6VVlSVh=1qXb5jv?q{UEN zCXx-5oU1dTrMQWF0>MN#>+f)FS`(}=h~gD9l;`Hn#eS!Ex(U)MK(iK&B{!tmFd!%w zXF>TqT>N?Hb2wqPD4!lU@25j%EKOz{7I{LCb6GK1GLRKg=)C%tZ#{c0HQ}e$sRePM z2GL^^c=a`Khpy|~{f^c-IMruM_s$-%U8{4*=zMz=@6aI1FL8mk72who1Y&{Ab07&m z5FXdD^qkXrS9*948REPF11WBYh1jCjDY+eWaU6^)=5wP`(7I6NKA7{(x_2dK2=DN0 zf(w>M9F*Um=^v~fjN(AbVPNXfr#^}p^$Th!xs)9q8oR^|gycSIYmKw;-}P`fYHGKb zb)T-E69}tbqYntOQE(BDQlrZ2$LLnJ znP3pN3`OqIKJHvlO865Kj?i=|k7_J)t#H22D8q0seu&h@n*uU;9O$5e4sz^)$`}@N zN_-kzSaXS-=?M&Ez$Afd+V)QiLfJH;H_|-xWMO-o6fPl|Lk*|nMylJv6DbV!?4SSD7auXZ{4~7t#>c^ZCJ0wft$Z8o=euY>Q6A0Hd4LB z&(XhChLU@Arv+@;z;cQreppJm$#gw|_lF;;UXu>D5ucw@KZR1(!ljS0{Aq|XMp;cc zu#^36FGks&ZfSZ7g~x|zKnl_GrSWq7q3L!V#Uzc9h|s%#z4)ChEk<1#vy!)QGnQ(! z-J#s7HaRxx+$RT0ky#v(R>H<|LYq3GL3pLJ^hnWor7e_GFnZ@Nq>3%@$fd$0oNjI> zh+YN|XCMyy^*0qGry=Bsjsm#~$&VZO_+lSCfI`2q?Ah^~M1f-^@2m!oeY)B1)Pdr` z)d}*Ct>e%B2dT0s8sfuRu55OA*>BH%><*fUX*ymQ_^HQT4Thi&>kuaT%vc>jsGR2I zq!F?A9t3gQJ~*Q9XEbM25RSg>7}zj`w8aIT%wJU$!sn_j&y1~!?!p+5Z-;pbmm!IQ zj}(vW|0N8_{Y^pE!I=eXABnrB&{4I*y4Llnb4C7=2KE_$ahjuff%9jY4voalWGkz6 z8YL*HEx%XSW%O(_L-l9*HnK+95J`D_ZhJ4Hncl>EMlHiJ?>@ZNg8T!Km%9ZV_F3%O zkI-zgkl3~P^J*vjQh7lbrYHj?C*{46SeLCn-n|{8>d;^|uI5(n+DsRII!*C|DIL@Xvj$zv9##}y+8f)!qeYlTd{ z2lZodmbc85LIc$}mTeHuiW>$(Sa`u@&frs=EpG9OmzgzmycL8$^yGR5gaqP5e zkZzPt;|_u9!H^01Oa~N;x^T?;|4aahzm5vq2@n>DX5dj1>jo)Qm<}f)OrCJiP1W1D zewvLoS~`aQ>lT7~dZYY>;o5{pgIU?+Y$vU|fbm4VSiQQ2TU9iQM^!xK2U{lwidqSD zhVH4CiOG(4K_n_F=ehMmNYq8mtgJ*R2F|puD(+Av;ApXE%9sjmj%aA^s8p<|Ln;WK z+0$&Na878O@zylT-m4bW(Iv_kCtKdhM#Nuxjk)E{byl)Jff9-Q1bSVP+3n~xUUUTp<|9W(_#8_J6Ij^vW;Y#3=QL+DXASQqx+ba9}# z@O91g_z#}vLsX2e>$7mzF=P%5YT5!1kfCJ0)}hbRU3^aZPVHoknX78I$vw{q6_J+o z7^&(q@L~7LjRyBFL8%t^&x;xT4fY4bCxpj^53{9)!l`e<5CqF`h>Txjb`o&ae@yf& z2uN6msUr4=bk6KTYkc3ce;ahlLe5u)eYQM-zvX)iW=*mRliRM{`GA{3u1pzfu5Srs zF@*eqrWhra)%QTGGPG_v;QwY!abw_zmKeY4-$w@0b0@Eoh+?ai#qr0Xg5TBnv+*rn z(vCU6WudW=1nKBkdZCq6&en9w#f19&zc{+r8&Hd6x0T8|mGw?$lwZRnS*8V`$1_~b z%+}L~_sb!I#c>+PdYJU{)+ps35;D zcu9<*uq0K-qStDpGThCPXG3UUIWZa3nglyz_B~+WJip$WZ@;xV!PLIoaNBVw&G(vz zbM)jG-eJm@#AFsLAUxAFnPDSQbeejFQ_#oHhCDH|z+ulXwc#2Xe8wx@%pWr$HzSGs z5WXTFC>x9UAoNl9HyY4?Q3w^Gw?Aaxzx%nPu@8+hmys?kSvkXFzC4(>nn+q&PJlN&BkcGhhS zu)ELWBs^+Oq8VN^R`R@RCrk8@!7iQtRycqYnxBx^l_uQXTL4h8ovcwbqI6k|Hl*zl zszlAAu49tcAR3PR!Y!V{od|^8x(eyCEAZMjq(0Y9Vs$E57>06PzLLq9WjB{6t#nNN zf;r#dMT#zNKJ9plB~{=aminD_*jmlhs5#{5`mSu2X@zpHQFh+Mc86JmJ3z=lu)Ta~ zteSY&LM?*mR=g0!@me54E1wxbC51bu=b5A_3%TrhK zp@a@!lleNs{Sv2XCm{%wWC)RwQEx6fR$|;izW+LacdLEL;n3L_p`n=D1hNVAIX|f)wcm?v z_!D$&Ndce2L_(t95Ww{fV3kx~WJ|Q-YJQ0%gDY`>@FQ3i@~A`*V5y}VP&YbNbj+gF zuYRstNFZZ03QD7062EL|h@EL@84X}y6!$4o;ty<4_EZb55&ZbRK-;T++_{5d+<>c! zuB`onIYiVVXvlixsE&nN?tp$7GKqJWAR-StC2cic_xreqlGkd5F|U^6#Pm^sSlqy( zE76A89oF14?m0N$%3NdY9#LDn#pl@9kokK}J>yI*vpJcQ2h#Kz9Q=UL1A>(u`meTg ztb5;coPE%Bu>z#m zI(AFQHeJomP4(=_=ss%HY<=(225p%wX}QKVaOI6{?7biFOs63W;W!&lGN2~3*j~2b zMqjeJb@TPt`pT6F9CmvTSr_-0zNm{=hD^zY@W`Hbreht!?lYueKJRbaY24}vh&3U$ z+rIfL7^BO`@fLC*nY#CoB0U6Lk&14NuDVx*BhKwQKqvHVu{TiN`72o87bdgm6&kl) zr_SIapRpS%6FrVfb_ks0a?dj)QG!;oiCnaq7ASI?I^dN6TIJ6 z^@DnMv}*AMr7K+O4AJ?@s6l~a1O8>57wL34+p*xtp!4U(RmNg+rHYx{hK$M;c@AF# z6rvM!{L5K-(P}xqg!CVbF)zQ5#WlQP%I5{>qHOU@8L0(>S1!5sOkHIa=j&*IOUp++ zdsZ4_Th(1g(?K#hlR=bb1Q}>WW8p=8NILvL3s%hKaE_L64x8LEZ$!5ixE4L_+{iLL zC90szp`Dt%x)~a{5tCmf9)tp-ho{{c^1!AbQV{GkW@Om)qX-pF0@VvCJlJnL6!R!4 zHq1bOsQO{y=P4)nE7~nG2J<*CTo!Zh0KK*6R@xq(sjAWWi&v%E&s7mWi_N^2lzbwk z&Zvp3&~Y52t800Ix62n@w;d29t1_e^%yBunAuM0^neUCT=0k~zhog`eE~H>{P`qS{ zlj}xlCfAqSZEkemclLR? zeywGLUnEL6jqK|r_-dXucDI%=IUT#b#~%x|nXQs-I`>+{a~|!R20DLARuI0)_98ij z6E;wU(J=61@jg}kHQ#xH60{<2Q<4m&=m(drppgB!<5I2A?N?S~hW7j!($(qANM1WZ zIJk}`3E$_Elh=E(b;Xuu?8(BqlZ+9rs@1wsQMDhbZrz$f25J*YMQ_YXh)^MH;iwp! zN2BF+in(O4A4*-sXrH@!h3#XJY=aM<_+>&|W zHwHE~jkddbRIq(aoFdn&iHE`F~%<9Z`Aof45NqUS_--BK#BFV{)IayONk zdDiet#x{TBq0h4Mz33J)SaAa5hgasQQ_N>+8$CAAc`rNRdGHqL{0J|LVFH;M_Hyq6 zMI#0{t^HX!s+=!8*))a;xE{O4ZL#!=AEI4@9q_d&usrNn6l#7lx2-ugbZrz&=`@?L zYMdSyHwFlc2Axm&H986DpW=MvI>(JhYm2<+J~0g{0l$2`VPQR64)I;DVfdkk*Tg8D ze>E%TRO=uAK9C10Qh~Q5$b_gjUgKYp_y+4Y03$o>|xRF~SwW17^pe4N~u;c|D;0{W^{i3A`M4kp%Q z)s;H@G`YyjxK})Lj(6l0yZO~vlsV|E-tpYo{}?~8QjUL;$mH1*Bh`Ds5pQAnX7)hq zYPyBR0@KB#X|q|TnDNkUZ9?dwCyqe#bx&SSL0a?W+n3Tg)k5BoM$nODoW^QzV8mM0 zN|dMUJj>2yNB8Ddcua$t&ppVLZXN}@C@B7w&GtzHT;=bha!LIG1r(~tbPp#W~xgQ>edtj`&9tKxPm@3+;& zYewIjq0k{SgrjLt^NL4frC@!$7^jpVv!)_=b#sfie~K5lsLK^E1B$e4?rSFyL-Qq; zYY155Kq7J~KHw*cj>S-Pm&Vn1r>^dl?1&38sQw-LjrAUb> zYCmuMXZ)mr_^kjH!Uz0_jTQ_I;}A)kfx68K*?greJ&8FhVy@JDzU-p%5(EP~^-WEa z$}3lDA$q(50mL7W*=nu=_pe8UH5Z16)NOP@^2_Gb?)?+ZdqmhmmElJV#2ePo@u9Y? z{z*aBBn&0B?^J()#*WSD33@Fw*Y54=(GTTKVp{R464WtIhOVDu}WDzY!osTA3E&KWWu~#nFP}@ODr=P;Pn5kM48yf|32h zQfP8tsKC-Gar1341V)%HqfgWa~O_WF2GT@HbX1j6+#oNnR< zemRf&iSyjdyK7#G?BB@fQ-DBvcIo<3d6}Q1Te zNhNQ_#RBtNHffhg21l1d{XlYzk^$+61pnN`&*Mod12Ub~M%Q%xpFj1BL^~MKC+El; z@)n~L4An$>caG8Zgk_D#K0droE z`G-URVOCa#!a4(%(GKag{XuCb@caQTiDERclq5+7v96LI*|WM4_0CBuJyKw}zb zZ3I=?fj~RV(_0OT#ZHV0y@@6j_qFn!eJ1^$At~JuRZQprqhJq?g3%TO8xWdZ9x{yP z^6I40Zv^^{i27XB2Jr#S_>V`n&+4dt>K|U9gRB&jL=EV5M4g4}UTbcXGHcyVc4y(8 zl{p;;>I7pxTL2yXjY&UMjFCpCQiYw z(1_>ya|UyI-4P|k^N(vEsMJMH+C=9#f`H^rHI%}-IJY-8pY~Y4v_s$-k3{&1%n*{x zxs$i(dgw=y38DX^fm)jucKV3M z+^VXe4!sY79N#tv0D!jT4t@!A(QHodi*RgKoCNfkoD7aQ!cx17?03ECN{ z3~*EjR?BXY?B=JzQW68lk1&D8N8?}mKK~bAZxt0s*M;2@2<{RrxCf_k*Wm8%?(VL^ z9U6xa+}#Q8ZovueZXpCX#rysL80Xxa3$EzyQC(HNYwxw@d^R(xt`{6cls|`9z;<%# zv~$m=h*GnSO|;OgYumc}Heptcgj+%ia@frS_meK8;v9ZGdlaM*4?P#u&vLfnDW;ON z+~a40SUK{^2oeW6y*U}ZOp{ZiDGw^;|F|vY)D)ym*t?ysukSnZgjC!`2#R;8L2m*b*x$nji&>`|00gP3zOe zuhzG;O#@S)aCo2`6Q(Xjh40qr`d3(Io~}!z-ObX#%v-dg*ePyMtQdr0H6Wzl#%Ahy zXkm;Wrcy1CaJVEXOcRIU%NfLQ9lkFpDDF1AZ(&308 zlgmSCvoe11B9!DAUcc9i7TKQ8=h>H!7= zWfk*0zBm{Afbrb5e?gY^C zGMB;bm<2*&2V@_P8*y3hR>My3BQm@<>1vx0!?A(}3oZ<&!hcw^co9{p8;#vrm|BPS z`OaAN=7-fQr};I;nK1<*vOj%8Zh>&TJJawwykxpr2>$8(0B^E~v=wqTskY|}`+)>& zknaavj#7oT&IxiCD;cE}AIuo^547KQ&K79eKjFU)Pk&y+Y)$%tpCXBByJ`K+tybCh@%|FI`3SGKzL>W1&53`2zMh_P0RDqI?` za-?r)f;X0iP!qEngWj%)eZ4F#LUMD(u_VEzEB5GZYsjBqC0dV~p^d$PLNyZnVOw^9 zX@}>H{fGrEkwI7^7(AKO=)<5a+Q*CG+#NEo<79buFdI<}+Rxvn|LaS>sHWl4XBP1| zXD{gAZ+f8XW|?`$Dz-=(Fq|dnR7}>(MlL39-~XfP2!Kwe%^v+pBql)AnT>AJRLaBJ zliomk85KR+WVCMskTQ-g?hKjlESNzC~N_)U|I{Ku!6kniZx2MNBV-G`5C?OuDA)Yl`6j}1rBa!9z&h)Ww4Pj1^@ z-&*sHZwfs%7H^h28#25{;Pl_FG|c6E@Rf2(n(eAB>Nl`~QT&Haytb@&Hj0WdmW@)2 z^^g7q^6A_S>!YuhPmqaNPfMSAs+2&38u-YsQ=v-~XhG(v_Fc_588o9k4@k<6I!}L> zDsA$s%cAFk*}fKh5AsYYt$;$09^GmQ(&Q46bucp19hP6ChY$T8159E!>{HzH`RQdh zCW%T<)6koISoW2q>5FYT=q6E=Xw7p&!hQCKlARwVLtuPP(F@ej=QY^S2Oop%JbX?tRuPQ*H{a(sCLWn~wxlz#nWNOC1B=D>z zE}sf4&;P6IcggoJ(EDW8YL>3e40Y~j%_GN4UcqILN9%4)wPCdq1LU)Tu5{w{!~Rzz zyDkbS)_fs8D%PP_@k1e{nNX1<2_%?`Sgp&N-J=HgVem56@k4li*C#S1Tt&Di^E3uM zx?6(P7)2FHfXO{zc*V0;#x8!-u7|lRJ)ba!C@vW6V;!Lb5^MOKh|= z%WHvL1Hhlye)YMMA;20kvNM36f#U-lbcW|TS9z+ED)!nUy?V(e7qFd`drtd7KnSaOq^Y&0$VYW$*l+g;qm)2<`sM1z#ih_)wN?hq?Z! z0a>h*l$(x1Z#l$>+XjVpNb6YD<5oVG3$EjFM3(TUHb1Z`ojgF{t0I!BK50CX^Nwq~ z0au1QxB);jFv=M&4>UNuCj7mD?K@*{&mLoCZE&`$m~{Torq@Bw4A>J_3|sWPl6-Z) z?eDKzqEUYLT(7WWK*REhrEipmM?Z4k;&yvJEX06B;NV)lj!s1J1lzM8)9uV}1T;*+ zrIe)is0xn%@kN{>X^?;1ToBcD%squKn>-!(8gqUxMwx?68h1}`C1+O*kU;jNV1p6g)3+JHn zRzES|?jz~U&?)iyKnfko>-qB}=@~O2g=n&(iqMZ9T2?B`{u-WGYiYFDLHIu^T3LLr zwWhY@EbO}UIDp1p6}*v@X2*_qQ1vChYOTh+P8$CQCFyNyOp=j>1C3~ekreK9nHy@T zmCf-G_?5PRrru@Pm}X5on-1ac0XAd^?5y9J5*plC$}A7^6unl(52Gx}CK&}wtR1IP zo9o}T_3@v zJd)LQb9wO$EiE0%yUwXtQ_rWyH#bujvlgevo33;Uo6Z!KRxlbuD6{aeUju)oRSzZx zu$x6lQe$=u=9`y$-~H_`ecq=+$>Rcl5Vbcd`J%9mIFh&wFsd^wr|q0hDF)LzdDX)k z{+!5{2J3WflPa9V!g?D}1bqGwahX|;vaRu%qw&m!zdAJUj{nBg|FpIIUbYyvlH!i? z^#i)h1c_ERsYw34Ckq=J1_4KC8se1r^7-$3=?2W?Ty(E4&L{3l7~NbnSJ<9UDT1%e zmQBvQ?P#r8dNH{-6i{)mu+Yzf-%R@a_AcK@77Jg;%pU#nb8Ud5RObI}F3;!s@#62# z>wgCE;Y0R2BBkd_?jr;QPa3zYb4{bx)ECHYDn@pQsCxX7?ZnlGKnwW6Tfp7``+_ne zVV+g8y{EKfsLy(7w{k=@h1V?Od{mM+Rz=xRE-ZSDmlZ^silynKjdjkuKDt~0zD&f;W^jCX_FS0N`37ea-!tS65u!Tk(QMN3Y zH*_3^&r!$QIoiGL)-)Rmq+qb;%n{_cL{yPt-6lPfEWIL<)OFha)T z@N}3SDh3*+s6<$lBjEr~@CI|f5I11B_TNT2GY|1@d&jV~REW2aWGI!6?j!J={$c)6 zU%Z~^Y)~%mZ_wWfhQ%E1@WqV<;D@`BveFL=l(6nURXp{toX}xYWR89w zux7a#?{jg|L;`z@l@$~5V0i32E&mmHVWax#w^EGIptpjaYcCA zHlQ=%bL^0H>m>Cd>m|`2m<}#M?S|}+BjP&Q7E)z*Ntbs{A7HpCX4=>Q4v8_v3@hxNaOHiA z5`*(VpRLN#^`4}liYXgm*3Ig;I;r#$f2W^blZnf;()Z|awOXPVINXhy9}~c|XqEI4 zhLTe#$E>Q;;*zhY2qF|i{|dzuEGDvxkh~die>gZ!^HI)ut5!4{0X|_9H3)tg9`Iy3 zuE_57=NS~GE!{-498`+H^X!?t;9Wzrjm z@>Y^Fp_F~3L9=U>>)X+tDBnh^7!)sRP`PhfS1Y8k4IZl<%%h$YHbe>0J#5 zw8QAY?eGvfg)n|4D)xwJO%NP?gDpghNzyRgzP2LgvN!av`D-g(3Vf4Z={B0-wB^aq@#A)M+cdatVrzc%f105AHVB;m zl*XXU?ZbmEi@qvy2g6oRoD+lrJ?R*jD(mmf<}R?g;c=ln7hF^nvMUQUB5YJrEDql? zo!IeEDUwFcu&OST!tKU#%gb~~u=Xdi;>l{AnC`)*;zjxy8IVR)7yRE&KoMu9qm?oa zZ(^#2%(snQ-|Pv~3TW0Fn_?eOP{l=0Wbz}2zG*RtWuw5Au)N_v;Y)JCMB?>X&(*1v z#rDJQIlU5nQoXCo`;s+8Cdyx?&^32A=9-#z%aUP4Ys=zzGT~IF8=;j@O($HV#tKF4 zcIx0?A9n;3J639;;_^U;@CE^t)!I!olGNg5j2Yz!slB_C7TlZ`w0s^xF5_#L!n#?j zo<~);c!E6lul5`#-scDpfBVs9$0uYjUy{hkdD}e?Vr9T?>x^X}nWfr)Pt(s6&5do% zsY3_$*0jon-5Am6ZmZw486pRL0Q`$8Bn>ByXmo~;TpMeQ!8@wiB+HW{Hmp4U3;sur zh<5T7U_f&lYEYgwVis-HV&C&QjF!`7KCe;agPisL<)Ghk6&P`3doTS#N0c*J{&U{k z@R>JtYdbTQJM-4-01my^8GmV+`eJrl98fs`=B)|h>Xeb(3TQc`F2YrPmFd`An`lu~ z`_Z3pAY)+EPDvA-ms|^*DWnl9xhk?jtjU1O@gOGANFjb@ipP?Vrer&;L=`(nVBVEk zfRJBZ5aP*}d2KcmN-mZykJlxgC){a7b*4NPDT?Utq4V{-Q*e;%4MSOcr20PQpCT!S zih0`dT&M{2=4Dm#t|Z843JH&@ldo~bS?fV5m|`X(Jlc>)O?ZF7W6H3b-$mGcQU`y) zS}3WrTU3*k@JdcIUl#u2>-o;ap`_*YNrjO&`_NtxU(WfLr*L>%2-g_lzq`NOc>Zefx}1@)HC%uXQ?pz7125})X|Xkl zXdkM9*SA%#^;hOy1wW$8a-Lk7Q27u3+B#cw!C&dc7tGU!kb5Dl`P6%^I_cL$o1vlw z^rkcB^Lo2|*lo7BP&)>D07T`WfDSeB(W!51ab?Mx<7zzEW$}XuI;0-ik<;0$sMWG> zRy!i;E&gY4>JpI%+Sg&QZ#YB6eGV000)kWtI@yS=Aq20Y(L$cf!z5Du&FSR zH2GpXVpw3O$;62(x7BSNLw!_h1Pp)-ey&=VvPpL3RKn}?on%2v*Y z@rGZTua89MbT10hHEtGV3`%=jg=lEkY)yERspEIfL>+`Qkt6MdZ=Q}O{|e-=x)Si*MCY}V#omzvW}n_&$0a8a^?k>Ve*<^x8d z&eUm;i1rR}5tAeA78jGF&&W!j!q6$@7+PZ;i-(EBdk5E<4>8M;dCZBpGi?-BW6eIV zX59WBK0>VW!!Y5m+r%{LA40*Kilyuh>}FP7#@qR0lG_CEw7=4HWgF**qna2x?@v4y z;6FfBX#Krc2k=kV*32Zx5Ii(bm8?>|1eozjL6b1b9GQcGl>IQQpHqZe ze!$gLjtzXAwdCwOK(Vwpysvo#nR~+P;OimbKWX4W$rLf)ijH9aKV0V zd5+!5NPN#g)Ywa-LBx^-Wf!msW_SO~`j0t)kr_@Jp`ahJ&V0`9>m&c^*KXejC`YVO zAI_5=Taur1Qimn!X4#h!ZdEaaPVCFkKZXj6(dzCWDu20qi6Zgsu(b0+)i%TLWC6tV z^IWAw(Yejf`y*l@9wjivRuVVDXOZAz)@c#W{6GM-!0SSzJzh+($IE1{nW9OC0Z7E6 ziJ-0gWL8ORv+vU1+CrSqjZ2lPB+{$w6Z$A($PuMa1YaMech z`6;d1cCr{IZ0;Y*3o8dWoEeJI{f@bw|FF zp4!Gc|J%naXa){0AxD`xHrpxlQMLn1ie^Q4A$D&SeCx~36|Ubt4ij{oO3C6nNmB9h znUaE_5p@V*$hnDL-JD3Fi$5*$9H%K%+k1!=;xbVo+VI!h8p7Gq8wS__GXew09#Pjt zH<^&eR#j#Uxbe<&(Wt$r^$(@z#=Xxtk7HA7m=bz?c^<@mafOTm$t`b;$VElhx|w)c z8W&w6HDQhf<+n%r49HgtvKmwPj!mpjef?Vhj_v|F^fdmh59B`c(|nbeBPyNhzu!;g zvJD?-%1x!Pi?^Yeym@Ups>x29xuo7+zx=RnU~9TR&Dk(4U-ZT7dxN;W%omS43-DiZ zNos`Ty{yK|FUkz2fP)$b;=Rx$$fmN=4(!=QG^3aqrNP7jRMle=CuH;}<1e+}i7A%n zj*KS~$QHBZ)s6?D(|i%Vb6}K=MM+xhfF@#@EWO9~d`V;a$x?y`vy6rwCf3=ih8j!iVk-*#M+dp=#J>om41?X)I_P~ttn+FZ2nb{9 zUNzI}-V_eLow=+f{9$&F`0UY(S}on0{K^|)5cQa0A?VnC zb&-hEe{dc)DzqA|bkDF0c>?tue<^QzzgEa<$OLe0x0epjob1j@$nPw_gqQDGdt+A+ ze6^n@nFZ%Nsp-KyQMG`6Ag$SATNRaE__LozHhM?e+7HZAwAkKxLj=JUg<+qmL%COc zFsPs|imlDUU=@-HpUrGpNe0!*=$IhUdx(^NGKf}L6tuN+-M+5eK8*FT&|R`;QT(-& zmfNZ(Uz_!<(bH5<2Z42RSwyKVhq7!Du4UV9OeM03BI6iU9K@+sxpCsBDd(+w zZih!Z2E;y8|CMhm;>SonpEE&Dr634HON!B@%#%|G)lNpQ9&wN#HGXVo|Cq^-ROx6u zz45E85?D1Fx8Qo(ZE7jE)aFraQOV(sthWUe2vC5XF6hJv#krMNFm%QB(%F2oT*&?o z*Z^k0(24K6y2qONBXad8k$@5-+py%#Z2qs{Hj&JE%9y2Bc4{T6I<%>on2DbVfWK%7 z#4wa>1NFi07gyWXBdq*qmA|aMsdDePe{WW)vQaH`1iIKemv`gOPGC%)xKMR+r`X(q z)yc#2@k&wg(v0f4>nl1st!~FA>w0RrjWI{A$&-Ae23*s-DdWH~z7@vmP*Q`w2Wq@r z{&z?8a4WRBCu+lZWCX%}c~2?ZZRCFC^!i3R?dLtzFTOjcnuT94Lrwt@D>1uCV%w;v ztF0$7!#(<7<@HZm1@lZU;Ux^XFTFI?41|hX(4sQ=3&Q8&9M(8*AEBbvFqY18>_HXx4t2A4l31CW9q8oGg^nq@wS)nzPM3_ZL0WOs@Dmr z*pmq>kY0Xxq=gF9kzJ-4Bih;59dFV7@NZsD&-3y-BF&~d61QETXv9lho!>tBWu5Os z0xM}#QBeOvy_=n)dSv(9XdNty%>Jm&{r`zQNY3;d1Ev$=oy0k)60__6RYBL))N)~#Qv}u$n<+)q!0_kbHDRPh^mP|qF zx1uN$RN}BHLS=U5MRK|f@QkLZE;$3L5k~n#(Y%CNUCyzEeA?snagFMw064N=T6raJ zCpeFzakT0Lg2CQ;NFB6&$3K5ZuzI%AmB8B2Miwt*xXgk4^n-h2+q$)_dWB)l%}{tM z!V6u*HJT7kfkBhuw=Uoa1(UW!y%WEJS-#tRA4(8h8=$l4XLRXTJO1Gf8~AU*0>E&v z-X+$Vf4boWVepO(bT%b+KpRWpS$kCum*zKI-SC%b1kzB?%V;@Bb9g{OBG4Gi1At?yO(tCbj{G|w;n^nObC5cvx`sX+ zc2XE}-t&pTX?e(F<1&46?Dn+oJ&EylYljRL=0pU40opqHaHIpDiEA*Kr3l=6>B?>` zF%Qc+m1-|V>jkpu<=f4T%4H`FK4w$odY*SoG&6OIFSYFP^e*%6`MrN&D6adNVDk$^ z7#dxGJ%%G7g2T)nBm6UedLwIh@rIEiMotz>0kRtSgu6fSksd=_qM9_|Vyxs*iAEA` zqgJexkj-*A1T+Upl8~{Iexm-y%AOaF8RNbAVvMG#qUhWp_oPS*OkN7oL@zOD59vRZ~XEl z7=Q-jmCRD)dDF}JtyK{hGJXLSdX#!wJ;eKQj=QlofVx^9BlJ8)To4ks3JN=(F98`D z9Lsz{80NYi8g&-mm=V_lwfycDEoF28y)|9#HOX%zA1xKoN>wxip)|7VoP+{YvRfh6 zW~fv|OCIi9HU73g+~xT1Nx=fQM}%bks(`;$HhX3IZi4+MFa4C9mN+Ry*IgnujUm1 z!VdUOv=Yy~oE2sOf!Z9%3P??MM{f4R-H(WkI2JFJ)Qqhrb%Du)D=l5*p=dkrwiEaZ zuCGi@{hRh(q3yFU=QzjOIU{!nS2f1gzlA?pzcK;O>O(~I7Y)Wgll1_snk&38TU&q| zpjbYav{b0d)q~!rZ(Y(o7_w10Y@Pa$&R-?rwkjrGWJ%!SW!}z0`Xja&Zg{UUB@ZMs zgXc<1idW+(WRjc7Pm30X5j%hu75oj6FNpb*8H#W0pp_CUbcY|s;8VuO&m+uL4dt3~ zL+<2pa|=9u>IXeK1`}yiI79(lsmJ9L1?F})uw?m1W?+t35>#mg0V%bfD zBuCrhs}SQcMab_=J?iEf$koZUnfF{a2x$8#d>^DdAq^MI)T~z-l6EDXIe^t`it}9L zI>Di^a~6#&FlXl4VbOKl&>SN?I_=;(i0Sg&Ta_yBDjFs>pH|5me%6bU)xFxTDQ~ad zeu+jGvG=*EtlVFD0%0ZvhLSN3yiY5voMkZ3_fRew&a)jK#8QvuDHcNCAusj*N}bK^ z`;v5k_9?9rl<-=-o{@T3uYIg&e%m3afM%+|K?ehE&5t4Iixkrvdr23uB8D8tvy??G7YWk7tMo8URgh-#-wWV)3W;1alL~** zkEpsF-~y*ZwLr$yul!OKc{d3N)nW6?lcFj=X;-U{;Sr&1U@VG_lFw3Fb+kVZH5&Zg zDCEM~x(XPscm@fswpPwX-|8G86kI-}Qa;4YDwZt%P))G<`1wwqf(kvB5-aKWWLWI; zkHV^P*iC!L*rgN^<-#AT{`klr(mC!k^vT_RkDh5ssUCy?wz8S@O;s0VAN-LU{v8K7 zP+LgK0DiZGK|qcN6aL79C9UG+{bB6+m#+mYLTqShQPYheAm^emWFTza`l9x({yt`C zr;~#-Sys0E)D>EJeGgT9!L}`ZueH8Z zB0>#WD;mU^2$xi=jIfregL7KkHROg81X%x9W?&lNUu_-oW}7jW+enN%m+ofK6u zy7sFf)?=Ey*-;g*pC&H0=3syg&0B68$6o z0+Pzg)$eG!<(mr=-}ANvAd6yL`fe127$i(<{kT?aG{eQFeAVPm!X;+(MNJRj0vq_?sw_ zvttK)=BM@|L%2Y4*4c4(i5dTu2gO6wDgV?S6$~aLR8S=_VCk-%nLizVp82H7txkzR zZJK*nyJ?kzn#YA}@hnCE;*Dt2z4jf$l_xgX#PGv~WlUs5EU*ku#w%`iHJu;<>>(sz zp0ZyOXOZzDLPbPf)XRTbnD(WvWMm`=+Pb+2=z~a8ply#YA{)*~vo@29kFN(Gx2Fkl z3BwSTtvrq&uhqra^q=cUzvo4VFH><@-{-spAoa7 z&4=}(B72Tt51#}C=xN2s?kAZgI4-e#-GykHb)qwlUAzw+Wj{1pcxg&Ig?l1**4QUS zzEMPagi=7?rz3=Kt{y%CGXkX^q~822A9R!BA6gi++hC8TKo!=}4x<*p`=QVpZllGc z5e0;~giOF2Hoz$P#0f{WPA$4L%IqG$+pt)ΜT>=k&Xc37$(Oyw@k8!LOieoJo-p z!|@yVr|G0a+O*Q1JD8JDDyhudloE63N3jhag8R;SDNyHV$ntgoTa{!-c}XhOF#Pt* zp(eB-Xh7`WIRss|@`h{4TE@M3F-IjmmEyaaxkS=Wf@HNw|6*5?lV*CB2BH#AT9OL-jz`T3d z8Fe0T2-QlXJ-`h{Yf&G>2_IFB?ieS{=6|i16BxZ`ArTC))8G&#WlS zF>xteWmTH}+T&H69Py+eDafXGZaBeeGL%eoHaDSiH~;%)WFS^-xxXrwlr>7_kzAxy z)*@u;LSy=BnZvy)#j(_;LVLYZG7-GW7{$sdvJ}~(VocR~;%(L^mrNShXAyXjF}a!2 zNs>lv|He4hDSvpSi-gg$T@iswS8j&<|DqM2j_(_sG-Iu)HSY$g7zJ((@J`xU9sIMP zQ5g=}!W!ONrvE3SB1ia&GX5tJ+NXIp;zQtajn3!3VdM#kE>7?!=0N#-L4s?0uHWln zsqhM#?9A=&t!L&sUX+MTFx&I-y-R)h9hutG$7G^jDT+v$WFkF3oZ;L$&Uk%Jcn1=) zwaVVGqKWFHig-N_&2VS>3`e%IT)u-Ha?iaJQ5NuB7hk+jQs#wFXqQ6rBf0`yK4fpH zG^DoAABQJMbl^EkRl%YnqMIXOhYA7>C#;DX{g>lFtv3RzW{RdAIPtomNVB3FYr3R% zIxD24zD@*;n8TDwLyq`r4Z-pIh|h11pGkC6?=4 z{3HvLqwEt3Gv2q4eXaN#t;^xkH66<0<8yXAh*b#=l(hw)R{wL3wTtPX*`$MY?Nm;| z$TtEQcpcd*dV~!tl^l)FXgWNkScwgZD! zI`OaQ%M393dAxLAGb!P#w3w9Hi^+T*O4xuTf~odbhCBSCU;cTH6jZDrZdnT6fovNp zC66;pcApegL~{&ZDGIfSyy{9bz<2~=)O@~t@G*D4`O^pV{B^y|pC}_KyXn2mvr&@0 zV}baN2144dPg+uPEu1N!+h$xN%ksE-B{IArrzB4~voq~iQF7F+2CUlzGNKM6ka;0v z@`70R<_RSFU4N9^Eee*qNUR${84x;&bHkBRa-FE*q2k{H_8O#qnddeQN( zC3!9nsO5^6-puH)?{WM02W z`QwjqOyveae%HkUaBRD*as#tMyRbGA*Eqq1v}OZU9RS@~P{_JO00-q@{*NX%o%fouTcvKJQo8cU<^#KWbW+w%|gtr}eI5xzEGyV2=Z-4Ig z9Y2N?pwWw`2!{=5=w&(m`wt!;LR2&kxwmspHXsW*Phxr-Gs1*5OVJ45M9AV*xmkdu zV{>=uMUJ>1GjHMtLIf!JUVjZTa~bjAM2niV{HrBX=)Ua;nOT?!Iwa~FR>&4l0)fwsSuT63D>(NTh&D54)2&iLy z_Ed6Ou8lF-zM6`$bZzC{3A!O={o7<$nE6MPxWSTEWRj{MX>GL#}Y|=H85mbeZRt#TiMRd{P z5l^(&x#(f={N2H(ITZ+SpETh(+8Ua@s!0J8bC}rpuq=rN%iZJ>PL5bn=-yv0$styT zNqpdA+JLOn#E1UUHQ&z{AA1k&okKPtV(p0nT=5k)TtC(XG{$LJ{G{MUB+Z{4EL4~_ z1yV54BK_3M8A=)M%MBZFh2UBCm-XJSqt>5U9`l^%dego|>9M|1wAx?9#XAYy5N!Tj zpR)!N{?Pjz`dyWawjCxxwE>Uj)<6F=;4}_|&4?aA)Hc|;(UX;jJ00oH2k@w6*yRzI ztl*0&A69pmyHKW?kc1x*ZP|3Cn;qYU_Ko6AHT$VVHv|H{<&^M+&Fvkml*n&~hD6-{ zR*P_cq=X&QP*C(h-2(xY$AMkNbj4qF?At@#{LG(w@>On8#}YYRQkG8Hj?Ssh+%b_W zP78{lT&cdfODCHF3)ZM+k000tggG~UJm+ro{n%`Nb+kJtX9)yqMOxVsuQ~}C^Gx`d zp4}_uuYzHkOotfv?NWX9o0Jaqqp=btrP!tX461J0$WvP*gLMpFjd+qmgcWQwA=vQ6 z2)>MNtQUy4C1Do>xOaQ=|0}1sbEBZwtm5-~EFFQnNgiU4X&U)PAf&$M-vy-D!Dj=z zgADFyN}w0LgN26&*Kl-u|8Mv8vGwk6p_%;+n~tJQxM+S73oja+Ni(kJ*{F)L_0RO5 zsxoU6-Ur<-L4N~2nU_#VU}h9}YXhrf?HLKMBM?OmiCL2wXx@pAGFeIk^hXDVnhH3vMQFHLvF$yI7&N$}L z*Kc-+YLxB=x^F`q2BZF~09Ty88T5hN>)Iis4SK8fRqkLiYdA(Y{jvU&-|Nm(C+DRc z3b$2FrF*tt9}wa`S7!Y)^(R~1zb8fj<~?SU74$8M5e1EoC+(>*x)>TYM}EV_x?%+aQXIB#lB{Zv#o(zq*Y`8iG|WfUPg$dH+~312)% z74aao{G%R+X+k3PMR-xq_i_~00=1QA{cqIY`l5tyqBCl_<&qL*((HzI5oLmF^1+$> zHelvTHZz42M6(lV0c{Byg7ZalDIjk#!8zi?(beS)Ua@-&N>ccLs!NJQQNO|8rSmw( zTx~}di@b!k`+^$XdyeRJU7V{3ZoqN_aYABi8ZD5d1vDq_PY0lUg?6=TXJEigQsj=` z2W~Hxa{*komd z^7q5|uU23*_9ni;UvZdwSB_C%nN<%P{#7v02Rt5%LE#q6jAiqtF;kr4{m%Eifg-L z-^{%wN=XkAj#$GyxqaG0cn1L%UqQ2DE7%RANaFSe=B=%OXI{vTPs!T;@ustzVZW6yr?<92DO}QA}u5z=qO|AQ6)8RY>!IlgT4k+?g@zJ4saK=)yjY4zC($_H&GKx6P+bwNVAk z@~Rma6)~w%&e^P#L?0nU*nE= z<-C-`oiSxS+3?c|$qOn*0?}%lLQJL-wMs$#i3pnKx~_-My8c@c&ZPQOZ7DHfRSbDR z%2&zXD+wTo-jD?tS)bY>lvaUx(|)Ckep-R406ws%(7II@>hYzJhyMGD(OVygs8*2AKeovW?7!2g*Kl*)ounhI6(x7=C z;q^8y>2IN?7fD*+55XwU33?wqvtMGMo98@FZsHCsF|llL#hb(ea|#v&c4Uzh$a$aw!yB@ z9gJHMPV$cE_E!)E5o9c+Qh4k#>TL96irB!l5pz($>2LUyMF)0V_hig!=4FZPv*KhVI|I4}eslx7XI)!pjJ#$9@7Pdz zTef_bcMTZGI0hggGJ^mzCo+WWhxD&v>!hJts0{W%EPIrU0$#}tZZ)6FfkEDO>l}08A3JOtl%7v(c+J}Du2N5?bN6tvt|bYS&CO4e~W_F^Nr27 zx>7QoVVmUaaaCi6w|4R2+EhG$lK?rv@)?+1lTuW^=3+8#zv~<;uLkMnnv|cc84L(`>fi#%dv~x8MMw zN$xiH|{g?4SvPwYd1VDwvf|bk-{LwHYu$3+mEvART zV#>EHrMMPFDmev7(mgz+Bp7CWp}o4^(o{-Z&lg|te&zQd1zCol)cyww`M!u2W;R@h zalTQz)o3N;{=Ay=DFzwIh5?VL8xGl08ERVplfJO$#3v;yrd(T54S2y*1f&xL+*fSl$e0h@6S#3sB$ zIXc3qpy(cl!RskXn}G}WmD^?MBjo3Zva|xIF~Tw)D)R)SMWZA~+38boao@y}d9NW> zrMa3jeT~Ea4&D_O9dbPv4cGOHh>cIea%C$687)DiaJoTvwI!S30_&kebjGgzL7kVz zdkC=SVMFW}GvhWW{Pwn|fCm%j%vEOK)m-xVD>-D-AjbceoWsKkxi@R~k~er{D0=>G zOd4DmP#OSv{-I{W1CoTD&MjJS=OBH`{ANIyUaL8y-{23-PZ&U#!0CT!ZR-R~f0Fzd{jMeX_Vo38vSR!xgHA;{pMw79UwPo!7Dd zXV*p-6B%s=!{Z^dNCCO1nri0ZsM#OCwBxt3pIOF z$ZaIODyugTStyYfjObPpcb6pnT#P}U z?O|3X{#$m%avKs-K|o5t(N^_v02Fr>&3c;QNeilZR?^fDv8G=UB8DuVRYMwLKvsD# z2VP0v5bt2@@)9%8t0M%n7oq2p%!eK%PU;x$R0$vY+?%!Pr@RXpOUN~>9QR${w{>|P zcijIY5B9&?{TcoL-QeZ_Z`0-XongpJ(Ef48N6+X$Us)Jt>Bud0^z+?_;?QYBh3+_o z^CD-1_~Hw#ZT*tU-+mU367R3>SN$P#n&6?#SU{-y{u_P}SH*Vcz-e&Jt$GdEl+!II zo^A-oMN;kI9LJ`;Z@slMLpdw=nJUfrMQ{S{d4Nfee)9|n_r;L0HHQn`Rb9ScZ}Naw zfB9*UZqP1b`w+TP)FT!vSAT-Y>DBuC#XF8Lbr=&i#o@8-;;A}kSl!L>&Ji~LtmS3c z4)yODNyTa~!Rv$i>WSaY=X@p2{kW^YRH(5QNF^hUb~-t42G?#jfj9yVNo$O*k>|%$ zRsUKTByWknt}O~fD)oj`@E&iT9mMD%G<$W088j;j^o?#k(mk^}>~mf(WZJ7&9z%AC zqfA3yiO~?{4u?FaycW3RT`Q5(1)Lv*VZyqcIJPD37Tq&y`yZRi>|d@`+&dNKRsD3I zXYYB4I7va);{68kdLu_?cQ5cjtkP47?llmkvD9V>KfwGT$w?A8Wr!3l9MU$tfDr}X znaCwyh`r%3!ISg8u@LqP#~5XeT5BxIDqfV)f_3fd5cFC|-PXpe#6DgIs~Z}2PO!RC zY3)hd+pzrRTM;7APVKN!68BP|kf&gzVKxT>;c-aOq6<|u!MY~r4FYoAG~h-8O{1^B zO!Cw`XyU#H&extNcCupio6i{jA@qW27hzcqW~n{l4u~gvpld;kf#=)C<;4Nd6!9NU zDI$f4_crISN+SU~`~~UvFYl=85AZ%Rnr(p)RU%BSS4<$=Mg0U_3@A{%U>=w*?WSHN z5}QIkes}UeLkd#gKKkH3MUVm8qeXtZ{2ReU+BE?j$g9zG`&S%ChfnDYztuV3n2}IL zNQY$T(|D%W&nX!a+V|aD=a{KE&l!ITRXfIf{%PM|s>WrXki#wLdL?BNh|rMsdH55H zUnzl_fYsIQ@`-yf(zGaCtJ_z)jcr`aG5U#>7TKKK4+r+Hw^xsZl^1Y{4s*1+|Q{jz>aV!cH}omF(Wdue+*inpPHAT zSbBFQ)SM=SxTC5pk+0It7<}i^MGAY4_{bYP81@EwZ?=CueGm0jdcZf_-Gvbhc&kfZ zJQsHV!hG|)8z{U|xZ!85JKOv*^pXDhN2xHrEmG3TEztX6-<|6rISof|nVz@GRiHM>U49veL-$kE=P-J&8ujpB3_pT~ozXSfs2AN6ghVCwUS zyd{N_SKrLFv$tG{<^H8_K)`?lin zdY%ez7N#$>7ki%tJy=ZhbG!{wrUTA*ZpDeWCUN_!zfy5@^yl}edxU<8K1G}55`)fT zd*Y_1)pXh+!NMREt6-*AK>2vf=>>irGKU)~t8P|4M7f>Ak#mhO>GTt0uX?3<(_Dms z1colr15hL)kG664I-&Wm?*%dIaZJip)JO%mUQaNoQm}`5WG49c?9Y`nfZMTF?$M2PWJ5z;}LZ-lqMU{h8agh0GoT{{iV_*xP~jar?5afYtjtib|ytF%U(JBxp<4u5XuA8~T954&L2 zAXFbj?!Y$p^?%MCY}DlrM`n$fb6Ro~M|BURn@FGh00Ha+jE30={hhDV0q@=-b}u}# z$Z+;r#UkM%q49X-H%f@suznHtKc(I;mrKTMmQQ~swij|aV%k~76;;jlbKEvs`<>Pk zxup9fPAe0=Y%|z{y@ru`^i3fhLLIdK*`l6wDb3J&_BlQ1wPqw)EP?I}PA#t_tnMV* ze4PmQ2hIJtB>tb)&iow;$BE-*UCGTlcag$c*SgoSvCi=MkaFiHci52ZZn>|*ZjL0Z zB37<)-&dbnmO_NenO#S2mU8>i9Cz+1g@8HT2t)AS=>prm|e;em{~INAAR&fn6GHXe6zo_rQ-k8}^C z_>v5+4j01kM`OuhV~-aPPI%t0e(!efdO41kOgObRSrUEQbb7d3c73=d@@?KbE0NE0 z(JNHCT&+5tOrKc;072SAB6)q&`-&rwldaj(f}Dp;7SS`cLTVkYqyp|zJ$hg=kyWen#7%CdvWEMp-Wfh~Em`Hd0=j;7+cjhs!6*5; z!wum>VnDl}@yZ%)9StmAuO{blq)UBF`3N3XQp;J-{h=RbY)^(na)u4%e!~2Ldp|dd z5E^Y)K|3Tn28G8%*IP0%e^(28Z6VuxN-ja6iNeo)d&;eQUP%p?TMr{81{V1&TCdgK z(8Jh>MOFnF60P5_@Y4k>z{NwJj?V?732syWeg^t9TSxiDL^h+p2J(laIT9#z7T0PA zk5Oa_!j!tRhXmHSY@q2CU?>ud4C=0RHS?^OVR!~ljADjXqqXCepL}r|kas$ZysN`l zynbC<-0B*s{Z1z%C9d36F5;?wp(Y!FHH##$yZc)9DmxJ=H)nw5`6H_uHhtl6ptbEP zYb?ZzWnfPH>@}bm6+F|PplZ@TxiQrzNE<*4impCl|L3!S=!}OSmrA&|Yf&oxjJ4^< zB2->`bGkj@4oOhe%O4Q(cx<3pK`cYmn@ARCN{*$l>}yD1x`zhSA_IS~vU$nFipL>F zo(yRs`!3P(78$QtY~M%sO2ZMKz~HLuj>x`#pQsf1K!>Gh^+Eh~z8$zU5>3wNb|=MHB96 zt7iwv$2l~c=b==WxyaB{Qx0wbrYp9bo3WT-UE5?i|JLM0;CIb?9<9CL*qa4NW9c-f zM7Jq}d7Mgle*&^(+pI)fURwmglYwo1?rzgnDaV>*>nN+@?>Gib3N1+W-xwE5`-=CQ z+-v;Y^!_V2$vs;(eqFaMx)nOda)?C<9n`4zc!Uh1Au+tTF!#owIeOd3%?EOt(Wz_b z(7K?_G42ltsFq=PEu;gyvAFUVd?i!}ULj385Q?$%xVdmW&55Ig`KOlrV8j`__oE3yI&_?5B-4jEL4~D9t(s8@Hen=XV7ax3i8jlbo2+5;z?Cr%@9nf5dPwJlGX|< z>3hVi$tr@UF}^C&Ots!TaP>P!4Xls=E42hH3V`W3-iF}WT}M9|6-d>KOp;K%wf4IF zLUi`|kej-YCCS zst?5Lv#wm8ZGiHmFaTo(5wFZsc)xMqsE~e8{4tob59Rre0&<c{Mc89yLmb=&8{Ng8f zRKI=eq%O9k{|Q>@8J$o>&O{E+Dl4Wh9ZVmQrfSkO3klF#+K9SAqicp(91Fnrif1$Yw|Foi&tc$hgD^7H?>@=$H=o8}=kFj4s1Yzl$ z-+t8A=7r4Z6}>5@L~5D6W!@K)ksi^rWhh!}qA%K$J=)_M(I!lCgz=sRv<}NW?BW-w z0D`+o5!&5}_o13RyV-A=+&LqDk8S%ug?mBAR?O5zRWn6g|H-Do%hD_2f}?DGeRcC; zU->GfR#3a4HlAA#31HJ2RcJC9!t9!xMa=!?*l96hXmelH`rF}VEhA-23hyjm|L$n{ zwp~t@7wHj2$}zEu#DEzMf|cr9mMDn4iZU@o>p3!H4Fu*pNzLjNE$myU$SocET}H#v zh+!MEw-&u2l1;9{5+Zj&CQAPS|cPy^2__Wz>sWhE7eWZBKY@M1pg{rXiub z1|myQw=)IVWy19^14`@-)Ga$jZC%+ZwC^1bFSnvb*v-b9aR z&sK_@d<;PBSyF|csT1x9OTWvlcAeQOqh$;W?y1~11~_xNiVn=9KD3c8cxiDIWSCoZ zNiX>75*8CFmsA4sYO6?AR+e%8b+0B21Jm=eCxi5r?WG(~t{|;wFcG z43>V4TxXX9B|#SaS}J&Nnj^+jj!1jEnF7RTGdSk>nd0$?81-1bKN9CY`(7csm&v15 z<5h9N_d|6SWJhcNWkW4Kb3Itv){c}_bIOJ4o8@K8zWQaDBr0RAyL#Aw1EWG>#pl%+sR(D#aGcHh|Bisq2a~-bH~J} za2SWH3^hWdhLbiu05g=$!PX_nQQOyO`>ulGfzJ4}d>5ODYb2w7(BJ=O2_ru+Gn24>Jma z>#9{9gv$llvu1oV_oU3>;PX-(~K)E$=R;%TKk4Pa{{$I5BdIkl>Ag=hI2%tB~4vOX50m6mU@DRErOgREd5 zpulS-ywUB?eLv}nbD09zOKoR`hwHIjI8&$Kbl@M{V#>05)29Ic%xO?dCZ(=w#{sk5 z#C*QitCsw3$(kc;{Mm)6+$2BtmKTb`>*>pQUCt&_+`$G=;F#AK&1bBkW>yujt(t8e z^~hm~Y#dQP1pZhr5)B?!o!eT-0wWpf`C$!pWTl}pxQ2)AB0U^iT1n8xW$hG@&T2sl z>SAcm-gZg2quRrrJ%0N!=x|MdyW#B^J%#v(HGM9%7=vceE%$RkI6cem1URPr5&k+8qG%)rED+N=ke{^uem5@VQ4> zX+X7W%~_j%FFgtF$)}XZEao(ps{ MGqyCUF>sIjAKI9?m;e9( literal 0 HcmV?d00001 diff --git a/msd/inc/define_icons.php b/msd/inc/define_icons.php index 45611adf..4c2932cf 100644 --- a/msd/inc/define_icons.php +++ b/msd/inc/define_icons.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,28 +16,29 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ -if (!defined('MSD_VERSION')) die('No direct access.'); +if (!defined('MOD_VERSION')) { + exit('No direct access.'); +} //define icons -$icon['arrow_up']=''; -$icon['arrow_down']=''; -$icon['blank']=$config['files']['iconpath'] . 'blank.gif'; -$icon['browse']='' . $lang['L_TITLE_SHOW_DATA'] . ''; -$icon['edit']='' . $lang['L_EDIT'] . ''; -$icon['delete']='' . $lang['L_DELETE'] . ''; +$icon['arrow_up'] = ''; +$icon['arrow_down'] = ''; +$icon['blank'] = $config['files']['iconpath'].'blank.gif'; +$icon['browse'] = ''.$lang['L_TITLE_SHOW_DATA'].''; +$icon['edit'] = ''.$lang['L_EDIT'].''; +$icon['delete'] = ''.$lang['L_DELETE'].''; -$icon['index']='' . $lang['L_TITLE_INDEX'] . ''; -$icon['key_primary']='' . $lang['L_TITLE_KEY_PRIMARY'] . ''; -$icon['key_fulltext']='' . $lang['L_TITLE_KEY_FULLTEXT'] . ''; -$icon['key_unique']='' . $lang['L_TITLE_KEY_UNIQUE'] . ''; -$icon['key_nokey']='' . $lang['L_TITLE_NOKEY'] . ''; -$icon['table_truncate']='' . $lang['L_EMPTY'] . ''; -$icon['table_truncate_reset']='' . $lang['L_EMPTYKEYS'] . ''; -$icon['back2db_overview']='' . $lang['L_SQL_BACKDBOVERVIEW'] . ''; +$icon['index'] = ''.$lang['L_TITLE_INDEX'].''; +$icon['key_primary'] = ''.$lang['L_TITLE_KEY_PRIMARY'].''; +$icon['key_fulltext'] = ''.$lang['L_TITLE_KEY_FULLTEXT'].''; +$icon['key_unique'] = ''.$lang['L_TITLE_KEY_UNIQUE'].''; +$icon['key_nokey'] = ''.$lang['L_TITLE_NOKEY'].''; +$icon['table_truncate'] = ''.$lang['L_EMPTY'].''; +$icon['table_truncate_reset'] = ''.$lang['L_EMPTYKEYS'].''; +$icon['back2db_overview'] = ''.$lang['L_SQL_BACKDBOVERVIEW'].''; -$icon['search']='' . $lang['L_TITLE_SEARCH'] . ''; -$icon['mysql_help']='' . $lang['L_TITLE_MYSQL_HELP'] . ''; -$icon['upload']='' . $lang['L_TITLE_UPLOAD'] . ''; +$icon['search'] = ''.$lang['L_TITLE_SEARCH'].''; +$icon['mysql_help'] = ''.$lang['L_TITLE_MYSQL_HELP'].''; +$icon['upload'] = ''.$lang['L_TITLE_UPLOAD'].''; //other pics -$icon['logo']=$config['theme'] . 'pics/h1_logo.gif'; - +$icon['logo'] = $config['theme'].'pics/h1_logo.gif'; diff --git a/msd/inc/functions.php b/msd/inc/functions.php index afe8a374..e62cce2f 100644 --- a/msd/inc/functions.php +++ b/msd/inc/functions.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,390 +16,393 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ -/** ensure this file is being included by a parent file */ -defined( 'OOS_VALID_MOD' ) OR die( 'Direct Access to this location is not allowed.' ); +/* ensure this file is being included by a parent file */ +defined('OOS_VALID_MOD') or exit('Direct Access to this location is not allowed.'); -if (!function_exists('get_page_parameter')) include ( './inc/functions_global.php' ); - -if (!function_exists('str_ireplace')) // borrowed from http://www.dscripts.net -{ - - function str_ireplace($find, $replace, $string) - { - if (!is_array($find)) $find=array( - - $find - ); - if (!is_array($replace)) - { - if (!is_array($find)) $replace=array( - - $replace - ); - else - { - // this will duplicate the string into an array the size of $find - $c=count($find); - $rString=$replace; - unset($replace); - for ($i=0; $i < $c; $i++) - { - $replace[$i]=$rString; - } - } - } - foreach ($find as $fKey=>$fItem) - { - $between=explode(strtolower($fItem),strtolower($string)); - $pos=0; - foreach ($between as $bKey=>$bItem) - { - $between[$bKey]=substr($string,$pos,strlen($bItem)); - $pos+=strlen($bItem) + strlen($fItem); - } - $string=implode($replace[$fKey],$between); - } - return ( $string ); - } +if (!function_exists('get_page_parameter')) { + include './inc/functions_global.php'; } -if (!function_exists('stripos')) // borrowed from php.net comments -{ - - function stripos($haystack, $needle) - { - return strpos($haystack,stristr($haystack,$needle)); - } +if (!function_exists('str_ireplace')) { // borrowed from http://www.dscripts.net + function str_ireplace($find, $replace, $string) + { + if (!is_array($find)) { + $find = [ + $find, + ]; + } + if (!is_array($replace)) { + if (!is_array($find)) { + $replace = [ + $replace, + ]; + } else { + // this will duplicate the string into an array the size of $find + $c = count($find); + $rString = $replace; + unset($replace); + for ($i = 0; $i < $c; ++$i) { + $replace[$i] = $rString; + } + } + } + foreach ($find as $fKey => $fItem) { + $between = explode(strtolower($fItem), strtolower($string)); + $pos = 0; + foreach ($between as $bKey => $bItem) { + $between[$bKey] = substr($string, $pos, strlen($bItem)); + $pos += strlen($bItem) + strlen($fItem); + } + $string = implode($replace[$fKey], $between); + } + return $string; + } } -function Help($ToolTip, $Anker, $imgsize=12) +if (!function_exists('stripos')) { // borrowed from php.net comments + function stripos($haystack, $needle) + { + return strpos($haystack, stristr($haystack, $needle)); + } +} + +function Help($ToolTip, $Anker, $imgsize = 12) {/* - global $config; - if($Anker!=""){ - return 'Help'; - } else { - return 'Help'; - } + global $config; + if($Anker!=""){ + return 'Help'; + } else { + return 'Help'; + } */ } -function DeleteFilesM($dir, $pattern="*.*") +function DeleteFilesM($dir, $pattern = '*.*') { - $deleted=array(); - $pattern=str_replace(array( - - "\*", - "\?" - ),array( - - ".*", - "." - ),preg_quote($pattern)); - if (substr($dir,-1) != "/") $dir.="/"; - if (is_dir($dir)) - { - $d=dir($dir); - while ($file=$d->read()) - { - if (is_file($dir . $file) && preg_match("/^" . $pattern . "$/",$file)) - { - if (unlink($dir . $file)) $deleted[$file]=true; - else $deleted[$file]=false; - } - } - $d->close(); - return $deleted; - } + $deleted = []; + $pattern = str_replace([ + "\*", + "\?", + ], [ + '.*', + '.', + ], preg_quote($pattern)); + if ('/' != substr($dir, -1)) { + $dir .= '/'; + } + if (is_dir($dir)) { + $d = dir($dir); + while ($file = $d->read()) { + if (is_file($dir.$file) && preg_match('/^'.$pattern.'$/', $file)) { + if (unlink($dir.$file)) { + $deleted[$file] = true; + } else { + $deleted[$file] = false; + } + } + } + $d->close(); + return $deleted; + } } -function SetDefault($load_default=false) +function SetDefault($load_default = false) { - global $config,$databases,$nl,$out,$lang,$preConfig; + global $config, $databases, $nl, $out, $lang, $preConfig; - if ($load_default == true) - { - if (file_exists($config['files']['parameter']) && ( is_readable($config['files']['parameter']) )) include ( $config['files']['parameter'] ); // alte Config lesen - } - $restore_values=array(); - $restore_values['cron_dbindex']=isset($config['cron_dbindex']) ? $config['cron_dbindex'] : -3; - $restore_values['cron_dbpraefix_array']=isset($config['cron_dbpraefix_array']) ? $config['cron_dbpraefix_array'] : ''; - if ($restore_values['cron_dbindex'] >= 0 && isset($databases['Name'][$config['cron_dbindex']])) // eine bestimmte Db gewaehlt? - { - // Ja, Namen merken, um spaeter den Index wieder herzustellen - $restore_values['db_actual_cron']=$databases['Name'][$config['cron_dbindex']]; - } - $restore_values['db_actual']=isset($databases['db_actual']) ? $databases['db_actual'] : ''; + if (true == $load_default) { + if (file_exists($config['files']['parameter']) && (is_readable($config['files']['parameter']))) { + include $config['files']['parameter']; + } // alte Config lesen + } + $restore_values = []; + $restore_values['cron_dbindex'] = isset($config['cron_dbindex']) ? $config['cron_dbindex'] : -3; + $restore_values['cron_dbpraefix_array'] = isset($config['cron_dbpraefix_array']) ? $config['cron_dbpraefix_array'] : ''; + if ($restore_values['cron_dbindex'] >= 0 && isset($databases['Name'][$config['cron_dbindex']])) { // eine bestimmte Db gewaehlt? + // Ja, Namen merken, um spaeter den Index wieder herzustellen + $restore_values['db_actual_cron'] = $databases['Name'][$config['cron_dbindex']]; + } + $restore_values['db_actual'] = isset($databases['db_actual']) ? $databases['db_actual'] : ''; - $old_lang=isset($config['language']) && in_array($config['language'],$lang['languages']) ? $config['language'] : ''; - if ($load_default == true) - { - if (file_exists($config['files']['parameter'])) @unlink($config['files']['parameter']); - include ( "./config.php" ); - if (is_array($preConfig)) - { - foreach ($preConfig as $key=>$val) - { - $config[$key]=$val; - } - } + $old_lang = isset($config['language']) && in_array($config['language'], $lang['languages']) ? $config['language'] : ''; + if (true == $load_default) { + if (file_exists($config['files']['parameter'])) { + @unlink($config['files']['parameter']); + } + include './config.php'; + if (is_array($preConfig)) { + foreach ($preConfig as $key => $val) { + $config[$key] = $val; + } + } - if ($old_lang != '') $config['language']=$old_lang; - include ( "./language/" . $config['language'] . "/lang.php" ); - } + if ('' != $old_lang) { + $config['language'] = $old_lang; + } + include './language/'.$config['language'].'/lang.php'; + } - $oldVals = array(); - // Zuordnung nach Namen der Db zwischenspeichern, um Eingaben nicht zu verlieren - if (isset($databases) && isset($databases['Name'])) { - foreach ($databases['Name'] as $k=>$v) { - if (!isset($oldVals[$k])) $oldVals[$v] = array(); + $oldVals = []; + // Zuordnung nach Namen der Db zwischenspeichern, um Eingaben nicht zu verlieren + if (isset($databases) && isset($databases['Name'])) { + foreach ($databases['Name'] as $k => $v) { + if (!isset($oldVals[$k])) { + $oldVals[$v] = []; + } $oldVals[$v]['praefix'] = $databases['praefix'][$k]; $oldVals[$v]['command_before_dump'] = $databases['command_before_dump'][$k]; $oldVals[$v]['command_after_dump'] = $databases['command_after_dump'][$k]; - } - } - $oldDbArray = array(); - if (isset($databases['Name'])) { - $oldDbArray = $databases['Name']; - } - $databases['Name']=array(); - $found_dbs = array(); - //DB-Liste holen - MSD_mysql_connect(); + } + } + $oldDbArray = []; + if (isset($databases['Name'])) { + $oldDbArray = $databases['Name']; + } + $databases['Name'] = []; + $found_dbs = []; + //DB-Liste holen + mod_mysqli_connect(); - $create_statement='CREATE TABLE `myoosdumper_test_abcxyvfgh` (`test` varchar(200) default NULL, `id` bigint(20) unsigned NOT NULL auto_increment,' . 'PRIMARY KEY (`id`)) TYPE=MyISAM;'; + $create_statement = 'CREATE TABLE `myoosdumper_test_abcxyvfgh` (`test` varchar(200) default NULL, `id` bigint(20) unsigned NOT NULL auto_increment,'.'PRIMARY KEY (`id`)) TYPE=MyISAM;'; - $res=mysqli_query($config['dbconnection'], "SHOW DATABASES"); - while ($row=mysqli_fetch_row($res)) { - $found_dbs[] = $row[0]; - } - $found_dbs = array_merge($oldDbArray, $found_dbs); + $res = mysqli_query($config['dbconnection'], 'SHOW DATABASES'); + while ($row = mysqli_fetch_row($res)) { + $found_dbs[] = $row[0]; + } + $found_dbs = array_merge($oldDbArray, $found_dbs); $found_dbs = array_unique($found_dbs); sort($found_dbs); // now check each db - $a=0; - for ($i=0; $i Index uebernehmen - $databases['db_actual']=$restore_values['db_actual']; - } - else - $databases['db_actual']=$databases['Name'][0]; + // wenn $as=1 wird versucht den aktuellen Index der Datenbank nach dem Einlesen wieder zu ermitteln + // auch wenn sich die Indexnummer durch Loeschaktionen geaendert hat + global $config, $databases, $config_dontsave; + $nl = "\n"; + // alte Werte retten + if ($as) { + if (is_array($restore_values)) { + if ($restore_values['cron_dbindex'] < 0) { + // Multidump oder "alle Datenbanken" war gewaehlt + $config['cron_dbindex'] = $restore_values['cron_dbindex']; + } else { + //den Index der konkreten Datenbank aus der alten Konfiguration ermitteln + $db_names = []; + $db_names = array_flip($databases['Name']); + if (isset($db_names[$restore_values['db_actual']])) { + // alte Db existiert noch -> Index uebernehmen + $databases['db_actual'] = $restore_values['db_actual']; + } else { + $databases['db_actual'] = $databases['Name'][0]; + } - //Cron-Index wiederfinden - if (isset($db_names[$restore_values['cron_dbindex']])) - { - $config['cron_dbindex']=$db_names[$restore_values['cron_dbindex']]; - } - else - { - // DB wurde zwischenzeitlich geloescht - sicherheitshalber alle DBs sichern - $databases['cron_dbindex']=-3; - } - } - } - } - FillMultiDBArrays(); + //Cron-Index wiederfinden + if (isset($db_names[$restore_values['cron_dbindex']])) { + $config['cron_dbindex'] = $db_names[$restore_values['cron_dbindex']]; + } else { + // DB wurde zwischenzeitlich geloescht - sicherheitshalber alle DBs sichern + $databases['cron_dbindex'] = -3; + } + } + } + } + FillMultiDBArrays(); - //Parameter zusammensetzen - $config['multipart_groesse']=$config['multipartgroesse1'] * ( ( $config['multipartgroesse2'] == 1 ) ? 1024 : 1024 * 1024 ); - $param=$pars_all='$val) - { - if (!in_array($var,$config_dontsave)) - { - if (is_array($val)) - { - $pars_all.='$config[\'' . $var . '\']=array();' . $nl; - foreach ($val as $var2=>$val2) - { - if ($config['magic_quotes_gpc'] == 1) - { - $val2=stripslashes($val2); - } - $pars_all.='$config[\'' . $var . '\'][' . ( ( is_int($var2) ) ? $var2 : "'" . $var2 . "'" ) . '] = \'' . my_addslashes($val2) . "';$nl"; - } - } - else - { - if ($config['magic_quotes_gpc'] == 1) - { - $val=stripslashes($val); - } - if (!in_array($var,$config_dontsave)) $pars_all.='$config[\'' . $var . '\'] = \'' . my_addslashes($val) . "';$nl"; - } - } - } - foreach ($databases as $var=>$val) - { - if (is_array($val)) - { - $pars_all.='$databases[\'' . $var . '\']=array();' . $nl; - foreach ($val as $var2=>$val2) - { - if ($config['magic_quotes_gpc'] == 1 || $as == 1) - { - $pars_all.='$databases[\'' . $var . '\'][' . ( ( is_int($var2) ) ? $var2 : "'" . $var2 . "'" ) . '] = \'' . my_addslashes(stripslashes($val2)) . "';$nl"; - } - else - { - $pars_all.='$databases[\'' . $var . '\'][' . ( ( is_int($var2) ) ? $var2 : "'" . $var2 . "'" ) . '] = \'' . my_addslashes($val2) . "';$nl"; - } - } - } - else - { - if ($config['magic_quotes_gpc'] == 0 || $as == 1) - { - $pars_all.='$databases[\'' . $var . '\'] = \'' . addslashes($val) . "';$nl"; - } - else - { - $pars_all.='$databases[\'' . $var . '\'] = \'' . $val . "';$nl"; - } - } - } + foreach ($config as $var => $val) { + if (!in_array($var, $config_dontsave)) { + if (is_array($val)) { + $pars_all .= '$config[\''.$var.'\'] = [];'.$nl; + foreach ($val as $var2 => $val2) { + $pars_all .= '$config[\''.$var.'\']['.((is_int($var2)) ? $var2 : "'".$var2."'").'] = \''.my_addslashes($val2)."';$nl"; + } + } else { + if (!in_array($var, $config_dontsave)) { + $pars_all .= '$config[\''.$var.'\'] = \''.my_addslashes($val)."';$nl"; + } + } + } + } + foreach ($databases as $var => $val) { + if (is_array($val)) { + $pars_all .= '$databases[\''.$var.'\'] = [];'.$nl; + foreach ($val as $var2 => $val2) { + if (1 == $as) { + $pars_all .= '$databases[\''.$var.'\']['.((is_int($var2)) ? $var2 : "'".$var2."'").'] = \''.my_addslashes(stripslashes($val2))."';$nl"; + } else { + $pars_all .= '$databases[\''.$var.'\']['.((is_int($var2)) ? $var2 : "'".$var2."'").'] = \''.my_addslashes($val2)."';$nl"; + } + } + } else { + if (1 == $as) { + $pars_all .= '$databases[\''.$var.'\'] = \''.addslashes($val)."';$nl"; + } else { + $pars_all .= '$databases[\''.$var.'\'] = \''.$val."';$nl"; + } + } + } - $param.='?>'; - $pars_all.='?>'; + $param .= '?>'; + $pars_all .= '?>'; - //Datei öffnen und schreiben - $ret=true; - $file=$config['paths']['config'] . $config['config_file'] . '.php'; - if ($fp=fopen($file,"wb")) - { - if (!fwrite($fp,$pars_all)) $ret=false; - if (!fclose($fp)) $ret=false; - @chmod($file,0777); - } - else - $ret=false; + //Datei öffnen und schreiben + $ret = true; + $file = $config['paths']['config'].$config['config_file'].'.php'; + if ($fp = fopen($file, 'wb')) { + if (!fwrite($fp, $pars_all)) { + $ret = false; + } + if (!fclose($fp)) { + $ret = false; + } + @chmod($file, 0777); + } else { + $ret = false; + } - $ret=WriteCronScript($restore_values); - return $ret; + $ret = WriteCronScript($restore_values); + return $ret; } function escape_specialchars($text) { - $suchen= array ( - - '@', - '$', - '\\\\', - '"' - ); - $ersetzen= array ( - - '\@', - '\$', - '\\', - '\"' - ); - $text=str_replace($suchen,$ersetzen,$text); - return $text; + $suchen = [ + '@', + '$', + '\\\\', + '"', + ]; + $ersetzen = [ + '\@', + '\$', + '\\', + '\"', + ]; + $text = str_replace($suchen, $ersetzen, $text); + return $text; } -// definiert einen SAtring, der ein Array nach Perlsyntax aufbaut -function my_implode($arr, $mode=0) // 0=String, 1=intval +// definiert einen String, der ein Array nach Perlsyntax aufbaut +function my_implode($arr, $mode = 0) // 0=String, 1=intval { - global $nl; - if (!is_array($arr)) return false; - foreach ($arr as $key=>$val) - { - if ($mode == 0) $arr[$key]=escape_specialchars($val); - else $arr[$key]=intval($val); - } - if ($mode == 0) $ret='("' . implode('","',$arr) . '");' . $nl; - else $ret='(' . implode(',',$arr) . ');' . $nl; - return $ret; -} - -function WriteCronScript($restore_values=false) -{ - global $nl,$config,$databases,$cron_db_array,$cron_dbpraefix_array,$cron_db_cbd_array,$cron_db_cad_array, $dontBackupDatabases; - - if (!isset($databases['db_selected_index'])) $databases['db_selected_index']=0; - if (!isset($databases['command_before_dump'])) $databases['command_before_dump']=""; - if (!isset($databases['command_after_dump'])) $databases['command_after_dump']=""; - if (!isset($databases['praefix'][$databases['db_selected_index']])) $databases['praefix'][$databases['db_selected_index']]=""; - if (!isset($databases['db_actual_cronindex'])) $databases['db_actual_cronindex']=$databases['db_selected_index']; - if (!isset($config['email_maxsize'])) $config['email_maxsize']=$config['email_maxsize1'] * ( ( $config['email_maxsize2'] == 1 ) ? 1024 : 1024 * 1024 ); - $cron_dbname=$databases['db_actual']; - - // -2 = Multidump configuration - // -3 = all databases - nothing to do - // get standard values for all databases - $cron_db_array = $databases['Name']; - $cron_dbpraefix_array=$databases['praefix']; - $cron_command_before_dump=$databases['command_before_dump']; - $cron_command_after_dump=$databases['command_after_dump']; - if (!isset($config['cron_dbindex'])) $config['cron_dbindex']=-3; - if (intval($config['cron_dbindex']) == -2) - { - // get selected dbs from multidump-settings - $cron_db_array=$databases['multi']; - $cron_dbpraefix_array=$databases['multi_praefix']; - $cron_command_before_dump=$databases['multi_commandbeforedump']; - $cron_command_after_dump=$databases['multi_commandafterdump']; + global $nl; + if (!is_array($arr)) { + return false; } + foreach ($arr as $key => $val) { + if (0 == $mode) { + $arr[$key] = escape_specialchars($val); + } else { + $arr[$key] = intval($val); + } + } + if ($mode == 0) { + $ret='("' . implode('","', $arr) . '");' . $nl; + } else { + $ret='(' . implode(',', $arr) . ');' . $nl; + } + return $ret; +} + +function WriteCronScript($restore_values = false) +{ + global $nl, $config, $databases, $cron_db_array, $cron_dbpraefix_array, $cron_db_cbd_array, $cron_db_cad_array, $dontBackupDatabases; + + if (!isset($databases['db_selected_index'])) { + $databases['db_selected_index'] = 0; + } + if (!isset($databases['command_before_dump'])) { + $databases['command_before_dump'] = ''; + } + if (!isset($databases['command_after_dump'])) { + $databases['command_after_dump'] = ''; + } + if (!isset($databases['praefix'][$databases['db_selected_index']])) { + $databases['praefix'][$databases['db_selected_index']] = ''; + } + if (!isset($databases['db_actual_cronindex'])) { + $databases['db_actual_cronindex'] = $databases['db_selected_index']; + } + if (!isset($config['email_maxsize'])) { + $config['email_maxsize'] = $config['email_maxsize1'] * ((1 == $config['email_maxsize2']) ? 1024 : 1024 * 1024); + } + $cron_dbname = $databases['db_actual']; + + // -2 = Multidump configuration + // -3 = all databases - nothing to do + // get standard values for all databases + $cron_db_array = $databases['Name']; + $cron_dbpraefix_array = $databases['praefix']; + $cron_command_before_dump = $databases['command_before_dump']; + $cron_command_after_dump = $databases['command_after_dump']; + if (!isset($config['cron_dbindex'])) { + $config['cron_dbindex'] = -3; + } + if (-2 == intval($config['cron_dbindex'])) { + // get selected dbs from multidump-settings + $cron_db_array = $databases['multi']; + $cron_dbpraefix_array = $databases['multi_praefix']; + $cron_command_before_dump = $databases['multi_commandbeforedump']; + $cron_command_after_dump = $databases['multi_commandafterdump']; + } + // we need to correct the index of the selected database after we cleaned // the db-array from information_schema and mysql if it points to a db-name if ($config['cron_dbindex'] >= 0) { @@ -410,13 +413,20 @@ function WriteCronScript($restore_values=false) $newDbNames = $databases['Name']; //remove database we don't want to backup + // from newDbNames foreach ($databases['Name'] as $k=>$v) { + if (in_array($v, $dontBackupDatabases)) { + unset($newDbNames[$k]); + } + } + // and from cron (cron_db_array has different length to newDbNames: at least mysql and information_schema are missing) + foreach ($cron_db_array as $k=>$v) { if (in_array($v, $dontBackupDatabases)) { unset($cron_db_array[$k], - $cron_dbpraefix_array[$k], - $cron_command_before_dump[$k], - $cron_command_after_dump[$k], - $newDbNames[$k]); + $cron_dbpraefix_array[$k], + $cron_command_before_dump[$k], + $cron_command_after_dump[$k] + ); } } @@ -430,348 +440,402 @@ function WriteCronScript($restore_values=false) $cronDbIndex = 0; } } - $r=str_replace("\\\\","/",$config['paths']['root']); - $r=str_replace("@","\@",$r); - $p1=$r . $config['paths']['backup']; - $p2=$r . $config['files']['perllog'] . ( ( $config['logcompression'] == 1 ) ? '.gz' : '' ); - $p3=$r . $config['files']['perllogcomplete'] . ( ( $config['logcompression'] == 1 ) ? '.gz' : '' ); + $r = str_replace('\\\\', '/', $config['paths']['root']); + $r = str_replace('@', "\@", $r); + $p1 = $r.$config['paths']['backup']; + $p2 = $r.$config['files']['perllog'].((isset($config['logcompression']) && (1 == $config['logcompression'])) ? '.gz' : ''); + $p3 = $r.$config['files']['perllogcomplete'].((isset($config['logcompression']) && (1 == $config['logcompression'])) ? '.gz' : ''); - // auf manchen Server wird statt 0 ein leerer String gespeichert -> fuehrt zu einem Syntax-Fehler - // hier die entsprechenden Ja/Nein-Variablen sicherheitshalber in intvalues aendern - $int_array=array( - 'dbport', - 'cron_compression', - 'cron_printout', - 'multi_part', - 'multipart_groesse', - 'email_maxsize', - 'auto_delete', - 'max_backup_files', - 'perlspeed', - 'optimize_tables_beforedump', - 'logcompression', - 'log_maxsize', - 'cron_completelog', - 'cron_use_sendmail', - 'cron_smtp_port' - ); - foreach ($int_array as $i) - { - if (is_array($i)) - { - foreach ($i as $key=>$val) - { - $int_array[$key]=intval($val); - } - } - else - $config[$i]=intval($config[$i]); - } - if ($config['dbport'] == 0) $config['dbport']=3306; + // auf manchen Server wird statt 0 ein leerer String gespeichert -> fuehrt zu einem Syntax-Fehler + // hier die entsprechenden Ja/Nein-Variablen sicherheitshalber in intvalues aendern + $int_array = [ + 'dbport', + 'cron_compression', + 'cron_printout', + 'multi_part', + 'multipart_groesse', + 'email_maxsize', + 'auto_delete', + 'max_backup_files', + 'perlspeed', + 'optimize_tables_beforedump', + 'logcompression', + 'log_maxsize', + 'cron_completelog', + 'cron_use_sendmail', + 'cron_smtp_port', + ]; + foreach ($int_array as $i) { + if (is_array($i)) { + foreach ($i as $key => $val) { + $int_array[$key] = intval($val); + } + } else { + $config[$i] = isset($config[$i]) ? intval($config[$i]) : 0; + } + } + if (0 == $config['dbport']) { + $config['dbport'] = 3306; + } - $cronscript=" restore it with the actual values - if (!file_exists($config['paths']['config'] . "myoosdumper.conf.php")) - { - $sfile=$config['paths']['config'] . 'myoosdumper.conf.php'; - if ($fp=fopen($sfile,"wb")) - { - if (!fwrite($fp,$cronscript)) $ret=false; - if (!fclose($fp)) $ret=false; - @chmod("$sfile",0777); - } - else - $ret=false; - } - return $ret; + if ($fp = fopen($sfile, 'wb')) { + if (!fwrite($fp, $cronscript)) { + $ret = false; + } + if (!fclose($fp)) { + $ret = false; + } + @chmod("$sfile", 0777); + } else { + $ret = false; + } + // if standard config was deleted -> restore it with the actual values + if (!file_exists($config['paths']['config'].'myoosdumper.conf.php')) { + $sfile = $config['paths']['config'].'myoosdumper.conf.php'; + if ($fp = fopen($sfile, 'wb')) { + if (!fwrite($fp, $cronscript)) { + $ret = false; + } + if (!fclose($fp)) { + $ret = false; + } + @chmod("$sfile", 0777); + } else { + $ret = false; + } + } + return $ret; } function LogFileInfo($logcompression) { - global $config; + global $config; - $l=Array(); - $sum=$s=$l['log_size']=$l['perllog_size']=$l['perllogcomplete_size']=$l['errorlog_size']=$l['log_totalsize']=0; - if ($logcompression == 1) - { - $l['log']=$config['files']['log'] . ".gz"; - $l['perllog']=$config['files']['perllog'] . ".gz"; - $l['perllogcomplete']=$config['files']['perllogcomplete'] . ".gz"; - $l['errorlog']=$config['paths']['log'] . "error.log.gz"; - } - else - { - $l['log']=$config['files']['log']; - $l['perllog']=$config['files']['perllog']; - $l['perllogcomplete']=$config['files']['perllogcomplete']; - $l['errorlog']=$config['paths']['log'] . "error.log"; - } - $l['log_size']+=@filesize($l['log']); - $sum+=$l['log_size']; - $l['perllog_size']+=@filesize($l['perllog']); - $sum+=$l['perllog_size']; - $l['perllogcomplete_size']+=@filesize($l['perllogcomplete']); - $sum+=$l['perllogcomplete_size']; - $l['errorlog_size']+=@filesize($l['errorlog']); - $sum+=$l['errorlog_size']; - $l['log_totalsize']+=$sum; + $l = []; + $sum = $s + = $l['log_size'] = $l['perllog_size'] = $l['perllogcomplete_size'] = $l['errorlog_size'] = $l['log_totalsize'] = 0; - return $l; + if ((isset($config['logcompression']) && 1 == $config['logcompression'])) { + $l['log'] = $config['files']['log'].'.gz'; + $l['perllog'] = $config['files']['perllog'].'.gz'; + $l['perllogcomplete'] = $config['files']['perllogcomplete'].'.gz'; + $l['errorlog'] = $config['paths']['log'].'error.log.gz'; + } else { + $l['log'] = $config['files']['log']; + $l['perllog'] = $config['files']['perllog']; + $l['perllogcomplete'] = $config['files']['perllogcomplete']; + $l['errorlog'] = $config['paths']['log'].'error.log'; + } + $l['log_size'] += @filesize($l['log']); + $sum += $l['log_size']; + $l['perllog_size'] += @filesize($l['perllog']); + $sum += $l['perllog_size']; + $l['perllogcomplete_size'] += @filesize($l['perllogcomplete']); + $sum += $l['perllogcomplete_size']; + $l['errorlog_size'] += @filesize($l['errorlog']); + $sum += $l['errorlog_size']; + $l['log_totalsize'] += $sum; + + return $l; } function DeleteLog() { - global $config; - //Datei öffnen und schreiben - $log=date('d.m.Y H:i:s') . " Log created.\n"; - if (file_exists($config['files']['log'] . '.gz')) @unlink($config['files']['log'] . '.gz'); - if (file_exists($config['files']['log'] . '.gz')) @unlink($config['files']['log']); - if ($config['logcompression'] == 1) - { - $fp=@gzopen($config['files']['log'] . '.gz',"wb"); - @gzwrite($fp,$log); - @gzclose($fp); - @chmod($config['files']['log'] . '.gz',0777); - } - else - { - $fp=@fopen($config['files']['log'],"wb"); - @fwrite($fp,$log); - @fclose($fp); - @chmod($config['files']['log'],0777); - } + global $config; + //Datei öffnen und schreiben + $log = date('d.m.Y H:i:s')." Log created.\n"; + if (file_exists($config['files']['log'].'.gz')) { + @unlink($config['files']['log'].'.gz'); + } + if (file_exists($config['files']['log'].'.gz')) { + @unlink($config['files']['log']); + } + if ((isset($config['logcompression']) && 1 == $config['logcompression'])) { + $fp = @gzopen($config['files']['log'].'.gz', 'wb'); + @gzwrite($fp, $log); + @gzclose($fp); + @chmod($config['files']['log'].'.gz', 0777); + } else { + $fp = @fopen($config['files']['log'], 'wb'); + @fwrite($fp, $log); + @fclose($fp); + @chmod($config['files']['log'], 0777); + } } function CreateDirsFTP() { + global $config, $lang, $install_ftp_server, $install_ftp_port, $install_ftp_user_name, $install_ftp_user_pass, $install_ftp_path; + // Herstellen der Basis-Verbindung + echo '
'.$lang['L_CONNECT_TO'].' `'.$install_ftp_server.'` Port '.$install_ftp_port.' ...
'; + $conn_id = ftp_connect($install_ftp_server); + // Einloggen mit Benutzername und Kennwort + $login_result = ftp_login($conn_id, $install_ftp_user_name, $install_ftp_user_pass); + // Verbindung überprüfen + if ((!$conn_id) || (!$login_result)) { + echo $lang['L_FTP_NOTCONNECTED']; + echo $lang['L_CONNWITH']." $install_ftp_server ".$lang['L_ASUSER']." $install_ftp_user_name ".$lang['L_NOTPOSSIBLE']; + return 0; + } else { + if (1 == $config['ftp_mode']) { + ftp_pasv($conn_id, true); + } + //Wechsel in betroffenes Verzeichnis + echo $lang['L_CHANGEDIR'].' `'.$install_ftp_path.'` ...
'; + ftp_chdir($conn_id, $install_ftp_path); + // Erstellen der Verzeichnisse + echo $lang['L_DIRCR1'].' ...
'; + ftp_mkdir($conn_id, 'work'); + ftp_site($conn_id, 'CHMOD 0777 work'); + echo $lang['L_CHANGEDIR'].' `work` ...
'; + ftp_chdir($conn_id, 'work'); + echo $lang['L_INDIR'].' `'.ftp_pwd($conn_id).'`
'; + echo $lang['L_DIRCR5'].' ...
'; + ftp_mkdir($conn_id, 'config'); + ftp_site($conn_id, 'CHMOD 0777 config'); + echo $lang['L_DIRCR2'].' ...
'; + ftp_mkdir($conn_id, 'backup'); + ftp_site($conn_id, 'CHMOD 0777 backup'); + echo $lang['L_DIRCR4'].' ...
'; + ftp_mkdir($conn_id, 'log'); + ftp_site($conn_id, 'CHMOD 0777 log'); - global $config,$lang,$install_ftp_server,$install_ftp_port,$install_ftp_user_name,$install_ftp_user_pass,$install_ftp_path; - // Herstellen der Basis-Verbindung - echo '
' . $lang['L_CONNECT_TO'] . ' `' . $install_ftp_server . '` Port ' . $install_ftp_port . ' ...
'; - $conn_id=ftp_connect($install_ftp_server); - // Einloggen mit Benutzername und Kennwort - $login_result=ftp_login($conn_id,$install_ftp_user_name,$install_ftp_user_pass); - // Verbindung überprüfen - if (( !$conn_id ) || ( !$login_result )) - { - echo $lang['L_FTP_NOTCONNECTED']; - echo $lang['L_CONNWITH'] . " $tinstall_ftp_server " . $lang['L_ASUSER'] . " $install_ftp_user_name " . $lang['L_NOTPOSSIBLE']; - return 0; - } - else - { - if ($config['ftp_mode'] == 1) ftp_pasv($conn_id,true); - //Wechsel in betroffenes Verzeichnis - echo $lang['L_CHANGEDIR'] . ' `' . $install_ftp_path . '` ...
'; - ftp_chdir($conn_id,$install_ftp_path); - // Erstellen der Verzeichnisse - echo $lang['L_DIRCR1'] . ' ...
'; - ftp_mkdir($conn_id,"work"); - ftp_site($conn_id,"CHMOD 0777 work"); - echo $lang['L_CHANGEDIR'] . ' `work` ...
'; - ftp_chdir($conn_id,"work"); - echo $lang['L_INDIR'] . ' `' . ftp_pwd($conn_id) . '`
'; - echo $lang['L_DIRCR5'] . ' ...
'; - ftp_mkdir($conn_id,"config"); - ftp_site($conn_id,"CHMOD 0777 config"); - echo $lang['L_DIRCR2'] . ' ...
'; - ftp_mkdir($conn_id,"backup"); - ftp_site($conn_id,"CHMOD 0777 backup"); - echo $lang['L_DIRCR4'] . ' ...
'; - ftp_mkdir($conn_id,"log"); - ftp_site($conn_id,"CHMOD 0777 log"); - - // Schließen des FTP-Streams - ftp_quit($conn_id); - return 1; - } + // Schließen des FTP-Streams + ftp_quit($conn_id); + return 1; + } } function ftp_mkdirs($config, $dirname) { - $dir=preg_split("/\//",$dirname); - for ($i=0; $i < count($dir) - 1; $i++) - { - $path.=$dir[$i] . "/"; - @ftp_mkdir($config['dbconnection'],$path); - } - if (@ftp_mkdir($config['dbconnection'],$dirname)) return 1; + $path = ''; + $dir = preg_split('/\//', $dirname); + for ($i = 0; $i < count($dir) - 1; ++$i) { + $path .= $dir[$i].'/'; + @ftp_mkdir($config['dbconnection'], $path); + } + if (@ftp_mkdir($config['dbconnection'], $dirname)) { + return 1; + } } function IsWritable($dir) { - $testfile=$dir . "/.writetest"; - if ($writable=@fopen($testfile,'w')) - { - @fclose($writable); - @unlink($testfile); - } - return $writable; + $testfile = $dir.'/.writetest'; + if ($writable = @fopen($testfile, 'w')) { + @fclose($writable); + @unlink($testfile); + } + + return $writable; } -function SearchDatabases($printout, $db='') +function IsAccessProtected() { - global $databases,$config,$lang; + $rc = false; + $url = sprintf('%s://%s%s', $_SERVER['REQUEST_SCHEME'], $_SERVER['HTTP_HOST'], dirname($_SERVER['PHP_SELF'])); + $headers = @get_headers($url); + if (is_array($headers) && count($headers) > 0) { + $rc = (preg_match('/\s+(?:401|403)\s+/', $headers[0])) ? 1 : 0; + } + return $rc; +} - if (!isset($config['dbconnection'])) MSD_mysql_connect(); - $db_list=array(); - if ($db > '') { - $db_list[]=$db; // DB wurde manuell angegeben - } - // Datenbanken automatisch erkennen - $show_dbs=mysqli_query($config['dbconnection'],"SHOW DATABASES"); - if (!$show_dbs === false) - { - while ($row=mysqli_fetch_row($show_dbs)) - { - if (trim($row[0]) > '') $db_list[]=$row[0]; - } - } +function SearchDatabases($printout, $db = '') +{ + global $databases, $config, $lang; + + if (!isset($config['dbconnection'])) { + mod_mysqli_connect(); + } + $db_list = []; + if ($db > '') { + $db_list[] = $db; // DB wurde manuell angegeben + } + // Datenbanken automatisch erkennen + $show_dbs = mysqli_query($config['dbconnection'], 'SHOW DATABASES'); + if (false === !$show_dbs) { + while ($row = mysqli_fetch_row($show_dbs)) { + if (trim($row[0]) > '') { + $db_list[] = $row[0]; + } + } + } $db_list = array_unique($db_list); sort($db_list); - if (sizeof($db_list) > 0) - { - $databases['db_selected_index']=0; - for ($i=0; $i < sizeof($db_list); $i++) - { - // Test-Select um zu sehen, ob Berechtigungen existieren - if (!@mysqli_query($config['dbconnection'], "SHOW TABLES FROM `" . $db_list[$i] . "`") === false) - { - $databases['Name'][$i]=$db_list[$i]; - $databases['praefix'][$i]=''; - $databases['command_before_dump'][$i]=''; - $databases['command_after_dump'][$i]=''; - if ($printout == 1) echo $lang['L_FOUND_DB'] . ' `' . $db_list[$i] . '`
'; - } else { - if ($printout == 1) echo ''.sprintf($lang['L_DB_MANUAL_ERROR'], $db_list[$i]) . '
'; - } - } - } - if (isset($databases['Name'][0])) $databases['db_actual']=$databases['Name'][0]; + if (sizeof($db_list) > 0) { + $databases['db_selected_index'] = 0; + for ($i = 0; $i < sizeof($db_list); ++$i) { + // Test-Select um zu sehen, ob Berechtigungen existieren + if (false === !@mysqli_query($config['dbconnection'], 'SHOW TABLES FROM `'.$db_list[$i].'`')) { + $databases['Name'][$i] = $db_list[$i]; + $databases['praefix'][$i] = ''; + $databases['command_before_dump'][$i] = ''; + $databases['command_after_dump'][$i] = ''; + if (1 == $printout) { + echo $lang['L_FOUND_DB'].' `'.$db_list[$i].'`
'; + } + } else { + if (1 == $printout) { + echo ''.sprintf($lang['L_DB_MANUAL_ERROR'], $db_list[$i]).'
'; + } + } + } + } + if (isset($databases['Name'][0])) { + $databases['db_actual'] = $databases['Name'][0]; + } } // removes tags from inputs recursivly function my_strip_tags($value) { - global $dont_strip; - if (is_array($value)) - { - foreach ($value as $key=>$val) - { - if (!in_array($key,$dont_strip)) $ret[$key]=my_strip_tags($val); - else $ret[$key]=$val; - } - } - else - $ret=trim(strip_tags($value)); - return $ret; + global $dont_strip; + if (is_array($value)) { + foreach ($value as $key => $val) { + if (!in_array($key, $dont_strip)) { + $ret[$key] = my_strip_tags($val); + } else { + $ret[$key] = $val; + } + } + } else { + $ret = trim(strip_tags($value)); + } + return $ret; } /** - * Add a slashes only before ' + * Add a slashes only before '. * * Used for escaping strings in JS-alerts and config-files * * @param $string + * * @return string */ function my_addslashes($string) { - return str_replace("'","\'",$string); + if (is_string($string)) { + $string = str_replace("'", "\'", $string); + } + + return $string; } /** - * Replaces quotes for outputting value in HTML-attributes + * Replaces quotes for outputting value in HTML-attributes. * * Replaces quotes for outputing value in HTML-attributes without breaking HTML * * @param string $value value to output + * * @return string */ function my_quotes($value) { - return str_replace('"','"',$value); + return str_replace('"', '"', $value); } - // prepares a string for executing it as query function db_escape($string) { - global $config; - if (function_exists('mysqli_real_escape_string')) - { - $string=mysqli_real_escape_string($config['dbconnection'], $string); - } - elseif (function_exists('mysqli_escape_string')) - { - $string=mysqli_escape_string($config['dbconnection'], $string); - } - else $string=addslashes($string); - return $string; -} + global $config; + if (function_exists('mysqli_real_escape_string')) { + $string = mysqli_real_escape_string($config['dbconnection'], $string); + } elseif (function_exists('mysqli_escape_string')) { + $string = mysqli_escape_string($config['dbconnection'], $string); + } else { + $string = addslashes($string); + } + return $string; +} diff --git a/msd/inc/functions_dump.php b/msd/inc/functions_dump.php index 86280a45..d473300a 100644 --- a/msd/inc/functions_dump.php +++ b/msd/inc/functions_dump.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,562 +16,553 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ -/** ensure this file is being included by a parent file */ -defined( 'OOS_VALID_MOD' ) OR die( 'Direct Access to this location is not allowed.' ); +/* ensure this file is being included by a parent file */ +defined('OOS_VALID_MOD') or exit('Direct Access to this location is not allowed.'); -include ('./inc/functions_global.php'); +include './inc/functions_global.php'; //Buffer fuer Multipart-Filesizepruefung -$buffer=10*1024; +$buffer = 10 * 1024; -function new_file($last_groesse=0) +function new_file($last_groesse = 0) { - global $dump,$databases,$config,$out,$lang,$nl,$mysql_commentstring; + global $dump, $databases, $config, $out, $lang, $nl, $mysql_commentstring; - // Dateiname aus Datum und Uhrzeit bilden - if ($dump['part']-$dump['part_offset']==1) $dump['filename_stamp']=date("Y_m_d_H_i",time()); - if ($config['multi_part']==1) - { - $dateiname=$databases['Name'][$dump['dbindex']].'_'.$dump['filename_stamp'].'_part_'.($dump['part']-$dump['part_offset']); - } - else - $dateiname=$databases['Name'][$dump['dbindex']].'_'.date("Y_m_d_H_i",time()); - $endung=($config['compression']) ? '.sql.gz':'.sql'; - $dump['backupdatei']=$dateiname.$endung; + // Dateiname aus Datum und Uhrzeit bilden + if ($dump['part'] - $dump['part_offset'] == 1) { + $dump['filename_stamp'] = date('Y_m_d_H_i', time()); + } + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { + $dateiname = $databases['Name'][$dump['dbindex']].'_'.$dump['filename_stamp'].'_part_'.($dump['part'] - $dump['part_offset']); + } else { + $dateiname = $databases['Name'][$dump['dbindex']].'_'.date('Y_m_d_H_i', time()); + } + $endung = (isset($config['compression']) && ($config['compression'])) ? '.sql.gz' : '.sql'; + $dump['backupdatei'] = $dateiname.$endung; - if (file_exists($config['paths']['backup'].$dump['backupdatei'])) unlink($config['paths']['backup'].$dump['backupdatei']); - $cur_time=date("Y-m-d H:i"); - $statuszeile=GetStatusLine().$nl.$mysql_commentstring.' Dump by MySQLDumper '.MSD_VERSION.' ('.$config['homepage'].')'.$nl; - $statuszeile.='/*!40101 SET NAMES \''.$dump['dump_encoding'].'\' */;'.$nl; - $statuszeile.='SET FOREIGN_KEY_CHECKS=0;'.$nl; + if (file_exists($config['paths']['backup'].$dump['backupdatei'])) { + unlink($config['paths']['backup'].$dump['backupdatei']); + } + $cur_time = date('Y-m-d H:i'); + $statuszeile = GetStatusLine().$nl.$mysql_commentstring.' Dump by MyOOS [Dumper] '.MOD_VERSION.' ('.$config['homepage'].')'.$nl; + $statuszeile .= '/*!40101 SET NAMES \''.$dump['dump_encoding'].'\' */;'.$nl; + $statuszeile .= 'SET FOREIGN_KEY_CHECKS=0;'.$nl; - if ($dump['part']-$dump['part_offset']==1) - { - if ($config['multi_part']==0) - { - if ($config['multi_dump']==1 && $dump['dbindex']==0) WriteLog('starting Multidump with '.count($databases['multi']).' Datenbases.'); - WriteLog('Start Dump \''.$dump['backupdatei'].'\''); - } - else - WriteLog('Start Multipart-Dump \''.$dateiname.'\''); + if ($dump['part'] - $dump['part_offset'] == 1) { + if (isset($config['multi_part']) && (0 == $config['multi_part'])) { + if (isset($config['multi_part']) && 1 == $config['multi_dump'] && 0 == $dump['dbindex']) { + WriteLog('starting Multidump with '.count($databases['multi']).' Datenbases.'); + } + WriteLog('Start Dump \''.$dump['backupdatei'].'\''); + } else { + WriteLog('Start Multipart-Dump \''.$dateiname.'\''); + } - $out.=''.$lang['L_STARTDUMP'].' `'.$databases['Name'][$dump['dbindex']].'`'.(($databases['praefix'][$dump['dbindex']]!="") ? ' ('.$lang['L_WITHPRAEFIX'].' '.$databases['praefix'][$dump['dbindex']].')':'').'... '; - if ($dump['part']==1) - { - $dump['table_offset']=0; - $dump['countdata']=0; - } - // Seitenerstaufruf -> Backupdatei anlegen - $dump['data']=$statuszeile.$mysql_commentstring.' Dump created: '.$cur_time; - } - else - { - if ($config['multi_part']!=0) - { - WriteLog('Continue Multipart-Dump with File '.($dump['part']-$dump['part_offset']).' (last file was '.$last_groesse.' Bytes)'); - $dump['data']=$statuszeile.$mysql_commentstring.' This is part '.($dump['part']-$dump['part_offset']).' of the backup.'.$nl.$nl.$dump['data']; - - } - } - WriteToDumpFile(); - $dump['part']++; + $out .= ''.$lang['L_STARTDUMP'].' `'.$databases['Name'][$dump['dbindex']].'`'.(('' != $databases['praefix'][$dump['dbindex']]) ? ' ('.$lang['L_WITHPRAEFIX'].' '.$databases['praefix'][$dump['dbindex']].')' : '').'... '; + if (1 == $dump['part']) { + $dump['table_offset'] = 0; + $dump['countdata'] = 0; + } + // Seitenerstaufruf -> Backupdatei anlegen + $dump['data'] = $statuszeile.$mysql_commentstring.' Dump created: '.$cur_time; + } else { + if (0 != $config['multi_part']) { + WriteLog('Continue Multipart-Dump with File '.($dump['part'] - $dump['part_offset']).' (last file was '.$last_groesse.' Bytes)'); + $dump['data'] = $statuszeile.$mysql_commentstring.' This is part '.($dump['part'] - $dump['part_offset']).' of the backup.'.$nl.$nl.$dump['data']; + } + } + WriteToDumpFile(); + ++$dump['part']; } -function GetStatusLine($kind="php") +function GetStatusLine($kind = 'php') { - /*AUFBAU der Statuszeile: - -- Status:tabellenzahl:datensätze:Multipart:Datenbankname:script:scriptversion:Kommentar:MySQLVersion:Backupflags:SQLBefore:SQLAfter:Charset:CharsetEXTINFO - Aufbau Backupflags (1 Zeichen pro Flag, 0 oder 1, 2=unbekannt) - (complete inserts)(extended inserts)(ignore inserts)(delayed inserts)(downgrade)(lock tables)(optimize tables) - */ + /*AUFBAU der Statuszeile: + -- Status:tabellenzahl:datensätze:Multipart:Datenbankname:script:scriptversion:Kommentar:MySQLVersion:Backupflags:SQLBefore:SQLAfter:Charset:CharsetEXTINFO + Aufbau Backupflags (1 Zeichen pro Flag, 0 oder 1, 2=unbekannt) + (complete inserts)(extended inserts)(ignore inserts)(delayed inserts)(downgrade)(lock tables)(optimize tables) + */ - global $databases,$config,$lang,$dump,$mysql_commentstring; + global $databases, $config, $lang, $dump, $mysql_commentstring; - $t_array=explode("|",$databases['db_actual_tableselected']); - $t=0; - $r=0; - $t_zeile="$mysql_commentstring\n$mysql_commentstring TABLE-INFO\r\n"; - MSD_mysql_connect(); - $res=mysqli_query($config['dbconnection'], "SHOW TABLE STATUS FROM `".$databases['Name'][$dump['dbindex']]."`"); - $numrows=intval(@mysqli_num_rows($res)); - for($i=0;$i<$numrows;$i++) - { - $erg=mysqli_fetch_array($res); - // Get nr of records -> need to do it this way because of incorrect returns when using InnoDBs - $sql_2="SELECT count(*) as `count_records` FROM `".$databases['Name'][$dump['dbindex']]."`.`".$erg['Name']."`"; - $res2=@mysqli_query($config['dbconnection'], $sql_2); - if ($res2===false) - { - // error reading table definition - $read_create_error=sprintf($lang['L_FATAL_ERROR_DUMP'],$databases['Name'][$dump['dbindex']],$erg['Name']).': '.mysqli_error($config['dbconnection']); - Errorlog("DUMP",$databases['Name'][$dump['dbindex']],'',$read_create_error,0); - WriteLog($read_create_error); - if ($config['stop_with_error']>0) - { - die($read_create_error); - } - $dump['errors']++; - //$i++; // skip corrupted table - } - else - { - $row2=mysqli_fetch_array($res2); - $erg['Rows']=$row2['count_records']; + $t_array = explode('|', $databases['db_actual_tableselected']); + $t = 0; + $r = 0; + $t_zeile = "$mysql_commentstring\n$mysql_commentstring TABLE-INFO\r\n"; + mod_mysqli_connect(); + $res = mysqli_query($config['dbconnection'], 'SHOW TABLE STATUS FROM `'.$databases['Name'][$dump['dbindex']].'`'); + $numrows = intval(@mysqli_num_rows($res)); + for ($i = 0; $i < $numrows; ++$i) { + $erg = mysqli_fetch_array($res); + // Get nr of records -> need to do it this way because of incorrect returns when using InnoDBs + $sql_2 = 'SELECT count(*) as `count_records` FROM `'.$databases['Name'][$dump['dbindex']].'`.`'.$erg['Name'].'`'; + $res2 = mysqli_query($config['dbconnection'], $sql_2); + if (false === $res2) { + // error reading table definition + $read_create_error = sprintf($lang['L_FATAL_ERROR_DUMP'], $databases['Name'][$dump['dbindex']], $erg['Name']).': '.mysqli_error($config['dbconnection']); + Errorlog('DUMP', $databases['Name'][$dump['dbindex']], '', $read_create_error, 0); + WriteLog($read_create_error); + if ($config['stop_with_error'] > 0) { + exit($read_create_error); + } + ++$dump['errors']; + //$i++; // skip corrupted table + } else { + $row2 = mysqli_fetch_array($res2); + $erg['Rows'] = $row2['count_records']; - if (($databases['db_actual_tableselected']==''||($databases['db_actual_tableselected']!=''&&(in_array($erg[0],$t_array))))&&(substr($erg[0],0,strlen($databases['praefix'][$dump['dbindex']]))==$databases['praefix'][$dump['dbindex']])) - { - $t++; - $r+=$erg['Rows']; - if (isset($erg['Type'])) $erg['Engine']=$erg['Type']; - $t_zeile.="$mysql_commentstring TABLE|".$erg['Name'].'|'.$erg['Rows'].'|'.($erg['Data_length']+$erg['Index_length']).'|'.$erg['Update_time'].'|'.$erg['Engine']."\n"; - } - } - } - //$dump['totalrecords']=$r; - $flags=1; + if (('' == $databases['db_actual_tableselected'] || ('' != $databases['db_actual_tableselected'] && (in_array($erg[0], $t_array)))) && (substr($erg[0], 0, strlen($databases['praefix'][$dump['dbindex']])) == $databases['praefix'][$dump['dbindex']])) { + ++$t; + $r += $erg['Rows']; + if (isset($erg['Type'])) { + $erg['Engine'] = $erg['Type']; + } + $t_zeile .= "$mysql_commentstring TABLE|".$erg['Name'].'|'.$erg['Rows'].'|'.($erg['Data_length'] + $erg['Index_length']).'|'.$erg['Update_time'].'|'.$erg['Engine']."\n"; + } + } + } + //$dump['totalrecords'] = $r; + $flags = 1; - $mp=($config['multi_part']==1) ? $mp="MP_".($dump['part']-$dump['part_offset']):'MP_0'; - $statusline="$mysql_commentstring Status:$t:$r:$mp:".$databases['Name'][$dump['dbindex']].":$kind:".MSD_VERSION.":".$dump['kommentar'].":"; - $statusline.=MSD_MYSQL_VERSION.":$flags:::".$dump['dump_encoding'].":EXTINFO\n".$t_zeile."$mysql_commentstring"." EOF TABLE-INFO\n$mysql_commentstring"; - return $statusline; + $mp = (isset($config['multi_part']) && (1 == $config['multi_part'])) ? $mp = 'MP_'.($dump['part'] - $dump['part_offset']) : 'MP_0'; + $statusline = "$mysql_commentstring Status:$t:$r:$mp:".$databases['Name'][$dump['dbindex']].":$kind:".MOD_VERSION.':'.$dump['kommentar'].':'; + $statusline .= MOD_MYSQL_VERSION.":$flags:::".$dump['dump_encoding'].":EXTINFO\n".$t_zeile."$mysql_commentstring"." EOF TABLE-INFO\n$mysql_commentstring"; + return $statusline; } // Liest die Eigenschaften der Tabelle aus der DB und baut die CREATE-Anweisung zusammen -function get_def($db,$table,$withdata=1) +function get_def($db, $table, $withdata = 1) { - global $config,$nl,$mysql_commentstring,$dump; + global $config, $nl, $mysql_commentstring, $dump; - $def="\n\n$mysql_commentstring\n$mysql_commentstring Create Table `$table`\n$mysql_commentstring\n\n"; - if ($dump['table_types'][getDBIndex($db,$table)]=='VIEW') - { - $def.="DROP VIEW IF EXISTS `$table`;\n"; - $withdata=0; - } - else - $def.="DROP TABLE IF EXISTS `$table`;\n"; - mysqli_select_db($config['dbconnection'], $db); - $result=mysqli_query($config['dbconnection'], 'SHOW CREATE TABLE `'.$table.'`'); - $row=@mysqli_fetch_row($result); - if ($row===false) return false; - $def.=$row[1].';'."\n\n"; - if ($withdata==1) - { - $def.="$mysql_commentstring\n$mysql_commentstring Data for Table `$table`\n$mysql_commentstring\n\n"; - $def.="/*!40000 ALTER TABLE `$table` DISABLE KEYS */;".$nl; - } - return $def; + $def = "\n\n$mysql_commentstring\n$mysql_commentstring Create Table `$table`\n$mysql_commentstring\n\n"; + if ('VIEW' == $dump['table_types'][getDBIndex($db, $table)]) { + $def .= "DROP VIEW IF EXISTS `$table`;\n"; + $withdata = 0; + } else { + $def .= "DROP TABLE IF EXISTS `$table`;\n"; + } + mysqli_select_db($config['dbconnection'], $db); + $result = mysqli_query($config['dbconnection'], 'SHOW CREATE TABLE `'.$table.'`'); + $row = mysqli_fetch_row($result); + if (false === $row) { + return false; + } + $def .= $row[1].';'."\n\n"; + if (1 == $withdata) { + $def .= "$mysql_commentstring\n$mysql_commentstring Data for Table `$table`\n$mysql_commentstring\n\n"; + $def .= "/*!40000 ALTER TABLE `$table` DISABLE KEYS */;".$nl; + } + return $def; } // Liest die Daten aus der DB aus und baut die INSERT-Anweisung zusammen -function get_content($db,$table) +function get_content($db, $table) { - global $config,$nl,$dump,$buffer; + global $config, $nl, $dump, $buffer; - $content=''; - $complete=Fieldlist($db,$table).' '; + $content = ''; + $complete = Fieldlist($db, $table).' '; - if (!isset($config['dbconnection'])) MSD_mysql_connect(); + if (!isset($config['dbconnection'])) { + mod_mysqli_connect(); + } - $table_ready=0; - $query='SELECT * FROM `'.$table.'` LIMIT '.$dump['zeilen_offset'].','.($dump['restzeilen']+1); - mysqli_select_db($config['dbconnection'], $db); - $result=mysqli_query($config['dbconnection'], $query); - $ergebnisse=@mysqli_num_rows($result); - if ($ergebnisse!==false) - { - // $num_felder=mysqli_field_count($result); - $num_felder=mysqli_field_count($config['dbconnection']); + $table_ready = 0; + $query = 'SELECT * FROM `'.$table.'` LIMIT '.$dump['zeilen_offset'].','.($dump['restzeilen'] + 1); + mysqli_select_db($config['dbconnection'], $db); + $result = mysqli_query($config['dbconnection'], $query); + $ergebnisse = mysqli_num_rows($result); + if (false !== $ergebnisse) { + // $num_felder=mysqli_field_count($result); + $num_felder = mysqli_field_count($config['dbconnection']); - $first=1; + $first = 1; - if ($ergebnisse>$dump['restzeilen']) - { - $dump['zeilen_offset']+=$dump['restzeilen']; - $ergebnisse--; - $dump['restzeilen']=0; - } - else - { - $dump['table_offset']++; - $dump['zeilen_offset']=0; - $dump['restzeilen']=$dump['restzeilen']-$ergebnisse; - $table_ready=1; - } - $ax=0; - for($x=0;$x<$ergebnisse;$x++) - { - $row=mysqli_fetch_row($result); - $ax++; + if ($ergebnisse > $dump['restzeilen']) { + $dump['zeilen_offset'] += $dump['restzeilen']; + --$ergebnisse; + $dump['restzeilen'] = 0; + } else { + ++$dump['table_offset']; + $dump['zeilen_offset'] = 0; + $dump['restzeilen'] = $dump['restzeilen'] - $ergebnisse; + $table_ready = 1; + } + $ax = 0; + for ($x = 0; $x < $ergebnisse; ++$x) { + $row = mysqli_fetch_row($result); + ++$ax; - $insert='INSERT INTO `'.$table.'` '.$complete.'VALUES ('; + $insert = 'INSERT INTO `'.$table.'` '.$complete.'VALUES ('; - for($j=0;$j<$num_felder;$j++) - { - if (!isset($row[$j])) $insert.='NULL,'; - else - if ($row[$j]!='') $insert.='\''.mysqli_real_escape_string($config['dbconnection'], $row[$j]).'\','; - else - $insert.='\'\','; - } - $insert=substr($insert,0,-1).');'.$nl; - $dump['data'].=$insert; - $dump['countdata']++; - if (strlen($dump['data'])>$config['memory_limit']||($config['multi_part']==1&&strlen($dump['data'])+$buffer>$config['multipart_groesse'])) - { - WriteToDumpFile(); - } - } - if ($table_ready==1&&$dump['table_types'][getDBIndex($db,$table)]!='VIEW') $dump['data'].="/*!40000 ALTER TABLE `$table` ENABLE KEYS */;\n"; - } - else - { - // table corrupt -> skip it - $dump['table_offset']++; - $dump['zeilen_offset']=0; - $dump['restzeilen']=$dump['restzeilen']-$ergebnisse; - $dump['data'].="/*!40000 ALTER TABLE `$table` ENABLE KEYS */;\n"; - if (strlen($dump['data'])>$config['memory_limit']||($config['multi_part']==1&&strlen($dump['data'])+$buffer>$config['multipart_groesse'])) - { - WriteToDumpFile(); - } - } - @mysqli_free_result($result); + for ($j = 0; $j < $num_felder; ++$j) { + if (!isset($row[$j])) { + $insert .= 'NULL,'; + } else { + $fieldinfo = mysqli_fetch_field_direct($result, $j); + if (($fieldinfo->flags & 128) == true && isset($config['use_binary_container']) && 1 == $config['use_binary_container']) { + if ('' != $row[$j]) { + $insert .= '_binary 0x'.bin2hex($row[$j]).','; + } else { + $insert .= '_binary \'\','; + } + } elseif ('' != $row[$j]) { + $insert .= '\''.mysqli_real_escape_string($config['dbconnection'], $row[$j]).'\','; + } else { + $insert .= '\'\','; + } + } + } + $insert = substr($insert, 0, -1).');'.$nl; + $dump['data'] .= $insert; + ++$dump['countdata']; + $config['memory_limit'] = isset($config['memory_limit']) ? $config['memory_limit'] : 0; + if (strlen($dump['data']) > $config['memory_limit'] || (1 == $config['multi_part'] && strlen($dump['data']) + $buffer > $config['multipart_groesse'])) { + WriteToDumpFile(); + } + } + if (1 == $table_ready && 'VIEW' != $dump['table_types'][getDBIndex($db, $table)]) { + $dump['data'] .= "/*!40000 ALTER TABLE `$table` ENABLE KEYS */;\n"; + } + } else { + // table corrupt -> skip it + ++$dump['table_offset']; + $dump['zeilen_offset'] = 0; + $dump['restzeilen'] = $dump['restzeilen'] - $ergebnisse; + $dump['data'] .= "/*!40000 ALTER TABLE `$table` ENABLE KEYS */;\n"; + if (strlen($dump['data']) > $config['memory_limit'] || (1 == $config['multi_part'] && strlen($dump['data']) + $buffer > $config['multipart_groesse'])) { + WriteToDumpFile(); + } + } + @mysqli_free_result($result); } function WriteToDumpFile() { - global $config,$dump,$buffer; - $dump['filesize']=0; + global $config, $dump, $buffer; + $dump['filesize'] = 0; - $df=$config['paths']['backup'].$dump['backupdatei']; + $df = $config['paths']['backup'].$dump['backupdatei']; - if ($config['compression']==1) - { - if ($dump['data']!='') - { - $fp=gzopen($df,'ab'); - gzwrite($fp,$dump['data']); - gzclose($fp); - } - } - else - { - if ($dump['data']!='') - { - $fp=fopen($df,'ab'); - fwrite($fp,$dump['data']); - fclose($fp); - } - } - $dump['data']=''; - if (!isset($dump['fileoperations'])) $dump['fileoperations']=0; - $dump['fileoperations']++; + if (isset($config['compression']) && (1 == $config['compression'])) { + if ('' != $dump['data']) { + $fp = gzopen($df, 'ab'); + gzwrite($fp, $dump['data']); + gzclose($fp); + } + } else { + if ('' != $dump['data']) { + $fp = fopen($df, 'ab'); + fwrite($fp, $dump['data']); + fclose($fp); + } + } + $dump['data'] = ''; + if (!isset($dump['fileoperations'])) { + $dump['fileoperations'] = 0; + } + ++$dump['fileoperations']; - if ($config['multi_part']==1) clearstatcache(); - $dump['filesize']=filesize($df); - if ($config['multi_part']==1&&$dump['filesize']+$buffer>$config['multipart_groesse']) - { - @chmod($df,0777); - new_file($dump['filesize']); // Wenn maximale Dateigroesse erreicht -> neues File starten - } + if (isset($config['multi_part']) && (1 == $config['multi_part'])) { + clearstatcache(); + } + $dump['filesize'] = filesize($df); + if ((isset($config['multi_part']) && 1 == $config['multi_part']) && ($dump['filesize'] + $buffer > $config['multipart_groesse'])) { + @chmod($df, 0777); + new_file($dump['filesize']); // Wenn maximale Dateigroesse erreicht -> neues File starten + } } function ExecuteCommand($when) { - global $config,$databases,$dump,$out,$lang; - $lf='
'; - if (!isset($dump['dbindex'])) return; - if ($when=='b') - { // before dump - $cd=$databases['command_before_dump'][$dump['dbindex']]; - //WriteLog('DbIndex: '.$dump['dbindex'].' Before: '.$databases['command_before_dump'][$dump['dbindex']]); - } - else - { + global $config, $databases, $dump, $out, $lang; + $lf = '
'; + if (!isset($dump['dbindex'])) { + return; + } + if ('b' == $when) { // before dump + $cd = $databases['command_before_dump'][$dump['dbindex']]; + //WriteLog('DbIndex: '.$dump['dbindex'].' Before: '.$databases['command_before_dump'][$dump['dbindex']]); + } else { + $cd = $databases['command_after_dump'][$dump['dbindex']]; + //WriteLog('DbIndex: '.$dump['dbindex'].' After: '.$databases['command_after_dump'][$dump['dbindex']]); + } - $cd=$databases['command_after_dump'][$dump['dbindex']]; - //WriteLog('DbIndex: '.$dump['dbindex'].' After: '.$databases['command_after_dump'][$dump['dbindex']]); - } + if ('' != $cd) { + //jetzt ausführen + if ('system:' != substr(strtolower($cd), 0, 7)) { + $cad = []; + @mysqli_select_db($config['dbconnection'], $databases['Name'][$dump['dbindex']]); + if (strpos($cd, ';')) { + $cad = explode(';', $cd); + } else { + $cad[0] = $cd; + } - if ($cd!='') - { - //jetzt ausführen - if (substr(strtolower($cd),0,7)!='system:') - { - $cad=array(); - @mysqli_select_db($databases['Name'][$dump['dbindex']]); - if (strpos($cd,';')) - { - $cad=explode(';',$cd); - } - else - $cad[0]=$cd; - - for($i=0;$i'') - { - $result=@mysqli_query($config['dbconnection'], $cad[$i]); - - if ($result===false) - { - WriteLog("Error executing Query '$cad[$i]'! MySQL returns: ".trim(mysqli_error($config['dbconnection']))); - ErrorLog("Error executing Query '$cad[$i]'!",$databases['Name'][$dump['dbindex']],$cad[$i],mysqli_error($config['dbconnection']),0); - $dump['errors']++; - $out.='Error executing Query '.$cad[$i].''.$lf; - } - else - { - WriteLog("Successfully executed Query: '$cad[$i]'"); - $out.='Successfully executed Query: \''.$cad[$i].'\''.$lf; - } - } - } - } - elseif (substr(strtolower($cd),0,7)=="system:") - { - $command=substr($cd,7); - $result=@system($command,$returnval); - if (!$result) - { - WriteLog("Error while executing System Command '$command'"); - $dump['errors']++; - $out.=$lf.'ERROR executing System Command \''.$ommand.'\'
'; - } - else - { - WriteLog("Successfully executed System Command '$command'. [$returnval]"); - $out.=$lf.'Successfully executed System Command \''.$ommand.'.
'; - } - } - } + for ($i = 0; $i < sizeof($cad); ++$i) { + if (trim($cad[$i]) > '') { + $result = mysqli_query($config['dbconnection'], $cad[$i]); + if (false === $result) { + WriteLog("Error executing Query '$cad[$i]'! MySQL returns: ".trim(mysqli_error($config['dbconnection']))); + ErrorLog("Error executing Query '$cad[$i]'!", $databases['Name'][$dump['dbindex']], $cad[$i], mysqli_error($config['dbconnection']), 0); + ++$dump['errors']; + $out .= 'Error executing Query '.$cad[$i].''.$lf; + } else { + WriteLog("Successfully executed Query: '$cad[$i]'"); + $out .= 'Successfully executed Query: \''.$cad[$i].'\''.$lf; + } + } + } + } elseif ('system:' == substr(strtolower($cd), 0, 7)) { + $command = substr($cd, 7); + $result = @system($command, $returnval); + if (!$result) { + WriteLog("Error while executing System Command '$command'"); + ++$dump['errors']; + $out .= $lf.'ERROR executing System Command \''.$command.'\'
'; + } else { + WriteLog("Successfully executed System Command '$command'. [$returnval]"); + $out .= $lf.'Successfully executed System Command \''.$command.'.
'; + } + } + } } function DoEmail() { - global $config,$dump,$databases,$email,$lang,$out,$REMOTE_ADDR; + global $config, $dump, $databases, $email, $lang, $out, $REMOTE_ADDR; - $header=""; - if ($config['cron_use_sendmail']==1) - { - //sendmail - if (ini_get("sendmail_path")!=$config['cron_sendmail']) @ini_set("SMTP",$config['cron_sendmail']); - if (ini_get("sendmail_from")!=$config['email_sender']) @ini_set("SMTP",$config['email_sender']); - } - else - { - //SMTP - } - if (ini_get("SMTP")!=$config['cron_smtp']) @ini_set("SMTP",$config['cron_smtp']); - if (ini_get("smtp_port")!=25) @ini_set("smtp_port",25); + $header = ''; + if (1 == $config['cron_use_sendmail']) { + //sendmail + if (ini_get('sendmail_path') != $config['cron_sendmail']) { + @ini_set('SMTP', $config['cron_sendmail']); + } + if (ini_get('sendmail_from') != $config['email_sender']) { + @ini_set('SMTP', $config['email_sender']); + } + } else { + //SMTP + } + if (ini_get('SMTP') != $config['cron_smtp']) { + @ini_set('SMTP', $config['cron_smtp']); + } + if (25 != ini_get('smtp_port')) { + @ini_set('smtp_port', 25); + } - if ($config['multi_part']==0) - { - $file=$dump['backupdatei']; - $file_name=(strpos("/",$file)) ? substr($file,strrpos("/",$file)):$file; - $file_type=filetype($config['paths']['backup'].$file); - $file_size=filesize($config['paths']['backup'].$file); - if (($config['email_maxsize']>0&&$file_size>$config['email_maxsize'])||$config['send_mail_dump']==0) - { - //anhang zu gross - $subject="Backup '".$databases['Name'][$dump['dbindex']]."' - ".date("d\.m\.Y H:i",time()); - $header.="FROM:".$config['email_sender']."\n"; - if (isset($config['email_recipient_cc'])&&trim($config['email_recipient_cc'])>'') $header.="Cc: ".$config['email_recipient_cc']."\r\n"; - $header.="MIME-version: 1.0\n"; - $header.="X-Mailer: PHP/".phpversion()."\n"; - $header.="X-Sender-IP: $REMOTE_ADDR\n"; - $header.="Content-Type: text/html; charset=utf-8\n"; - if ($config['send_mail_dump']!=0) - { - $msg_body=sprintf(addslashes($lang['L_EMAILBODY_TOOBIG']),byte_output($config['email_maxsize']),$databases['Name'][$dump['dbindex']],"$file (".byte_output(filesize($config['paths']['backup'].$file)).")
"); - } - else - { - $msg_body=sprintf(addslashes($lang['L_EMAILBODY_NOATTACH']),$databases['Name'][$dump['dbindex']],"$file (".byte_output(filesize($config['paths']['backup'].$file)).")"); - } - include_once ('./inc/functions.php'); - $msg_body.=''.$file.''; - $email_log="Email sent to '".$config['email_recipient']."'"; - $email_out=$lang['L_EMAIL_WAS_SEND']."`".$config['email_recipient']."`
"; - } - else - { - //alles ok, anhang generieren - $msg_body=sprintf(addslashes($lang['L_EMAILBODY_ATTACH']),$databases['Name'][$dump['dbindex']],"$file (".byte_output(filesize($config['paths']['backup'].$file)).")"); - $subject="Backup '".$databases['Name'][$dump['dbindex']]."' - ".date("d\.m\.Y",time()); - $fp=fopen($config['paths']['backup'].$file,"r"); - $contents=fread($fp,$file_size); - $encoded_file=chunk_split(base64_encode($contents)); - fclose($fp); - $header.="FROM:".$config['email_sender']."\n"; - if (isset($config['email_recipient_cc'])&&trim($config['email_recipient_cc'])>'') $header.="Cc: ".$config['email_recipient_cc']."\r\n"; - $header.="MIME-version: 1.0\n"; - $header.="Content-type: multipart/mixed; "; - $header.="boundary=\"Message-Boundary\"\n"; - $header.="Content-transfer-encoding: 7BIT\n"; - $header.="X-attachments: $file_name"; - $body_top="--Message-Boundary\n"; - $body_top.="Content-type: text/html; charset=utf-8\n"; - $body_top.="Content-transfer-encoding: 7BIT\n"; - $body_top.="Content-description: Mail message body\n\n"; - $msg_body=$body_top.$msg_body; - $msg_body.="\n\n--Message-Boundary\n"; - $msg_body.="Content-type: $file_type; name=\"$file\"\n"; - $msg_body.="Content-Transfer-Encoding: BASE64\n"; - $msg_body.="Content-disposition: attachment; filename=\"$file\"\n\n"; - $msg_body.="$encoded_file\n"; - $msg_body.="--Message-Boundary--\n"; - $email_log="Email was sent to '".$config['email_recipient']."' with '".$dump['backupdatei']."'."; - $email_out=$lang['L_EMAIL_WAS_SEND']."`".$config['email_recipient']."`".$lang['L_WITH']."`".$dump['backupdatei']."`.
"; - } - } - else - { - //Multipart - $mp_sub="Backup '".$databases['Name'][$dump['dbindex']]."' - ".date("d\.m\.Y",time()); - $subject=$mp_sub; - $header.="FROM:".$config['email_sender']."\n"; - if (isset($config['email_recipient_cc'])&&trim($config['email_recipient_cc'])>'') $header.="Cc: ".$config['email_recipient_cc']."\r\n"; - $header.="MIME-version: 1.0\n"; - $header.="X-Mailer: PHP/".phpversion()."\n"; - $header.="X-Sender-IP: $REMOTE_ADDR\n"; - $header.="Content-Type: text/html; charset=utf-8"; - $dateistamm=substr($dump['backupdatei'],0,strrpos($dump['backupdatei'],"part_"))."part_"; - $dateiendung=($config['compression']==1) ? ".sql.gz":".sql"; - $mpdatei=Array(); - $mpfiles=""; - for($i=1;$i<($dump['part']-$dump['part_offset']);$i++) - { - $mpdatei[$i-1]=$dateistamm.$i.$dateiendung; - $sz=byte_output(@filesize($config['paths']['backup'].$mpdatei[$i-1])); - $mpfiles.=$mpdatei[$i-1]." (".$sz.")
"; - } - $msg_body=($config['send_mail_dump']==1) ? sprintf(addslashes($lang['L_EMAILBODY_MP_ATTACH']),$databases['Name'][$dump['dbindex']],$mpfiles):sprintf(addslashes($lang['L_EMAILBODY_MP_NOATTACH']),$databases['Name'][$dump['dbindex']],$mpfiles); - $email_log="Email was sent to '".$config['email_recipient']."'"; - $email_out=$lang['L_EMAIL_WAS_SEND']."`".$config['email_recipient']."`
"; - } - if (@mail($config['email_recipient'],stripslashes($subject),$msg_body,$header)) - { - $out.=''.$email_out.''; - WriteLog("$email_log"); - } - else - { - $out.=''.$lang['L_MAILERROR'].'
'; - WriteLog("Email to '".$config['email_recipient']."' failed !"); - ErrorLog("Email ",$databases['Name'][$dump['dbindex']],'Subject: '.stripslashes($subject),$lang['L_MAILERROR']); - $dump['errors']++; - } + if (0 == $config['multi_part']) { + $file = $dump['backupdatei']; + $file_name = (strpos('/', $file)) ? substr($file, strrpos('/', $file)) : $file; + $file_type = filetype($config['paths']['backup'].$file); + $file_size = filesize($config['paths']['backup'].$file); + if (($config['email_maxsize'] > 0 && $file_size > $config['email_maxsize']) || 0 == $config['send_mail_dump']) { + //anhang zu gross + $subject = "Backup '".$databases['Name'][$dump['dbindex']]."' - ".date("d\.m\.Y H:i", time()); + $header .= 'FROM:'.$config['email_sender']."\n"; + if (isset($config['email_recipient_cc']) && trim($config['email_recipient_cc']) > '') { + $header .= 'Cc: '.$config['email_recipient_cc']."\r\n"; + } + $header .= "MIME-version: 1.0\n"; + $header .= 'X-Mailer: PHP/'.phpversion()."\n"; + $header .= "X-Sender-IP: $REMOTE_ADDR\n"; + $header .= "Content-Type: text/html; charset=utf-8\n"; + if (0 != $config['send_mail_dump']) { + $msg_body = sprintf(addslashes($lang['L_EMAILBODY_TOOBIG']), byte_output($config['email_maxsize']), $databases['Name'][$dump['dbindex']], "$file (".byte_output(filesize($config['paths']['backup'].$file)).')
'); + } else { + $msg_body = sprintf(addslashes($lang['L_EMAILBODY_NOATTACH']), $databases['Name'][$dump['dbindex']], "$file (".byte_output(filesize($config['paths']['backup'].$file)).')'); + } + include_once './inc/functions.php'; + $msg_body .= ''.$file.''; + $email_log = "Email sent to '".$config['email_recipient']."'"; + $email_out = $lang['L_EMAIL_WAS_SEND'].'`'.$config['email_recipient'].'`
'; + } else { + //alles ok, anhang generieren + $msg_body = sprintf(addslashes($lang['L_EMAILBODY_ATTACH']), $databases['Name'][$dump['dbindex']], "$file (".byte_output(filesize($config['paths']['backup'].$file)).')'); + $subject = "Backup '".$databases['Name'][$dump['dbindex']]."' - ".date("d\.m\.Y", time()); + $fp = fopen($config['paths']['backup'].$file, 'r'); + $contents = fread($fp, $file_size); + $encoded_file = chunk_split(base64_encode($contents)); + fclose($fp); + $header .= 'FROM:'.$config['email_sender']."\n"; + if (isset($config['email_recipient_cc']) && trim($config['email_recipient_cc']) > '') { + $header .= 'Cc: '.$config['email_recipient_cc']."\r\n"; + } + $header .= "MIME-version: 1.0\n"; + $header .= 'Content-type: multipart/mixed; '; + $header .= "boundary=\"Message-Boundary\"\n"; + $header .= "Content-transfer-encoding: 7BIT\n"; + $header .= "X-attachments: $file_name"; + $body_top = "--Message-Boundary\n"; + $body_top .= "Content-type: text/html; charset=utf-8\n"; + $body_top .= "Content-transfer-encoding: 7BIT\n"; + $body_top .= "Content-description: Mail message body\n\n"; + $msg_body = $body_top.$msg_body; + $msg_body .= "\n\n--Message-Boundary\n"; + $msg_body .= "Content-type: $file_type; name=\"$file\"\n"; + $msg_body .= "Content-Transfer-Encoding: BASE64\n"; + $msg_body .= "Content-disposition: attachment; filename=\"$file\"\n\n"; + $msg_body .= "$encoded_file\n"; + $msg_body .= "--Message-Boundary--\n"; + $email_log = "Email was sent to '".$config['email_recipient']."' with '".$dump['backupdatei']."'."; + $email_out = $lang['L_EMAIL_WAS_SEND'].'`'.$config['email_recipient'].'`'.$lang['L_WITH'].'`'.$dump['backupdatei'].'`.
'; + } + } else { + //Multipart + $mp_sub = "Backup '".$databases['Name'][$dump['dbindex']]."' - ".date("d\.m\.Y", time()); + $subject = $mp_sub; + $header .= 'FROM:'.$config['email_sender']."\n"; + if (isset($config['email_recipient_cc']) && trim($config['email_recipient_cc']) > '') { + $header .= 'Cc: '.$config['email_recipient_cc']."\r\n"; + } + $header .= "MIME-version: 1.0\n"; + $header .= 'X-Mailer: PHP/'.phpversion()."\n"; + $header .= "X-Sender-IP: $REMOTE_ADDR\n"; + $header .= 'Content-Type: text/html; charset=utf-8'; + $dateistamm = substr($dump['backupdatei'], 0, strrpos($dump['backupdatei'], 'part_')).'part_'; + $dateiendung = (1 == $config['compression']) ? '.sql.gz' : '.sql'; + $mpdatei = []; + $mpfiles = ''; + for ($i = 1; $i < ($dump['part'] - $dump['part_offset']); ++$i) { + $mpdatei[$i - 1] = $dateistamm.$i.$dateiendung; + $sz = byte_output(@filesize($config['paths']['backup'].$mpdatei[$i - 1])); + $mpfiles .= $mpdatei[$i - 1].' ('.$sz.')
'; + } + $msg_body = (1 == $config['send_mail_dump']) ? sprintf(addslashes($lang['L_EMAILBODY_MP_ATTACH']), $databases['Name'][$dump['dbindex']], $mpfiles) : sprintf(addslashes($lang['L_EMAILBODY_MP_NOATTACH']), $databases['Name'][$dump['dbindex']], $mpfiles); + $email_log = "Email was sent to '".$config['email_recipient']."'"; + $email_out = $lang['L_EMAIL_WAS_SEND'].'`'.$config['email_recipient'].'`
'; + } + if (@mail($config['email_recipient'], stripslashes($subject), $msg_body, $header)) { + $out .= ''.$email_out.''; + WriteLog("$email_log"); + } else { + $out .= ''.$lang['L_MAILERROR'].'
'; + WriteLog("Email to '".$config['email_recipient']."' failed !"); + ErrorLog('Email ', $databases['Name'][$dump['dbindex']], 'Subject: '.stripslashes($subject), $lang['L_MAILERROR']); + ++$dump['errors']; + } - if (isset($mpdatei)&&$config['send_mail_dump']==1) - { // && ($config['email_maxsize']==0 || ($config['email_maxsize']>0 && $config['multipartgroesse2']<=$config['email_maxsize']))) { - for($i=0;$i'') $header.="Cc: ".$config['email_recipient_cc']."\r\n"; - $header.="MIME-version: 1.0\n"; - $header.="Content-type: multipart/mixed; "; - $header.="boundary=\"Message-Boundary\"\n"; - $header.="Content-transfer-encoding: 7BIT\n"; - $header.="X-attachments: $file_name"; - $body_top="--Message-Boundary\n"; - $body_top.="Content-type: text/html; charset=utf-8\n"; - $body_top.="Content-transfer-encoding: 7BIT\n"; - $body_top.="Content-description: Mail message body\n\n"; - $msg_body=$body_top.addslashes($lang['L_EMAIL_ONLY_ATTACHMENT'].$lang['L_EMAILBODY_FOOTER']); - $msg_body.="\n\n--Message-Boundary\n"; - $msg_body.="Content-type: $file_type; name=\"".$mpdatei[$i]."\"\n"; - $msg_body.="Content-Transfer-Encoding: BASE64\n"; - $msg_body.="Content-disposition: attachment; filename=\"".$mpdatei[$i]."\"\n\n"; - $msg_body.="$encoded_file\n"; - $msg_body.="--Message-Boundary--\n"; - $email_log="Email with $mpdatei[$i] was sent to '".$config['email_recipient']."'"; - $email_out=$lang['L_EMAIL_WAS_SEND']."`".$config['email_recipient']."`".$lang['L_WITH']."`".$mpdatei[$i]."`.
"; + if (isset($mpdatei) && 1 == $config['send_mail_dump']) { // && ($config['email_maxsize'] ==0 || ($config['email_maxsize']>0 && $config['multipartgroesse2']<= $config['email_maxsize']))) { + for ($i = 0; $i < count($mpdatei); ++$i) { + $file_name = $mpdatei[$i]; + $file_type = filetype($config['paths']['backup'].$mpdatei[$i]); + $file_size = filesize($config['paths']['backup'].$mpdatei[$i]); + $fp = fopen($config['paths']['backup'].$mpdatei[$i], 'r'); + $contents = fread($fp, $file_size); + $encoded_file = chunk_split(base64_encode($contents)); + fclose($fp); + $subject = $mp_sub.' [Part '.($i + 1).' / '.count($mpdatei).']'; + $header = 'FROM:'.$config['email_sender']."\n"; + if (isset($config['email_recipient_cc']) && trim($config['email_recipient_cc']) > '') { + $header .= 'Cc: '.$config['email_recipient_cc']."\r\n"; + } + $header .= "MIME-version: 1.0\n"; + $header .= 'Content-type: multipart/mixed; '; + $header .= "boundary=\"Message-Boundary\"\n"; + $header .= "Content-transfer-encoding: 7BIT\n"; + $header .= "X-attachments: $file_name"; + $body_top = "--Message-Boundary\n"; + $body_top .= "Content-type: text/html; charset=utf-8\n"; + $body_top .= "Content-transfer-encoding: 7BIT\n"; + $body_top .= "Content-description: Mail message body\n\n"; + $msg_body = $body_top.addslashes($lang['L_EMAIL_ONLY_ATTACHMENT'].$lang['L_EMAILBODY_FOOTER']); + $msg_body .= "\n\n--Message-Boundary\n"; + $msg_body .= "Content-type: $file_type; name=\"".$mpdatei[$i]."\"\n"; + $msg_body .= "Content-Transfer-Encoding: BASE64\n"; + $msg_body .= 'Content-disposition: attachment; filename="'.$mpdatei[$i]."\"\n\n"; + $msg_body .= "$encoded_file\n"; + $msg_body .= "--Message-Boundary--\n"; + $email_log = "Email with $mpdatei[$i] was sent to '".$config['email_recipient']."'"; + $email_out = $lang['L_EMAIL_WAS_SEND'].'`'.$config['email_recipient'].'`'.$lang['L_WITH'].'`'.$mpdatei[$i].'`.
'; - if (@mail($config['email_recipient'],stripslashes($subject),$msg_body,$header)) - { - $out.=''.$email_out.''; - WriteLog("$email_log"); - } - else - { - $out.=''.$lang['L_MAILERROR'].'
'; - WriteLog("Email to '".$config['email_recipient']."' failed !"); - ErrorLog("Email ",$databases['Name'][$dump['dbindex']],'Subject: '.stripslashes($subject),$lang['L_MAILERROR']); - $dump['errors']++; - } - } - } + if (@mail($config['email_recipient'], stripslashes($subject), $msg_body, $header)) { + $out .= ''.$email_out.''; + WriteLog("$email_log"); + } else { + $out .= ''.$lang['L_MAILERROR'].'
'; + WriteLog("Email to '".$config['email_recipient']."' failed !"); + ErrorLog('Email ', $databases['Name'][$dump['dbindex']], 'Subject: '.stripslashes($subject), $lang['L_MAILERROR']); + ++$dump['errors']; + } + } + } } function DoFTP($i) { - global $config,$dump,$out; + global $config, $dump, $out; - if ($config['multi_part']==0) - { - SendViaFTP($i,$dump['backupdatei'],1); - } - else - { - $dateistamm=substr($dump['backupdatei'],0,strrpos($dump['backupdatei'],"part_"))."part_"; - $dateiendung=($config['compression']==1) ? ".sql.gz":".sql"; - for($a=1;$a<($dump['part']-$dump['part_offset']);$a++) - { - $mpdatei=$dateistamm.$a.$dateiendung; - SendViaFTP($i,$mpdatei,$a); - } - } + if (0 == $config['multi_part']) { + SendViaFTP($i, $dump['backupdatei'], 1); + } else { + $dateistamm = substr($dump['backupdatei'], 0, strrpos($dump['backupdatei'], 'part_')).'part_'; + $dateiendung = (1 == $config['compression']) ? '.sql.gz' : '.sql'; + for ($a = 1; $a < ($dump['part'] - $dump['part_offset']); ++$a) { + $mpdatei = $dateistamm.$a.$dateiendung; + SendViaFTP($i, $mpdatei, $a); + } + } } -function SendViaFTP($i,$source_file,$conn_msg=1) +function SendViaFTP($i, $source_file, $conn_msg = 1) { - global $config,$out,$lang; - flush(); - if ($conn_msg==1) $out.=''.$lang['L_FILESENDFTP']."(".$config['ftp_server'][$i]." - ".$config['ftp_user'][$i].")
"; - // Herstellen der Basis-Verbindung - if ($config['ftp_useSSL'][$i]==0) $conn_id=@ftp_connect($config['ftp_server'][$i],$config['ftp_port'][$i],$config['ftp_timeout'][$i]); - else - $conn_id=@ftp_ssl_connect($config['ftp_server'][$i],$config['ftp_port'][$i],$config['ftp_timeout'][$i]); - // Einloggen mit Benutzername und Kennwort - $login_result=@ftp_login($conn_id,$config['ftp_user'][$i],$config['ftp_pass'][$i]); - if ($config['ftp_mode'][$i]==1) ftp_pasv($conn_id,true); + global $config, $out, $lang; + flush(); + if (1 == $conn_msg) { + $out .= ''.$lang['L_FILESENDFTP'].'('.$config['ftp_server'][$i].' - '.$config['ftp_user'][$i].')
'; + } + // Herstellen der Basis-Verbindung + if (0 == $config['ftp_useSSL'][$i]) { + $conn_id = @ftp_connect($config['ftp_server'][$i], $config['ftp_port'][$i], $config['ftp_timeout'][$i]); + } else { + $conn_id = @ftp_ssl_connect($config['ftp_server'][$i], $config['ftp_port'][$i], $config['ftp_timeout'][$i]); + } + // Einloggen mit Benutzername und Kennwort + $login_result = @ftp_login($conn_id, $config['ftp_user'][$i], $config['ftp_pass'][$i]); + if (1 == $config['ftp_mode'][$i]) { + ftp_pasv($conn_id, true); + } - // Verbindung überprüfen - if ((!$conn_id)||(!$login_result)) - { - $out.=''.$lang['L_FTPCONNERROR'].$config['ftp_server'][$i].$lang['L_FTPCONNERROR1'].$config['ftp_user'][$i].$lang['L_FTPCONNERROR2'].'
'; - } - else - { - if ($conn_msg==1) $out.=''.$lang['L_FTPCONNECTED1'].$config['ftp_server'][$i].$lang['L_FTPCONNERROR1'].$config['ftp_user'][$i].'
'; - } + // Verbindung überprüfen + if ((!$conn_id) || (!$login_result)) { + $out .= ''.$lang['L_FTPCONNERROR'].$config['ftp_server'][$i].$lang['L_FTPCONNERROR1'].$config['ftp_user'][$i].$lang['L_FTPCONNERROR2'].'
'; + } else { + if (1 == $conn_msg) { + $out .= ''.$lang['L_FTPCONNECTED1'].$config['ftp_server'][$i].$lang['L_FTPCONNERROR1'].$config['ftp_user'][$i].'
'; + } + } - // Upload der Datei - $dest=$config['ftp_dir'][$i].$source_file; - $source=$config['paths']['backup'].$source_file; - $upload=@ftp_put($conn_id,$dest,$source,FTP_BINARY); + // Upload der Datei + $dest = $config['ftp_dir'][$i].$source_file; + $source = $config['paths']['backup'].$source_file; + $upload = @ftp_put($conn_id, $dest, $source, FTP_BINARY); - // Upload-Status überprüfen - if (!$upload) - { - $out.=''.$lang['L_FTPCONNERROR3']."
($source -> $dest)

"; - } - else - { - $out.=''.$lang['L_FILE'].' '.$source_file.''.$lang['L_FTPCONNECTED2'].$config['ftp_server'][$i].$lang['L_FTPCONNECTED3'].'
'; - WriteLog("'$source_file' sent via FTP."); - } + // Upload-Status überprüfen + if (!$upload) { + $out .= ''.$lang['L_FTPCONNERROR3']."
($source -> $dest)

"; + } else { + $out .= ''.$lang['L_FILE'].' '.$source_file.''.$lang['L_FTPCONNECTED2'].$config['ftp_server'][$i].$lang['L_FTPCONNECTED3'].'
'; + WriteLog("'$source_file' sent via FTP."); + } - // Schließen des FTP-Streams - @ftp_quit($conn_id); + // Schließen des FTP-Streams + @ftp_quit($conn_id); +} + +function DoSFTP($i) +{ + global $config, $dump, $out; + + if (0 == $config['multi_part']) { + SendViaSFTP($i, $dump['backupdatei'], 1); + } else { + $dateistamm = substr($dump['backupdatei'], 0, strrpos($dump['backupdatei'], 'part_')).'part_'; + $dateiendung = (1 == $config['compression']) ? '.sql.gz' : '.sql'; + for ($a = 1; $a < ($dump['part'] - $dump['part_offset']); ++$a) { + $mpdatei = $dateistamm.$a.$dateiendung; + SendViaSFTP($i, $mpdatei, $a); + } + } } diff --git a/msd/inc/functions_files.php b/msd/inc/functions_files.php index 8442792d..a3fdeee1 100644 --- a/msd/inc/functions_files.php +++ b/msd/inc/functions_files.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,68 +16,68 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ -if (!defined('MSD_VERSION')) die('No direct access.'); +if (!defined('MOD_VERSION')) { + exit('No direct access.'); +} -function FilelisteCombo($fpath,$selected) +function FilelisteCombo($fpath, $selected) { - $r=''; + $r .= ''; - $dh=opendir($fpath); - while (false!==($filename=readdir($dh))) - { - if ($filename!="."&&$filename!=".."&&!is_dir($fpath.$filename)) - { - $r.='
'; ob_end_flush(); diff --git a/msd/inc/home/system.php b/msd/inc/home/system.php index 4a5e27c7..3e1b2ebd 100644 --- a/msd/inc/home/system.php +++ b/msd/inc/home/system.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,96 +16,76 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ -if (!defined('MSD_VERSION')) die('No direct access.'); -$sysaction=(isset($_GET['dosys'])) ? $_GET['dosys'] : 0; -$msg=""; -$res=@mysqli_query($config['dbconnection'], "SHOW VARIABLES LIKE 'datadir'"); -if ($res) -{ - $row=mysqli_fetch_array($res); - $data_dir=$row[1]; +if (!defined('MOD_VERSION')) { + exit('No direct access.'); } -switch ($sysaction) -{ - case 1: //FLUSH PRIVILEGES - $msg="> operating FLUSH PRIVILEGES
"; - $res=@mysqli_query($config['dbconnection'], "FLUSH PRIVILEGES"); - $meldung=mysqli_error($config['dbconnection']); - if ($meldung!="") - { - $msg.='> MySQL-Error: '.$meldung; - } - else - { - $msg.="> Privileges were reloaded."; - } - break; - case 2: //FLUSH STATUS - $msg="> operating FLUSH STATUS
"; - $res=@mysqli_query($config['dbconnection'], "FLUSH STATUS"); - $meldung=mysqli_error($config['dbconnection']); - if ($meldung!="") - { - $msg.='> MySQL-Error: '.$meldung; - } - else - { - $msg.="> Status was reset."; - } - break; - case 3: //FLUSH HOSTS - $msg="> operating FLUSH HOSTS
"; - $res=@mysqli_query($config['dbconnection'], "FLUSH HOSTS"); - $meldung=mysqli_error($config['dbconnection']); - if ($meldung!="") - { - $msg.='> MySQL-Error: '.$meldung; - } - else - { - $msg.="> Hosts were reloaded."; - ; - } - break; - case 4: //SHOW MASTER LOGS - $msg="> operating SHOW MASTER LOGS
"; - $res=@mysqli_query($config['dbconnection'],"SHOW MASTER LOGS"); - $meldung=mysqli_error($config['dbconnection']); - if ($meldung!="") - { - $msg.='> MySQL-Error: '.$meldung; - } - else - { - $numrows=mysqli_num_rows($res); - if ($numrows==0||$numrows===false) - { - $msg.='> there are no master log-files'; - } - else - { - $msg.='> there are '.$numrows.' logfiles
'; - for ($i=0; $i<$numrows; $i++) - { - $row=mysqli_fetch_row($res); - $msg.='> '.$row[0].'   '.(($data_dir) ? byte_output(@filesize($data_dir.$row[0])) : '').'
'; - } - } - } - break; - case 5: //RESET MASTER - $msg="> operating RESET MASTER
"; - $res=@mysqli_query($config['dbconnection'], "RESET MASTER"); - $meldung=mysqli_error($config['dbconnection']); - if ($meldung!="") - { - $msg.='> MySQL-Error: '.$meldung; - } - else - { - $msg.="> All Masterlogs were deleted."; - } - break; +$sysaction = (isset($_GET['dosys'])) ? $_GET['dosys'] : 0; +$msg = ''; +$res = mysqli_query($config['dbconnection'], "SHOW VARIABLES LIKE 'datadir'"); +if ($res) { + $row = mysqli_fetch_array($res); + $data_dir = $row[1]; +} +switch ($sysaction) { + case 1: //FLUSH PRIVILEGES + $msg = '> operating FLUSH PRIVILEGES
'; + $res = mysqli_query($config['dbconnection'], 'FLUSH PRIVILEGES'); + $meldung = mysqli_error($config['dbconnection']); + if ('' != $meldung) { + $msg .= '> MySQL-Error: '.$meldung; + } else { + $msg .= '> Privileges were reloaded.'; + } + break; + case 2: //FLUSH STATUS + $msg = '> operating FLUSH STATUS
'; + $res = mysqli_query($config['dbconnection'], 'FLUSH STATUS'); + $meldung = mysqli_error($config['dbconnection']); + if ('' != $meldung) { + $msg .= '> MySQL-Error: '.$meldung; + } else { + $msg .= '> Status was reset.'; + } + break; + case 3: //FLUSH HOSTS + $msg = '> operating FLUSH HOSTS
'; + $res = mysqli_query($config['dbconnection'], 'FLUSH HOSTS'); + $meldung = mysqli_error($config['dbconnection']); + if ('' != $meldung) { + $msg .= '> MySQL-Error: '.$meldung; + } else { + $msg .= '> Hosts were reloaded.'; + } + break; + case 4: //SHOW MASTER LOGS + $msg = '> operating SHOW MASTER LOGS
'; + $res = mysqli_query($config['dbconnection'], 'SHOW MASTER LOGS'); + $meldung = mysqli_error($config['dbconnection']); + if ('' != $meldung) { + $msg .= '> MySQL-Error: '.$meldung; + } else { + $numrows = mysqli_num_rows($res); + if (0 == $numrows || false === $numrows) { + $msg .= '> there are no master log-files'; + } else { + $msg .= '> there are '.$numrows.' logfiles
'; + for ($i = 0; $i < $numrows; ++$i) { + $row = mysqli_fetch_row($res); + $msg .= '> '.$row[0].'   '.(($data_dir) ? byte_output(@filesize($data_dir.$row[0])) : '').'
'; + } + } + } + break; + case 5: //RESET MASTER + $msg = '> operating RESET MASTER
'; + $res = mysqli_query($config['dbconnection'], 'RESET MASTER'); + $meldung = mysqli_error($config['dbconnection']); + if ('' != $meldung) { + $msg .= '> MySQL-Error: '.$meldung; + } else { + $msg .= '> All Masterlogs were deleted.'; + } + break; } echo '
'.$lang['L_MYSQLSYS'].'
'; echo '
    @@ -116,6 +96,6 @@ echo ''; echo '
    '; -echo '> MySQL Dumper v'.MSD_VERSION.' - Output Console

    '; -echo ($msg!="") ? $msg : '> waiting for operation ...
    '; +echo '> MySQL Dumper v'.MOD_VERSION.' - Output Console

    '; +echo ('' != $msg) ? $msg : '> waiting for operation ...
    '; echo '
    '; diff --git a/msd/inc/home/update.php b/msd/inc/home/update.php new file mode 100644 index 00000000..b58bb3d2 --- /dev/null +++ b/msd/inc/home/update.php @@ -0,0 +1,87 @@ +newVersionAvailable() && $check_update === true) { + // Install new update + echo '

    << Home

    '; + + echo $lang['L_NEW_MOD_VERSION'] . ': ' . $update->getLatestVersion() . '
    '; + echo $lang['L_INSTALLING_UPDATES'] . ':
    '; + /* + echo '
    ';
    +        var_dump(array_map(function ($version) {
    +            return (string) $version;
    +        }, $update->getVersionsToUpdate()));
    +        echo '
    '; + */ + // Optional - empty log file + $f = fopen($config['paths']['log'] . 'update.log', 'rb+'); + if ($f !== false) { + ftruncate($f, 0); + fclose($f); + } + + /* + // Optional Callback function - on each version update + function eachUpdateFinishCallback($updatedVersion) + { + echo '

    CALLBACK for version ' . $updatedVersion . '

    '; + } + $update->onEachUpdateFinish('eachUpdateFinishCallback'); + + // Optional Callback function - on each version update + function onAllUpdateFinishCallbacks($updatedVersions) + { + echo '

    CALLBACK for all updated versions:

    '; + echo '
      '; + foreach ($updatedVersions as $v) { + echo '
    • ' . $v . '
    • '; + } + echo '
    '; + } + $update->setOnAllUpdateFinishCallbacks('onAllUpdateFinishCallbacks'); + */ + + // This call will only simulate an update. + // Set the first argument (simulate) to "false" to install the update + // i.e. $update->update(false); + $result = $update->update(false); + + if ($result === true) { + echo $lang['L_UPDATE_SUCCESSFUL'] . '
    '; + } else { + echo $lang['L_UPDATE_FAILED'] . ': ' . $result . '!
    '; + + if ($result = AutoUpdate::ERROR_SIMULATE) { + echo '
    ';
    +            var_dump($update->getSimulationResults());
    +            echo '
    '; + } + } +} else { + echo $lang['L_UP_TO_DATE']. '
    '; +} + +echo 'Log:
    '; +echo nl2br(file_get_contents($config['paths']['log'] . '/update.log')); + +echo '

    << Home

    '; diff --git a/msd/inc/mysql.php b/msd/inc/mysql.php deleted file mode 100644 index d7cb2671..00000000 --- a/msd/inc/mysql.php +++ /dev/null @@ -1,513 +0,0 @@ - "http://dev.mysql.com/doc/mysql/de/Column_types.html" -); -$mysql_string_types = array( - 'char', - 'varchar', - 'tinytext', - 'text', - 'mediumtext', - 'longtext', - 'binary', - 'varbinary', - 'tinyblob', - 'mediumblob', - 'blob', - 'longblob', - 'enum', - 'set' -); -$mysql_SQLhasRecords=array( - - 'SELECT', - 'SHOW', - 'EXPLAIN', - 'DESCRIBE', - 'DESC' -); - -function MSD_mysql_connect($encoding='utf8', $keycheck_off=false, $actual_table='') -{ - global $config,$databases; - if (isset($config['dbconnection']) && is_resource($config['dbconnection'])) { - return $config['dbconnection']; - } - $port=( isset($config['dbport']) && !empty($config['dbport']) ) ? ':' . $config['dbport'] : ''; - $socket=( isset($config['dbsocket']) && !empty($config['dbsocket']) ) ? ':' . $config['dbsocket'] : ''; - - $config['dbconnection'] = @mysqli_connect($config['dbhost'] . $port . $socket, $config['dbuser'], $config['dbpass']); - - if ( mysqli_connect_errno($config['dbconnection']) ) { - die(SQLError("Error establishing a database connection!", mysqli_connect_error($config['dbconnection']))); - } - if (!defined('MSD_MYSQL_VERSION')) GetMySQLVersion(); - - if (!isset($config['mysql_standard_character_set']) || $config['mysql_standard_character_set'] == '') get_sql_encodings(); - - if ($config['mysql_standard_character_set'] != $encoding) - { - $set_encoding=@mysqli_query($config['dbconnection'],'SET NAMES \'' . $encoding . '\''); - if ($set_encoding === false) $config['mysql_can_change_encoding']=false; - else $config['mysql_can_change_encoding']=true; - } - if ($keycheck_off) { - // only called with this param when restoring - mysqli_query($config['dbconnection'], 'SET FOREIGN_KEY_CHECKS=0'); - // also set SQL-Mode NO_AUTO_VALUE_ON_ZERO for magento users - mysqli_query($config['dbconnection'], 'SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"'); - } - - return $config['dbconnection']; -} - -function GetMySQLVersion() -{ - - $res=MSD_query("select version()"); - $row=mysqli_fetch_array($res); - $version=$row[0]; - if (!defined('MSD_MYSQL_VERSION')) define('MSD_MYSQL_VERSION',$version); - $versions=explode('.',$version); - $new=false; - if ($versions[0] == 4 && $versions[1] >= 1) $new=true; - if ($versions[0] > 4) $new=true; - if (!defined('MSD_NEW_VERSION')) define('MSD_NEW_VERSION',$new); - - return $version; -} - -function MSD_query($query, $error_output=true) -{ - global $config; - if (!isset($config['dbconnection'])) MSD_mysql_connect(); -// echo "
    Query: ".htmlspecialchars($query); - $res=mysqli_query($config['dbconnection'],$query); - if (false === $res && $error_output) SQLError($query,mysqli_error($config['dbconnection'])); - return $res; - -} - -function SQLError($sql, $error, $return_output=false) -{ - global $lang; - - $ret='
    - - - -
    MySQL-ERROR
    ' . $lang['L_SQL_ERROR2'] . '
    ' . $error . '

    ' . $lang['L_SQL_ERROR1'] . '
    ' . Highlight_SQL($sql) . '

    '; - if ($return_output) return $ret; - else echo $ret; -} - -function Highlight_SQL($sql) -{ - global $sql_keywords; - - $end=''; - $tickstart=false; - if (function_exists("token_get_all")) $a=@token_get_all(""); - else return $sql; - foreach ($a as $token) - { - if (!is_array($token)) - { - if ($token == '`') $tickstart=!$tickstart; - $end.=$token; - } - else - { - if ($tickstart) $end.=$token[1]; - else - { - switch (token_name($token[0])) - { - case "T_STRING": - case "T_AS": - case "T_FOR": - - $end.=( in_array(strtoupper($token[1]),$sql_keywords) ) ? "" . $token[1] . "" : $token[1]; - break; - case "T_IF": - case "T_LOGICAL_AND": - case "T_LOGICAL_OR": - case "T_LOGICAL_XOR": - $end.=( in_array(strtoupper($token[1]),$sql_keywords) ) ? "" . $token[1] . "" : $token[1]; - break; - case "T_CLOSE_TAG": - case "T_OPEN_TAG": - break; - default: - $end.=$token[1]; - } - } - } - } - $end=preg_replace("/`(.*?)`/si","`$1`",$end); - return $end; -} - -function Fieldlist($db, $tbl) -{ - $fl=''; - $res=MSD_query("SHOW FIELDS FROM `$db`.`$tbl`;"); - if ($res) - { - $fl='('; - for ($i=0; $i < mysqli_num_rows($res); $i++) - { - $row=mysqli_fetch_row($res); - $fl.='`' . $row[0] . '`,'; - } - $fl=substr($fl,0,strlen($fl) - 1) . ')'; - } - return $fl; -} - -// reads all Tableinfos and place them in $dump-Array -function getDBInfos() -{ - global $databases,$dump,$config,$tbl_sel,$flipped; - for ($ii=0; $ii < count($databases['multi']); $ii++) - { - $dump['dbindex']=$flipped[$databases['multi'][$ii]]; - $tabellen=mysqli_query($config['dbconnection'], 'SHOW TABLE STATUS FROM `' . $databases['Name'][$dump['dbindex']] . '`') or die('getDBInfos: ' . mysqli_error($config['dbconnection'])); - $num_tables=mysqli_num_rows($tabellen); - // Array mit den gewünschten Tabellen zusammenstellen... wenn Präfix angegeben, werden die anderen einfach nicht übernommen - if ($num_tables > 0) - { - for ($i=0; $i < $num_tables; $i++) - { - $row=mysqli_fetch_array($tabellen); - if (isset($row['Type'])) $row['Engine']=$row['Type']; - if (isset($row['Comment']) && substr(strtoupper($row['Comment']),0,4) == 'VIEW') $dump['table_types'][]='VIEW'; - else $dump['table_types'][]=strtoupper($row['Engine']); - // check if data needs to be backed up - if (strtoupper($row['Comment']) == 'VIEW' || ( isset($row['Engine']) && in_array(strtoupper($row['Engine']),array( - 'MEMORY' - )) )) - { - $dump['skip_data'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Name']; - } - if ($config['optimize_tables_beforedump'] == 1 && $dump['table_offset'] == -1 - && $databases['Name'][$dump['dbindex']]!='information_schema') { - mysqli_select_db($config['dbconnection'], $databases['Name'][$dump['dbindex']]); - $opt = 'OPTIMIZE TABLE `' . $row['Name'] . '`'; - $res = mysqli_query($config['dbconnection'], 'OPTIMIZE TABLE `' . $row['Name'] . '`'); - if ($res === false) { - die("Error in ".$opt." -> ".mysqli_error($config['dbconnection'])); - } - } - - if (isset($tbl_sel)) - { - if (in_array($row['Name'],$dump['tblArray'])) - { - $dump['tables'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Name']; - $dump['records'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Rows']; - $dump['totalrecords']+=$row['Rows']; - } - } - elseif ($databases['praefix'][$dump['dbindex']] != '' && !isset($tbl_sel)) - { - if (substr($row['Name'],0,strlen($databases['praefix'][$dump['dbindex']])) == $databases['praefix'][$dump['dbindex']]) - { - $dump['tables'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Name']; - $dump['records'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Rows']; - $dump['totalrecords']+=$row['Rows']; - } - } - else - { - $dump['tables'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Name']; - $dump['records'][]=$databases['Name'][$dump['dbindex']] . '|' . $row['Rows']; - - // Get nr of records -> need to do it this way because of incorrect returns when using InnoDBs - $sql_2="SELECT count(*) as `count_records` FROM `" . $databases['Name'][$dump['dbindex']] . "`.`" . $row['Name'] . "`"; - $res2=@mysqli_query($config['dbconnection'], $sql_2); - if ($res2 === false) - { - $read_error='(' . mysql_errno() . ') ' . mysqli_error($config['dbconnection']); - SQLError($read_error,$sql_2); - WriteLog($read_error); - if ($config['stop_with_error'] > 0) - { - die($read_error); - } - } - else - { - $row2=@mysqli_fetch_array($res2); - $row['Rows']=$row2['count_records']; - $dump['totalrecords']+=$row['Rows']; - } - } - } - // Correct total number of records; substract skipped data - foreach ($dump['skip_data'] as $skip_data) - { - $index=false; - $records_to_skip=0; - //find index of table to get the nr of records - $count=sizeof($dump['tables']); - for ($a=0; $a < $count; $a++) - { - if ($dump['tables'][$a] == $skip_data) - { - $index=$a; - $t=explode('|',$dump['records'][$a]); - $rekords_to_skip=$t[1]; - break; - } - } - if ($index) $dump['totalrecords']-=$rekords_to_skip; - } - } - } -} - -// gets the numeric index in dump-array and returns it -function getDBIndex($db, $table) -{ - global $dump; - $index=array_keys($dump['tables'],$db . '|' . $table); - return $index[0]; -} - diff --git a/msd/inc/mysqli.php b/msd/inc/mysqli.php new file mode 100644 index 00000000..c64de282 --- /dev/null +++ b/msd/inc/mysqli.php @@ -0,0 +1,543 @@ + 'http://dev.mysql.com/doc/mysql/de/Column_types.html', +]; +$mysql_string_types = [ + 'char', + 'varchar', + 'tinytext', + 'text', + 'mediumtext', + 'longtext', + 'binary', + 'varbinary', + 'tinyblob', + 'mediumblob', + 'blob', + 'longblob', + 'enum', + 'set', +]; +$mysql_SQLhasRecords = [ + 'SELECT', + 'SHOW', + 'EXPLAIN', + 'DESCRIBE', + 'DESC', +]; + +function mod_mysqli_connect($encoding = 'utf8mb4', $keycheck_off = false, $actual_table = '') +{ + global $config, $databases; + + if (isset($config['dbconnection']) && is_resource($config['dbconnection'])) { + return $config['dbconnection']; + } + + $port = (isset($config['dbport']) && !empty($config['dbport'])) ? ':'.$config['dbport'] : ''; + $socket = (isset($config['dbsocket']) && !empty($config['dbsocket'])) ? ':'.$config['dbsocket'] : ''; + + // Forcing error reporting mode to OFF, which is no longer the default + // starting with PHP 8.1 + @mysqli_report(MYSQLI_REPORT_OFF); + + $config['dbconnection'] = @mysqli_connect($config['dbhost'].$port.$socket, $config['dbuser'], $config['dbpass']); + + if (!$config['dbconnection']) { + exit(SQLError('Error establishing a database connection!', mysqli_connect_error())); + } + if (!defined('MOD_MYSQL_VERSION')) { + GetMySQLVersion(); + } + + if (!isset($config['mysql_standard_character_set']) || '' == $config['mysql_standard_character_set']) { + get_sql_encodings(); + } + + if ($config['mysql_standard_character_set'] != $encoding) { + $set_encoding = mysqli_query($config['dbconnection'], 'SET NAMES \''.$encoding.'\''); + if (false === $set_encoding) { + $config['mysql_can_change_encoding'] = false; + } else { + $config['mysql_can_change_encoding'] = true; + } + } + if ($keycheck_off) { + // only called with this param when restoring + mysqli_query($config['dbconnection'], 'SET FOREIGN_KEY_CHECKS=0'); + // also set SQL-Mode NO_AUTO_VALUE_ON_ZERO for magento users + mysqli_query($config['dbconnection'], 'SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"'); + } + + return $config['dbconnection']; +} + +function GetMySQLVersion() +{ + global $config; + if (!isset($config['dbconnection'])) { + mod_mysqli_connect(); + } + + $res = mod_query('SELECT VERSION()'); + $row = mysqli_fetch_array($res); + $str = $row[0]; + $version = str_replace(':', '--', $str); + if (!defined('MOD_MYSQL_VERSION')) { + define('MOD_MYSQL_VERSION', $version); + } + $versions = explode('.', $version); + $new = false; + if (4 == $versions[0] && $versions[1] >= 1) { + $new = true; + } + if ($versions[0] > 4) { + $new = true; + } + if (!defined('MOD_NEW_VERSION')) { + define('MOD_NEW_VERSION', $new); + } + + return $version; +} + +function mod_query($query, $error_output = true) +{ + global $config; + // print_mem(); + if (!isset($config['dbconnection'])) { + mod_mysqli_connect(); + } + // echo "
    Query: ".htmlspecialchars($query).'
    '; + $res = mysqli_query($config['dbconnection'], $query); + // print_mem(); + if (false === $res && $error_output) { + SQLError($query, mysqli_error($config['dbconnection'])); + } + return $res; +} + +function print_mem() +{ + /* Currently used memory */ + $mem_usage = memory_get_usage(); + + /* Peak memory usage */ + $mem_peak = memory_get_peak_usage(); + + echo 'The script is now using: '.round($mem_usage / 1024).' KB of memory.
    '; + echo 'Peak usage: '.round($mem_peak / 1024).' KB of memory.

    '; +} + +function SQLError($sql, $error, $return_output = false) +{ + global $lang; + + $ret = '
    + + + +
    MySQL-ERROR
    '.$lang['L_SQL_ERROR2'].'
    '.$error.'

    '.$lang['L_SQL_ERROR1'].'
    '.Highlight_SQL($sql).'

    '; + if ($return_output) { + return $ret; + } else { + echo $ret; + } +} + +function Highlight_SQL($sql) +{ + global $sql_keywords; + + $end = ''; + $tickstart = false; + if (function_exists('token_get_all')) { + $a = @token_get_all(""); + } else { + return $sql; + } + foreach ($a as $token) { + if (!is_array($token)) { + if ('`' == $token) { + $tickstart = !$tickstart; + } + $end .= $token; + } else { + if ($tickstart) { + $end .= $token[1]; + } else { + switch (token_name($token[0])) { + case 'T_STRING': + case 'T_AS': + case 'T_FOR': + $end .= (in_array(strtoupper($token[1]), $sql_keywords)) ? ''.$token[1].'' : $token[1]; + break; + case 'T_IF': + case 'T_LOGICAL_AND': + case 'T_LOGICAL_OR': + case 'T_LOGICAL_XOR': + $end .= (in_array(strtoupper($token[1]), $sql_keywords)) ? ''.$token[1].'' : $token[1]; + break; + case 'T_CLOSE_TAG': + case 'T_OPEN_TAG': + break; + default: + $end .= $token[1]; + } + } + } + } + $end = preg_replace('/`(.*?)`/si', '`$1`', $end); + return $end; +} + +function Fieldlist($db, $tbl) +{ + $fl = ''; + $res = mod_query("SHOW FIELDS FROM `$db`.`$tbl`;"); + if ($res) { + $fl = '('; + for ($i = 0; $i < mysqli_num_rows($res); ++$i) { + $row = mysqli_fetch_row($res); + $fl .= '`'.$row[0].'`,'; + } + $fl = substr($fl, 0, strlen($fl) - 1).')'; + } + return $fl; +} + +// reads all Tableinfos and place them in $dump-Array +function getDBInfos() +{ + global $databases, $dump, $config, $tbl_sel, $flipped; + for ($ii = 0; $ii < count($databases['multi']); ++$ii) { + $dump['dbindex'] = $flipped[$databases['multi'][$ii]]; + $tabellen = mysqli_query($config['dbconnection'], 'SHOW TABLE STATUS FROM `'.$databases['Name'][$dump['dbindex']].'`') or exit('getDBInfos: '.mysqli_error($config['dbconnection'])); + $num_tables = mysqli_num_rows($tabellen); + // Array mit den gewünschten Tabellen zusammenstellen... wenn Präfix angegeben, werden die anderen einfach nicht übernommen + if ($num_tables > 0) { + for ($i = 0; $i < $num_tables; ++$i) { + $row = mysqli_fetch_array($tabellen); + if (isset($row['Type'])) { + $row['Engine'] = $row['Type']; + } + if (isset($row['Comment']) && 'VIEW' == substr(strtoupper($row['Comment']), 0, 4)) { + $dump['table_types'][] = 'VIEW'; + } else { + $dump['table_types'][] = strtoupper($row['Engine']); + } + // check if data needs to be backed up + if ('VIEW' == strtoupper($row['Comment']) || (isset($row['Engine']) && in_array(strtoupper($row['Engine']), [ + 'MEMORY', + ]))) { + $dump['skip_data'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Name']; + } + if ((isset($config['optimize_tables_beforedump']) && (1 == $config['optimize_tables_beforedump'])) && -1 == $dump['table_offset'] + && 'information_schema' != $databases['Name'][$dump['dbindex']]) { + mysqli_select_db($config['dbconnection'], $databases['Name'][$dump['dbindex']]); + $opt = 'OPTIMIZE TABLE `'.$row['Name'].'`'; + $res = mysqli_query($config['dbconnection'], 'OPTIMIZE TABLE `'.$row['Name'].'`'); + if (false === $res) { + exit('Error in '.$opt.' -> '.mysqli_error($config['dbconnection'])); + } + } + + if (isset($tbl_sel)) { + if (in_array($row['Name'], $dump['tblArray'])) { + $dump['tables'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Name']; + $dump['records'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Rows']; + $dump['totalrecords'] += $row['Rows']; + } + } elseif ('' != $databases['praefix'][$dump['dbindex']] && !isset($tbl_sel)) { + if (substr($row['Name'], 0, strlen($databases['praefix'][$dump['dbindex']])) == $databases['praefix'][$dump['dbindex']]) { + $dump['tables'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Name']; + $dump['records'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Rows']; + $dump['totalrecords'] += $row['Rows']; + } + } else { + $dump['tables'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Name']; + $dump['records'][] = $databases['Name'][$dump['dbindex']].'|'.$row['Rows']; + + // Get nr of records -> need to do it this way because of incorrect returns when using InnoDBs + $sql_2 = 'SELECT count(*) as `count_records` FROM `'.$databases['Name'][$dump['dbindex']].'`.`'.$row['Name'].'`'; + $res2 = mysqli_query($config['dbconnection'], $sql_2); + if (false === $res2) { + $read_error = mysqli_error($config['dbconnection']); + SQLError($read_error, $sql_2); + WriteLog($read_error); + if ($config['stop_with_error'] > 0) { + exit($read_error); + } + } else { + $row2 = mysqli_fetch_array($res2); + $row['Rows'] = $row2['count_records']; + $dump['totalrecords'] += $row['Rows']; + } + } + } + // Correct total number of records; substract skipped data + foreach ($dump['skip_data'] as $skip_data) { + $index = false; + $records_to_skip = 0; + //find index of table to get the nr of records + $count = sizeof($dump['tables']); + for ($a = 0; $a < $count; ++$a) { + if ($dump['tables'][$a] == $skip_data) { + $index = $a; + $t = explode('|', $dump['records'][$a]); + $rekords_to_skip = $t[1]; + break; + } + } + if ($index) { + $dump['totalrecords'] -= intval($rekords_to_skip); + } + } + } + } +} + +// gets the numeric index in dump-array and returns it +function getDBIndex($db, $table) +{ + global $dump; + $index = array_keys($dump['tables'], $db.'|'.$table); + return $index[0]; +} diff --git a/msd/inc/runtime.php b/msd/inc/runtime.php index 273dfff1..66c8958f 100644 --- a/msd/inc/runtime.php +++ b/msd/inc/runtime.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,136 +16,135 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ - error_reporting(E_ALL); - -if (function_exists("date_default_timezone_set")) date_default_timezone_set(@date_default_timezone_get()); +if (function_exists('date_default_timezone_set')) { + date_default_timezone_set(@date_default_timezone_get()); +} //Konstanten -if (!defined('MSD_VERSION')) define('MSD_VERSION','4.2.0-dev based on MySQLDumper 1.24.4'); -if (!defined('MSD_OS')) define('MSD_OS',PHP_OS); -if (!defined('MSD_OS_EXT')) define('MSD_OS_EXT',@php_uname()); -if (!defined('config') || !is_array($config)) $config=array(); -if (!defined('databases') || !is_array($databases)) $databases=array(); +if (!defined('MOD_VERSION')) { + define('MOD_VERSION', '5.0.20'); +} +if (!defined('MOD_OS')) { + define('MOD_OS', PHP_OS); +} +if (!defined('MOD_OS_EXT')) { + define('MOD_OS_EXT', @php_uname()); +} +if (!defined('config') || !is_array($config)) { + $config = []; +} +if (!defined('databases') || !is_array($databases)) { + $databases = []; +} //Pfade und Files -$config['paths']['root']=Realpfad('./'); -$config['paths']['work']='work/'; -$config['paths']['backup']=$config['paths']['work'] . 'backup/'; -$config['paths']['log']=$config['paths']['work'] . 'log/'; -$config['paths']['config']=$config['paths']['work'] . 'config/'; -$config['paths']['perlexec']='msd_cron/'; +$config['paths']['root'] = Realpfad('./'); +$config['paths']['work'] = 'work/'; +$config['paths']['backup'] = $config['paths']['work'].'backup/'; +$config['paths']['log'] = $config['paths']['work'].'log/'; +$config['paths']['config'] = $config['paths']['work'].'config/'; +$config['paths']['temp'] = $config['paths']['root'].$config['paths']['work'].'temp/'; +$config['paths']['cache'] = $config['paths']['root'].$config['paths']['work'].'cache/'; +$config['paths']['perlexec'] = 'mod_cron/'; -if (isset($_SESSION['config_file'])) -{ - $config['config_file']=$_SESSION['config_file']; - $config['cron_configurationfile']=$_SESSION['config_file']; + +if (isset($_SESSION['config_file'])) { + $config['config_file'] = $_SESSION['config_file']; + $config['cron_configurationfile'] = $_SESSION['config_file']; +} else { + $config['config_file'] = 'myoosdumper'; + $_SESSION['config_file'] = 'myoosdumper'; + $config['cron_configurationfile'] = 'myoosdumper.conf.php'; } -else -{ - $config['config_file']='myoosdumper'; - $_SESSION['config_file']='myoosdumper'; - $config['cron_configurationfile']='myoosdumper.conf.php'; -} -$config['files']['log']=$config['paths']['log'] . 'mysqldump.log'; -$config['files']['perllog']=$config['paths']['log'] . 'mysqldump_perl.log'; -$config['files']['perllogcomplete']=$config['paths']['log'] . 'mysqldump_perl.complete.log'; -$config['files']['parameter']=$config['paths']['config'] . $config['config_file'] . '.php'; +$config['files']['log'] = $config['paths']['log'].'myoosdumper.log'; +$config['files']['perllog'] = $config['paths']['log'].'myoosdumper_perl.log'; +$config['files']['perllogcomplete'] = $config['paths']['log'].'myoosdumper_perl.complete.log'; +$config['files']['parameter'] = $config['paths']['config'].$config['config_file'].'.php'; // inti MySQL-Setting-Vars -$config['mysql_standard_character_set']=''; -$config['mysql_possible_character_sets']=array(); +$config['mysql_standard_character_set'] = ''; +$config['mysql_possible_character_sets'] = []; //Ini-Parameter -$config['max_execution_time']=get_cfg_var('max_execution_time'); -$config['max_execution_time']=( $config['max_execution_time'] <= 0 ) ? 30 : $config['max_execution_time']; -if ($config['max_execution_time'] > 30) $config['max_execution_time']=30; -$config['upload_max_filesize']=get_cfg_var('upload_max_filesize'); -$config['safe_mode']=get_cfg_var('safe_mode'); -$config['magic_quotes_gpc']=get_magic_quotes_gpc(); -$config['disabled']=get_cfg_var('disable_functions'); -$config['phpextensions']=implode(', ',get_loaded_extensions()); -$m=trim(str_replace('M','',ini_get('memory_limit'))); +$config['max_execution_time'] = get_cfg_var('max_execution_time'); +$config['max_execution_time'] = ($config['max_execution_time'] <= 0) ? 30 : $config['max_execution_time']; +if ($config['max_execution_time'] > 30) { + $config['max_execution_time'] = 30; +} +$config['upload_max_filesize'] = get_cfg_var('upload_max_filesize'); +$config['disabled'] = get_cfg_var('disable_functions'); +$config['phpextensions'] = implode(', ', get_loaded_extensions()); +$m = trim(str_replace('M', '', ini_get('memory_limit'))); // fallback if ini_get doesn't work -if (intval($m) == 0) $m=trim(str_replace('M','',get_cfg_var('memory_limit'))); -$config['php_ram']=$m; +if (0 == intval($m)) { + $m = trim(str_replace('M', '', get_cfg_var('memory_limit'))); +} +$config['php_ram'] = $m; //Ist zlib moeglich? -$p1=explode(', ',$config['phpextensions']); -$p2=explode(',',str_replace(' ','',$config['disabled'])); +$p1 = explode(', ', $config['phpextensions']); +$p2 = explode(',', str_replace(' ', '', $config['disabled'])); -//Buggy PHP-Version ? -$p3=explode('.',PHP_VERSION); -$buggy=( $p3[0] == 4 && $p3[1] == 3 && $p3[2] < 3 ); -$config['zlib']=( !$buggy ) && ( in_array('zlib',$p1) && ( !in_array('gzopen',$p2) || !in_array('gzwrite',$p2) || !in_array('gzgets',$p2) || !in_array('gzseek',$p2) || !in_array('gztell',$p2) ) ); +$config['zlib'] = (in_array('zlib', $p1) && (!in_array('gzopen', $p2) || !in_array('gzwrite', $p2) || !in_array('gzgets', $p2) || !in_array('gzseek', $p2) || !in_array('gztell', $p2))); //Tuning-Ecke -$config['tuning_add']=1.1; -$config['tuning_sub']=0.9; -$config['time_buffer']=0.75; //max_zeit=$config['max_execution_time']*$config['time_buffer'] -$config['perlspeed']=10000; //Anzahl der Datensaetze, die in einem Rutsch gelesen werden +$config['tuning_add'] = 1.1; +$config['tuning_sub'] = 0.9; +$config['time_buffer'] = 0.75; //max_zeit= $config['max_execution_time']*$config['time_buffer'] +$config['perlspeed'] = 10000; //Anzahl der Datensaetze, die in einem Rutsch gelesen werden $config['ignore_enable_keys'] = 0; //Bausteine -$config['homepage']='http://foren.myoos.de/viewforum.php?f=40'; +$config['homepage'] = 'http://foren.myoos.de/viewforum.php?f=40'; -$nl="\n"; -$mysql_commentstring='--'; +$nl = "\n"; +$mysql_commentstring = '--'; //config-Variablen, die nicht gesichert werden sollen -$config_dontsave=Array( +$config_dontsave = [ + 'homepage', + 'max_execution_time', + 'disabled', + 'phpextensions', + 'php_ram', + 'zlib', + 'tuning_add', + 'tuning_sub', + 'time_buffer', + 'perlspeed', + 'cron_configurationfile', + 'dbconnection', + 'version', + 'mysql_possible_character_sets', + 'mysql_standard_character_set', + 'config_file', + 'upload_max_filesize', + 'mysql_can_change_encoding', + 'cron_samedb', + 'paths', + 'files', +]; - 'homepage', - 'max_execution_time', - 'safe_mode', - 'magic_quotes_gpc', - 'disabled', - 'phpextensions', - 'php_ram', - 'zlib', - 'tuning_add', - 'tuning_sub', - 'time_buffer', - 'perlspeed', - 'cron_configurationfile', - 'dbconnection', - 'version', - 'mysql_possible_character_sets', - 'mysql_standard_character_set', - 'config_file', - 'upload_max_filesize', - 'mysql_can_change_encoding', - 'cron_samedb', - 'paths', - 'files' -); - -$dontBackupDatabases = array('mysql', 'information_schema'); +$dontBackupDatabases = ['mysql', 'information_schema']; // Automatisches entfernen von Slashes und Leerzeichen vorn und hinten abschneiden -if (1==get_magic_quotes_gpc()) -{ - $_POST=stripslashes_deep($_POST); - $_GET=stripslashes_deep($_GET); -} -$_POST=trim_deep($_POST); -$_GET=trim_deep($_GET); +$_POST = trim_deep($_POST); +$_GET = trim_deep($_GET); function v($t) { - echo '
    '; - if (is_array($t) || is_object($t)) - { - echo '
    ';
    -		print_r($t);
    -		echo '
    '; - } - else - echo $t; + echo '
    '; + if (is_array($t) || is_object($t)) { + echo '
    ';
    +        print_r($t);
    +        echo '
    '; + } else { + echo $t; + } } function getServerProtocol() { - return ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://'; + return (isset($_SERVER['HTTPS']) && 'on' == strtolower($_SERVER['HTTPS'])) ? 'https://' : 'http://'; } - diff --git a/msd/inc/sql_importexport.php b/msd/inc/sql_importexport.php index 3d60c50d..bf7b990b 100644 --- a/msd/inc/sql_importexport.php +++ b/msd/inc/sql_importexport.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,294 +16,275 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ -if (!defined('MSD_VERSION')) die('No direct access.'); -include('./inc/functions_imexport.php'); +if (!defined('MOD_VERSION')) { + exit('No direct access.'); +} +include './inc/functions_imexport.php'; //Im-/Export -$import=( isset($_GET['import']) ) ? 1 : 0; -if ($import == 1) -{ - //IMPORT - CheckcsvOptions(); - if (isset($_POST['f_import_csvtrenn'])) $sql['import']['trenn']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_import_csvtrenn']) : $_POST['f_import_csvtrenn']; - if (isset($_POST['f_import_csvenc'])) $sql['import']['enc']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_import_csvenc']) : $_POST['f_import_csvenc']; - if (isset($_POST['f_import_csvesc'])) $sql['import']['esc']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_import_csvesc']) : $_POST['f_import_csvesc']; - if (empty($sql['import']['endline'])) - { - $sql['import']['endline']=$nl; - } - else - { - $sql['import']['endline']=str_replace('\\r',"\015",$sql['import']['endline']); - $sql['import']['endline']=str_replace('\\n',"\012",$sql['import']['endline']); - $sql['import']['endline']=str_replace('\\t',"\011",$sql['import']['endline']); - } - $sql['import']['endline']=str_replace('\\t',"\011",$sql['import']['endline']); - if (isset($_POST['f_import_csvnull'])) $sql['import']['null']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_import_csvnull']) : $_POST['f_import_csvnull']; - $sql['import']['namefirstline']=( isset($_POST['f_import_namefirstline']) ) ? $_POST['f_import_namefirstline'] : 0; - $sql['import']['emptydb']=( isset($_POST['import_emptydb']) ) ? 1 : 0; - $sql['import']['createindex']=( isset($_POST['import_createindex']) ) ? 1 : 0; - $sql['import']['table']=( isset($_POST['import_table']) ) ? $_POST['import_table'] : ""; - $sql['import']['import_source']=isset($_POST['import_source']) ? $_POST['import_source'] : 0; - $sql['import']['text']=isset($_POST['import_text']) ? ( ( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['import_text']) : $_POST['import_text'] ) : ""; - $sql['import']['csv']=""; +$import = (isset($_GET['import'])) ? 1 : 0; +if (1 == $import) { + //IMPORT + CheckcsvOptions(); + if (isset($_POST['f_import_csvtrenn'])) { + $sql['import']['trenn'] = $_POST['f_import_csvtrenn']; + } + if (isset($_POST['f_import_csvenc'])) { + $sql['import']['enc'] = $_POST['f_import_csvenc']; + } + if (isset($_POST['f_import_csvesc'])) { + $sql['import']['esc'] = $_POST['f_import_csvesc']; + } + if (empty($sql['import']['endline'])) { + $sql['import']['endline'] = $nl; + } else { + $sql['import']['endline'] = str_replace('\\r', "\015", $sql['import']['endline']); + $sql['import']['endline'] = str_replace('\\n', "\012", $sql['import']['endline']); + $sql['import']['endline'] = str_replace('\\t', "\011", $sql['import']['endline']); + } + $sql['import']['endline'] = str_replace('\\t', "\011", $sql['import']['endline']); + if (isset($_POST['f_import_csvnull'])) { + $sql['import']['null'] = $_POST['f_import_csvnull']; + } + $sql['import']['namefirstline'] = (isset($_POST['f_import_namefirstline'])) ? $_POST['f_import_namefirstline'] : 0; + $sql['import']['emptydb'] = (isset($_POST['import_emptydb'])) ? 1 : 0; + $sql['import']['createindex'] = (isset($_POST['import_createindex'])) ? 1 : 0; + $sql['import']['table'] = (isset($_POST['import_table'])) ? $_POST['import_table'] : ''; + $sql['import']['import_source'] = isset($_POST['import_source']) ? $_POST['import_source'] : 0; + $sql['import']['text'] = isset($_POST['import_text']) ? $_POST['import_text'] : ''; + $sql['import']['csv'] = ''; - if (isset($_POST['do_import'])) - { + if (isset($_POST['do_import'])) { + $sql['import']['tablecreate'] = 0; + if ('new' == $sql['import']['table']) { + $sql['import']['table'] = 'import_'; + $sql['import']['tablecreate'] = 1; + } + if ('' == $sql['import']['table']) { + $aus .= ''.$lang['L_IMPORT_NOTABLE'].''; + } else { + if (0 == $_POST['import_source']) { + //Import aus textbox + $sql['import']['csv'] = explode($sql['import']['endline'], $sql['import']['text']); + } else { + if (!isset($_FILES['upfile']['name']) || empty($_FILES['upfile']['name'])) { + $aus .= ''.$lang['L_FM_UPLOADFILEREQUEST'].''; + } else { + $fn = $_FILES['upfile']['tmp_name']; - $sql['import']['tablecreate']=0; - if ($sql['import']['table'] == "new") - { - $sql['import']['table']="import_"; - $sql['import']['tablecreate']=1; - } - if ($sql['import']['table'] == "") - { - $aus.='' . $lang['L_IMPORT_NOTABLE'] . ''; - } - else - { - if ($_POST['import_source'] == 0) - { - //Import aus textbox - $sql['import']['csv']=explode($sql['import']['endline'],$sql['import']['text']); + $sql['import']['csv'] = ('.gz' == substr($_FILES['upfile']['name'], -3)) ? gzfile($fn) : file($fn); + $sql['import']['text'] = implode('', $sql['import']['csv']); + $aus .= ''.$lang['L_SQL_UPLOADEDFILE'].''.$_FILES['upfile']['name'].'   '.byte_output(filesize($_FILES['upfile']['tmp_name'])).''; + } + } + if (is_array($sql['import']['csv'])) { + $aus .= DoImport(); + } else { + $aus .= '
    '.$lang['L_CSV_NODATA'].''; + } + } + } + $impaus = $aus; - } - else - { - if (!isset($_FILES['upfile']['name']) || empty($_FILES['upfile']['name'])) - { - $aus.='' . $lang['L_FM_UPLOADFILEREQUEST'] . ''; - } - else - { - $fn=$_FILES['upfile']['tmp_name']; + $impaus .= '
    '.$nl; + $impaus .= ''; + $impaus .= ''.$lang['L_EXPORT'].''; + $impaus .= '
    '.sprintf($lang['L_SQL_IMPORT'], $databases['Name'][$dbid]).'
    '; + $impaus .= ''.$nl; - $sql['import']['csv']=( substr($_FILES['upfile']['name'],-3) == ".gz" ) ? gzfile($fn) : file($fn); - $sql['import']['text']=implode("",$sql['import']['csv']); - $aus.='' . $lang['L_SQL_UPLOADEDFILE'] . '' . $_FILES['upfile']['name'] . '   ' . byte_output(filesize($_FILES['upfile']['tmp_name'])) . ''; + $impaus .= '
    '.$nl; + $impaus .= $lang['L_IMPORTOPTIONS'].''.$lang['L_CSVOPTIONS'].'
    '.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= '
    '.$lang['L_IMPORTTABLE'].'
    '.$lang['L_IMPORTSOURCE'].''.$lang['L_FROMTEXTBOX'].'
    '.$nl; + $impaus .= ''.$lang['L_FROMFILE'].'
    '.$lang['L_EMPTYTABLEBEFORE'].'
    '.$lang['L_CREATEAUTOINDEX'].'
    '.$nl; - } - } - if (is_array($sql['import']['csv'])) $aus.=DoImport(); - else $aus.='
    ' . $lang['L_CSV_NODATA'] . ''; + $impaus .= '
    '.$nl; - } - } - $impaus=$aus; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= ''.$nl; + $impaus .= '
    '.$lang['L_CSV_NAMEFIRSTLINE'].'
    '.$lang['L_CSV_FIELDSEPERATE'].'
    '.$lang['L_CSV_FIELDSENCLOSED'].'
    '.$lang['L_CSV_FIELDSESCAPE'].'
    '.$lang['L_CSV_EOL'].'
    '.$lang['L_CSV_NULL'].'
    '.$nl; - $impaus.='' . $nl; - $impaus.=''; - $impaus.='' . $lang['L_EXPORT'] . ''; - $impaus.='
    ' . sprintf($lang['L_SQL_IMPORT'],$databases['Name'][$dbid]) . '
    '; - $impaus.='' . $nl; + $impaus .= ''; - $impaus.=''; - - $impaus.=''; + $impaus .= ''; - $impaus.=''; + $impaus .= ''; - $impaus.='
    ' . $nl; - $impaus.=$lang['L_IMPORTOPTIONS'] . '' . $lang['L_CSVOPTIONS'] . '
    ' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='
    ' . $lang['L_IMPORTTABLE'] . '
    ' . $lang['L_IMPORTSOURCE'] . '' . $lang['L_FROMTEXTBOX'] . '
    ' . $nl; - $impaus.='' . $lang['L_FROMFILE'] . '
    ' . $lang['L_EMPTYTABLEBEFORE'] . '
    ' . $lang['L_CREATEAUTOINDEX'] . '
    ' . $nl; - - $impaus.='
    ' . $nl; - - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='' . $nl; - $impaus.='
    ' . $lang['L_CSV_NAMEFIRSTLINE'] . '
    ' . $lang['L_CSV_FIELDSEPERATE'] . '
    ' . $lang['L_CSV_FIELDSENCLOSED'] . '
    ' . $lang['L_CSV_FIELDSESCAPE'] . '
    ' . $lang['L_CSV_EOL'] . '
    ' . $lang['L_CSV_NULL'] . '
    ' . $nl; - - $impaus.='
    ' . $lang['L_CSV_FILEOPEN'] . ':   + $impaus .= '
    '.$lang['L_CSV_FILEOPEN'].':   '; - $impaus.='
    ' . $nl; + $impaus .= '
    '.$nl; - $impaus.='

     

    ' . $lang['L_IMPORT'] . ':
    ' . $nl; + $impaus .= '

     

    '.$lang['L_IMPORT'].':
    '.$nl; - $impaus.='' . $nl; + $impaus .= ''.$nl; - echo $impaus . $nl; + echo $impaus.$nl; +} else { + //EXPORT + $tables = 0; + $tblstr = ''; + $sql['export']['db'] = $db; -} -else -{ - //EXPORT - $tables=0; - $tblstr=""; - $sql['export']['db']=$db; - - if (isset($_POST['f_export_submit'])) - { - //echo '
    '.print_r($_POST,true).'

    '; - $sql['export']['header_sent']=""; - $sql['export']['lines']=0; - $sql['export']['format']=$_POST['f_export_format']; - $sql['export']['ztrenn']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_export_csvztrenn']) : $_POST['f_export_csvztrenn']; - $sql['endline']['ztrenn']=$sql['export']['ztrenn']; - if ($sql['export']['format'] == 0) - { - //CSV - $format=0; - $sql['export']['trenn']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_export_csvtrenn']) : $_POST['f_export_csvtrenn']; - $sql['export']['enc']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_export_csvenc']) : $_POST['f_export_csvenc']; - $sql['export']['esc']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_export_csvesc']) : $_POST['f_export_csvesc']; - if (empty($sql['export']['endline'])) - { - $sql['export']['endline']=$nl; - } - else - { - $sql['export']['endline']=str_replace('\\r',"\015",$sql['export']['endline']); - $sql['export']['endline']=str_replace('\\n',"\012",$sql['export']['endline']); - $sql['export']['endline']=str_replace('\\t',"\011",$sql['export']['endline']); - } - $sql['export']['endline']=str_replace('\\t',"\011",$sql['export']['endline']); - } - elseif ($sql['export']['format'] == 1) - { - //EXCEL - $format=1; - $sql['export']['trenn']=","; - $sql['export']['enc']='"'; - $sql['export']['esc']='"'; - $sql['export']['endline']="\015\012"; - } - elseif ($sql['export']['format'] == 3) - { - //EXCEL 2003 - $format=1; - $sql['export']['trenn']=";"; - $sql['export']['enc']='"'; - $sql['export']['esc']='"'; - $sql['export']['endline']="\015\012"; - } - elseif ($sql['export']['format'] == 4) - { - //XML - $format=4; - CheckcsvOptions(); - } - elseif ($sql['export']['format'] == 5) - { - //HTML - $format=5; - CheckcsvOptions(); - } - if ($format < 3) $sql['export']['null']=( $config['magic_quotes_gpc'] ) ? stripslashes($_POST['f_export_csvnull' . $format]) : $_POST['f_export_csvnull' . $format]; - $sql['export']['namefirstline']=( isset($_POST['f_export_namefirstline' . $format]) ) ? $_POST['f_export_namefirstline' . $format] : 0; - - $sql['export']['sendfile']=$_POST['f_export_sendresult']; - $sql['export']['compressed']=( isset($_POST['f_export_compressed']) ) ? $_POST['f_export_compressed'] : 0; - - $sql['export']['exportfile']=""; - $sql['export']['xmlstructure']=( isset($_POST['f_export_xmlstructure']) ) ? $_POST['f_export_xmlstructure'] : 0; - $sql['export']['htmlstructure']=( isset($_POST['f_export_htmlstructure']) ) ? $_POST['f_export_htmlstructure'] : 0; - - //ausgewählte Tabellen - if (isset($_POST['f_export_tables'])) - { - $sql['export']['tables']=$_POST['f_export_tables']; - } - } - else - CheckcsvOptions(); - - //Tabellenliste - $sqlt="SHOW TABLE STATUS FROM `$db`"; - $res=MSD_query($sqlt); - if ($res) - { - $sql['export']['tablecount']=mysqli_num_rows($res); - $sql['export']['recordcount']=0; - for ($i=0; $i < $sql['export']['tablecount']; $i++) - { - $row=mysqli_fetch_array($res); - $tblstr.='' . "\n"; - $sql['export']['recordcount']+=$row['Rows']; - } - } - - $exaus=$aus . '

    ' . sprintf($lang['L_SQL_EXPORT'],$databases['Name'][$dbid]) . '

    '; - - $exaus.='
    ' . $nl; - $exaus.='' . $lang['L_IMPORT'] . ''; - $exaus.='
    ' . sprintf($lang['L_SQL_EXPORT'],$databases['Name'][$dbid]) . '
    '; - $exaus.='' . $nl; - $exaus.=''; - $exaus.=''; - $exaus.=''; - - $exaus.='
    ' . $lang['L_TABLES'] . '' . $lang['L_EXPORTOPTIONS'] . '' . $lang['L_EXPORT'] . '
    ' . $sql['export']['tablecount'] . ' ' . $lang['L_TABLES'] . ', ' . $sql['export']['recordcount'] . ' ' . $lang['L_RECORDS'] . ''; - $exaus.='   ' . $lang['L_ALL'] . '  ' . $lang['L_NONE'] . '' . $nl; - - $exaus.='

    ' . $nl; - $exaus.='
    ' . $nl; - $exaus.='' . $nl; - $exaus.='' . "CSV" . '   ' . $nl; - $exaus.='' . "Excel" . '   ' . $nl; - $exaus.='' . $lang['L_EXCEL2003'] . '
    ' . $nl; - $exaus.='' . "XML" . '   ' . $nl; - $exaus.='' . "HTML" . '

    ' . $nl; - $exaus.='
    CSV-Optionen' . $nl; - $exaus.='' . $nl; - $exaus.='' . $nl; - $exaus.='' . $nl; - $exaus.='' . $nl; - $exaus.='' . $nl; - $exaus.='
    ' . $nl; - $exaus.='' . $lang['L_CSV_NAMEFIRSTLINE'] . '
    ' . $lang['L_CSV_FIELDSEPERATE'] . '
    ' . $lang['L_CSV_FIELDSENCLOSED'] . '
    ' . $lang['L_CSV_FIELDSESCAPE'] . '
    ' . $lang['L_CSV_EOL'] . '
    ' . $lang['L_CSV_NULL'] . '
    ' . $nl; - - $exaus.='
    Excel-Optionen' . $nl; - $exaus.='' . $nl; - $exaus.='
    '; - $exaus.='' . $lang['L_CSV_NAMEFIRSTLINE'] . '
    ' . $lang['L_CSV_NULL'] . '
    ' . $nl; - - $exaus.='
    XML-Optionen'; - $exaus.=''; - $exaus.='
    mit Struktur
    ' . $nl; - - $exaus.='
    HTML-Optionen'; - $exaus.=''; - $exaus.='
    mit Struktur
    ' . $nl; - - $exaus.='
    ' . $nl; - $exaus.='' . $lang['L_SHOWRESULT'] . '
    ' . $nl; - $exaus.='' . $lang['L_SENDRESULTASFILE'] . '
    ' . $nl; - $exaus.='
    ' . $lang['L_COMPRESSED'] . '

    ' . $nl; - - $exaus.='
    ' . $nl; - $exaus.='
    ' . $nl; - - $exaus.='' . $nl; - - if (!$download) echo $exaus . $nl; - if (isset($_POST['f_export_submit']) && isset($sql['export']['tables'])) - { - if (!$download) echo '

    ' . $lang['L_EXPORT'] . ':zeige in neuem Fenster

    ' . $nl; - echo '' . $lang['L_EXPORTFINISHED'] . '  ' . sprintf($lang['L_EXPORTLINES'],$sql['export']['lines']) . $nl; - } - else - { - exit(); - } - } + if (isset($_POST['f_export_submit'])) { + //echo '
    '.print_r($_POST,true).'

    '; + $sql['export']['header_sent'] = ''; + $sql['export']['lines'] = 0; + $sql['export']['format'] = $_POST['f_export_format']; + $sql['export']['ztrenn'] = $_POST['f_export_csvztrenn']; + $sql['endline']['ztrenn'] = $sql['export']['ztrenn']; + if (0 == $sql['export']['format']) { + //CSV + $format = 0; + $sql['export']['trenn'] = $_POST['f_export_csvtrenn']; + $sql['export']['enc'] = $_POST['f_export_csvenc']; + $sql['export']['esc'] = $_POST['f_export_csvesc']; + if (empty($sql['export']['endline'])) { + $sql['export']['endline'] = $nl; + } else { + $sql['export']['endline'] = str_replace('\\r', "\015", $sql['export']['endline']); + $sql['export']['endline'] = str_replace('\\n', "\012", $sql['export']['endline']); + $sql['export']['endline'] = str_replace('\\t', "\011", $sql['export']['endline']); + } + $sql['export']['endline'] = str_replace('\\t', "\011", $sql['export']['endline']); + } elseif (1 == $sql['export']['format']) { + //EXCEL + $format = 1; + $sql['export']['trenn'] = ','; + $sql['export']['enc'] = '"'; + $sql['export']['esc'] = '"'; + $sql['export']['endline'] = "\015\012"; + } elseif (3 == $sql['export']['format']) { + //EXCEL 2003 + $format = 1; + $sql['export']['trenn'] = ';'; + $sql['export']['enc'] = '"'; + $sql['export']['esc'] = '"'; + $sql['export']['endline'] = "\015\012"; + } elseif (4 == $sql['export']['format']) { + //XML + $format = 4; + CheckcsvOptions(); + } elseif (5 == $sql['export']['format']) { + //HTML + $format = 5; + CheckcsvOptions(); + } + if ($format < 3) { + $sql['export']['null'] = $_POST['f_export_csvnull'.$format]; + } + $sql['export']['namefirstline'] = (isset($_POST['f_export_namefirstline'.$format])) ? $_POST['f_export_namefirstline'.$format] : 0; + + $sql['export']['sendfile'] = $_POST['f_export_sendresult']; + $sql['export']['compressed'] = (isset($_POST['f_export_compressed'])) ? $_POST['f_export_compressed'] : 0; + + $sql['export']['exportfile'] = ''; + $sql['export']['xmlstructure'] = (isset($_POST['f_export_xmlstructure'])) ? $_POST['f_export_xmlstructure'] : 0; + $sql['export']['htmlstructure'] = (isset($_POST['f_export_htmlstructure'])) ? $_POST['f_export_htmlstructure'] : 0; + + //ausgewählte Tabellen + if (isset($_POST['f_export_tables'])) { + $sql['export']['tables'] = $_POST['f_export_tables']; + } + } else { + CheckcsvOptions(); + } + + //Tabellenliste + $sqlt = "SHOW TABLE STATUS FROM `$db`"; + $res = mod_query($sqlt); + if ($res) { + $sql['export']['tablecount'] = mysqli_num_rows($res); + $sql['export']['recordcount'] = 0; + for ($i = 0; $i < $sql['export']['tablecount']; ++$i) { + $row = mysqli_fetch_array($res); + $tblstr .= ''."\n"; + $sql['export']['recordcount'] += $row['Rows']; + } + } + + $exaus = $aus.'

    '.sprintf($lang['L_SQL_EXPORT'], $databases['Name'][$dbid]).'

    '; + + $exaus .= '
    '.$nl; + $exaus .= ''.$lang['L_IMPORT'].''; + $exaus .= '
    '.sprintf($lang['L_SQL_EXPORT'], $databases['Name'][$dbid]).'
    '; + $exaus .= ''.$nl; + $exaus .= ''; + $exaus .= ''; + $exaus .= ''; + + $exaus .= '
    '.$lang['L_TABLES'].''.$lang['L_EXPORTOPTIONS'].''.$lang['L_EXPORT'].'
    '.$sql['export']['tablecount'].' '.$lang['L_TABLES'].', '.$sql['export']['recordcount'].' '.$lang['L_RECORDS'].''; + $exaus .= '   '.$lang['L_ALL'].'  '.$lang['L_NONE'].''.$nl; + + $exaus .= '

    '.$nl; + $exaus .= '
    '.$nl; + $exaus .= ''.$nl; + $exaus .= ''.'CSV'.'   '.$nl; + $exaus .= ''.'Excel'.'   '.$nl; + $exaus .= ''.$lang['L_EXCEL2003'].'
    '.$nl; + $exaus .= ''.'XML'.'   '.$nl; + $exaus .= ''.'HTML'.'

    '.$nl; + $exaus .= '
    CSV-Optionen'.$nl; + $exaus .= ''.$nl; + $exaus .= ''.$nl; + $exaus .= ''.$nl; + $exaus .= ''.$nl; + $exaus .= ''.$nl; + $exaus .= '
    '.$nl; + $exaus .= ''.$lang['L_CSV_NAMEFIRSTLINE'].'
    '.$lang['L_CSV_FIELDSEPERATE'].'
    '.$lang['L_CSV_FIELDSENCLOSED'].'
    '.$lang['L_CSV_FIELDSESCAPE'].'
    '.$lang['L_CSV_EOL'].'
    '.$lang['L_CSV_NULL'].'
    '.$nl; + + $exaus .= '
    Excel-Optionen'.$nl; + $exaus .= ''.$nl; + $exaus .= '
    '; + $exaus .= ''.$lang['L_CSV_NAMEFIRSTLINE'].'
    '.$lang['L_CSV_NULL'].'
    '.$nl; + + $exaus .= '
    XML-Optionen'; + $exaus .= ''; + $exaus .= '
    mit Struktur
    '.$nl; + + $exaus .= '
    HTML-Optionen'; + $exaus .= ''; + $exaus .= '
    mit Struktur
    '.$nl; + + $exaus .= '
    '.$nl; + $exaus .= ''.$lang['L_SHOWRESULT'].'
    '.$nl; + $exaus .= ''.$lang['L_SENDRESULTASFILE'].'
    '.$nl; + $exaus .= '
    '.$lang['L_COMPRESSED'].'

    '.$nl; + + $exaus .= '
    '.$nl; + $exaus .= '
    '.$nl; + + $exaus .= ''.$nl; + + if (!$download) { + echo $exaus.$nl; + } + if (isset($_POST['f_export_submit']) && isset($sql['export']['tables'])) { + if (!$download) { + echo '

    '.$lang['L_EXPORT'].':zeige in neuem Fenster

    '.$nl; + echo ''.$lang['L_EXPORTFINISHED'].'  '.sprintf($lang['L_EXPORTLINES'], $sql['export']['lines']).$nl; + } else { + exit(); + } + } } diff --git a/msd/inc/sql_tools.php b/msd/inc/sql_tools.php index b85055ca..b14147e2 100644 --- a/msd/inc/sql_tools.php +++ b/msd/inc/sql_tools.php @@ -4,7 +4,7 @@ MyOOS [Dumper] http://www.oos-shop.de/ - Copyright (c) 2016 by the MyOOS Development Team. + Copyright (c) 2013 - 2022 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: @@ -16,190 +16,182 @@ Released under the GNU General Public License ---------------------------------------------------------------------- */ - -if (!defined('MSD_VERSION')) die('No direct access.'); +if (!defined('MOD_VERSION')) { + exit('No direct access.'); +} get_sql_encodings(); //Datenbanken -if (isset($_GET['dbrefresh'])) SetDefault(); - -echo $aus . '

    ' . $lang['L_TOOLS'] . '

    '; -if (isset($_POST['dbdosubmit'])) -{ - $newname=$_POST['newname']; - $db_index=$_POST['db_index']; - $db_action=$_POST['db_action']; - $changed=false; - $ausgabe=$out=""; - switch ($db_action) - { - case "drop": - if (MSD_DoSQL("DROP DATABASE `" . $databases['Name'][$db_index] . "`")) - { - echo SQLOutput($out,'

    ' . $lang['L_DB'] . ' `' . $databases['Name'][$db_index] . '` ' . $lang['L_SQL_DELETED'] . '

    '); - $changed=true; - } - break; - case "empty": - EmptyDB($databases['Name'][$db_index]); - echo SQLOutput($out,'

    ' . $lang['L_DB'] . ' `' . $databases['Name'][$db_index] . '` ' . $lang['L_SQL_WASEMPTIED'] . '.

    '); - break; - case "rename": - $dbold=$databases['Name'][$db_index]; - if (DB_Copy($dbold,$newname,1)) - { - echo SQLOutput($out,'

    ' . $lang['L_DB'] . ' `' . $dbold . '` ' . $lang['L_SQL_RENAMEDTO'] . ' `' . $newname . '`.

    '); - $changed=true; - } - break; - case "copy": - $dbold=$databases['Name'][$db_index]; - if (DB_Copy($dbold,$newname)) - { - $changed=true; - echo SQLOutput($out,'

    ' . sprintf($lang['L_SQL_DBCOPY'],$dbold,$newname) . '

    '); - } - break; - case "structure": - if (DB_Copy($databases['Name'][$db_index],$newname,0,0)) - { - $changed=true; - echo SQLOutput($out,'

    ' . sprintf($lang['L_SQL_DBSCOPY'],$databases['Name'][$db_index],$newname) . '

    '); - } - break; - case "rights": - break; - } - - if ($changed==true) - { - SetDefault(); - include ( $config['files']['parameter'] ); - echo ''; - - } +if (isset($_GET['dbrefresh'])) { + SetDefault(); } -if (isset($_POST['dbwantaction'])) -{ - if (isset($_POST['db_createnew'])) - { - $newname=trim($_POST['db_create']); - if (!empty($newname)) - { - $sqlc="CREATE DATABASE `$newname`"; - $col=( MSD_NEW_VERSION ) ? $_POST['db_collate'] : ""; - if (isset($_POST['db_default_charset']) && intval(substr(MSD_NEW_VERSION,0,1)) > 3) - { - $db_default_charset_string=$config['mysql_possible_character_sets'][$_POST['db_default_charset']]; - $db_default_charset=explode(' ',$db_default_charset_string); - if (isset($db_default_charset[0])) $sqlc.=' DEFAULT CHARACTER SET `' . $db_default_charset[0] . '`'; - } - $db_default_collation=@explode('|',$col); - if (isset($db_default_collation[1])) $sqlc.=' COLLATE `' . $db_default_collation[1] . '`'; - if (MSD_query($sqlc)) - { - echo $lang['L_DB'] . " `$newname` " . $lang['L_SQL_WASCREATED'] . ".
    "; - SetDefault(); - include ( $config['files']['parameter'] ); - echo ''; +echo $aus.'

    '.$lang['L_TOOLS'].'

    '; +if (isset($_POST['dbdosubmit'])) { + $newname = $_POST['newname']; + $db_index = $_POST['db_index']; + $db_action = $_POST['db_action']; + $changed = false; + $ausgabe = $out = ''; + switch ($db_action) { + case 'drop': + if (MOD_DoSQL('DROP DATABASE `'.$databases['Name'][$db_index].'`')) { + echo SQLOutput($out, '

    '.$lang['L_DB'].' `'.$databases['Name'][$db_index].'` '.$lang['L_SQL_DELETED'].'

    '); + $changed = true; } - } - } - $db_action=$newname=""; - $db_index=-1; - for ($i=0; $i < count($databases['Name']); $i++) - { - if (isset($_POST['db_do_' . $i])) - { - $newname=$_POST['db_rename' . $i]; - $db_index=$i; - $db_action=$_POST['db_do_action_' . $i]; - break; - } - } - if ($db_action != "") - { - echo '
    '; - echo '
    - - - '; - switch ($db_action) - { - case "drop": - echo '' . sprintf($lang['L_ASKDBDELETE'],$databases['Name'][$i]) . '

    '; - echo ''; - break; - case "empty": - echo '' . sprintf($lang['L_ASKDBEMPTY'],$databases['Name'][$i]) . '

    '; - echo ''; - break; - case "rename": - echo '' . $lang['L_SQL_RENAMEDB'] . ' `' . $databases['Name'][$db_index] . '` ' . $lang['L_IN'] . ' `' . $newname . '`

    '; - if ($newname == "") echo '

    ' . $lang['L_SQL_NAMEDEST_MISSING'] . '

    '; - else - { - echo ''; + break; + case 'empty': + EmptyDB($databases['Name'][$db_index]); + echo SQLOutput($out, '

    '.$lang['L_DB'].' `'.$databases['Name'][$db_index].'` '.$lang['L_SQL_WASEMPTIED'].'.

    '); + break; + case 'rename': + $dbold = $databases['Name'][$db_index]; + if (DB_Copy($dbold, $newname, 1)) { + echo SQLOutput($out, '

    '.$lang['L_DB'].' `'.$dbold.'` '.$lang['L_SQL_RENAMEDTO'].' `'.$newname.'`.

    '); + $changed = true; + } + break; + case 'copy': + $dbold = $databases['Name'][$db_index]; + if (DB_Copy($dbold, $newname)) { + $changed = true; + echo SQLOutput($out, '

    '.sprintf($lang['L_SQL_DBCOPY'], $dbold, $newname).'

    '); + } + break; + case 'structure': + if (DB_Copy($databases['Name'][$db_index], $newname, 0, 0)) { + $changed = true; + echo SQLOutput($out, '

    '.sprintf($lang['L_SQL_DBSCOPY'], $databases['Name'][$db_index], $newname).'

    '); + } + break; + case 'rights': + break; + } + + if (true == $changed) { + SetDefault(); + include $config['files']['parameter']; + echo ''; + } +} +if (isset($_POST['dbwantaction'])) { + if (isset($_POST['db_createnew'])) { + $newname = trim($_POST['db_create']); + if (!empty($newname)) { + $sqlc = "CREATE DATABASE `$newname`"; + $col = (MOD_NEW_VERSION) ? $_POST['db_collate'] : ''; + if (isset($_POST['db_default_charset']) && intval(substr(MOD_NEW_VERSION, 0, 1)) > 3) { + $db_default_charset_string = $config['mysql_possible_character_sets'][$_POST['db_default_charset']]; + $db_default_charset = explode(' ', $db_default_charset_string); + if (isset($db_default_charset[0])) { + $sqlc .= ' DEFAULT CHARACTER SET `'.$db_default_charset[0].'`'; } - break; - case "copy": - echo '' . sprintf($lang['L_ASKDBCOPY'],$databases['Name'][$db_index],$newname) . '

    '; - if ($newname == "") echo '

    ' . $lang['L_SQL_NAMEDEST_MISSING'] . '

    '; - else - { - echo ''; - } - break; - case "structure": - echo '' . $lang['L_FM_ASKDBCOPY1'] . '`' . $databases['Name'][$db_index] . '`' . $lang['L_FM_ASKDBCOPY2'] . '`' . $newname . '`' . $lang['L_FM_ASKDBCOPY3'] . '

    '; - if ($newname == "") echo '

    ' . $lang['L_SQL_NAMEDEST_MISSING'] . '

    '; - else - { - echo ''; - } - break; - case "rights": - break; - } - echo '

    '; - } + } + $db_default_collation = @explode('|', $col); + if (isset($db_default_collation[1])) { + $sqlc .= ' COLLATE `'.$db_default_collation[1].'`'; + } + + if (mod_query($sqlc)) { + echo $lang['L_DB']." `$newname` ".$lang['L_SQL_WASCREATED'].'.
    '; + SetDefault(); + include $config['files']['parameter']; + echo ''; + } + } + } + $db_action = $newname = ''; + $db_index = -1; + for ($i = 0; $i < count($databases['Name']); ++$i) { + if (isset($_POST['db_do_'.$i])) { + $newname = $_POST['db_rename'.$i]; + $db_index = $i; + $db_action = $_POST['db_do_action_'.$i]; + break; + } + } + if ('' != $db_action) { + echo '
    '; + echo '
    + + + '; + switch ($db_action) { + case 'drop': + echo ''.sprintf($lang['L_ASKDBDELETE'], $databases['Name'][$i]).'

    '; + echo ''; + break; + case 'empty': + echo ''.sprintf($lang['L_ASKDBEMPTY'], $databases['Name'][$i]).'

    '; + echo ''; + break; + case 'rename': + echo ''.$lang['L_SQL_RENAMEDB'].' `'.$databases['Name'][$db_index].'` '.$lang['L_IN'].' `'.$newname.'`

    '; + if ('' == $newname) { + echo '

    '.$lang['L_SQL_NAMEDEST_MISSING'].'

    '; + } else { + echo ''; + } + break; + case 'copy': + echo ''.sprintf($lang['L_ASKDBCOPY'], $databases['Name'][$db_index], $newname).'

    '; + if ('' == $newname) { + echo '

    '.$lang['L_SQL_NAMEDEST_MISSING'].'

    '; + } else { + echo ''; + } + break; + case 'structure': + echo ''.$lang['L_FM_ASKDBCOPY1'].'`'.$databases['Name'][$db_index].'`'.$lang['L_FM_ASKDBCOPY2'].'`'.$newname.'`'.$lang['L_FM_ASKDBCOPY3'].'

    '; + if ('' == $newname) { + echo '

    '.$lang['L_SQL_NAMEDEST_MISSING'].'

    '; + } else { + echo ''; + } + break; + case 'rights': + break; + } + echo '

    '; + } } echo '
    '; echo '
    '; -echo ''; +echo ''; echo ''; -echo ''; -echo ''; -echo ''; +echo ''; +echo ''; echo '
    ' . $lang['L_CREATE_DATABASE'] . '
    '.$lang['L_CREATE_DATABASE'].'
    Name:
    ' . $lang['L_DEFAULT_CHARSET'] . ':
    '.$lang['L_DEFAULT_CHARSET'].':
    ' . $lang['L_COLLATION'] . '
    '.$lang['L_COLLATION'].'
    '; echo '
    '; -echo ''; -for ($i=0; $i < count($databases['Name']); $i++) -{ - $cl=( $i % 2 ) ? "dbrow" : "dbrow1"; - echo ( $i == $databases['db_selected_index'] ) ? '' : ''; - echo ''; - echo ''; +for ($i = 0; $i < count($databases['Name']); ++$i) { + $cl = ($i % 2) ? 'dbrow' : 'dbrow1'; + echo ($i == $databases['db_selected_index']) ? '' : ''; + echo ''; + echo ''; + echo '  '; } echo '
    ' . $lang['L_DBS'] . '' . $lang['L_SQL_ACTIONS'] . '
    ' . $databases['Name'][$i] . ''; - echo '  
    '.$lang['L_DBS'].''.$lang['L_SQL_ACTIONS'].'
    '.$databases['Name'][$i].''; + echo '  '; - echo "\n\n" . '  '; + echo ''; + echo "\n\n".'  '; - echo '  
    '; - diff --git a/msd/inc/sqlbrowser/mysql_search.php b/msd/inc/sqlbrowser/mysql_search.php index 211dfb77..bc83efe2 100644 --- a/msd/inc/sqlbrowser/mysql_search.php +++ b/msd/inc/sqlbrowser/mysql_search.php @@ -1,397 +1,387 @@ count($tables)-1) $table_selected=0; +if (isset($_POST['suchart'])) { + $_SESSION['mysql_search']['suchart'] = $_POST['suchart']; +} +if (!isset($_SESSION['mysql_search']['suchart']) || strlen($_SESSION['mysql_search']['suchart']) < 2) { + $_SESSION['mysql_search']['suchart'] = 'AND'; +} +$suchart = $_SESSION['mysql_search']['suchart']; -$offset=(isset($_POST['offset'])) ? intval($_POST['offset']) : 0; +if (isset($_POST['table_selected'])) { + $_SESSION['mysql_search']['table_selected'] = $_POST['table_selected']; +} +if (!isset($_SESSION['mysql_search']['table_selected'])) { + $_SESSION['mysql_search']['table_selected'] = 0; +} +$table_selected = $_SESSION['mysql_search']['table_selected']; +// If tables were deleted in the meantime and the index does not exist anymore, reset it +if ($table_selected > count($tables) - 1) { + $table_selected = 0; +} -$tablename=isset($_GET['tablename']) ? urldecode($_GET['tablename']) : ''; +$offset = (isset($_POST['offset'])) ? intval($_POST['offset']) : 0; + +$tablename = isset($_GET['tablename']) ? urldecode($_GET['tablename']) : ''; // Delete -if (isset($_GET['mode'])&&$_GET['mode']=="kill"&&$rk>'') -{ - //echo "
    RK ist: ".$rk."

    "; - $sqlk="DELETE FROM `$tablename` WHERE ".$rk." LIMIT 1"; - //echo $sqlk; - $res=MSD_query($sqlk); - // echo "
    ".$res; - $aus.='

    '.$lang['L_SQL_RECORDDELETED'].'

    '; +if (isset($_GET['mode']) && 'kill' == $_GET['mode'] && $rk > '') { + // echo "
    RK ist: ".$rk."

    "; + $sqlk = "DELETE FROM `$tablename` WHERE ".$rk.' LIMIT 1'; + // echo $sqlk; + $res = mod_query($sqlk); + // echo "
    ".$res; + $aus .= '

    '.$lang['L_SQL_RECORDDELETED'].'

    '; } -function mysql_search($db, $tabelle, $suchbegriffe, $suchart, $offset=0, $anzahl_ergebnisse=20, $auszuschliessende_tabellen='') +function mysqli_search($db, $tabelle, $suchbegriffe, $suchart, $offset = 0, $anzahl_ergebnisse = 20, $auszuschliessende_tabellen = '') { - global $tables,$config; - $ret=false; - $link=MSD_mysql_connect(); - if (sizeof($tables)>0) - { - $suchbegriffe=trim(str_replace('*','',$suchbegriffe)); - $suchworte=explode(' ',$suchbegriffe); - if (($suchbegriffe>'')&&(is_array($suchworte))) - { - // Leere Einträge (durch doppelte Leerzeichen) entfernen - $anzahl_suchworte=sizeof($suchworte); - for ($i=0; $i<$anzahl_suchworte; $i++) - { - if (trim($suchworte[$i])=='') unset($suchworte[$i]); - } + global $tables, $config, $lang; - $bedingung=''; - $where=''; - $felder=''; + $ret = false; + $link = mod_mysqli_connect(); + if (sizeof($tables) > 0) { + $suchbegriffe = trim(str_replace('*', '', $suchbegriffe)); + $suchworte = explode(' ', $suchbegriffe); + if (($suchbegriffe > '') && (is_array($suchworte))) { + // Remove empty entries (due to double spaces) + $anzahl_suchworte = sizeof($suchworte); + for ($i = 0; $i < $anzahl_suchworte; ++$i) { + if ('' == trim($suchworte[$i])) { + unset($suchworte[$i]); + } + } - // Felder ermitteln - $sql='SHOW COLUMNS FROM `'.$db.'`.`'.$tables[$tabelle].'`'; - $res=mysqli_query($link,$sql); - unset($felder); - if (!$res===false) - { - // Felder der Tabelle ermitteln - while ($row=mysqli_fetch_object($res)) - { - $felder[]=$row->Field; - } - } + $bedingung = []; + $where = ''; + $felder = []; - $feldbedingung=''; - if ($suchart=='CONCAT') - { - if (is_array($felder)) - { - //Concat-String bildem - $concat=implode('`),LOWER(`',$felder); - $concat='CONCAT_WS(\'\',LOWER(`'.$concat.'`))'; - $where=''; - foreach ($suchworte as $suchbegriff) - { - $where.=$concat.' LIKE \'%'.strtolower($suchbegriff).'%\' AND '; - } - $where=substr($where,0,-4); // letztes AND entfernen - $sql='SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` WHERE '.$where.' LIMIT '.$offset.','.$anzahl_ergebnisse; - } - } - else - { - $pattern='`{FELD}` LIKE \'%{SUCHBEGRIFF}%\''; - if (is_array($felder)) - { - foreach ($felder as $feld) - { - unset($feldbedingung); - foreach ($suchworte as $suchbegriff) - { - $suchen= array ( + // Determine fields + $sql = 'SHOW COLUMNS FROM `'.$db.'`.`'.$tables[$tabelle].'`'; + $res = mysqli_query($link, $sql); + if (false === !$res) { + // Determine fields of the table + while ($row = mysqli_fetch_object($res)) { + $felder[] = $row->Field; + } + } - '{FELD}', - '{SUCHBEGRIFF}'); - $ersetzen= array ( + $feldbedingung = ''; + if ('CONCAT' == $suchart) { + if (count($felder) > 0) { + // Build Concat-String + $concat = implode('`),LOWER(`', $felder); + $concat = 'CONCAT_WS(\'\',LOWER(`'.$concat.'`))'; + $where = ''; + foreach ($suchworte as $suchbegriff) { + $where .= $concat.' LIKE \'%'.strtolower($suchbegriff).'%\' AND '; + } + $where = substr($where, 0, -4); // Remove last AND + $sql = 'SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` WHERE '.$where.' LIMIT '.$offset.','.$anzahl_ergebnisse; + } else { + $_SESSION['mysql_search']['suchbegriffe'] = ''; + exit(sprintf($lang['L_ERROR_NO_FIELDS'], $tabelle)); + } + } else { + $pattern = '`{FELD}` LIKE \'%{SUCHBEGRIFF}%\''; - $feld, - $suchbegriff); - $feldbedingung[]=str_replace($suchen,$ersetzen,$pattern); - } - $bedingung[]='('.implode(' '.$suchart.' ',$feldbedingung).') '; - } - } - else - die('
    Fehler bei Suche: ich konnte nicht ermitteln welche Felder die Tabelle "'.$tabelle.'" hat!'); - $where=implode(' OR ',$bedingung); - $sql='SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` WHERE ('.$where.') LIMIT '.$offset.','.$anzahl_ergebnisse; - } - } - else - $sql='SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` LIMIT '.$offset.','.$anzahl_ergebnisse; + if (count($felder) > 0) { + foreach ($felder as $feld) { + unset($feldbedingung); + foreach ($suchworte as $suchbegriff) { + $suchen = [ + '{FELD}', + '{SUCHBEGRIFF}', + ]; + $ersetzen = [ + $feld, + $suchbegriff, + ]; + $feldbedingung[] = str_replace($suchen, $ersetzen, $pattern); + } + $bedingung[] = '('.implode(' '.$suchart.' ', $feldbedingung).') '; + } + } else { + $_SESSION['mysql_search']['suchbegriffe'] = ''; + exit(sprintf($lang['L_ERROR_NO_FIELDS'], $tabelle)); + } + $where = implode(' OR ', $bedingung); + $sql = 'SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` WHERE ('.$where.') LIMIT '.$offset.','.$anzahl_ergebnisse; + } + } else { + $sql = 'SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` LIMIT '.$offset.','.$anzahl_ergebnisse; + } - $res=@mysqli_query($link, $sql); - if ($res) - { - while ($row=mysqli_fetch_array($res,MYSQLI_ASSOC)) - { - //Treffer markieren - foreach ($row as $key=>$val) - { - foreach ($suchworte as $suchbegriff) - { - $row[$key]=markiere_suchtreffer($suchbegriff,$row[$key]); - } - $row[$key]=ersetze_suchtreffer($row[$key]); - } - $ret[]=$row; - } - } - } - return $ret; + $res = mysqli_query($link, $sql); + if (false === !$res) { + while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) { + // Mark hits + foreach ($row as $key => $val) { + foreach ($suchworte as $suchbegriff) { + $row[$key] = markiere_suchtreffer($suchbegriff, $row[$key]); + } + $row[$key] = ersetze_suchtreffer($row[$key]); + } + $ret[] = $row; + } + } + } + return $ret; } -// Markiert den Suchbegriff mit einem Code (ASCII 01/02) -// - falls nicht gefunden : Rückgabe des Originalstrings -// +// Marks the search string with a code (ASCII 01/02) +// - if not found : returns the original string function markiere_suchtreffer($suchbegriff, $suchstring) { - $str=strtolower($suchstring); - $suchbegriff=strtolower($suchbegriff); - if ((strlen($str)>0)&&(strlen($suchbegriff)>0)) - { - // Treffer Position bestimmen - $offset=0; - $trefferpos=0; - while (($offset<=strlen($str))) - //Wenn nur der erste Treffer markiert werden soll, so muss die Zeile so lauten - // while ( ($offset<=strlen($str)) || ($in_html==false) ) - { - for ($offset=$trefferpos; $offset<=strlen($str); $offset++) - { - $start=strpos($str,$suchbegriff,$offset); - if ($start===false) $offset=strlen($str)+1; - else - { - if ($offset<=strlen($str)) - { - //Treffer überprüfen - $in_html=false; - // Steht die Fundstelle zwischen < und > (also im HTML-Tag) ? - for ($position=$start; $position>=0; $position--) - { - if (substr($str,$position,1)==">") - { - $in_html=false; - $position=-1; // Schleife verlassen - } - if (substr($str,$position,1)=="<") - { - $in_html=true; - $position=-1; // Schleife verlassen - } - } - if ($in_html) - { - for ($position2=$start; $position2") - { - $in_html=true; - $position2=strlen($str)+1; - $offset=strlen($str)+1; - } - } - } - if (!$in_html) - { - $ersetzen=substr($suchstring,$start,strlen($suchbegriff)); - $str=substr($suchstring,0,$start); - $str.=chr(1).$ersetzen.chr(2); - $str.=substr($suchstring,($start+strlen($ersetzen)),(strlen($suchstring)-strlen($ersetzen))); - $suchstring=$str; - } - if ($in_html) - { - $trefferpos=$start+1; - $offset=$trefferpos; - } - } - $offset=$start+1; - } - } - } - } - return $suchstring; + $str = strtolower($suchstring); + $suchbegriff = strtolower($suchbegriff); + if ((strlen($str) > 0) && (strlen($suchbegriff) > 0)) { + // Determine hit position + $offset = 0; + $trefferpos = 0; + while (($offset <= strlen($str))) { + // If only the first hit is to be marked, the line must read as follow + // while ( ($offset<=strlen($str)) || ($in_html==false) ) + for ($offset = $trefferpos; $offset <= strlen($str); ++$offset) { + $start = strpos($str, $suchbegriff, $offset); + if (false === $start) { + $offset = strlen($str) + 1; + } else { + if ($offset <= strlen($str)) { + //Treffer überprüfen + $in_html = false; + // Steht die Fundstelle zwischen < und > (also im HTML-Tag) ? + for ($position = $start; $position >= 0; --$position) { + if ('>' == substr($str, $position, 1)) { + $in_html = false; + $position = -1; // Schleife verlassen + } + if ('<' == substr($str, $position, 1)) { + $in_html = true; + $position = -1; // Schleife verlassen + } + } + if ($in_html) { + for ($position2 = $start; $position2 < strlen($str); ++$position2) { + if ('<' == substr($str, $position2, 1)) { + $position2 = strlen($str) + 1; + } + if ('>' == substr($str, $position2, 1)) { + $in_html = true; + $position2 = strlen($str) + 1; + $offset = strlen($str) + 1; + } + } + } + if (!$in_html) { + $ersetzen = substr($suchstring, $start, strlen($suchbegriff)); + $str = substr($suchstring, 0, $start); + $str .= chr(1).$ersetzen.chr(2); + $str .= substr($suchstring, ($start + strlen($ersetzen)), (strlen($suchstring) - strlen($ersetzen))); + $suchstring = $str; + } + if ($in_html) { + $trefferpos = $start + 1; + $offset = $trefferpos; + } + } + $offset = $start + 1; + } + } + } + } + return $suchstring; } // Ersetzt die Codes letztlich durch die Fontangabe function ersetze_suchtreffer($text) { - $such= array ( - - chr(1), - chr(2)); - $ersetzen= array ( - - '', - ''); - return str_replace($such,$ersetzen,htmlspecialchars($text)); + $such = [ + chr(1), + chr(2), ]; + $ersetzen = [ + '', + '', ]; + return str_replace($such, $ersetzen, htmlspecialchars($text)); } -$suchbegriffe=trim($suchbegriffe); // Leerzeichen vorne und hinten wegschneiden -if (isset($_POST['reset'])) -{ - $suchbegriffe=''; - $_SESSION['mysql_search']['suchbegriffe']=''; - $suchart='AND'; - $_SESSION['mysql_search']['suchart']='AND'; - $table_selected=0; - $_SESSION['mysql_search']['table_selected']=0; +$suchbegriffe = trim($suchbegriffe); // Leerzeichen vorne und hinten wegschneiden +if (isset($_POST['reset'])) { + $suchbegriffe = ''; + $_SESSION['mysql_search']['suchbegriffe'] = ''; + $suchart = 'AND'; + $_SESSION['mysql_search']['suchart'] = 'AND'; + $table_selected = 0; + $_SESSION['mysql_search']['table_selected'] = 0; } -$showtables=0; // Anzeige der Tabellendaten im restlichen SQL-Browser ausschalten - +$showtables = 0; // Anzeige der Tabellendaten im restlichen SQL-Browser ausschalten // Fix bis zur kompletten Umstellung auf Templates echo $aus; -$aus=''; +$aus = ''; -$anzahl_tabellen=sizeof($tables); -$table_options=''; -if ($anzahl_tabellen>0) -{ - for ($i=0; $i<$anzahl_tabellen; $i++) - { - if (isset($tables[$i])) - { - $table_options.=''; + $selectedFeldTyp = false; + foreach ($feldArray as $feldName => $feldTyp) { + $options .= "\n".'