gluu
公開メンバ関数 | 非公開メンバ関数 | 静的非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.xdi.oxd.server.license.LicenseService クラス
org.xdi.oxd.server.license.LicenseService 連携図
Collaboration graph

公開メンバ関数

 LicenseService (OxdServerConfiguration conf, HttpService httpService, TimeService timeService)
 
void start ()
 
LicenseMetadata getMetadata ()
 
boolean isLicenseValid ()
 
void notifyClientUsed (final Rp rp, final boolean isClientLocal)
 

非公開メンバ関数

void validateConfiguration ()
 
boolean validateLicense ()
 
void schedulePeriodicValidation (int initialDelayInHours)
 
boolean shouldNotifyAboutClientUsage (Rp rp)
 
void notifyClientUsedImpl (Rp rp, boolean isClientLocal)
 

静的非公開メンバ関数

static AppMetadata appMetadata (String programmingLanguage, String serverName)
 

非公開変数類

final OxdServerConfiguration conf
 
final LicenseFileUpdateService updateService
 
final TimeService timeService
 
final HttpService httpService
 
volatile LicenseMetadata metadata = null
 
volatile boolean licenseValid = false
 
final Cache< String, RpclientUpdateCache
 

静的非公開変数類

static final Logger LOG = LoggerFactory.getLogger(LicenseService.class)
 

詳解

著者
Yuriy Zabrovarnyy
バージョン
0.9, 12/10/2014

構築子と解体子

◆ LicenseService()

org.xdi.oxd.server.license.LicenseService.LicenseService ( OxdServerConfiguration  conf,
HttpService  httpService,
TimeService  timeService 
)
inline
60  {
61  this.conf = conf;
62  this.timeService = timeService;
63  this.updateService = new LicenseFileUpdateService(conf, httpService);
64  this.httpService = httpService;
65  }
final OxdServerConfiguration conf
Definition: LicenseService.java:46
final HttpService httpService
Definition: LicenseService.java:49
final TimeService timeService
Definition: LicenseService.java:48
final LicenseFileUpdateService updateService
Definition: LicenseService.java:47

関数詳解

◆ appMetadata()

static AppMetadata org.xdi.oxd.server.license.LicenseService.appMetadata ( String  programmingLanguage,
String  serverName 
)
inlinestaticprivate
207  {
208  AppMetadata appMetadata = new AppMetadata();
209  appMetadata.setAppName("oxd");
210  appMetadata.setAppVersion(ConfigurationService.APP_VERSION);
211  appMetadata.setProgrammingLanguage(programmingLanguage);
212 
213  Properties buildProperties = ServerLauncher.buildProperties();
214  if (buildProperties != null) {
215  for (String key : buildProperties.stringPropertyNames()) {
216  appMetadata.getData().put(key, buildProperties.getProperty(key));
217  }
218  }
219  appMetadata.getData().put("server_name", serverName);
220 
221  return appMetadata;
222  }
static AppMetadata appMetadata(String programmingLanguage, String serverName)
Definition: LicenseService.java:207

◆ getMetadata()

LicenseMetadata org.xdi.oxd.server.license.LicenseService.getMetadata ( )
inline
105  {
106  return metadata;
107  }
volatile LicenseMetadata metadata
Definition: LicenseService.java:51

◆ isLicenseValid()

boolean org.xdi.oxd.server.license.LicenseService.isLicenseValid ( )
inline
109  {
111  }
final LicenseFileUpdateService updateService
Definition: LicenseService.java:47
volatile boolean licenseValid
Definition: LicenseService.java:52
boolean isRetryLimitExceeded()
Definition: LicenseFileUpdateService.java:122

◆ notifyClientUsed()

void org.xdi.oxd.server.license.LicenseService.notifyClientUsed ( final Rp  rp,
final boolean  isClientLocal 
)
inline
164  {
165  CoreUtils.createExecutor().execute(new Runnable() {
166  @Override
167  public void run() {
169  notifyClientUsedImpl(rp, isClientLocal);
170  }
171  }
172  });
173  }
boolean shouldNotifyAboutClientUsage(Rp rp)
Definition: LicenseService.java:175
void notifyClientUsedImpl(Rp rp, boolean isClientLocal)
Definition: LicenseService.java:184

◆ notifyClientUsedImpl()

