· 5 years ago · Mar 04, 2020, 10:12 PM
1<?php
2/**
3*
4* @ This file is created by http://DeZender.Net
5* @ deZender (PHP7 Decoder for ionCube Encoder)
6*
7* @ Version : 4.0.9.0
8* @ Author : DeZender
9* @ Release on : 08.08.2019
10* @ Official site : http://DeZender.Net
11*
12*/
13
14namespace Mofsy\License\Client;
15
16class Protect
17{
18 public $status = false;
19 public $errors = false;
20 public $activation_key = '';
21 public $activation_key_expires;
22 /**
23 * Секретный локальный ключ
24 *
25 * @var string
26 */
27 public $secret_key = '784dyaretqw777';
28 /**
29 * Полный адрес сервера, для проверки лицензии и выпуска новой.
30 *
31 * @var string
32 */
33 public $server = '';
34 /**
35 * Удаленный порт сервера лицензий
36 *
37 * @var integer
38 */
39 public $remote_port = 80;
40 /**
41 * Период ожидания ответа от сервера лицензий
42 *
43 * @var integer
44 */
45 public $remote_timeout = 20;
46 /**
47 * User-agent клиента, который
48 * посылается вместе с запросом на сервер лицензий
49 *
50 * @var string
51 */
52 public $local_ua = 'PHP code protect';
53 /**
54 * Маркер использования на локальной системе с Windows без активации
55 *
56 * @var boolean
57 */
58 public $use_localhost = true;
59 /**
60 * Разрешить использовать текущую версию скрипта после истечении срока лицензии
61 *
62 * NOTE: Если истина, то лицензия будет продолжать работать, даже после истечения срока действия ключа активации.
63 * Лицензия будет работать, только на старых релизах скрипта, на новой версии активация уже будет не действительна.
64 *
65 * @var boolean
66 */
67 public $use_expires = true;
68 /**
69 * Маркер режима хранения ключа
70 *
71 * filesystem - хранить в файле
72 * TODO: добавить хранение ключа в базе данных и т.д.
73 *
74 * @var string
75 */
76 public $local_key_storage = 'filesystem';
77 /**
78 * Полный путь до локального файла с временной лицензией
79 *
80 * @var string
81 */
82 public $local_key_path = './';
83 /**
84 * Название файла с временной лицензией
85 *
86 * @var string
87 */
88 public $local_key_name = 'license.lic';
89 /**
90 * Сортировка методов запроса к серверу лицензий.
91 *
92 * Доступны:
93 * s - на сокетах
94 * c - на cURL
95 * f - на file_get_contents
96 *
97 * @var string
98 */
99 public $local_key_transport_order = 'scf';
100 /**
101 * Период после истечения времени действия локального ключа, после которого лицензия дополнительно дейтвует по
102 * времени.
103 *
104 * @var integer
105 */
106 public $local_key_delay_period = 7;
107 /**
108 * Новый локальный ключ
109 *
110 * @var integer
111 */
112 public $local_key_last;
113 /**
114 * Дата релиза скрипта в формате ISO 8601 (YYYY-MM-DD)
115 *
116 * @var string
117 */
118 public $release_date = '2019-03-01';
119 /**
120 * Имя (логин, например на сайте автора) на кого выдана лицензия
121 *
122 * @var string
123 */
124 public $user_name = '';
125 /**
126 * Локализация статусов лицензии и других сообщений
127 *
128 * @var array
129 */
130 public $status_messages = ['status_1' => 'This activation key is active.', 'status_2' => 'Error: This activation key has expired.', 'status_3' => 'Activation key republished. Awaiting reactivation.', 'status_4' => 'Error: This activation key has been suspended.', 'localhost' => 'This activation key is active (localhost).', 'pending' => 'Error: This activation key is pending review.', 'download_access_expired' => 'Error: This version of the software was released after your download access expired. Please downgrade software or contact support for more information.', 'missing_activation_key' => 'Error: The activation key variable is empty.', 'could_not_obtain_local_key' => 'Error: I could not obtain a new local key.', 'maximum_delay_period_expired' => 'Error: The maximum local key delay period has expired.', 'local_key_tampering' => 'Error: The local key has been tampered with or is invalid.', 'local_key_invalid_for_location' => 'Error: The local key is invalid for this location.', 'missing_license_file' => 'Error: Please create the following file (and directories if they dont exist already): ', 'license_file_not_writable' => 'Error: Please make the following path writable: ', 'invalid_local_key_storage' => 'Error: I could not determine the local key storage on clear.', 'could_not_save_local_key' => 'Error: I could not save the local key.', 'activation_key_string_mismatch' => 'Error: The local key is invalid for this activation key.'];
131 /**
132 * Маркер не удачного получения нового локального ключа с сервера
133 */
134 private $trigger_delay_period;
135
136 /**
137 * Конструктор класса
138 */
139 public function __construct()
140 {
141 }
142
143 /**
144 * Валидация
145 *
146 * @return string
147 */
148 public function validate()
149 {
150 if ($this->use_localhost && $this->getIpLocal() && $this->isWindows() && !file_exists($this->local_key_path . $this->local_key_name)) {
151 $this->status = true;
152 return $this->errors = $this->status_messages['localhost'];
153 }
154
155 if (!$this->activation_key) {
156 return $this->errors = $this->status_messages['missing_activation_key'];
157 }
158
159 switch ($this->local_key_storage) {
160 case 'filesystem':
161 $local_key = $this->readLocalKey();
162.........................................................................
163...............................................
164...............