| @@ -2,13 +2,13 @@ | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | class WTSEC_LIBRARY_WT |
| 5 | 5 | { |
| 6 | - const URL = "https://api.wtotem.com/graphql"; | |
| 6 | + const URL = "https://api.wtotem.com/v1/graphql"; | |
| 7 | 7 | |
| 8 | 8 | public static function auth($key) |
| 9 | 9 | { |
| 10 | - $payload = '{"query":"mutation{\n guest{\n apiKeys{\n auth(apiKey:\"' . $key . '\"),{\n token{\n value,refreshToken,expiresIn\n }\n }\n }\n }\n}"}'; | |
| 10 | + $payload = '{"query":"mutation{\n apiServiceMutation{\n auth(apiKey:\"' . $key . '\"){\n value\n refreshToken\n expiresIn\n }\n }\n}\n\n"}'; | |
| 11 | 11 | return self::requestApi($payload); |
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | protected static function requestApi($payload, $token = false, $repeat = false) |
| @@ -19,9 +19,9 @@ | ||
| 19 | 19 | $args = [ |
| 20 | 20 | 'body' => $payload, |
| 21 | 21 | 'timeout' => '15', |
| 22 | 22 | 'sslverify' => false, |
| 23 | - 'headers' => ['Content-Type:application/json', 'Content-Type' => 'application/json', 'source:WORDPRESS', 'Accept: application/json'], | |
| 23 | + 'headers' => ['Content-Type:application/json'], | |
| 24 | 24 | ]; |
| 25 | 25 | if (!is_null($token) && $token) { |
| 26 | 26 | $authorization = "Bearer " . $token; |
| 27 | 27 | $args['headers'] = array_merge($args['headers'], ["Authorization" => $authorization]); |
| @@ -38,10 +38,10 @@ | ||
| 38 | 38 | if (isset($result['errors'][0]['message'])) { |
| 39 | 39 | $message = self::diffMesageForHuman($result['errors'][0]['message']); |
| 40 | 40 | if (stripos($result['errors'][0]['message'], "token") !== false && !$repeat) { |
| 41 | 41 | $result = WTSEC_LIBRARY_WT::auth(wtsec_app()->get("api_key")); |
| 42 | - if (isset($result['data']['guest']['apiKeys']['auth']['token']['value'])) { | |
| 43 | - $token_ = $result['data']['guest']['apiKeys']['auth']['token']['value']; | |
| 42 | + if (isset($result['data']['apiServiceMutation']['auth']['value'])) { | |
| 43 | + $token_ = $result['data']['apiServiceMutation']['auth']['value']; | |
| 44 | 44 | WTSEC_LIBRARY_App::login($token_); |
| 45 | 45 | return self::requestApi($payload, $token, true); |
| 46 | 46 | } else { |
| 47 | 47 | WTSEC_LIBRARY_App::logout(); |
| @@ -95,9 +95,9 @@ | ||
| 95 | 95 | $args = [ |
| 96 | 96 | 'timeout' => '15', |
| 97 | 97 | 'sslverify' => false, |
| 98 | 98 | ]; |
| 99 | - $response = wp_remote_get($url, $args); | |
| 99 | + $response = wp_remote_post($url, $args); | |
| 100 | 100 | $httpcode = wp_remote_retrieve_response_code($response); |
| 101 | 101 | if ($httpcode < 200) { |
| 102 | 102 | WTSEC_LIBRARY_Session::setNotification("error", WTSEC_LIBRARY_Localization::lmsg('could_not_connect_to_the_server')); |
| 103 | 103 | } |
| @@ -104,33 +104,28 @@ | ||
| 104 | 104 | $response = wp_remote_retrieve_body($response); |
| 105 | 105 | return $response; |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | - public static function getOwnSite($attempt = false) | |
| 108 | + public static function getOwnSite() | |
| 109 | 109 | { |
| 110 | - $payload = '{"query":"query getSites { auth { viewer { sites { ...sites __typename } __typename } __typename }}fragment sites on SiteQueries { list(filter: {}) { edges { node { id hostname title ssl { status __typename } availability { status __typename } reputation { status __typename } ports { status __typename } deface { status __typename } domain { status __typename } antivirus { status __typename } firewall { status __typename } maliciousScript { stack { name __typename } __typename } __typename } __typename } __typename } __typename}"}'; | |
| 111 | - | |
| 110 | + $payload = '{"query":"{\n userHostsList{\n id\n hostname\n }\n}"}'; | |
| 112 | 111 | $result = self::requestApi($payload, true); |
| 113 | - if (isset($result['data']['auth']['viewer']['sites']['list']['edges'])) { | |
| 112 | + if (isset($result['data']['userHostsList'])) { | |
| 114 | 113 | //mutator |
| 115 | - foreach ($result['data']['auth']['viewer']['sites']['list']['edges'] as &$m) { | |
| 116 | - if (isset($m['node']['hostname'])) { | |
| 117 | - $m['node']['hostname'] = WTSEC_LIBRARY_Idn::idn_to_utf8($m['node']['hostname']); | |
| 118 | -// if ($m['node']['id'] == "c2l0ZV8yNTg=") { | |
| 119 | -// return $m['node']; | |
| 120 | -// } | |
| 121 | - if (self::isSiteUrl($m['node']['hostname'])) { | |
| 122 | - return $m['node']; | |
| 114 | + foreach ($result['data']['userHostsList'] as &$m) { | |
| 115 | + if (isset($m['hostname'])) { | |
| 116 | + $m['hostname'] = WTSEC_LIBRARY_Idn::idn_to_utf8($m['hostname']); | |
| 117 | + if (self::isSiteUrl($m['hostname'])) { | |
| 118 | + return $result['data']['userHostsList'] = $m; | |
| 119 | + break; | |
| 123 | 120 | } |
| 124 | 121 | } |
| 125 | 122 | } |
| 126 | 123 | $add_site = self::addSite(WTSEC_SITE_URL); |
| 127 | 124 | if (isset($add_site['errors'])) { |
| 128 | - return $result['data']['node'] = []; | |
| 125 | + return $result['data']['userHostsList'] = []; | |
| 129 | 126 | } else { |
| 130 | - if (!$attempt) { | |
| 131 | - return self::getOwnSite(true); | |
| 132 | - } | |
| 127 | + return self::getOwnSite(); | |
| 133 | 128 | } |
| 134 | 129 | } |
| 135 | 130 | return []; |
| 136 | 131 | } |
| @@ -141,9 +136,9 @@ | ||
| 141 | 136 | } |
| 142 | 137 | |
| 143 | 138 | public static function addSite($url) |
| 144 | 139 | { |
| 145 | - $payload = '{"variables":{"input":{"title":"' . $url . '","hostname":"' . $url . '","configs":{"scheme":"http","port":80,"wa":{},"dec":{},"ps":{}}}},"query":"mutation ($input: CreateSiteInput) {\n auth {\n sites {\n create(input: $input) {\n id\n hostname\n title\n __typename\n }\n __typename\n }\n __typename\n }\n}\n"}'; | |
| 140 | + $payload = '{"query":"\n mutation($input: AddUserHostInput!) {\n addUserHost(input: $input) {\n id\n title\n hostname\n tags\n stack\n services {\n id\n name\n configs {\n id\n data\n isActive\n createdAt\n }\n }\n isActive\n createdAt\n }\n }\n ","variables":{"input":{"hostname":"' . $url . '","services":[{"id":1,"configs":[{"scheme":"http","port":80,"check_interval":1,"responsetime_threshold":30,"path":"/","http_errors":[400,401,402,403,404,500,501,502,503],"alert_after":0}]},{"id":2,"configs":[{"check_interval":5,"notify_expiry_day":true,"notify_expiry_month":true,"notify_expiry_week":true,"port":443}]},{"id":4,"configs":[{"check_interval":5,"path":"/","scheme":"http","port":80}]},{"id":5,"configs":[{"check_interval":5,"path":"/","scheme":"http","port":80}]},{"id":6,"configs":[{"check_interval":5,"path":"/","scheme":"http","port":80}]},{"id":7,"configs":[{"check_interval":5,"ports_udp":[18,19,53,27,29,31,71,74],"ports_tcp":[21,22,25,3306,5432,80,443,88,8000,8080]}]},{"id":9,"configs":[{"scheme":"http","port":80,"path":"/"}]},{"id":8,"configs":[{"check_interval":30,"scheme":"http","port":80,"path":"/"}]},{"id":3,"configs":[{"check_interval":60,"notify_expiry_day":true,"notify_expiry_month":true,"notify_expiry_week":true}]},{"id":10,"configs":[{"check_interval":30,"path":"/","scheme":"http","port":80}]}],"title":"' . $url . '"}}}'; | |
| 146 | 141 | return self::requestApi($payload, true); |
| 147 | 142 | } |
| 148 | 143 | |
| 149 | 144 | public static function getAllChecks($host_id) |
| @@ -150,14 +145,10 @@ | ||
| 150 | 145 | { |
| 151 | 146 | $from = time() - (60 * 60 * 24); |
| 152 | 147 | $to = time(); |
| 153 | 148 | $from_waf = time() - (60 * 60 * 24 * 7); |
| 154 | - $payload = '{"query":"query($id: ID!, $dateRange:DateRangeInput!) {\n auth {\n viewer {\n sites {\n one(id: $id) {\n availability {\n status\n lastTest {\n time\n }\n responseTime\n downTime(dateRange: $dateRange)\n percent(dateRange: $dateRange)\n }\n deface {\n status\n lastTest {\n time\n }\n words\n count\n }\n domain {\n status\n registrar\n owner\n email\n createdDate\n expiredDate\n }\n ports {\n status\n lastTest {\n time\n }\n ip\n tcp\n country\n }\n ssl {\n status\n daysLeft\n expiryDate\n issueDate\n }\n reputation {\n status\n lastTest {\n time\n }\n virusList {\n viruses\n antiVirus\n }\n }\n firewall {\n lastTest { \n time\n } \n status\n chart(dateRange: $dateRange) {\n time\n attacks\n blocked\n }\n report(dateRange: $dateRange) {\n time\n attacks\n ip\n }\n }\n maliciousScript{\n lastTest{\n time\n }\n status\n }\n antivirus{\n status \n stats { \n changed\n deleted\n scaned\n infected\n error\n } \n lastTest { \n time\n } \n isFirstCheck\n }\n }\n }\n }\n }\n}","variables":{"id":"' . $host_id . '","dateRange":{"to":' . $to . ',"from":' . $from_waf . '}}}'; | |
| 155 | - $response = self::requestApi($payload, true); | |
| 156 | - if (isset($response['data']['auth']['viewer']['sites']['one'])) { | |
| 157 | - return $response['data']['auth']['viewer']['sites']['one']; | |
| 158 | - } | |
| 159 | - return []; | |
| 149 | + $payload = '{"query":"query getAllChecks( $hostId:Int!, $dateRange: DateRangeInput!, $dateRangeWaf:DateRangeInput! ){\n waServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n isDown\n status\n average(dateRange: $dateRange)\n responseTime(dateRange: $dateRange)\n testsResults(dateRange: $dateRange)\n }\n sslServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n status\n issued\n expires\n daysLeft\n tls\n }\n decServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n email\n daysLeft\n created\n expires\n registrar\n owner\n status\n }\n avServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n lastTestId\n lastTestTime\n status\n count\n list\n }\n cmsServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n lastTestId\n lastTestTime\n status\n count\n list\n }\n dcServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n lastTestTime\n status\n count\n list\n }\n psServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n ip\n lastTestId\n lastTestTime\n status\n count\n openTCPs\n openUDPs\n }\n wafServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n lastTestTime\n status\n count\n countIP \n chart(dateRangeWaf:$dateRangeWaf){\n date\n count\n }\n }\n vcServiceChecks(userHostId:$hostId){\n config{\n id\n isActive\n }\n status\n list\n fileChangesCount\n errorsCount\n signaturesCount\n }\n \n}\n\n\n\n","variables":{"hostId":' . $host_id . ',"dateRange":{"from":' . $from . ',"to":' . $to . '},"dateRangeWaf":{"to":' . $to . ',"from":' . $from_waf . '}}}'; | |
| 150 | + return self::requestApi($payload, true); | |
| 160 | 151 | } |
| 161 | 152 | |
| 162 | 153 | public static function changeStatus($config_id, $host_id) |
| 163 | 154 | { |
| @@ -166,21 +157,21 @@ | ||
| 166 | 157 | } |
| 167 | 158 | |
| 168 | 159 | public static function serviceConnect($id, $service) |
| 169 | 160 | { |
| 170 | - $payload = '{"query":"mutation {\n auth {\n agents{\n check(siteId:\"' . $id . '\",service:' . strtolower($service) . ',plugin:WORDPRESS)\n }\n }\n}\n"}'; | |
| 161 | + $payload = '{"query":"{ checkAgent(userHostId: ' . $id . ', service: ' . strtoupper($service) . ') }"}'; | |
| 171 | 162 | return self::requestApi($payload, true); |
| 172 | 163 | } |
| 173 | 164 | |
| 174 | 165 | public static function generateFile($id, $service) |
| 175 | 166 | { |
| 176 | - $payload = '{"query":"mutation {\n auth {\n agents{\n generate(siteId:\"' . $id . '\",service:' . strtolower($service) . '){\n agentName\n }\n }\n }\n}\n"}'; | |
| 167 | + $payload = '{"query":"{ generateAgent(userHostId: ' . $id . ', service: ' . strtoupper($service) . ') }"}'; | |
| 177 | 168 | return self::requestApi($payload, true); |
| 178 | 169 | } |
| 179 | 170 | |
| 180 | 171 | public static function checkStatus($id, $service) |
| 181 | 172 | { |
| 182 | - $payload = '{"operationName":null,"variables":{"id":"' . $id . '"},"query":"query ($id: ID!) {\n auth {\n viewer {\n sites {\n one(id: $id) {\n ... on Site {\n configs {\n ... on ' . $service . 'Config {\n isActive\n id\n }\n }\n }\n }\n }\n }\n }\n}\n"}'; | |
| 173 | + $payload = '{"query":"{\n ' . strtolower($service) . 'ServiceChecks(userHostId:' . $id . '){\n status\n config{\n isActive\n id\n }\n }\n}"}'; | |
| 183 | 174 | return self::requestApi($payload, true); |
| 184 | 175 | } |
| 185 | 176 | |
| 186 | 177 | public static function getOptions($host_id) |
| @@ -190,97 +181,251 @@ | ||
| 190 | 181 | } |
| 191 | 182 | |
| 192 | 183 | public static function getAntivirus($host_id) |
| 193 | 184 | { |
| 194 | - $from = time() - (60 * 60 * 24); | |
| 195 | - $to = time(); | |
| 196 | - $from_waf = time() - (60 * 60 * 24 * 7); | |
| 197 | - $payload = '{"operationName":null,"variables":{"id":"' . $host_id . '","avLogFilter":{"event":"infected","order":{"direction":"DESC","field":"time"},"pagination":{"first":10,"cursor":null},"dateRange":{"to":' . $to . ',"from":' . $from_waf . '}}},"query":"query ($id: ID!, $avLogFilter: AvLogFilter!) {\n auth {\n viewer {\n sites {\n one(id: $id) {\n id\n ... on Site {\n configs {\n ... on AvConfig {\n isActive\n id\n }\n }\n }\n antivirus {\n status\n log(avLogFilter: $avLogFilter) {\n edges {\n node {\n filePath\n matches\n event\n signatures\n time\n }\n }\n }\n lastTest {\n time\n }\n stats {\n changed\n deleted\n scaned\n infected\n }\n }\n }\n }\n }\n }\n}\n"}'; | |
| 185 | + $payload = '{"query":"query{\n vcServiceChecks(userHostId:' . $host_id . '){\n config{\n id,\n isActive\n }\n status\n list\n fileChangesCount\n errorsCount\n signaturesCount\n }\n}\n\n"}'; | |
| 198 | 186 | return self::requestApi($payload, true); |
| 199 | 187 | } |
| 200 | 188 | |
| 201 | - public static function getStatusIcon($status) | |
| 189 | + public static function getStatusIcon($status, $service) | |
| 202 | 190 | { |
| 203 | - $statuses = [ | |
| 204 | - "clean" => [ | |
| 205 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.ok'), | |
| 206 | - "color" => self::getColor("success") | |
| 207 | - ], | |
| 208 | - "pending" => [ | |
| 209 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.pending'), | |
| 210 | - "color" => self::getColor("grey") | |
| 211 | - ], | |
| 212 | - "expired" => [ | |
| 213 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.expired'), | |
| 214 | - "color" => self::getColor("orange") | |
| 215 | - | |
| 216 | - ], | |
| 217 | - "invalid" => [ | |
| 218 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.invalid'), | |
| 219 | - "color" => self::getColor("error") | |
| 220 | - ], | |
| 221 | - "no_cert" => [ | |
| 222 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.no_cert'), | |
| 223 | - "color" => self::getColor("orange") | |
| 224 | - ], | |
| 225 | - "error" => [ | |
| 226 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.error'), | |
| 227 | - "color" => self::getColor("error") | |
| 228 | - ], | |
| 229 | - "expires" => [ | |
| 230 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.expires'), | |
| 231 | - "color" => self::getColor("orange") | |
| 232 | - ], | |
| 233 | - "expires_today" => [ | |
| 234 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.expires_today'), | |
| 235 | - "color" => self::getColor("error") | |
| 236 | - ], | |
| 237 | - "down" => [ | |
| 238 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.down'), | |
| 239 | - "color" => self::getColor("error") | |
| 240 | - ], | |
| 241 | - "up" => [ | |
| 242 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.up'), | |
| 243 | - "color" => self::getColor("success") | |
| 244 | - ], | |
| 245 | - "infected" => [ | |
| 246 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.infected'), | |
| 247 | - "color" => self::getColor("error") | |
| 248 | - ], | |
| 249 | - "open_ports" => [ | |
| 250 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.open'), | |
| 251 | - "color" => self::getColor("orange") | |
| 252 | - ], | |
| 253 | - "deface" => [ | |
| 254 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.deface'), | |
| 255 | - "color" => self::getColor("error") | |
| 256 | - ], | |
| 257 | - "modified" => [ | |
| 258 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.modified'), | |
| 259 | - "color" => self::getColor("grey") | |
| 260 | - ], | |
| 261 | - "not_supported" => [ | |
| 262 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.unsupported'), | |
| 263 | - "color" => self::getColor("orange") | |
| 264 | - ], | |
| 265 | - "not_registered" => [ | |
| 266 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.not_registered'), | |
| 267 | - "color" => self::getColor("orange") | |
| 268 | - ], | |
| 269 | - "not_installed" => [ | |
| 270 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.not_installed'), | |
| 271 | - "color" => self::getColor("error") | |
| 272 | - ], | |
| 273 | - "working" => [ | |
| 274 | - "text" => WTSEC_LIBRARY_Localization::lmsg('statuses.working'), | |
| 275 | - "color" => self::getColor("success") | |
| 276 | - ], | |
| 277 | - ]; | |
| 278 | - if (isset($statuses[$status])) { | |
| 279 | - return ["icon" => $statuses[$status]["color"]["icon"], "color" => $statuses[$status]["color"]["color"], "text" => "<span class='" . $statuses[$status]["color"]["color"] . "'>" . $statuses[$status]["text"] . "</span>"]; | |
| 280 | - } else { | |
| 281 | - return ["icon" => "ww-icon--status_unknow", "color" => "ww--status_unknow", "text" => "<span class='ww--status_unknow'>Unknown status</span>"]; | |
| 191 | + $color = ''; | |
| 192 | + $definition = ''; | |
| 193 | + switch ($service) { | |
| 194 | + case 'wa': | |
| 195 | + switch ((string)$status) { | |
| 196 | + case '-1': | |
| 197 | + $color = self::getColor("error"); | |
| 198 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 199 | + break; | |
| 200 | + case '-200': | |
| 201 | + $color = self::getColor("grey"); | |
| 202 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 203 | + break; | |
| 204 | + case '0': | |
| 205 | + $color = self::getColor("success"); | |
| 206 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 207 | + break; | |
| 208 | + case '1': | |
| 209 | + $color = self::getColor("error"); | |
| 210 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.unavailable'); | |
| 211 | + break; | |
| 212 | + } | |
| 213 | + break; | |
| 214 | + case 'ssl': | |
| 215 | + switch ((string)$status) { | |
| 216 | + case '-1': | |
| 217 | + $color = self::getColor("grey"); | |
| 218 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 219 | + break; | |
| 220 | + case '-200': | |
| 221 | + $color = self::getColor("grey"); | |
| 222 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 223 | + break; | |
| 224 | + case '0': | |
| 225 | + $color = self::getColor("green"); | |
| 226 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 227 | + break; | |
| 228 | + case '1': | |
| 229 | + $color = self::getColor("red"); | |
| 230 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.invalid'); | |
| 231 | + break; | |
| 232 | + case '2': | |
| 233 | + $color = self::getColor("red"); | |
| 234 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.expired'); | |
| 235 | + break; | |
| 236 | + case '3': | |
| 237 | + $color = self::getColor("orange"); | |
| 238 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.expires'); | |
| 239 | + break; | |
| 240 | + case '4': | |
| 241 | + $color = self::getColor("red"); | |
| 242 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.expires_today'); | |
| 243 | + break; | |
| 244 | + } | |
| 245 | + break; | |
| 246 | + case 'dec': | |
| 247 | + switch ((string)$status) { | |
| 248 | + case '-3': | |
| 249 | + $color = self::getColor("grey"); | |
| 250 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.not_registered'); | |
| 251 | + break; | |
| 252 | + case '-2': | |
| 253 | + $color = self::getColor("grey"); | |
| 254 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.unsupported'); | |
| 255 | + break; | |
| 256 | + case '-1': | |
| 257 | + $color = self::getColor("grey"); | |
| 258 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 259 | + break; | |
| 260 | + case '-200': | |
| 261 | + $color = self::getColor("grey"); | |
| 262 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 263 | + break; | |
| 264 | + case '0': | |
| 265 | + $color = self::getColor("green"); | |
| 266 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 267 | + break; | |
| 268 | + case '1': | |
| 269 | + $color = self::getColor("orange"); | |
| 270 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.expires'); | |
| 271 | + break; | |
| 272 | + case '2': | |
| 273 | + $color = self::getColor("orange"); | |
| 274 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.expired'); | |
| 275 | + break; | |
| 276 | + case '3': | |
| 277 | + $color = self::getColor("red"); | |
| 278 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.expires_today'); | |
| 279 | + break; | |
| 280 | + } | |
| 281 | + break; | |
| 282 | + case 'av': | |
| 283 | + switch ((string)$status) { | |
| 284 | + case '-1': | |
| 285 | + $color = self::getColor("grey"); | |
| 286 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 287 | + break; | |
| 288 | + case '-200': | |
| 289 | + $color = self::getColor("grey"); | |
| 290 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 291 | + break; | |
| 292 | + case '0': | |
| 293 | + $color = self::getColor("green"); | |
| 294 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 295 | + break; | |
| 296 | + case '1': | |
| 297 | + $color = self::getColor("red"); | |
| 298 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.blacklisted'); | |
| 299 | + break; | |
| 300 | + } | |
| 301 | + break; | |
| 302 | + case 'cms': | |
| 303 | + switch ((string)$status) { | |
| 304 | + case '-1': | |
| 305 | + $color = self::getColor("grey"); | |
| 306 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 307 | + break; | |
| 308 | + case '-200': | |
| 309 | + $color = self::getColor("grey"); | |
| 310 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 311 | + break; | |
| 312 | + case '0': | |
| 313 | + $color = self::getColor("green"); | |
| 314 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 315 | + break; | |
| 316 | + case '1': | |
| 317 | + $color = self::getColor("red"); | |
| 318 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.miner_detected'); | |
| 319 | + break; | |
| 320 | + } | |
| 321 | + break; | |
| 322 | + case 'dc': | |
| 323 | + switch ((string)$status) { | |
| 324 | + case '-1': | |
| 325 | + $color = self::getColor("grey"); | |
| 326 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 327 | + break; | |
| 328 | + case '-200': | |
| 329 | + $color = self::getColor("grey"); | |
| 330 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 331 | + break; | |
| 332 | + case '0': | |
| 333 | + $color = self::getColor("green"); | |
| 334 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 335 | + break; | |
| 336 | + case '1': | |
| 337 | + $color = self::getColor("red"); | |
| 338 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.deface'); | |
| 339 | + break; | |
| 340 | + case '2': | |
| 341 | + $color = self::getColor("orange"); | |
| 342 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.modified'); | |
| 343 | + break; | |
| 344 | + } | |
| 345 | + break; | |
| 346 | + case 'ps': | |
| 347 | + switch ((string)$status) { | |
| 348 | + case '-1': | |
| 349 | + $color = self::getColor("grey"); | |
| 350 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 351 | + break; | |
| 352 | + case '-200': | |
| 353 | + $color = self::getColor("grey"); | |
| 354 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 355 | + break; | |
| 356 | + case '0': | |
| 357 | + $color = self::getColor("green"); | |
| 358 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 359 | + break; | |
| 360 | + case '1': | |
| 361 | + $color = self::getColor("orange"); | |
| 362 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.open'); | |
| 363 | + break; | |
| 364 | + } | |
| 365 | + break; | |
| 366 | + case 'waf': | |
| 367 | + switch ((string)$status) { | |
| 368 | + case '-400': | |
| 369 | + $color = self::getColor("red"); | |
| 370 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.blocked'); | |
| 371 | + break; | |
| 372 | + case '-300': | |
| 373 | + $color = self::getColor("orange"); | |
| 374 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.not_installed'); | |
| 375 | + break; | |
| 376 | + case '-1': | |
| 377 | + $color = self::getColor("grey"); | |
| 378 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 379 | + break; | |
| 380 | + case '-200': | |
| 381 | + $color = self::getColor("grey"); | |
| 382 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 383 | + break; | |
| 384 | + case '0': | |
| 385 | + $color = self::getColor("green"); | |
| 386 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 387 | + break; | |
| 388 | + case '1': | |
| 389 | + $color = self::getColor("red"); | |
| 390 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.attacks_detected'); | |
| 391 | + break; | |
| 392 | + } | |
| 393 | + break; | |
| 394 | + case 'vc': | |
| 395 | + switch ((string)$status) { | |
| 396 | + case '-400': | |
| 397 | + $color = self::getColor("red"); | |
| 398 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.blocked'); | |
| 399 | + break; | |
| 400 | + case '-300': | |
| 401 | + $color = self::getColor("orange"); | |
| 402 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.not_installed'); | |
| 403 | + break; | |
| 404 | + case '-1': | |
| 405 | + $color = self::getColor("grey"); | |
| 406 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.error'); | |
| 407 | + break; | |
| 408 | + case '-200': | |
| 409 | + $color = self::getColor("grey"); | |
| 410 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.pending'); | |
| 411 | + break; | |
| 412 | + case '0': | |
| 413 | + $color = self::getColor("green"); | |
| 414 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.ok'); | |
| 415 | + break; | |
| 416 | + case '1': | |
| 417 | + $color = self::getColor("orange"); | |
| 418 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.file_changes'); | |
| 419 | + break; | |
| 420 | + case '2': | |
| 421 | + $color = self::getColor("red"); | |
| 422 | + $definition = WTSEC_LIBRARY_Localization::lmsg('statuses.signature_found'); | |
| 423 | + break; | |
| 424 | + } | |
| 425 | + break; | |
| 282 | 426 | } |
| 427 | + return ["icon" => $color["icon"], "color" => $color["color"], "text" => "<span class='" . $color["color"] . "'>" . $definition . "</span>"]; | |
| 283 | 428 | } |
| 284 | 429 | |
| 285 | 430 | public static function getColor($type) |
| 286 | 431 | { |
| @@ -289,9 +434,8 @@ | ||
| 289 | 434 | "red" => "is--status--error", |
| 290 | 435 | "success" => "is--status--ok", |
| 291 | 436 | "error" => "is--status--error", |
| 292 | 437 | "orange" => "is--status--warning", |
| 293 | - "warning" => "is--status--warning", | |
| 294 | 438 | "grey" => "ww--status_unknow" |
| 295 | 439 | ]; |
| 296 | 440 | $icon_types = [ |
| 297 | 441 | "green" => "ww-icon--status_ok", |
| @@ -298,25 +442,10 @@ | ||
| 298 | 442 | "red" => "ww-icon--status_error", |
| 299 | 443 | "success" => "ww-icon--status_ok", |
| 300 | 444 | "error" => "ww-icon--status_error", |
| 301 | 445 | "orange" => "ww-icon--status_warning", |
| 302 | - "warning" => "ww-icon--status_warning", | |
| 303 | 446 | "grey" => "ww-icon--status_unknow" |
| 304 | 447 | ]; |
| 305 | 448 | return ["icon" => $icon_types[$type], "color" => $types[$type]]; |
| 306 | - } | |
| 307 | - | |
| 308 | - public static function getConfigId($configs) | |
| 309 | - { | |
| 310 | - $id = 0; | |
| 311 | - $is_active = false; | |
| 312 | - foreach ($configs as &$config) { | |
| 313 | - if (!empty($config)) { | |
| 314 | - $id = $config['id']; | |
| 315 | - $is_active = $config['isActive']; | |
| 316 | - break; | |
| 317 | - } | |
| 318 | - } | |
| 319 | - return compact('id', 'is_active'); | |
| 320 | 449 | } |
| 321 | 450 | |
| 322 | 451 | } |