void org.xdi.oxd.server.license.LicenseService.notifyClientUsedImpl ( Rp  rp,
boolean  isClientLocal 
)
inlineprivate
184  {
185  try {
186  String licenseId = conf.getLicenseId();
187  String clientId = rp.getClientId();
188  String oxdId = rp.getOxdId();
189  String clientName = rp.getClientName();
190  String macAddress = MacAddressProvider.macAddress();
191 
192  StatisticUpdateRequest request = StatisticUpdateRequest.clientUpdate(
193  licenseId, clientId, oxdId, clientName, macAddress, isClientLocal);
194  request.setAppMetadata(appMetadata(rp.getOxdRpProgrammingLanguage(), conf.getServerName()));
195  LOG.trace("Updating statistic ... , request: " + request);
196  Response response = LicenseClient.statisticWs(LicenseFileUpdateService.LICENSE_SERVER_ENDPOINT, httpService.getClientExecutor()).update(request);
197  if (response.getStatus() == 200) {
198  LOG.trace("Updated statistic. oxdId: " + oxdId + ", response: " + response);
199  } else {
200  throw new RuntimeException("Failed to update statistic, rp: " + rp);
201  }
202  } catch (Exception e) {
203  LOG.error("Failed to update statistic. Message: " + e.getMessage(), e);
204  }
205  }
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
static final Logger LOG
Definition: LicenseService.java:44
final OxdServerConfiguration conf
Definition: LicenseService.java:46
final HttpService httpService
Definition: LicenseService.java:49
static AppMetadata appMetadata(String programmingLanguage, String serverName)
Definition: LicenseService.java:207
String getServerName()
Definition: OxdServerConfiguration.java:110
String getLicenseId()
Definition: OxdServerConfiguration.java:174

◆ schedulePeriodicValidation()

void org.xdi.oxd.server.license.LicenseService.schedulePeriodicValidation ( int  initialDelayInHours)
inlineprivate
154  {
155  final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(CoreUtils.daemonThreadFactory());
156  executorService.scheduleAtFixedRate(new Runnable() {
157  @Override
158  public void run() {
160  }
161  }, initialDelayInHours, 24, TimeUnit.HOURS);
162  }
boolean validateLicense()
Definition: LicenseService.java:113
volatile boolean licenseValid
Definition: LicenseService.java:52

◆ shouldNotifyAboutClientUsage()

boolean org.xdi.oxd.server.license.LicenseService.shouldNotifyAboutClientUsage ( Rp  rp)
inlineprivate
175  {
176  boolean hasInCache = clientUpdateCache.getIfPresent(rp.getClientId()) != null;
177  if (hasInCache) {
178  return false; // skip update, client was updated already
179  }
180  clientUpdateCache.put(rp.getClientId(), rp);
181  return true;
182  }
final Cache< String, Rp > clientUpdateCache
Definition: LicenseService.java:54

◆ start()

void org.xdi.oxd.server.license.LicenseService.start ( )
inline
67  {
69 
70  Optional<LicenseFile> licenseFile = LicenseFile.load();
71 
72  // before license update, check existing license and make sure autoupdate=true, otherwise skip update
73  if (validateLicense() && metadata != null && metadata.getAutoupdate() != null &&
74  !metadata.getAutoupdate()) {
75  licenseValid = true;
76  schedulePeriodicValidation(Utils.hoursDiff(new Date(), metadata.getExpirationDate()));
77  return; // skip update procedure, autoupdate=false !
78  }
79 
80  this.updateService.start(licenseFile);
81 
83  if (licenseValid) {
85  } else {
86  ServerLauncher.shutdownDueToInvalidLicense();
87  }
88  }
volatile LicenseMetadata metadata
Definition: LicenseService.java:51
void start(Optional< LicenseFile > licenseFile)
Definition: LicenseFileUpdateService.java:51
void schedulePeriodicValidation(int initialDelayInHours)
Definition: LicenseService.java:154
boolean validateLicense()
Definition: LicenseService.java:113
final LicenseFileUpdateService updateService
Definition: LicenseService.java:47
volatile boolean licenseValid
Definition: LicenseService.java:52
void validateConfiguration()
Definition: LicenseService.java:90

◆ validateConfiguration()

