From 16c383dae36632fc672f611aa50d8acd62661ecc Mon Sep 17 00:00:00 2001 From: 150954cc22a2 <150954cc22a2@google.com> Date: Tue, 21 Jul 2026 04:24:27 +0000 Subject: [PATCH] installed plugin `Protect Uploads` version 0.3 --- wp-content/plugins/kfzrhzd/LICENSE.txt | 339 ++++++++++++++++++ .../assets/css/protect-uploads-admin.css | 23 ++ .../admin/class-protect-uploads-admin.php | 316 ++++++++++++++++ wp-content/plugins/kfzrhzd/admin/index.php | 1 + .../protect-uploads-admin-sidebar.php | 145 ++++++++ .../protect-uploads-admin-settings-page.php | 126 +++++++ .../class-protect-uploads-activator.php | 8 + .../class-protect-uploads-deactivator.php | 12 + .../includes/class-protect-uploads-i18n.php | 31 ++ .../includes/class-protect-uploads-loader.php | 99 +++++ .../includes/class-protect-uploads.php | 73 ++++ wp-content/plugins/kfzrhzd/includes/index.php | 1 + wp-content/plugins/kfzrhzd/index.php | 1 + .../plugins/kfzrhzd/languages/index.php | 1 + .../languages/protect-uploads-es_ES.mo | Bin 0 -> 5397 bytes .../languages/protect-uploads-es_ES.po | 198 ++++++++++ .../languages/protect-uploads-fr_FR.mo | Bin 0 -> 5490 bytes .../languages/protect-uploads-fr_FR.po | 198 ++++++++++ .../languages/protect-uploads-it_IT.mo | Bin 0 -> 5005 bytes .../languages/protect-uploads-it_IT.po | 197 ++++++++++ .../plugins/kfzrhzd/protect-uploads.php | 44 +++ wp-content/plugins/kfzrhzd/readme.txt | 65 ++++ wp-content/plugins/kfzrhzd/uninstall.php | 44 +++ 23 files changed, 1922 insertions(+) create mode 100644 wp-content/plugins/kfzrhzd/LICENSE.txt create mode 100644 wp-content/plugins/kfzrhzd/admin/assets/css/protect-uploads-admin.css create mode 100644 wp-content/plugins/kfzrhzd/admin/class-protect-uploads-admin.php create mode 100644 wp-content/plugins/kfzrhzd/admin/index.php create mode 100644 wp-content/plugins/kfzrhzd/admin/views/includes/protect-uploads-admin-sidebar.php create mode 100644 wp-content/plugins/kfzrhzd/admin/views/protect-uploads-admin-settings-page.php create mode 100644 wp-content/plugins/kfzrhzd/includes/class-protect-uploads-activator.php create mode 100644 wp-content/plugins/kfzrhzd/includes/class-protect-uploads-deactivator.php create mode 100644 wp-content/plugins/kfzrhzd/includes/class-protect-uploads-i18n.php create mode 100644 wp-content/plugins/kfzrhzd/includes/class-protect-uploads-loader.php create mode 100644 wp-content/plugins/kfzrhzd/includes/class-protect-uploads.php create mode 100644 wp-content/plugins/kfzrhzd/includes/index.php create mode 100644 wp-content/plugins/kfzrhzd/index.php create mode 100644 wp-content/plugins/kfzrhzd/languages/index.php create mode 100644 wp-content/plugins/kfzrhzd/languages/protect-uploads-es_ES.mo create mode 100644 wp-content/plugins/kfzrhzd/languages/protect-uploads-es_ES.po create mode 100644 wp-content/plugins/kfzrhzd/languages/protect-uploads-fr_FR.mo create mode 100644 wp-content/plugins/kfzrhzd/languages/protect-uploads-fr_FR.po create mode 100644 wp-content/plugins/kfzrhzd/languages/protect-uploads-it_IT.mo create mode 100644 wp-content/plugins/kfzrhzd/languages/protect-uploads-it_IT.po create mode 100644 wp-content/plugins/kfzrhzd/protect-uploads.php create mode 100644 wp-content/plugins/kfzrhzd/readme.txt create mode 100644 wp-content/plugins/kfzrhzd/uninstall.php diff --git a/wp-content/plugins/kfzrhzd/LICENSE.txt b/wp-content/plugins/kfzrhzd/LICENSE.txt new file mode 100644 index 00000000..0a98ec0f --- /dev/null +++ b/wp-content/plugins/kfzrhzd/LICENSE.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/wp-content/plugins/kfzrhzd/admin/assets/css/protect-uploads-admin.css b/wp-content/plugins/kfzrhzd/admin/assets/css/protect-uploads-admin.css new file mode 100644 index 00000000..ed1ad570 --- /dev/null +++ b/wp-content/plugins/kfzrhzd/admin/assets/css/protect-uploads-admin.css @@ -0,0 +1,23 @@ +.protect-uploads-error { + border: 2px solid #dc3232; + display: inline-block; + padding: 10px; +} +.protect-uploads-success { + border: 1px solid #46b450; +} + +/* container left and right */ +.protect-uploads .protect-uploads-main-container { + float: left; + width: 66%; +} +.protect-uploads .protect-uploads-sidebar { + float: left; + width: 31%; + margin-left: 2%; +} + +.protect-uploads-disabled { + opacity: 0.75 !important; +} \ No newline at end of file diff --git a/wp-content/plugins/kfzrhzd/admin/class-protect-uploads-admin.php b/wp-content/plugins/kfzrhzd/admin/class-protect-uploads-admin.php new file mode 100644 index 00000000..3a722e6e --- /dev/null +++ b/wp-content/plugins/kfzrhzd/admin/class-protect-uploads-admin.php @@ -0,0 +1,316 @@ +plugin_name = $plugin_name; + $this->version = $version; + } + + public function get_plugin_name() + { + return $this->plugin_name; + } + + public function add_submenu_page() + { + add_submenu_page('upload.php', $this->plugin_name, 'Protect Uploads ', 'manage_options', $this->plugin_name . '-settings-page', array($this, 'render_settings_page')); + } + + public function render_settings_page() + { + require plugin_dir_path(__FILE__) . 'views/' . $this->plugin_name . '-admin-settings-page.php'; + } + + public function enqueue_styles() + { + wp_enqueue_style($this->plugin_name, plugin_dir_url(__FILE__) . 'assets/css/protect-uploads-admin.css', array(), $this->version, 'all'); + } + + public function add_settings_link($links) + { + $settings_link = '' . __('Settings') . ''; + array_unshift($links, $settings_link); + return $links; + } + + public function get_uploads_dir() + { + $uploads_dir = wp_upload_dir(); + return $uploads_dir['basedir']; + } + + public function get_uploads_url() + { + $uploads_dir = wp_upload_dir(); + return $uploads_dir['baseurl']; + } + + public function get_uploads_subdirectories() + { + + $directories = scandir(self::get_uploads_dir()); + $subs = array(self::get_uploads_dir()); + + foreach ($directories as $directory) { + + if (is_dir(self::get_uploads_dir() . '/' . $directory) && !preg_match('/^\.*$/', $directory)) { + $subs[] = self::get_uploads_dir() . '/' . $directory; + $subDirectories = scandir(self::get_uploads_dir() . '/' . $directory); + foreach ($subDirectories as $subDirectory) { + if (is_dir(self::get_uploads_dir() . '/' . $directory . '/' . $subDirectory) && !preg_match('/^\.*$/', $subDirectory)) $subs[] = self::get_uploads_dir() . '/' . $directory . '/' . $subDirectory; + } + } + } + return $subs; + } + + public function save_form($form) + { + if ($form['protection'] == 'index_php') { + $this->create_index(); + } + if ($form['protection'] == 'htaccess') { + $this->create_htaccess(); + } + if ($form['protection'] == 'remove') { + $this->remove_index(); + $this->remove_htaccess(); + } + } + + // used to check if the current htaccess has been generated by the plugin + public function get_htaccess_identifier() + { + return "[plugin_name=" . $this->plugin_name . "]"; + } + + public function create_index() + { + // check if index php does not exists + if (self::check_protective_file('index.php') === false) { + + $indexContent = "get_plugin_name() . " Plugin\n"; + $htaccessContent .= "\tOptions -Indexes\n"; + $htaccessContent .= "# [date={$date}] [php={$phpv}] " . self::get_htaccess_identifier() . " [version={$this->version}]\n"; + $htaccessContent .= "# END " . $this->get_plugin_name() . " Plugin\n"; + + // if htaccess does NOT exist yet + if (self::check_protective_file('.htaccess') === false) { + // try to create and save the new htaccess file + if (!file_put_contents(self::get_uploads_dir() . '/' . '.htaccess', $htaccessContent)) { + self::register_message('Impossible to create or modified the htaccess file.', 'error'); + } else { + self::register_message('The htaccess file has been created.'); + } + } + else { + // if content added to existing htaccess + if (file_put_contents(self::get_uploads_dir() . '/.htaccess', $htaccessContent, FILE_APPEND | LOCK_EX)) { + self::register_message('The htaccess file has been updated.'); + } else { + self::register_message('The existing htaccess file couldn\'t be updated. Please check file permissions.', 'error'); + } + } + } + + public function remove_index() + { + $i = 0; + foreach (self::get_uploads_subdirectories() as $subDirectory) { + if (file_exists($subDirectory . '/index.php')) { + unlink($subDirectory . '/index.php'); + $i++; + } + } + if ($i == count(self::get_uploads_subdirectories())) { + self::register_message('The index.php file(s) have(has) been deleted.'); + } + } + + public function remove_htaccess() + { + if (file_exists(self::get_uploads_dir() . '/.htaccess')) { + + $htaccessContent = file_get_contents(self::get_uploads_dir() . '/.htaccess'); + $htaccessContent = preg_replace('/(# BEGIN protect-uploads Plugin)(.*?)(# END protect-uploads Plugin)/is', '', $htaccessContent); + file_put_contents(self::get_uploads_dir() . '/.htaccess', $htaccessContent, LOCK_EX); + + // if htaccess is empty, we remove it. + if (strlen(preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "", file_get_contents(self::get_uploads_dir() . '/.htaccess'))) == 0) { + unlink(self::get_uploads_dir() . '/.htaccess'); + } + + + // + self::register_message('The htaccess file has been updated.'); + } + } + + public function get_protective_files_array() + { + $uploads_files = ['index.php', 'index.html', '.htaccess']; + $response = []; + foreach ($uploads_files as $file) { + if (file_exists(self::get_uploads_dir() . '/' . $file)) { + $response[] = $file; + } + } + return $response; + } + + public function check_protective_file($file) + { + if (in_array($file, self::get_protective_files_array())) { + return true; + } else { + return false; + } + } + + public function get_uploads_root_response_code() + { + $uploads_headers = get_headers(self::get_uploads_url() . '/'); + $response = null; + if (is_array($uploads_headers)) { + if (preg_match('/200/', $uploads_headers[0])) $response = 200; + if (preg_match('/403/', $uploads_headers[0])) $response = 403; + } + return $response; + } + + public function get_htaccess_content() + { + return file_get_contents(self::get_uploads_dir() . '/.htaccess'); + } + + public function check_htaccess_is_self_generated() + { + if (self::check_protective_file('.htaccess') && preg_match('/' . self::get_htaccess_identifier() . '/', self::get_htaccess_content())) { + return true; + } else { + return false; + } + } + + // heart? <3 + public function check_uploads_is_protected() + { + foreach (self::get_protective_files_array() as $file) { + if ($file === 'index.html') { + return true; + break; + } + if ($file === 'index.php') { + return true; + break; + } + if ($file === '.htaccess' && self::get_uploads_root_response_code() === 200) { + return false; + break; + } + } + if (self::get_uploads_root_response_code() === 403) { + return true; + } + else { + return false; + } + } + + public function check_protective_file_removable() { + if( self::check_protective_file('index.html') ) { + return false; + } + elseif( self::check_protective_file('.htaccess') === false && self::get_uploads_root_response_code() === 403 ) { + return false; + } + else { + return true; + } + } + + public function get_uploads_protection_message_array() + { + $response = []; + foreach (self::get_protective_files_array() as $file) { + if ($file === '.htaccess' && self::get_uploads_root_response_code() === 403) { + $response[] = ' ' . __('.htaccess file is present and access to uploads directory returns 403 code.', $this->plugin_name); + } + if ($file === 'index.php') { + $response[] = ' ' . __('index.php file is present.', $this->plugin_name); + } + if ($file === 'index.html') { + $response[] = ' ' . __('index.html file is present.', $this->plugin_name); + } + } + if (self::check_protective_file('.htaccess') === true && self::get_uploads_root_response_code() === 200) { + $response[] = ' ' . __('.htaccess file is present but not protecting uploads directory.', $this->plugin_name); + } + if (self::check_protective_file('.htaccess') === false && self::get_uploads_root_response_code() === 403) { + $response[] = ' ' . __('Access to uploads directory is protected (403) with a global .htaccess or another global declaration.', $this->plugin_name); + } + return $response; + } + + public function check_apache() + { + + if (!function_exists('apache_get_modules')) { + self::register_message('The Protect Uploads plugin cannot work without Apache. Yourself or your web host has to activate this module.'); + } + } + + + public function register_message($message, $type = 'updated', $id = 0) + { + $this->messages['apache'][] = array( + 'message' => __($message, $this->plugin_name), + 'type' => $type, + 'id' => $id + ); + } + + public function display_messages() + { + + foreach ($this->messages as $name => $messages) { + foreach ($messages as $message) { + return '

' . $message['message'] . '

'; + } + } + } +} diff --git a/wp-content/plugins/kfzrhzd/admin/index.php b/wp-content/plugins/kfzrhzd/admin/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/wp-content/plugins/kfzrhzd/admin/index.php @@ -0,0 +1 @@ + +'; + ?> + +
+
+
Like this plugin?
+

Rate it to show your support!

+

Donate to encourage me updating this plugin!

+
+
+
Discover more useful plugins
+ + + + + + +
+
+
Developed by
+ alticreation +
+
diff --git a/wp-content/plugins/kfzrhzd/admin/views/protect-uploads-admin-settings-page.php b/wp-content/plugins/kfzrhzd/admin/views/protect-uploads-admin-settings-page.php new file mode 100644 index 00000000..afa5fc54 --- /dev/null +++ b/wp-content/plugins/kfzrhzd/admin/views/protect-uploads-admin-settings-page.php @@ -0,0 +1,126 @@ +
+ plugin_name, $this->version); + if (isset($_POST['submit']) && isset($_POST['protection']) && check_admin_referer('submit_form', 'protect-uploads' . '_nonce')) { + $plugin->save_form($_POST); + } + echo $plugin->display_messages(); + ?> +

