PluginProbe ʕ •ᴥ•ʔ
Download Manager / 3.3.68
Download Manager v3.3.68
3.3.68 3.3.67 3.3.66 3.3.65 3.3.64 3.3.63 3.3.62 3.3.61 3.3.60 3.3.59 3.3.58 3.3.57 3.3.56 trunk 2.1.3 2.3.0 2.5.96 2.5.97 2.6.2 2.6.96 2.8.3 2.9.99 3.0.4 3.1.05 3.1.07 3.1.08 3.1.11 3.1.12 3.1.14 3.1.17 3.1.18 3.1.22 3.1.23 3.1.24 3.1.25 3.1.26 3.1.27 3.1.28 3.2.04 3.2.13 3.2.14 3.2.16 3.2.18 3.2.19 3.2.21 3.2.22 3.2.23 3.2.24 3.2.25 3.2.27 3.2.28 3.2.29 3.2.30 3.2.31 3.2.32 3.2.33 3.2.34 3.2.35 3.2.37 3.2.38 3.2.39 3.2.40 3.2.41 3.2.42 3.2.43 3.2.44 3.2.45 3.2.46 3.2.47 3.2.48 3.2.49 3.2.50 3.2.51 3.2.52 3.2.53 3.2.54 3.2.55 3.2.56 3.2.57 3.2.58 3.2.59 3.2.60 3.2.61 3.2.63 3.2.64 3.2.65 3.2.66 3.2.67 3.2.68 3.2.69 3.2.70 3.2.71 3.2.72 3.2.73 3.2.74 3.2.75 3.2.76 3.2.77 3.2.78 3.2.79 3.2.80 3.2.81 3.2.82 3.2.83 3.2.84 3.2.85 3.2.86 3.2.87 3.2.88 3.2.89 3.2.90 3.2.91 3.2.92 3.2.93 3.2.94 3.2.95 3.2.96 3.2.97 3.2.98 3.2.99 3.3.00 3.3.01 3.3.02 3.3.03 3.3.04 3.3.05 3.3.06 3.3.07 3.3.08 3.3.09 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.15 3.3.16 3.3.17 3.3.18 3.3.19 3.3.20 3.3.21 3.3.22 3.3.23 3.3.24 3.3.25 3.3.26 3.3.27 3.3.28 3.3.29 3.3.30 3.3.31 3.3.32 3.3.33 3.3.34 3.3.35 3.3.36 3.3.37 3.3.38 3.3.39 3.3.40 3.3.41 3.3.42 3.3.43 3.3.44 3.3.45 3.3.46 3.3.47 3.3.48 3.3.49 3.3.50 3.3.51 3.3.52 3.3.53 3.3.54 3.3.55
download-manager / src / Package / PackageLocks.php
download-manager / src / Package Last commit date
views 1 month ago FileList.php 5 years ago Hooks.php 3 years ago Package.php 1 year ago PackageController.php 1 month ago PackageLocks.php 2 weeks ago PackageTemplate.php 5 years ago RestAPI.php 1 month ago Shortcodes.php 1 month ago
PackageLocks.php
109 lines
1 <?php
2
3 namespace WPDM\Package;
4
5 global $gp1c, $tbc;
6
7
8 use WPDM\__\__;
9 use WPDM\__\Crypt;
10 use WPDM\__\Session;
11 use WPDM\__\Template;
12
13
14 class PackageLocks
15 {
16
17 public function __construct(){
18
19 }
20
21 public static function askPassword($package){
22 ob_start();
23 $unqid = uniqid();
24 $field_id = $unqid.'_'.$package['ID'];
25 include Template::locate("lock-options/password-lock.php", __DIR__.'/views');
26 $data = ob_get_clean();
27 return $data;
28 }
29
30 public static function reCaptchaLock($package, $buttononly = false){
31 ob_start();
32 $force = str_replace("=", "", base64_encode("unlocked|" . date("Ymdh")));
33 include Template::locate("lock-options/recaptcha-lock.php", __DIR__.'/views');
34 return ob_get_clean();
35 }
36
37 function validateCaptcha()
38 {
39 $limit = get_option('__wpdm_private_link_usage_limit', 3);
40 $xpire_period = ((int)get_option('__wpdm_private_link_expiration_period', 3)) * ((int)get_option('__wpdm_private_link_expiration_period_unit', 60));
41 $xpire_period = $xpire_period > 0 ? $xpire_period : 3600;
42 $ret = wpdm_recaptcha_enterprise_verify(wpdm_query_var('reCaptchaVerify'), 'DOWNLOAD');
43 if ($ret['success']) {
44 $download_url = WPDM()->package->expirableDownloadLink(wpdm_query_var('__wpdm_ID', 'int'), $limit, $xpire_period);
45 $data['downloadurl'] = $download_url;
46 } else {
47 $data['error'] = __("Captcha Verification Failed!", "wpmdpro");
48 }
49
50 wp_send_json($data);
51 die();
52 }
53
54 function validatePassword()
55 {
56 $password = isset($_REQUEST['password']) ? sanitize_text_field($_REQUEST['password']) : null;
57 $packageID = wpdm_query_var('__wpdm_ID', ['validate' => 'int']);
58 $passwords = WPDM()->package->isPasswordProtected($packageID);
59 $passwordUsage = maybe_unserialize(get_post_meta($packageID, '__wpdm_password_usage', true));
60 $passwordUsageLimit = (int)get_post_meta($packageID, 'password_usage_limit', true);
61
62 if(!$password || !$packageID) wp_send_json(['msg' => __("Invalid request!", "download-manager"), 'success' => false]);
63
64 $limit = (int)get_option('__wpdm_private_link_usage_limit', 3);
65 if($limit < 1) $limit = 3;
66 $expirePeriod = ((int)get_option('__wpdm_private_link_expiration_period', 60)) * ((int)get_option('__wpdm_private_link_expiration_period_unit', 60));
67 $expirePeriod = $expirePeriod > 0 ? $expirePeriod : 3600;
68
69 $data = [ 'success' => false ];
70 $error = false;
71
72 //Check if given password lock is not active
73 if (!$passwords) {
74 $data['message'] = __("Invalid request!", "download-manager");
75 $file = array();
76 $error = true;
77 wp_send_json($data);
78 }
79
80 //Check if the given password is matched
81 //Use strict, timing-safe comparison to avoid PHP type-juggling bypass (e.g. numeric password "123" matched by "1.23e2")
82 if ($passwords && !hash_equals((string) $passwords, (string) $password) && substr_count($passwords, "[$password]") < 1) {
83 $data['message'] = __("Wrong Password!", "download-manager") . " &nbsp; <span><i class='fas fa-redo'></i> " . __("Try Again", "download-manager") . " </span>";
84 $error = true;
85 }
86
87 //Check if given password is empty
88 if ($passwords && $password == '') {
89 $data['message'] = __("Wrong Password!", "download-manager") . " &nbsp; <span class='color-blue'><i class='fas fa-redo'></i> " . __("Try Again", "download-manager") . " </span>";
90 $file = array();
91 $error = true;
92 }
93
94 $passwordUsed = wpdm_valueof($passwordUsage, $password, ['validate' => 'int']);
95 if( $passwordUsageLimit > 0 && $passwordUsed >= $passwordUsageLimit)
96 $data['message'] = __("Password usages limit exceeded", "download-manager");
97 else if(!$error){
98 if(!is_array($passwordUsage)) $passwordUsage = [];
99 Session::set("pass_verified_" . $packageID, 1);
100 $passwordUsage[$password] = wpdm_valueof($passwordUsage, $password, ['validate' => 'int']) + 1;
101 update_post_meta($packageID, '__wpdm_password_usage', $passwordUsage);
102 $data = ['success' => true, 'downloadurl' => WPDM()->package->expirableDownloadLink($packageID, $limit, $expirePeriod)];
103 }
104 wp_send_json($data);
105 }
106
107
108 }
109