void org.xdi.oxd.server.license.LicenseService.validateConfiguration ( )
inlineprivate
90  {
91  if (Strings.isNullOrEmpty(conf.getLicenseId())) {
92  LOG.error("Unable to validate license. license_id is not set in oxd configuration.");
93  ServerLauncher.shutdown();
94  }
95  if (Strings.isNullOrEmpty(conf.getPublicKey())) {
96  LOG.error("Unable to validate license. public_key is not set in oxd configuration.");
97  ServerLauncher.shutdown();
98  }
99  if (Strings.isNullOrEmpty(conf.getPublicPassword())) {
100  LOG.error("Unable to validate license. public_password is not set in oxd configuration.");
101  ServerLauncher.shutdown();
102  }
103  }
static final Logger LOG
Definition: LicenseService.java:44
final OxdServerConfiguration conf
Definition: LicenseService.java:46
String getPublicPassword()
Definition: OxdServerConfiguration.java:194
String getPublicKey()
Definition: OxdServerConfiguration.java:186
String getLicenseId()
Definition: OxdServerConfiguration.java:174

◆ validateLicense()

boolean org.xdi.oxd.server.license.LicenseService.validateLicense ( )
inlineprivate
113  {
114  try {
115  LOG.trace("Validating license ...");
116 
117  metadata = null;
118  licenseValid = false;
119 
120  Optional<LicenseFile> licenseFile = LicenseFile.load();
121  if (!licenseFile.isPresent() || Strings.isNullOrEmpty(licenseFile.get().getEncodedLicense())) {
122  LOG.error("Failed to load license file : " + LicenseFile.getLicenseFile().getAbsolutePath());
123  return false;
124  }
125 
126  if (StringUtils.isBlank(licenseFile.get().getLicenseId()) || !licenseFile.get().getLicenseId().equals(conf.getLicenseId())) {
127  LOG.info(String.format("Deleting license file ... license id in file (%s) does not match license id from oxd-conf.json (%s)", licenseFile.get().getLicenseId(), conf.getLicenseId()));
128  LicenseFile.deleteContent();
130  licenseFile = LicenseFile.load();
131  }
132 
133  LicenseContent licenseContent = LicenseValidator.validate(
134  conf.getPublicKey(),
137  licenseFile.get().getEncodedLicense(),
138  Product.OXD,
140  );
141 
142  metadata = licenseContent.getMetadata();
143  licenseValid = true;
144 
145  LOG.trace("License is validated successfully.");
146  LOG.trace("License data: " + metadata);
147  return true;
148  } catch (Exception e) {
149  LOG.error(e.getMessage(), e);
150  }
151  return false;
152  }
volatile LicenseMetadata metadata
Definition: LicenseService.java:51
static final Logger LOG
Definition: LicenseService.java:44
final OxdServerConfiguration conf
Definition: LicenseService.java:46
final TimeService timeService
Definition: LicenseService.java:48
String getLicensePassword()
Definition: OxdServerConfiguration.java:178
Date getCurrentLicenseServerTime()
Definition: TimeService.java:31
String getPublicPassword()
Definition: OxdServerConfiguration.java:194
void updateLicenseFromServer()
Definition: LicenseFileUpdateService.java:76
String getPublicKey()
Definition: OxdServerConfiguration.java:186
final LicenseFileUpdateService updateService
Definition: LicenseService.java:47
volatile boolean licenseValid
Definition: LicenseService.java:52
String getLicenseId()
Definition: OxdServerConfiguration.java:174

メンバ詳解

◆ clientUpdateCache

final Cache<String, Rp> org.xdi.oxd.server.license.LicenseService.clientUpdateCache
private
初期値:
= CacheBuilder.newBuilder()
.maximumSize(100000)
.expireAfterWrite(24, TimeUnit.HOURS)
.build()

◆ conf

final OxdServerConfiguration org.xdi.oxd.server.license.LicenseService.conf
private

◆ httpService

final HttpService org.xdi.oxd.server.license.LicenseService.httpService
private

◆ licenseValid

volatile boolean org.xdi.oxd.server.license.LicenseService.licenseValid = false
private

◆ LOG

final Logger org.xdi.oxd.server.license.LicenseService.LOG = LoggerFactory.getLogger(LicenseService.class)
staticprivate

◆ metadata

volatile LicenseMetadata org.xdi.oxd.server.license.LicenseService.metadata = null
private

◆ timeService

final TimeService org.xdi.oxd.server.license.LicenseService.timeService
private

◆ updateService

final LicenseFileUpdateService org.xdi.oxd.server.license.LicenseService.updateService
private

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