gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.gluu.oxtrust.ldap.service.StatusCheckerTimer クラス
org.gluu.oxtrust.ldap.service.StatusCheckerTimer 連携図
Collaboration graph

公開メンバ関数

void create ()
 
void initTimer ()
 
void process (@Observes @Scheduled StatusCheckerTimerEvent statusCheckerTimerEvent)
 

非公開メンバ関数

void processInt ()
 
void setCertificateExpiryAttributes (ApplianceStatus appliance)
 
void setHttpdAttributes (ApplianceStatus appliance)
 
String getHttpdPage (String idpUrl, String httpdTestPageName)
 
void setFactorAttributes (ApplianceStatus appliance)
 
void getFacterBandwidth (String facterResult, ApplianceStatus appliance)
 
void setDfAttributes (ApplianceStatus appliance)
 
boolean isLinux ()
 
String getFacterResult (String[] lines, String param)
 
Number getFacterNumberResult (String[] lines, String param)
 
Number getFacterPercentResult (String[] lines, String paramValue, String paramTotal)
 
Number getNumber (String value)
 
Number getNumber (Number value, Number total)
 
String toIntString (Number number)
 

非公開変数類

Logger log
 
Event< TimerEvent > timerEvent
 
ApplianceService applianceService
 
IGroupService groupService
 
IPersonService personService
 
CentralLdapService centralLdapService
 
ConfigurationFactory configurationFactory
 
AppConfiguration appConfiguration
 
NumberFormat numberFormat
 
AtomicBoolean isActive
 

静的非公開変数類

static final int DEFAULT_INTERVAL = 60
 

詳解

Gather periodically site and server status

著者
Yuriy Movchan Date: 11.22.2010

関数詳解

◆ create()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.create ( )
inline
101  {
102  this.numberFormat = NumberFormat.getNumberInstance(Locale.US);
103  }
NumberFormat numberFormat
Definition: StatusCheckerTimer.java:96

◆ getFacterBandwidth()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getFacterBandwidth ( String  facterResult,
ApplianceStatus  appliance 
)
inlineprivate
319  {
320  log.debug("Setting bandwidth attributes");
321  if (facterResult != null) {
322  String[] lines = facterResult.split("\n");
323  SimpleDateFormat monthFormat = new SimpleDateFormat("MMM ''yy");
324  String month = monthFormat.format(new Date());
325  Pattern curent = Pattern.compile("^\\s*" + month);
326 
327  for (String line : lines) {
328  Matcher match = curent.matcher(line);
329  if (match.find()) {
330  line = line.replaceAll("^\\s*" + month, "");
331  String[] values = line.split("\\|");
332  appliance.setGluuBandwidthRX(values[0].replaceAll("^\\s*", "").replaceAll("\\s*$", ""));
333  appliance.setGluuBandwidthTX(values[1].replaceAll("^\\s*", "").replaceAll("\\s*$", ""));
334  }
335  }
336  } else {
337  appliance.setGluuBandwidthRX("-1");
338  appliance.setGluuBandwidthTX("-1");
339  }
340 
341  }
Logger log
Definition: StatusCheckerTimer.java:73

◆ getFacterNumberResult()

Number org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getFacterNumberResult ( String []  lines,
String  param 
)
inlineprivate
436  {
437  String value = getFacterResult(lines, param);
438  if (value == null) {
439  return null;
440  }
441 
442  return getNumber(value);
443  }
String getFacterResult(String[] lines, String param)
Definition: StatusCheckerTimer.java:399
Number getNumber(String value)
Definition: StatusCheckerTimer.java:452

◆ getFacterPercentResult()

Number org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getFacterPercentResult ( String []  lines,
String  paramValue,
String  paramTotal 
)
inlineprivate
445  {
446  Number value = getFacterNumberResult(lines, paramValue);
447  Number total = getFacterNumberResult(lines, paramTotal);
448 
449  return getNumber(value, total);
450  }
Number getFacterNumberResult(String[] lines, String param)
Definition: StatusCheckerTimer.java:436
Number getNumber(String value)
Definition: StatusCheckerTimer.java:452

◆ getFacterResult()

