For every implementation of
ClientVerifier, you should create a separate Spring bean. Every such bean should be added to License Server classpath (
<Tomcat version>/webapps/licenseServer/WEB-INF/classes/) and registered as a standard Spring bean using a bean descriptor in an existing application context file or in a new file named
classpath/META-INF/<pluginName>-plugin.xml, such as the following:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="yourCustomPlugin" class="A.B.C.D"/> </beans>
Here's a bean descriptor used to register the sample custom verification plug-in in License Server:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd"> <bean id="baseNameVerifier" class="com.intellij.licenseServer.plugin.nameVerifier.ClientVerifierExample"> <property name="type" value="BLACK_LIST"/> <property name="userNames"> <util:list> <value>user1</value> </util:list> </property> </bean> </beans>
When you start License Server in your web browser for the first time, the Setup Server page opens (fig. 1) where you should complete four mandatory fields:
Every time you open License Server after you have set it up, the Login page displays (fig. 2).
Figure 2. The Login page
After you have successfully logged in, the JetBrains License Server home page displays (fig. 3).
It consists of two tabs, Status and Settings.
The Settings page (fig. 4) contains a number of essential server settings that can be modified when necessary:
Figure 4. JetBrains License Server | Settings
The Status page (see fig. 3) contains a table designed to track ticket allocation statistics server-wide, across all supported products.
You can open a detailed product-specific control panel by clicking the name of the corresponding product (for example, IntelliJ IDEA) in this table.
- License Keys
- Permanent Tickets
- Floating Tickets
The General tab (fig. 5) contains a product-specific statistics table with four rows:
This tab contains the Add Keys From Purchase E-mail link. Click it to open a pop-up window (fig. 6), and paste the entire body of the e-mail message with license keys provided to you by a JetBrains representative.
After you click Add, this window closes and the number of keys that were processed and saved displays in the yellow box at the top of the License Keys tab (fig. 7).
Figure 7. The message that displays after processing and saving license keys
After you have added at least one key, the Keys In System table displays in the License Keys tab (fig. 8).
Figure 8. Product-Specific Control Panel | License Keys | Keys In System
When a client obtains a permanent ticket, its floating ticket is released.
When at least one permanent ticket has been issued, a table displays in the Permanent Tickets tab specifying e-mails to which activation codes were sent, as well as versions of client applications that received permanent tickets (fig. 9).
Figure 9. Product-Specific Control Panel | Permanent Tickets
This tab (fig. 10) contains a table with a list of clients that have received floating tickets, consisting of three columns:
This tab helps you generate reports on the usage of tickets within any time span. To specify the time span, use Start date and End date links. Click Generate to display a report table (fig. 11) with the following columns:
Two user controls are available in this tab (fig.12):
- Ticket Revocation Period (s): every client with a floating ticket must send a prolongation message to the server after a certain period of time has passed. You can specify that period in seconds in this field. If the client does not prolong its ticket within the revocation period (e.g. due to power outage or unexpected crash), the ticket will be revoked by the server and added to the pool of free tickets. The client that held the ticket, will have to re-obtain the new ticket. If the server is offline at the time the client attempts to prolong the ticket, it is up to the client how to handle this situation. All current clients usually tolerate server absence for some time (48 hours). If server is still offline after 48 hours, the client will ask for a license again.
- Enable Permanent Tickets: select this check box to allow receiving requests for permanent tickets from clients. Keep in mind that the Permanent Tickets tab remains hidden unless you select this check box.
Clicking OK saves your settings.
This tab (fig. 13) displays the contents of the log file maintained by License Server. The log file includes all ticket issue/release events along with additional data. Log records are generated with the following format:
Date Time [event severity] Action UserID, ticketID
2007-10-09 16:06:16,274 [INFO] Prolonged ticket for User.Name@unit-059.Int.YourCompany.Com, ticketId=5