PluginProbe
WebTotem Security / 2.3.24
WebTotem Security v2.3.24
3.0.2 3.0.1 3.0.0 trunk 1.0 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 2.0 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.1 2.2.2 2.2.3 All 110 releases
← All changes | services.php +112 -9 2.1.62.3.24 View file →
@@ -43,12 +43,15 @@
43 43 if (!$wp_filesystem->put_contents($target_file, $file['file'])) {
44 44 WTSEC_LIBRARY_Session::setNotification("warning", WTSEC_LIBRARY_Localization::lmsg('could_not_install_file', ['service' => $service, 'directory' => $target_dir]));
45 45 } else {
46 46 wtsec_app()->set($_service . '_installed_file', $file['name']);
47 + if ($service === "AM") {
48 + wtsec_addCheckFile($file['name']);
49 + }
47 50 }
48 51 }
49 52 if ($service !== "AM") {
50 - wtsec_serviceConnect($uid, $service, $domain . '/' . $file['name']);
53 + //wtsec_serviceConnect($uid, $service, $domain . '/' . $file['name']);
51 54 }
52 55 } catch (Exception $e) {
53 56 WTSEC_LIBRARY_Session::setNotification("error", $e->getMessage());
54 57 return false;
@@ -64,9 +67,9 @@
64 67 break;
65 68 case $_service . "_connect":
66 69 $file = wtsec_getInstalledFile($_service);
67 70 if ($file) {
68 - wtsec_serviceConnect($uid, $service, $domain . '/' . $file);
71 + //wtsec_serviceConnect($uid, $service, $domain . '/' . $file);
69 72 } else {
70 73 WTSEC_LIBRARY_Session::setNotification("warning", WTSEC_LIBRARY_Localization::lmsg('file_not_found', ['service' => $service]));
71 74 }
72 75 break;
@@ -94,8 +97,32 @@
94 97 }
95 98 return true;
96 99 }
97 100
101 +// Add check file if plugin is activated
102 +function wtsec_addCheckFile($name){
103 + global $wp_filesystem;
104 +
105 + if (empty($wp_filesystem)) {
106 + require_once(ABSPATH . '/wp-admin/includes/file.php');
107 + WP_Filesystem();
108 + }
109 +
110 + //retry checking
111 + if (empty($wp_filesystem)) {
112 + WTSEC_LIBRARY_Session::setNotification("error", "WP FileSystem path error");
113 + return false;
114 + }
115 +
116 + $target_dir = $wp_filesystem->find_folder(WTSEC_PLUGIN_PATH);
117 + $target_file = trailingslashit($target_dir) . 'generate.php';
118 +
119 + if ($wp_filesystem->put_contents($target_file, '<?php exit(); ?>'.$name, FS_CHMOD_FILE)) {
120 + return true;
121 + }
122 + return false;
123 +}
124 +
98 125 function wtsec_checkStatus($id, $service)
99 126 {
100 127 $service = ucfirst(strtolower($service));
101 128 $is_active = null;
@@ -108,11 +135,9 @@
108 135 $config_id = $cfg['id'];
109 136 }
110 137 }
111 138
112 - if ($is_active === false) {
113 - wtsec_app()->set($service . '_connected_' . $id, true);
114 - }
139 +
115 140 return ['active' => $is_active, 'config_id' => $config_id];
116 141 }
117 142
118 143 function wtsec_generateFile($id, $service)
@@ -121,12 +146,21 @@
121 146 $result = WTSEC_LIBRARY_WT::generateAmFile($id);
122 147 if (!isset($result['data']['auth']['am']['install'])) {
123 148 $file = ['filename' => null, "body" => null];
124 149 } else {
125 - $url = $result['data']['auth']['am']['install'];
126 - $file = WTSEC_LIBRARY_WT::getFileByUrl($url);
150 + $result = $result['data']['auth']['am']['install'];
151 +
152 + $url = $result['downloadLink'];
153 + $amFilename = $result['amFilename'];
154 + $wafFilename = $result['wafFilename'];
155 +
156 + if($wafFilename){
157 + wtsec_app()->set('waf_installed_file', $wafFilename);
158 + }
159 +
160 + $file = WTSEC_LIBRARY_WT::getFileByUrl($url, $amFilename);
127 161 if (empty($file)) {
128 - $file = WTSEC_LIBRARY_WT::getFileByUrl($url);
162 + $file = WTSEC_LIBRARY_WT::getFileByUrl($url, $amFilename);
129 163 }
130 164 }
131 165
132 166 $name = $file["filename"];
@@ -174,8 +208,68 @@
174 208 return false;
175 209 }
176 210 }
177 211
212 +
213 +function wtsec_AVLogsData($logs){
214 + foreach ($logs as $key => $log){
215 + $log = $log['node'];
216 + $log['filePath'] = urldecode($log['filePath']);
217 + $log['text'] = (strlen($log['filePath']) > 40) ? substr($log['filePath'],0,40).'...' : $log['filePath'];
218 + $log['time'] = convertToCurrentTime($log['time']);
219 + $log['class_path'] = '';
220 + $log['class_info'] = '';
221 +
222 + if ($log['event'] === 'modified') {
223 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.info.normal");
224 + $log['class_path'] = "wtotem_file-table__td_changed";
225 + $log['class_info'] = "wtotem_file-table__td_normal";
226 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.changed");
227 + } elseif ($log['event'] === 'quarantine') {
228 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.info.backdoor_virus");
229 + $log['class_path'] = "wtotem_file-table__td_changed";
230 + $log['class_info'] = "wtotem_file-table__td_normal";
231 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.quarantine");
232 + } elseif ($log['event'] === 'infected') {
233 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.info.backdoor_virus");
234 + $log['class_path'] = "wtotem_file-table__td_critical";
235 + $log['class_info'] = "wtotem_file-table__td_critical";
236 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.infected");
237 + } elseif ($log['event'] === 'deleted') {
238 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.info.deleted");
239 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.deleted");
240 + }elseif ($log['event'] === 'new'){
241 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.info.normal");
242 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.new");
243 + }elseif ($log['event'] === 'scanned'){
244 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.info.normal");
245 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.scanned");
246 + }else{
247 + $log['info'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.error");
248 + $log['description'] = WTSEC_LIBRARY_Localization::lmsg("antivirus.status.error");
249 + }
250 +
251 + $logs[$key]['node'] = $log;
252 + }
253 + return $logs;
254 +}
255 +
256 +function wtsec_getConfigs($host_id)
257 +{
258 + $config = WTSEC_LIBRARY_WT::getConfigs($host_id);
259 + return wtsec_arrayIndex($config['data']['auth']['viewer']['sites']['one']['configs'], 'service');
260 +}
261 +
262 +function wtsec_arrayIndex($array, $key){
263 + $newArray = [];
264 + foreach ($array as $item){
265 + if(array_key_exists($key,$item)){
266 + $newArray[$item[$key]] = $item;
267 + }
268 + }
269 + return $newArray;
270 +}
271 +
178 272 function wtsec_button($label = '', $class = '')
179 273 {
180 274 return '<button class="ww-button ' . $class . '">' . $label . '</button>';
181 275 }
@@ -246,5 +340,14 @@
246 340
247 341 function wtsec_getInstalledFile($service)
248 342 {
249 343 return wtsec_app()->get($service . "_installed_file");
250 -}
344 +}
345 +
346 +function wtsec_DeleteAm(){
347 + $host = WTSEC_LIBRARY_WT::getOwnSite();
348 + if(!empty($host)) {
349 + WTSEC_LIBRARY_WT::deleteAm($host['id']);
350 + return true;
351 + }
352 + return false;
353 +}