String org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getFacterResult ( String []  lines,
String  param 
)
inlineprivate
399  {
400  log.debug("Setting facter param: " + param);
401  String paramPattern = param + OxTrustConstants.FACTER_PARAM_VALUE_DIVIDER;
402  boolean valueStarted = false;
403  String value = "";
404  List<String> facterLines = Arrays.asList(lines);
405  Iterator<String> lineIterator = facterLines.iterator();
406  while (lineIterator.hasNext()) {
407  String line = lineIterator.next();
408 
409  if (!valueStarted) { // start searching for the line with param
410  if (line.startsWith(paramPattern)) {
411  valueStarted = true;
412  int index = line.indexOf(OxTrustConstants.FACTER_PARAM_VALUE_DIVIDER);
413  if (index > -1) {
414  value = line.substring(index + OxTrustConstants.FACTER_PARAM_VALUE_DIVIDER.length());
415  }
416  } else {
417  continue;
418  }
419 
420  log.debug(line);
421 
422  } else { //check if there are any additional lines
423  int index = line.indexOf(OxTrustConstants.FACTER_PARAM_VALUE_DIVIDER);
424  if (index == -1) { // this line has no value name, so it must be continuation of the previous value.
425  value += "\n" + line;
426  }else{ // this line has it's own value, so the value we were looking for has ended.
427  valueStarted = false;
428  continue;
429  }
430  }
431  }
432 
433  return value.equals("") ? null : value;
434  }
Logger log
Definition: StatusCheckerTimer.java:73

◆ getHttpdPage()

String org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getHttpdPage ( String  idpUrl,
String  httpdTestPageName 
)
inlineprivate
226  {
227  String[] urlParts = idpUrl.split("://");
228  if ("https".equals(urlParts[0])) {
229  // Create a trust manager that does not validate certificate chains
230  TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
231  public java.security.cert.X509Certificate[] getAcceptedIssuers() {
232  return null;
233  }
234 
235  public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
236  }
237 
238  public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
239  }
240  } };
241 
242  // Install the all-trusting trust manager
243  try {
244  SSLContext sc = SSLContext.getInstance("SSL");
245  sc.init(null, trustAllCerts, new java.security.SecureRandom());
246  HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
247  } catch (Exception e) {
248  }
249  }
250 
251  StringBuilder sb = new StringBuilder();
252  // Now you can access an https URL without having the certificate in the
253  // truststore
254  try {
255  String[] hostAndPort = urlParts[1].split(":");
256  URL url = null;
257  if (hostAndPort.length < 2) {
258  url = new URL(urlParts[0], hostAndPort[0], httpdTestPageName);
259  } else {
260  url = new URL(urlParts[0], hostAndPort[0], Integer.parseInt(hostAndPort[1]), httpdTestPageName);
261  }
262  InputStream in = url.openConnection().getInputStream();
263  BufferedReader reader = new BufferedReader(new InputStreamReader(in));
264  String line = null;
265  while ((line = reader.readLine()) != null) {
266  sb.append(line + "\n");
267  }
268  in.close();
269 
270  } catch (Exception e) {
271  // log.error("Failed to get test page: ", e);
272  }
273  return sb.toString();
274  }

◆ getNumber() [1/2]

Number org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getNumber ( String  value)
inlineprivate
452  {
453  int multiplier = 1;
454  if (value.contains("KB")) {
455  multiplier = 1024;
456  } else if (value.contains("MB")) {
457  multiplier = 1024 * 1024;
458  } else if (value.contains("GB")) {
459  multiplier = 1024 * 1024 * 1024;
460  }
461 
462  try {
463  return multiplier * numberFormat.parse(value).doubleValue();
464  } catch (ParseException ex) {
465  }
466 
467  return null;
468  }
NumberFormat numberFormat
Definition: StatusCheckerTimer.java:96

◆ getNumber() [2/2]

Number org.gluu.oxtrust.ldap.service.StatusCheckerTimer.getNumber ( Number  value,
Number  total 
)
inlineprivate
470  {
471  if ((value == null) || (total == null) || (value.doubleValue() == 0.0d) || (total.doubleValue() == 0.0)) {
472  return null;
473  }
474 
475  return NumberHelper.round(value.doubleValue() / total.doubleValue(), 2) * 100;
476  }