Protect Uploads

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

+ + check_uploads_is_protected() === true) { ?> + plugin_name); ?> + + plugin_name); ?> + + +

+

+ get_uploads_protection_message_array(); + foreach ($file_messages as $file_message) { + ?> +
+ +

+
+
+ + +
+ + plugin_name); ?> + + check_uploads_is_protected() === false) { ?> + +
+ +
+ + + check_protective_file_removable() && $this->check_uploads_is_protected() ) { ?> +
+ + check_protective_file('index.html') === true) { ?> +

+ plugin_name) ?> +

+ +
+ +
+ + +

plugin_name); ?> plugin_name); ?> plugin_name); ?>.

+
+ + +

support page.', $this->plugin_name); ?>

+

Watermark Plugin.', $this->plugin_name); ?>

+

plugin_name); ?>

+
+ + +
+ +
+ +
+ + + +
\ No newline at end of file diff --git a/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-activator.php b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-activator.php new file mode 100644 index 00000000..a83e1408 --- /dev/null +++ b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-activator.php @@ -0,0 +1,8 @@ +plugin_name, $this->version); + $plugin->remove_index(); + $plugin->remove_htaccess(); + delete_option( $this->get_plugin_name().'-protection' ); + + } + +} \ No newline at end of file diff --git a/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-i18n.php b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-i18n.php new file mode 100644 index 00000000..bd5558d6 --- /dev/null +++ b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-i18n.php @@ -0,0 +1,31 @@ +domain, + false, + dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/' + ); + + } + + /** + * Set the domain equal to that of the specified domain. + * @param string $domain The domain that represents the locale of this plugin. + */ + public function set_domain( $domain ) { + $this->domain = $domain; + } + +} diff --git a/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-loader.php b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-loader.php new file mode 100644 index 00000000..f827734c --- /dev/null +++ b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads-loader.php @@ -0,0 +1,99 @@ +actions = array(); + $this->filters = array(); + + } + + /** + * Add a new action to the collection to be registered with WordPress. + * @param string $hook The name of the WordPress action that is being registered. + * @param object $component A reference to the instance of the object on which the action is defined. + * @param string $callback The name of the function definition on the $component. + * @param int Optional $priority The priority at which the function should be fired. + * @param int Optional $accepted_args The number of arguments that should be passed to the $callback. + */ + public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { + $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args ); + } + + /** + * Add a new filter to the collection to be registered with WordPress. + * @param string $hook The name of the WordPress filter that is being registered. + * @param object $component A reference to the instance of the object on which the filter is defined. + * @param string $callback The name of the function definition on the $component. + * @param int Optional $priority The priority at which the function should be fired. + * @param int Optional $accepted_args The number of arguments that should be passed to the $callback. + */ + public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { + $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args ); + } + + /** + * A utility function that is used to register the actions and hooks into a single + * collection. + * @param array $hooks The collection of hooks that is being registered (that is, actions or filters). + * @param string $hook The name of the WordPress filter that is being registered. + * @param object $component A reference to the instance of the object on which the filter is defined. + * @param string $callback The name of the function definition on the $component. + * @param int Optional $priority The priority at which the function should be fired. + * @param int Optional $accepted_args The number of arguments that should be passed to the $callback. + * @return type The collection of actions and filters registered with WordPress. + */ + private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) { + + $hooks[] = array( + 'hook' => $hook, + 'component' => $component, + 'callback' => $callback, + 'priority' => $priority, + 'accepted_args' => $accepted_args + ); + + return $hooks; + + } + + /** + * Register the filters and actions with WordPress. + */ + public function run() { + + foreach ( $this->filters as $hook ) { + add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] ); + } + + foreach ( $this->actions as $hook ) { + add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] ); + } + + } + +} diff --git a/wp-content/plugins/kfzrhzd/includes/class-protect-uploads.php b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads.php new file mode 100644 index 00000000..f2d88734 --- /dev/null +++ b/wp-content/plugins/kfzrhzd/includes/class-protect-uploads.php @@ -0,0 +1,73 @@ +version = '0.3'; + $this->plugin_name = 'protect-uploads'; + $this->load_dependencies(); + $this->set_locale(); + $this->define_admin_hooks(); + } + + private function load_dependencies() + { + + require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-protect-uploads-loader.php'; + require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-protect-uploads-i18n.php'; + require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-protect-uploads-admin.php'; + + $this->loader = new Alti_ProtectUploads_Loader(); + } + + /** + * set locale for translation ends. + */ + private function set_locale() + { + + $plugin_i18n = new Alti_ProtectUploads_i18n(); + $plugin_i18n->set_domain($this->get_plugin_name()); + + $this->loader->add_action('plugins_loaded', $plugin_i18n, 'load_plugin_textdomain'); + } + + /** + * action and filter for admin side + */ + private function define_admin_hooks() + { + + $plugin_admin = new Alti_ProtectUploads_Admin($this->get_plugin_name(), $this->get_version()); + + $this->loader->add_action('admin_menu', $plugin_admin, 'add_submenu_page'); + $this->loader->add_filter('plugin_action_links_' . $this->get_plugin_name() . '/' . $this->get_plugin_name() . '.php', $plugin_admin, 'add_settings_link'); + $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles'); + } + + public function run() + { + $this->loader->run(); + } + + public function get_plugin_name() + { + return $this->plugin_name; + } + + public function get_loader() + { + return $this->loader; + } + + public function get_version() + { + return $this->version; + } +} diff --git a/wp-content/plugins/kfzrhzd/includes/index.php b/wp-content/plugins/kfzrhzd/includes/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/wp-content/plugins/kfzrhzd/includes/index.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/kfzrhzd/languages/index.php b/wp-content/plugins/kfzrhzd/languages/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/wp-content/plugins/kfzrhzd/languages/index.php @@ -0,0 +1 @@ +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\n" +"Language-Team: alticreation \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.11\n" +"X-Poedit-Basepath: ../\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-KeywordsList: _;__;_e\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: .\n" + +#: admin/class-protect-uploads-admin.php:56 +msgid "Settings" +msgstr "Ajustes" + +#: admin/class-protect-uploads-admin.php:122 +msgid "Impossible to create or modified the index.php file in " +msgstr "Imposible de crear o modificar el archivo index.php en" + +#: admin/class-protect-uploads-admin.php:136 +msgid "" +"The index.php file has been created in main folder and subfolders (two " +"levels max)." +msgstr "" +"El archivo index.php se ha creado en la carpeta principal de uploads y " +"subcarpetas (dos niveles max)." + +#: admin/class-protect-uploads-admin.php:170 +msgid "Impossible to create or modified the htaccess file." +msgstr "Imposible de crear o modificar el archivo .htaccess." + +#: admin/class-protect-uploads-admin.php:179 +msgid "The htaccess file has been created." +msgstr "El archivo .htaccess se ha creado." + +#: admin/class-protect-uploads-admin.php:191 +msgid "Existing htaccess has been updated." +msgstr "Htaccess existente se ha actualizado." + +#: admin/class-protect-uploads-admin.php:221 +msgid "The index.php file(s) have(has) been deleted." +msgstr "El(los) archivo(s) index.php ha(n) sido eliminado(s)." + +#: admin/class-protect-uploads-admin.php:250 +msgid "The htaccess file has been updated." +msgstr "El archivo .htaccess se ha actualizado." + +#: admin/class-protect-uploads-admin.php:294 +msgid "" +"The Protect Uploads plugin cannot work without Apache. Yourself or your web " +"host has to activate this module." +msgstr "" +"El plugin Protect Uploads no puede funcionar sin Apache. Usted o su " +"proveedor de alojamiento web tiene que activar este módulo." + +#: admin/views/includes/protect-uploads-admin-message.php:7 +msgid "Error code" +msgstr "Código de error" + +#: admin/views/includes/protect-uploads-admin-message.php:7 +msgid "Go to Protect Uploads documentation" +msgstr "Ir a la documentación de Protect Uploads" + +#: admin/views/protect-uploads-admin-settings-page.php:9 +msgid "by" +msgstr "por" + +#: admin/views/protect-uploads-admin-settings-page.php:10 +msgid "" +"Prevent users to browse your uploads directory. You'll protect your uploads " +"directory to be accessed and content stolen too easily in one batch." +msgstr "" +"Evita que los usuarios navigen directamente por el directorio de archivos. " +"Va a proteger su directorio de archivos y contenido no sera robado con " +"demasiada facilidad en un solo lote." + +#: admin/views/protect-uploads-admin-settings-page.php:17 +msgid "Status" +msgstr "Estado" + +#: admin/views/protect-uploads-admin-settings-page.php:22 +msgid "Uploads directory is protected." +msgstr "Directorio Uploads está protegida." + +#: admin/views/protect-uploads-admin-settings-page.php:24 +msgid "" +"Your uploads directory is already protected by an htaccess " +"file or an Apache setting set for the whole website. You don't need extra " +"protection.
The «remove option» behind will have no effect on the current " +"protection." +msgstr "" +"Su directorio de archivos está ya protegido por un " +"archivo .htaccess o una configuración de Apache puesta para todo el sitio. " +"Usted no necesita protección adicional.
El «opción quitar» aqui abajo " +"no tendrá ningún efecto sobre la protección actual." + +#: admin/views/protect-uploads-admin-settings-page.php:27 +msgid "Uploads directory is not protected!" +msgstr "Directorio de Uploads no está protegido!" + +#: admin/views/protect-uploads-admin-settings-page.php:34 +#: admin/views/protect-uploads-admin-settings-page.php:39 +msgid "Protection" +msgstr "Protección" + +#: admin/views/protect-uploads-admin-settings-page.php:44 +msgid "add index file" +msgstr "añadir archivo index" + +#: admin/views/protect-uploads-admin-settings-page.php:45 +msgid "" +"This will create an index.php file on the root of your uploads directory. " +"This simple trick will hide the content of your whole uploads directory." +msgstr "" +"Esto creará un archivo index.php en la raíz del directorio de los archivos " +"subidos. Este sencillo truco ocultará el contenido de todo su directorio " +"uploads." + +#: admin/views/protect-uploads-admin-settings-page.php:50 +msgid "prevent directory listing with htaccess" +msgstr "previene la navegacion en el directorio de Uploads con htaccess" + +#: admin/views/protect-uploads-admin-settings-page.php:51 +msgid "" +"Through the htaccess file, it will prevent people to browse your uploads " +"directory and return a 403 code (Forbidden Access)." +msgstr "" +"Mediante el archivo .htaccess, se evitará que la gente navega en el " +"directorio de archivos y devuelve un código 403 (Acceso prohibido)." + +#: admin/views/protect-uploads-admin-settings-page.php:56 +msgid "remove protection or disabled protection" +msgstr "eliminar la protección o desactivar la protección" + +#: admin/views/protect-uploads-admin-settings-page.php:57 +msgid "Your uploads directory is not protected." +msgstr "El directorio Uploads no está protegido." + +#: admin/views/protect-uploads-admin-settings-page.php:65 +msgid "Check" +msgstr "Comprobar" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "Visit your" +msgstr "Visite a su" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "uploads directory" +msgstr "directorio de uploads" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "to check the current protection" +msgstr "para comprobar la protección actual" + +#: admin/views/protect-uploads-admin-settings-page.php:73 +msgid "Support" +msgstr "Ayuda" + +#: admin/views/protect-uploads-admin-settings-page.php:76 +msgid "" +"Protect Uploads Plugin support page." +msgstr "" +"Ver la pagina de ayuda del plugin." + +#: admin/views/protect-uploads-admin-settings-page.php:77 +msgid "" +"This plugin is compatible with the Watermark Plugin." +msgstr "" +"Este plugin es compatible con el Plugin Marca de agua ." + +#: admin/views/protect-uploads-admin-settings-page.php:78 +msgid "" +"To do so, you have to: 1. Install the Watermark Plugin 2. Then choose your " +"settings in this page and Update." +msgstr "" +"Por eso, usted tiene que: 1. Instalar el Watermark Plugin 2. Seleccione la " +"configuración en esta página y actualizar." + +#: admin/views/protect-uploads-admin-settings-page.php:85 +msgid "Update" +msgstr "Actualizar" + +#: admin/views/protect-uploads-admin-settings-page.php:94 +msgid "Protect Uploads plugin is developped by" +msgstr "El Plugin Protect Uploads está desarrollado por" diff --git a/wp-content/plugins/kfzrhzd/languages/protect-uploads-fr_FR.mo b/wp-content/plugins/kfzrhzd/languages/protect-uploads-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..2b70100b4e9a86b9d1009f53a1a9e63ed58795a6 GIT binary patch literal 5490 zcmc(jO>87b6~`+iAsYus2!xM7pyGh+6+2@)$%e$cYq422(F(7yvfd>*nVRkzPw)10 zcdEMWb%b)@>j05J2y#d+h!fr%K!F1SPCG{sAh;lbICJ2@1tD?b_o};R#$#_1PPEki zPrIvLz0d!9Gk?4PjvpwlN4P)E{rGK4ErILr;t$uc+m*T#yc?VY?*(P;gAJ~MkMZ0C zKMTGJei!^5=)kQzlv)7)2+IEdfXBc)5&CZMec)Z-1K<#R2z&(mc7s0wFY){*umdiz z=}qu5_&x9#o4*3S4yNEo5H51R0g9Ygz)yld1?Budfd2&l0xp8Ty&E0Ce}Q819V`-k z?*irh5-9th2j34~2XABHw?MY2SKg!4J>aY0N$^MD3GmO&^PTTi>S>-&fxiS_2EPhE z#i8QoUxSEJ{{Thazd_OewtH*890OnG`94tW`3@+0{S5pX_*d{L@XPlp^$YMd@cZB; zlzkoiJNQlT>-X1o-tz&aKEv~a;HSW6KvYuKz&T>S2X;a`d4L$`TT5W-BSC}322NbF(ma7NlflJ~nmz?)eZt=I+#8$LKp-5?>JVaEbrL zN0=I7Md%c1q~^IrN4Ye&fsL-I^Umc? zM|o`3`Rj=oV6HE-!6V>dQr%o7n3(kE)@~ zN>e6zrY;PN-20@LT3H)8%T~=H!#qy>q|9?|jZe}&Q6tZ+?wK+gbW!M_Yc|qqn-!;x9yr@SGe0QHVs&Y0cXzjI(lQC& z!D-znA1>K!sZp%csJ=9>OXId}d1ijAmzwO_{F<+dB6p=O%(gwfWY!KJS=2`+#0BT1 zc~M|PZ?9ENLUhTN5^1k45wi-Yg{n;=GiyO3E;3n`mwGpM*Ys{u4)UthXA2VzZ1Ae{ zHtkE4gG+a9PY-fmh72MqCMuI1NrQ5LS|maxL6_6UxfVh?PPjU2NVvCHGfqlbGm{&$ zf+R{q!=HYh#@2<9`l?qydA(Tf<~kK`p`E#Yygv7!%te13b9U?^vX9qg5!=*;ve*=} zCVnTF1+^d*Ag&4tf7%x&(@|=?KQkX2KS)R^Lezfhm|f#yKfiW*Nmj1Cg?iN zH#F|r5gGHP_MNVivCf*H@@_&gG!=?=2Ms2zgXS(L?s@-~H5DZJWLQYSyCjnQKBVPq*GuAV+doPh_6ZGIADSt>=b*LE$ zA7915&V{&hh3Zwq^LeUyRX@7Ca8w3va{(-=2JsotdDJ55yX>PMuE@G_NTSEb(3vZpJH%#umERs(!MUlylE_p0$~EwLu%XjVX(j?i1aW6<*cPou`erF!Nwlce_h-(4jMF z2QnD?Rh_}#Jo+<_o)RkONv0o=yR`u4_sV#eIYx4RM6&Trb zwce|`R(yQ=C2L$X*x>xmG8)V&G2M-Ro?1RZmX-{sjMpt$8VwTKRGWq*+Gt;bQW{FY z=+S;T+SfxWd-Ownl|#GgY?`ux$J890$Cv_Ud;0Xa#oI`PI}PnMBbuWZ9@2p!E!CEu z4%4^u-P>-Sbd;E=X?1>BjBZdT9N=|TCKMg{Trs;LN-7XNIJ=&qy25`>`U#^(f;AJsLqVWkO&_!)YhY2Xwb0P)PXE2aA&h@bVJVG zp$iRxA`_4H>w%BtD2x+^ zkvSb%>N%X0a%3~|mE)0bTIS6+njP(A4>OBLEVG`tt)FK>8fB)v#PjS%Jpf85I>XV8 zA(UP0v94b484a+p*~P?owel}k3)EX|tLr*TcC4vn za9p=CC^iKwAEz~0q~MR&)hn+g_AVKY_Ic>4bBqm;z&QL;Yg3aXT`{7O|G%clbSn48 zQ&2rhp0iQXkciP0Gj_vX6U%E_awbYhr?{Ff=Vk`#>e~EfjvSgSDJr^?)IlUkMoAL2 zDPkz)8^|GcXvHxXg$=DPEt8%=$_(?gHBW3pmS<)s*{(>9ap))P%&H^OF-P0b0+fXd|C+Dm$Rmk57DKB1T9RcmZJpCY24 zWJ%y}aa-o?P`-hYZuN8;`bD-t9laFn=~\n" +"Language-Team: alticreation \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.11\n" +"X-Poedit-Basepath: ../\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-KeywordsList: __;_e;_\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: .\n" + +#: admin/class-protect-uploads-admin.php:56 +msgid "Settings" +msgstr "Réglages" + +#: admin/class-protect-uploads-admin.php:122 +msgid "Impossible to create or modified the index.php file in " +msgstr "Il est impossible de créer ou modifier le fichier index.php dans " + +#: admin/class-protect-uploads-admin.php:136 +msgid "" +"The index.php file has been created in main folder and subfolders (two " +"levels max)." +msgstr "" +"Le fichier index.php a été créé dans le dossier principal des uploads ainsi " +"que dans les sous-dossiers (jusqu'à deux niveaux)." + +#: admin/class-protect-uploads-admin.php:170 +msgid "Impossible to create or modified the htaccess file." +msgstr "Impossible de créer ou modifier le fichier htaccess." + +#: admin/class-protect-uploads-admin.php:179 +msgid "The htaccess file has been created." +msgstr "Le fichier htaccess a été créé." + +#: admin/class-protect-uploads-admin.php:191 +msgid "Existing htaccess has been updated." +msgstr "Le fichier htaccess préexistant a été mis à jour." + +#: admin/class-protect-uploads-admin.php:221 +msgid "The index.php file(s) have(has) been deleted." +msgstr "Le(s) fichier(s) index.php a (ont) été(s) supprimé(s)." + +#: admin/class-protect-uploads-admin.php:250 +msgid "The htaccess file has been updated." +msgstr "Le fichier htaccess a été mis à jour." + +#: admin/class-protect-uploads-admin.php:294 +msgid "" +"The Protect Uploads plugin cannot work without Apache. Yourself or your web " +"host has to activate this module." +msgstr "" +"L'extension «Protect Uploads» ne peut pas fonctionner sans APache. Vous-même " +"ou votre hébergeur web doit active ce module." + +#: admin/views/includes/protect-uploads-admin-message.php:7 +msgid "Error code" +msgstr "Code erreur" + +#: admin/views/includes/protect-uploads-admin-message.php:7 +msgid "Go to Protect Uploads documentation" +msgstr "Aller à la documentation de Protect Uploads" + +#: admin/views/protect-uploads-admin-settings-page.php:9 +msgid "by" +msgstr "par" + +#: admin/views/protect-uploads-admin-settings-page.php:10 +msgid "" +"Prevent users to browse your uploads directory. You'll protect your uploads " +"directory to be accessed and content stolen too easily in one batch." +msgstr "" +"Empêche les utilisateurs de lister le contenu de votre repertoire uploads. " +"Vous protégerez votre répertoire uploads. Il ne sera pas accessible et le " +"contenu ne pourra pas être voler." + +#: admin/views/protect-uploads-admin-settings-page.php:17 +msgid "Status" +msgstr "Statut" + +#: admin/views/protect-uploads-admin-settings-page.php:22 +msgid "Uploads directory is protected." +msgstr "Le repertoire Uploads est protégé." + +#: admin/views/protect-uploads-admin-settings-page.php:24 +msgid "" +"Your uploads directory is already protected by an htaccess " +"file or an Apache setting set for the whole website. You don't need extra " +"protection.
The «remove option» behind will have no effect on the current " +"protection." +msgstr "" +"Votre répertoir Uploads est déjà protégé par un fichier htaccess ou par un " +"réglage Apache défini pour l'ensemble du site. Vous n'avez pas besoin de " +"protection supplémentaire.
L'option «supprimer» ci-dessous n'aura pas " +"d'effet sur la protection actuelle." + +#: admin/views/protect-uploads-admin-settings-page.php:27 +msgid "Uploads directory is not protected!" +msgstr "Le repertoire Uploads n'est pas protégé !" + +#: admin/views/protect-uploads-admin-settings-page.php:34 +#: admin/views/protect-uploads-admin-settings-page.php:39 +msgid "Protection" +msgstr "Protection" + +#: admin/views/protect-uploads-admin-settings-page.php:44 +msgid "add index file" +msgstr "ajouter un fichier index" + +#: admin/views/protect-uploads-admin-settings-page.php:45 +msgid "" +"This will create an index.php file on the root of your uploads directory. " +"This simple trick will hide the content of your whole uploads directory." +msgstr "" +"Ceci créera un fichier index.php à la racine du repertoire Uploads. Cette " +"simple manipulation cachera le contenu de tout votre repertoire Uploads." + +#: admin/views/protect-uploads-admin-settings-page.php:50 +msgid "prevent directory listing with htaccess" +msgstr "Empêcher le listage du repertoire Uploads avec htaccess" + +#: admin/views/protect-uploads-admin-settings-page.php:51 +msgid "" +"Through the htaccess file, it will prevent people to browse your uploads " +"directory and return a 403 code (Forbidden Access)." +msgstr "" +"Via le fichier htaccess, les utilisateurs ne pourront pas naviguer dans les " +"repertoires Uploads librement et ceci retournera un code 403 (Accès " +"Interdit)." + +#: admin/views/protect-uploads-admin-settings-page.php:56 +msgid "remove protection or disabled protection" +msgstr "enlever la protection ou protection désactivée" + +#: admin/views/protect-uploads-admin-settings-page.php:57 +msgid "Your uploads directory is not protected." +msgstr "Votre repertoire Uploads n'est pas protégé." + +#: admin/views/protect-uploads-admin-settings-page.php:65 +msgid "Check" +msgstr "Contrôle" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "Visit your" +msgstr "Visitez votre" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "uploads directory" +msgstr "repertoire Uploads" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "to check the current protection" +msgstr "pour verifier la protection actuelle." + +#: admin/views/protect-uploads-admin-settings-page.php:73 +msgid "Support" +msgstr "Support" + +#: admin/views/protect-uploads-admin-settings-page.php:76 +msgid "" +"Protect Uploads Plugin support page." +msgstr "" +"Page de support de l'extension Protect Uploads." + +#: admin/views/protect-uploads-admin-settings-page.php:77 +msgid "" +"This plugin is compatible with the Watermark Plugin." +msgstr "" +"Cette extension est compatible avec l'extension Watermark." + +#: admin/views/protect-uploads-admin-settings-page.php:78 +msgid "" +"To do so, you have to: 1. Install the Watermark Plugin 2. Then choose your " +"settings in this page and Update." +msgstr "" +"Pour faire cela, vous devez : 1. Installer l'extension Watermark 2. Ensuite " +"choisir vos réglages dans cette page puis Mettre à jour." + +#: admin/views/protect-uploads-admin-settings-page.php:85 +msgid "Update" +msgstr "Mettre à jour" + +#: admin/views/protect-uploads-admin-settings-page.php:94 +msgid "Protect Uploads plugin is developped by" +msgstr "L'extension Protect Uploads est développé par" diff --git a/wp-content/plugins/kfzrhzd/languages/protect-uploads-it_IT.mo b/wp-content/plugins/kfzrhzd/languages/protect-uploads-it_IT.mo new file mode 100644 index 0000000000000000000000000000000000000000..d6733970db629c0f4e1d1d24cd4eb9216bf4a75b GIT binary patch literal 5005 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\n" +"Language-Team: Marko97 \n" +"Language: it_IT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.7\n" +"X-Poedit-Basepath: ../\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-KeywordsList: _;__;_e\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: .\n" + +#: admin/class-protect-uploads-admin.php:56 +msgid "Settings" +msgstr "Impostazioni" + +#: admin/class-protect-uploads-admin.php:122 +msgid "Impossible to create or modified the index.php file in " +msgstr "Impossibile creare o modificare il file index.php in" + +#: admin/class-protect-uploads-admin.php:136 +msgid "" +"The index.php file has been created in main folder and subfolders (two " +"levels max)." +msgstr "" +"Il file index.php è stato creato nella cartella principale e nelle sotto " +"cartelle (massimo 2 livelli)" + +#: admin/class-protect-uploads-admin.php:170 +msgid "Impossible to create or modified the htaccess file." +msgstr "Impossibile creare o modificare il file .htaccess" + +#: admin/class-protect-uploads-admin.php:179 +msgid "The htaccess file has been created." +msgstr "Il file .htaccess è stato creato" + +#: admin/class-protect-uploads-admin.php:191 +msgid "Existing htaccess has been updated." +msgstr "Il file .htaccess è stato aggiornato" + +#: admin/class-protect-uploads-admin.php:221 +msgid "The index.php file(s) have(has) been deleted." +msgstr "" +"Il file index.php è stato eliminato / I file index.php sono stati eliminati" + +#: admin/class-protect-uploads-admin.php:250 +msgid "The htaccess file has been updated." +msgstr "Il file .htacess è stato aggiornato" + +#: admin/class-protect-uploads-admin.php:294 +msgid "" +"The Protect Uploads plugin cannot work without Apache. Yourself or your web " +"host has to activate this module." +msgstr "" +"Il plugin Protect Uploads non può funzionare senza Apache. Verifica il tuo " +"webserver e attiva questo modulo." + +#: admin/views/includes/protect-uploads-admin-message.php:7 +msgid "Error code" +msgstr "Codice errore" + +#: admin/views/includes/protect-uploads-admin-message.php:7 +msgid "Go to Protect Uploads documentation" +msgstr "Documentazione di Protect Uploads (in inglese)" + +#: admin/views/protect-uploads-admin-settings-page.php:9 +msgid "by" +msgstr "da" + +#: admin/views/protect-uploads-admin-settings-page.php:10 +msgid "" +"Prevent users to browse your uploads directory. You'll protect your uploads " +"directory to be accessed and content stolen too easily in one batch." +msgstr "" +"Inibisci la possibilità agli utenti di navigare nella directory upload. " +"Questo consente di proteggerti da eventuali furti e impedire l'esecuzione di " +"batch a questo scopo." + +#: admin/views/protect-uploads-admin-settings-page.php:17 +msgid "Status" +msgstr "Stato" + +#: admin/views/protect-uploads-admin-settings-page.php:22 +msgid "Uploads directory is protected." +msgstr "La directory upload è protetta" + +#: admin/views/protect-uploads-admin-settings-page.php:24 +msgid "" +"Your uploads directory is already protected by an htaccess " +"file or an Apache setting set for the whole website. You don't need extra " +"protection.
The «remove option» behind will have no effect on the current " +"protection." +msgstr "" +"La directory upload è già protetta da un file .htaccess o " +"una configurazione Apache. Non necessiti di ulteriore protezione." +"
L'opzione «rimuovi opzione» non avrà effetto sulla protezione attuale." + +#: admin/views/protect-uploads-admin-settings-page.php:27 +msgid "Uploads directory is not protected!" +msgstr "La directory upload non è protetta!" + +#: admin/views/protect-uploads-admin-settings-page.php:34 +#: admin/views/protect-uploads-admin-settings-page.php:39 +msgid "Protection" +msgstr "Protezione" + +#: admin/views/protect-uploads-admin-settings-page.php:44 +msgid "add index file" +msgstr "Aggiungi file index" + +#: admin/views/protect-uploads-admin-settings-page.php:45 +msgid "" +"This will create an index.php file on the root of your uploads directory. " +"This simple trick will hide the content of your whole uploads directory." +msgstr "" +"Questa operazione creerà un file index.php vuoto nella directory upload. " +"Questo è un semplice trucchetto per nascondere il contenuto nella directory." + +#: admin/views/protect-uploads-admin-settings-page.php:50 +msgid "prevent directory listing with htaccess" +msgstr "Inserisci protezione tramite .htaccess" + +#: admin/views/protect-uploads-admin-settings-page.php:51 +msgid "" +"Through the htaccess file, it will prevent people to browse your uploads " +"directory and return a 403 code (Forbidden Access)." +msgstr "" +"Tramite il file .htaccess, questo bloccherà l'accesso alle risorse presenti " +"nella directory mostrando il codice errore 403 (accesso negato)." + +#: admin/views/protect-uploads-admin-settings-page.php:56 +msgid "remove protection or disabled protection" +msgstr "Disattiva protezione" + +#: admin/views/protect-uploads-admin-settings-page.php:57 +msgid "Your uploads directory is not protected." +msgstr "" +"Questa operazione disabiliterà la protezione. Eventuali altre protezioni non " +"verranno disabilitate." + +#: admin/views/protect-uploads-admin-settings-page.php:65 +msgid "Check" +msgstr "Verifica" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "Visit your" +msgstr "Visita" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "uploads directory" +msgstr "la directory upload" + +#: admin/views/protect-uploads-admin-settings-page.php:68 +msgid "to check the current protection" +msgstr "per verificare la protezione attuale" + +#: admin/views/protect-uploads-admin-settings-page.php:73 +msgid "Support" +msgstr "Supporto" + +#: admin/views/protect-uploads-admin-settings-page.php:76 +msgid "" +"Protect Uploads Plugin support page." +msgstr "" +"Vedi la nostra pagina di supporto del plugin. (in inglese)" + +#: admin/views/protect-uploads-admin-settings-page.php:77 +msgid "" +"This plugin is compatible with the Watermark Plugin." +msgstr "" +"Questo plugin è compatibile con Watermark Plugin." + +#: admin/views/protect-uploads-admin-settings-page.php:78 +msgid "" +"To do so, you have to: 1. Install the Watermark Plugin 2. Then choose your " +"settings in this page and Update." +msgstr " " + +#: admin/views/protect-uploads-admin-settings-page.php:85 +msgid "Update" +msgstr "Salva le modifiche" + +#: admin/views/protect-uploads-admin-settings-page.php:94 +msgid "Protect Uploads plugin is developped by" +msgstr "Questo plugin è stato sviluppato da" diff --git a/wp-content/plugins/kfzrhzd/protect-uploads.php b/wp-content/plugins/kfzrhzd/protect-uploads.php new file mode 100644 index 00000000..e765570e --- /dev/null +++ b/wp-content/plugins/kfzrhzd/protect-uploads.php @@ -0,0 +1,44 @@ +run(); + +} + +function deactivate_alti_protect_uploads() { + + require_once plugin_dir_path( __FILE__ ) . 'admin/class-protect-uploads-admin.php'; + require_once plugin_dir_path( __FILE__ ) . 'includes/class-protect-uploads-deactivator.php'; + $deactivation = new Alti_ProtectUploads_Deactivator(); + $deactivation->run(); + +} + +register_activation_hook( __FILE__, 'activate_alti_protect_uploads' ); +register_deactivation_hook( __FILE__, 'deactivate_alti_protect_uploads' ); + +require plugin_dir_path( __FILE__ ) . 'includes/class-protect-uploads.php'; + +$plugin = new Alti_ProtectUploads(); +$plugin->run(); diff --git a/wp-content/plugins/kfzrhzd/readme.txt b/wp-content/plugins/kfzrhzd/readme.txt new file mode 100644 index 00000000..a8bdae9f --- /dev/null +++ b/wp-content/plugins/kfzrhzd/readme.txt @@ -0,0 +1,65 @@ +=== Protect uploads === +Contributors: alticreation +Donate link: https://www.alticreation.com/en/protect-uploads/ +Tags: uploads, protection, images protection, browsing images, uploads folder, image folder, avoid browsing folder, hide uploads, prevent uploads browsing, prevent images browsing, protect library, library +Requires at least: 3.0.1 +Tested up to: 5.4.1 +Requires PHP: 5.0 +Stable tag: 0.3 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +Protect your uploads directory to people who want to browse it. Avoid browsing of your uploads directory by adding a htaccess or index.php file. + +== Description == + +The uploads directory is where the files of the WordPress library are stored. Unfortunelty, this directory is not protected. A person who wants to see all your library could list it instantly going to : http://yourwebsite/wp-content/uploads . This plugin will hide the content by adding an index.php file on the root of your uploads directory or by setting an htaccess which will return a 403 error (Forbidden Access). + +* Depending on your server setting, the htaccess option could be disabled. + +Available languages : + +* English +* Français +* Español +* Italian (thanks to Marko97) + +For support, please visit [protect uploads plugin](https://www.alticreation.com/en/protect-uploads/ "protect uploads plugin for Wordpress by alticreation") + +== Installation == + +1. Upload `protect-uploads` folder to the `/wp-content/plugins/` directory +2. Activate the plugin through the 'Plugins' menu in WordPress + +Note : GD library is needed and being able to create a .htaccess file in uploads directory. + +== Frequently Asked Questions == + += Support = +You can ask question and read documentation at [protect uploads plugin](https://www.alticreation.com/en/protect-uploads/ "protect uploads plugin for Wordpress by alticreation") + +== Screenshots == + +1. Administration Page for the plugin. + +== Upgrade Notice == + +Nothing for now + +== Changelog == + += 0.1 = +* Initial release + += 0.2 = +* Add security check to form in admin page. +* Add sidebar for admin page +* Add Italian translation (thanks to Marko97). +* Try to fix the wrong message saying that Protection is disabled eventhough it is actually working. + += 0.3 = +* Simplify UI admin. +* check presence of index.html. +* Remove option value managing current protection status. +* Reorganizing code and making it more modular and simple. +* Remove useless pieces. diff --git a/wp-content/plugins/kfzrhzd/uninstall.php b/wp-content/plugins/kfzrhzd/uninstall.php new file mode 100644 index 00000000..9ab56abc --- /dev/null +++ b/wp-content/plugins/kfzrhzd/uninstall.php @@ -0,0 +1,44 @@ +