◆ initTimer()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.initTimer ( )
inline
105  {
106  log.info("Initializing Daily Status Cheker Timer");
107  this.isActive = new AtomicBoolean(false);
108 
109  final int delay = 1 * 60;
110  final int interval = DEFAULT_INTERVAL;
111 
112  timerEvent.fire(new TimerEvent(new TimerSchedule(delay, interval), new StatusCheckerTimerEvent(),
113  Scheduled.Literal.INSTANCE));
114  }
static final int DEFAULT_INTERVAL
Definition: StatusCheckerTimer.java:70
Event< TimerEvent > timerEvent
Definition: StatusCheckerTimer.java:76
Logger log
Definition: StatusCheckerTimer.java:73
AtomicBoolean isActive
Definition: StatusCheckerTimer.java:98

◆ isLinux()

boolean org.gluu.oxtrust.ldap.service.StatusCheckerTimer.isLinux ( )
inlineprivate
394  {
395  String osName = System.getProperty("os.name");
396  return !StringHelper.isEmpty(osName) && osName.toLowerCase().contains("linux");
397  }

◆ process()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.process ( @Observes @Scheduled StatusCheckerTimerEvent  statusCheckerTimerEvent)
inline
117  {
118  if (this.isActive.get()) {
119  return;
120  }
121 
122  if (!this.isActive.compareAndSet(false, true)) {
123  return;
124  }
125 
126  try {
127  processInt();
128  } finally {
129  this.isActive.set(false);
130  }
131  }
AtomicBoolean isActive
Definition: StatusCheckerTimer.java:98
void processInt()
Definition: StatusCheckerTimer.java:141

◆ processInt()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.processInt ( )
inlineprivate

Gather periodically site and server status

引数
whenDate
intervalInterval
141  {
142  log.debug("Starting update of appliance status");
144  if (!appConfiguration.isUpdateApplianceStatus()) {
145  return;
146  }
147 
148  ApplianceStatus applianceStatus = new ApplianceStatus();
149 
150  // Execute facter and update appliance attributes
151  setFactorAttributes(applianceStatus);
152 
153  // Execute df and update appliance attributes
154  setDfAttributes(applianceStatus);
155 
156  // Set HTTPD attributes
157  setHttpdAttributes(applianceStatus);
158 
159  try {
160  setCertificateExpiryAttributes(applianceStatus);
161  } catch (Exception ex) {
162  log.error("Failed to check certificate expiration", ex);
163  }
164 
165  GluuAppliance appliance = applianceService.getAppliance();
166  try {
167  // Copy gathered values
168  BeanUtils.copyProperties(appliance, applianceStatus);
169  } catch (Exception ex) {
170  log.error("Failed to copy status attributes", ex);
171  }
172 
173  Date currentDateTime = new Date();
174  appliance.setLastUpdate(currentDateTime);
175 
177 
179  try {
180  GluuAppliance tmpAppliance = new GluuAppliance();
181  tmpAppliance.setDn(appliance.getDn());
182  boolean existAppliance = centralLdapService.containsAppliance(tmpAppliance);
183 
184  if (existAppliance) {
186  } else {
187  centralLdapService.addAppliance(appliance);
188  }
189  } catch (BasePersistenceException ex) {
190  log.error("Failed to update appliance at central server", ex);
191  return;
192  }
193  }
194 
195  log.debug("Appliance status update finished");
196  }
void updateAppliance(GluuAppliance appliance)
Definition: ApplianceService.java:75
GluuAppliance getAppliance(String[] returnAttributes)
Definition: ApplianceService.java:111
void setFactorAttributes(ApplianceStatus appliance)
Definition: StatusCheckerTimer.java:276
void setCertificateExpiryAttributes(ApplianceStatus appliance)
Definition: StatusCheckerTimer.java:198
AppConfiguration appConfiguration
Definition: StatusCheckerTimer.java:94
void setHttpdAttributes(ApplianceStatus appliance)
Definition: StatusCheckerTimer.java:218
ConfigurationFactory configurationFactory
Definition: StatusCheckerTimer.java:91
boolean isUseCentralServer()
Definition: CentralLdapService.java:62
boolean containsAppliance(GluuAppliance appliance)
Definition: CentralLdapService.java:58
Logger log
Definition: StatusCheckerTimer.java:73
CentralLdapService centralLdapService
Definition: StatusCheckerTimer.java:88
void setDfAttributes(ApplianceStatus appliance)
Definition: StatusCheckerTimer.java:343
void addAppliance(GluuAppliance appliance)
Definition: CentralLdapService.java:39
void updateAppliance(GluuAppliance appliance)
Definition: CentralLdapService.java:49
ApplianceService applianceService
Definition: StatusCheckerTimer.java:79
AppConfiguration getAppConfiguration()
Definition: ConfigurationFactory.java:276

◆ setCertificateExpiryAttributes()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.setCertificateExpiryAttributes ( ApplianceStatus  appliance)
inlineprivate
198  {
199  try {
200  URL destinationURL = new URL(appConfiguration.getApplianceUrl());
201  HttpsURLConnection conn = (HttpsURLConnection) destinationURL.openConnection();
202  conn.connect();
203  Certificate[] certs = conn.getServerCertificates();
204  if(certs.length > 0) {
205  if(certs[0] instanceof X509Certificate) {
206  X509Certificate x509Certificate = (X509Certificate) certs[0];
207  Date expirationDate = x509Certificate.getNotAfter();
208  long expiresAfter = TimeUnit.MILLISECONDS.toDays(expirationDate.getTime() - new Date().getTime());
209  appliance.setSslExpiry(toIntString(expiresAfter));
210  }
211  }
212  }
213  catch (IOException e){
214  log.error("Can not download ssl certificate", e);
215  }
216  }
AppConfiguration appConfiguration
Definition: StatusCheckerTimer.java:94
Logger log
Definition: StatusCheckerTimer.java:73
String toIntString(Number number)
Definition: StatusCheckerTimer.java:478

◆ setDfAttributes()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.setDfAttributes ( ApplianceStatus  appliance)
inlineprivate
343  {
344  log.debug("Setting df attributes");
345  // Run df only on linux
346  if (!isLinux()) {
347  return;
348  }
349 
350  String programPath = OxTrustConstants.PROGRAM_DF;
351  CommandLine commandLine = new CommandLine(programPath);
352  commandLine.addArgument("/");
353  commandLine.addArgument("--human-readable");
354 
355  ByteArrayOutputStream bos = new ByteArrayOutputStream(4096);
356  try {
357  boolean result = ProcessHelper.executeProgram(commandLine, false, 0, bos);
358  if (!result) {
359  return;
360  }
361  } finally {
362  IOUtils.closeQuietly(bos);
363  }
364 
365  String resultOutput = null;
366  try {
367  resultOutput = new String(bos.toByteArray(), "UTF-8");
368  } catch (UnsupportedEncodingException ex) {
369  log.error("Failed to parse program {} output", programPath, ex);
370  return;
371  }
372 
373  String[] outputLines = resultOutput.split("\\r?\\n");
374  String[] outputValues = null;
375  if (outputLines.length == 2) {
376  outputValues = outputLines[1].split("\\s+");
377  } else if (outputLines.length == 3) {
378  outputValues = outputLines[2].split("\\s+");
379  }
380 
381  if (outputValues != null) {
382  if (outputValues.length < 6) {
383  return;
384  }
385 
386  Number usedDiskSpace = getNumber(outputValues[4]);
387  Number freeDiskSpace = usedDiskSpace == null ? null : 100 - usedDiskSpace.doubleValue();
388 
389  // Update appliance attributes
390  appliance.setFreeDiskSpace(toIntString(freeDiskSpace));
391  }
392  }
Logger log
Definition: StatusCheckerTimer.java:73
Number getNumber(String value)
Definition: StatusCheckerTimer.java:452
String toIntString(Number number)
Definition: StatusCheckerTimer.java:478
boolean isLinux()
Definition: StatusCheckerTimer.java:394

◆ setFactorAttributes()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.setFactorAttributes ( ApplianceStatus  appliance)
inlineprivate
276  {
277  log.debug("Setting facter attributes");
278  // Run facter only on linux
279  if (!isLinux()) {
280  return;
281  }
282 
283  String programPath = OxTrustConstants.PROGRAM_FACTER;
284 
285  ByteArrayOutputStream bos = new ByteArrayOutputStream(4096);
286  try {
287  boolean result = ProcessHelper.executeProgram(programPath, false, 0, bos);
288  if (!result) {
289  return;
290  }
291  } finally {
292  IOUtils.closeQuietly(bos);
293  }
294 
295  String resultOutput = null;
296  try {
297  resultOutput = new String(bos.toByteArray(), "UTF-8");
298  } catch (UnsupportedEncodingException ex) {
299  log.error("Failed to parse program {} output", programPath, ex);
300  return;
301  }
302 
303  String[] outputLines = resultOutput.split("\\r?\\n");
304 
305  // Update appliance attributes
306  appliance.setFreeMemory(toIntString(getFacterPercentResult(outputLines, OxTrustConstants.FACTER_FREE_MEMORY,
307  OxTrustConstants.FACTER_FREE_MEMORY_TOTAL)));
308  appliance.setFreeSwap(toIntString(getFacterPercentResult(outputLines, OxTrustConstants.FACTER_FREE_SWAP,
309  OxTrustConstants.FACTER_FREE_SWAP_TOTAL)));
310  appliance.setHostname(getFacterResult(outputLines, OxTrustConstants.FACTER_HOST_NAME));
311  appliance.setIpAddress(getFacterResult(outputLines, OxTrustConstants.FACTER_IP_ADDRESS));
312 
313  appliance.setLoadAvg(getFacterResult(outputLines, OxTrustConstants.FACTER_LOAD_AVERAGE));
314 
315  getFacterBandwidth(getFacterResult(outputLines, OxTrustConstants.FACTER_BANDWIDTH_USAGE), appliance);
316  appliance.setSystemUptime(getFacterResult(outputLines, OxTrustConstants.FACTER_SYSTEM_UP_TIME));
317  }
void getFacterBandwidth(String facterResult, ApplianceStatus appliance)
Definition: StatusCheckerTimer.java:319
String getFacterResult(String[] lines, String param)
Definition: StatusCheckerTimer.java:399
Logger log
Definition: StatusCheckerTimer.java:73
String toIntString(Number number)
Definition: StatusCheckerTimer.java:478
Number getFacterPercentResult(String[] lines, String paramValue, String paramTotal)
Definition: StatusCheckerTimer.java:445
boolean isLinux()
Definition: StatusCheckerTimer.java:394

◆ setHttpdAttributes()

void org.gluu.oxtrust.ldap.service.StatusCheckerTimer.setHttpdAttributes ( ApplianceStatus  appliance)
inlineprivate
218  {
219  log.debug("Setting httpd attributes");
221  String page = getHttpdPage(appConfiguration.getIdpUrl(), OxTrustConstants.HTTPD_TEST_PAGE_NAME);
222  appliance.setGluuHttpStatus(Boolean.toString(OxTrustConstants.HTTPD_TEST_PAGE_CONTENT.equals(page)));
223 
224  }
AppConfiguration appConfiguration
Definition: StatusCheckerTimer.java:94
ConfigurationFactory configurationFactory
Definition: StatusCheckerTimer.java:91
Logger log
Definition: StatusCheckerTimer.java:73
String getHttpdPage(String idpUrl, String httpdTestPageName)
Definition: StatusCheckerTimer.java:226
AppConfiguration getAppConfiguration()
Definition: ConfigurationFactory.java:276

◆ toIntString()

String org.gluu.oxtrust.ldap.service.StatusCheckerTimer.toIntString ( Number  number)
inlineprivate
478  {
479  return (number == null) ? null : String.valueOf(number.intValue());
480  }

メンバ詳解

◆ appConfiguration

AppConfiguration org.gluu.oxtrust.ldap.service.StatusCheckerTimer.appConfiguration
private

◆ applianceService

ApplianceService org.gluu.oxtrust.ldap.service.StatusCheckerTimer.applianceService
private

◆ centralLdapService

CentralLdapService org.gluu.oxtrust.ldap.service.StatusCheckerTimer.centralLdapService
private

◆ configurationFactory

ConfigurationFactory org.gluu.oxtrust.ldap.service.StatusCheckerTimer.configurationFactory
private

◆ DEFAULT_INTERVAL

final int org.gluu.oxtrust.ldap.service.StatusCheckerTimer.DEFAULT_INTERVAL = 60
staticprivate

◆ groupService

IGroupService org.gluu.oxtrust.ldap.service.StatusCheckerTimer.groupService
private

◆ isActive

AtomicBoolean org.gluu.oxtrust.ldap.service.StatusCheckerTimer.isActive
private

◆ log

Logger org.gluu.oxtrust.ldap.service.StatusCheckerTimer.log
private

◆ numberFormat

NumberFormat org.gluu.oxtrust.ldap.service.StatusCheckerTimer.numberFormat
private

◆ personService

IPersonService org.gluu.oxtrust.ldap.service.StatusCheckerTimer.personService
private

◆ timerEvent

Event<TimerEvent> org.gluu.oxtrust.ldap.service.StatusCheckerTimer.timerEvent
private

このクラス詳解は次のファイルから抽出されました: