Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

 

The complete licensing documentation can be found in the Charon Licensing Handbook. Please refer to this documentation for any topics not covered in this overview guide and for more detailed information on the topics discussed here.

This page provides an overview of the basic steps to set up the licensing environment on a system running Charon-PAR for Linux:



General Description

Error rendering macro 'excerpt-include' : No link could be created for 'Emulator Requirements and Behavior'.

Error rendering macro 'excerpt-include' : No link could be created for 'Operational Procedures Overview'.

The license check on Charon-PAR will be successful for a newer license if the major version is the same.



License Type Overview

Depending on customer requirements, Stromasys can provide several different license types.

Local Hardware License

Error rendering macro 'excerpt-include' : No link could be created for 'Sentinel HASP License Types'.

Software License

Error rendering macro 'excerpt-include' : No link could be created for 'Sentinel HASP License Types'.



Network License

Error rendering macro 'excerpt-include' : No link could be created for 'Sentinel HASP License Types'.


Overview of Initial License Installation Steps

Each Charon emulator product requires a valid license to run. To access the license, the emulator needs the Sentinel runtime software. This software is part of the Charon-PAR for Linux installation kits. Refer to the software installation section of the Charon product user's guide for software installation instructions.

After the installation of this software, the license can be installed on the system. The following steps will be described in more detail below:

  1. Add a password for the Sentinel Admin Control Center (ACC).
  2. If you purchased a hardware license, you can simply plug the dongle into a free USB port on the system.
  3. If you purchased a software license, you need to create a fingerprint file in C2V (customer-to-vendor) format containing the system characteristics. Use this file to request a license for your Charon product from Stromasys.
  4. If your license is a network license served by a license server, make sure that the access of the client system to the license server is not blocked by the configuration or a firewall.
  5. Optionally, define how multiple licenses will be used (selecting primary/backup license, defining license priorities).
  6. If you have an existing license that needs to be updated, you need to create a customer-to-vendor (C2V) file and use this file to request a license update from Stromasys.

Overview of License Management Tools

The following list shows the main tools used to manage licenses on Linux:

  • Sentinel Admin Control Center (ACC): A web-based interface providing important configuration options with respect to licenses.
  • The hasp_srm_view program: A command-line tool to display the detailed license contents and generate C2V and fingerprint files. Cannot be used over a remote connection when using local hardware licenses.
  • The hasp_update program: A command-line tool to install new and update existing licenses.

Accessing the License Management Tools

The command-line tools are installed under /opt/charon/bin/. If this directory is not part of your PATH variable, you have to specify the full path to access the command.

To run the commands, use the following syntax for hasp_srm_view and hasp_update respectively.

/opt/charon/bin/hasp_srm_view <option>

and

/opt/charon/bin/hasp_update <option>

The relevant options will be specified with the tasks described below, as needed.

The Sentinel ACC on the local system is accessed by starting a web-browser and pointing it to the URL: http://localhost:1947.



Sentinel Admin Control Center (ACC) Security Settings

Please note: Stromasys strongly recommends performing the steps described below to reduce the risk of unauthorized access to the Sentinel ACC.

Define a Password for the Sentinel ACC


By default, anyone on the local system with access to port 1947 can access the GUI. If remote access is enabled, users on the network with access to port 1947 can also access the GUI. To protect access to the GUI with a password, perform the following steps:

Step

Description

1

Open a web browser and navigate to http://localhost:1947/.

2

Click on the left-hand menu item labeled Configuration.

3

Click on the Basic Settings tab.

4Under the entry labeled Password Protection, click the Change Password button.
5

At the Change Password window:

  • Leave the Current Admin Password field blank (there is no password set by default).
  • Enter the desired password into the New Admin Password field.
  • Repeat the desired password in the Re-enter new Admin Password field.
  • Click the Submit button.
6

Back at the Basic Settings tab:

  • Under the section labeled Password Protection, select the All ACC Pages radio button.
  • Click the Submit button to save this change.
7

Optional: to allow remote access to the Sentinel HASP GUI:

  • Click the Basic Settings tab.
  • Select the Allow Remote Access to ACC check box.
  • Click the Submit button.

Additional information for remote access to the Sentinel HASP GUI:

  • The firewall must permit access to port 1947/TCP, and
  • network visibility on the ACC network configuration tab must be set to All Network Adapters.

If required, remote access can also be enabled on Linux by editing the file /etc/hasplm/hasplm.ini 
and setting the parameter ACCremote to 1. Should the file not yet exist, refer to
How-to enable remote connection to Sentinel Admin Control Center without GUI, or to the Sentinel ACC Selected Configuration File Parameters chapter in the Tools Reference section of the licensing handbook. 
The parameter to enable network visibility is bind_local_only. It must be set to to enable all adapters. Changed settings are recognized automatically by aksusbd.



Set Linux File Protections

To prevent unprivileged access and modifications to the Sentinel HASP configuration file on Linux, enter the following commands:

# chmod 0700 /etc/hasplm
# chmod 0600 /etc/hasplm/*

The file hasplm.ini on Windows is readable by normal users but cannot be modified. Password information is encrypted.

View Existing Licenses

It is important to know which licenses are visible on a system. For example, the user can

  • determine if the correct license is installed,
  • identify the expiration date on time-based licenses,
  • identify the remaining hours of run-time on backup licenses,
  • identify the license ID of primary and backup license which are needed for the emulator configuration file,
  • identify licenses that conflict with the currently used product and therefore may need to be removed.

Licenses can be viewed using two tools:

  • Sentinel ACC: shows important information, but not the product specific license parameters.
  • Command-line tool hasp_srm_view: shows all product details contained on the license. Can only be run from a local connection for local hardware licenses.

Viewing a License with Sentinel ACC

To view available licenses using Sentinel ACC, start the web interface by pointing a web-browser to the URL http://localhost:1947. 

Please note: starting with Charon-PAR 1.10 a new Sentinel ACC version (>= 7.60) has been included in the product. The functionality is very similar but the appearance is somewhat different. 

To get to the Sentinel Keys screen, click on the corresponding menu item or access the URL http://localhost:1947/_int_/devices.html directly. A screen similar to the following opens and displays the available license keys:

For Sentinel drivers version 7.60 and above, this screen looks similar to the following:

This page displays important information about the available licenses, including

  • Location: Shows whether the license is local or remote. If the license is a network license, the hostname of the remote system is specified. You can access the remote license manager by clicking on the hostname, provided that access is permitted.
  • Key ID: The unique identification of the license.
  • Key Type: Hardware keys are marked by the abbreviation HL (hardware license) and a picture of the license dongle. Software licenses are marked by the abbreviation SL (software license). 
  • Sessions: Shows the number of active sessions opened for the specific key.

The buttons on the right-hand side can be used to retrieve more information about the license or to extract the C2V file for a license update. The Browse button shown for network licenses will connect to the remote license manager to show the license features.

A C2V file can only be extracted if the license in question is local to the current license manager, i.e., the license manager to which the web browser is connected. You can connect to a remote license manager by clicking on the hostname in the Location column (if connections are allowed).


Please note:

  • The option to create a C2V file is not available in older versions of the license software.
  • Starting with ACC version 7.60, the option to create C2V files for USB dongles is only available if it has been enabled in the basic configuration section (under the Configuration menu item).
  • Newer versions of ACC also offer the option to create a fingerprint for a new SW license.
  • Some newer versions of ACC show the option on this screen to create a DEMOMA fingerprint. This is a demo key for development purposes and not relevant for Charon products.
  • Some newer versions of ACC offer to create a fingerprint for a software license if such a license does not exist yet. Do not use this option. The resulting file has a format that is incompatible with the Stromasys license creation tools. Instead use the tools described in Generating C2V and Fingerprint Files.

The menu options ProductsFeatures and Sessions on the left-hand side provide the same information as the buttons. However, they show the information for all licenses.

Viewing a License with hasp_srm_view

On Linux, the license content is displayed using the hasp_srm_view command. For displaying the license, the following parameters are relevant:

  • Display the default license: run the command without options or with -l
  • Display all licenses: run the command with the option -all
  • Display a license with a specific ID: run the command with the option -key

Displaying the license content when connected via the network:

Local hardware licenses can only be displayed from a local connection to the system, for example via the console. If you are connected via a remote connection, for example via ssh, the hasp_srm_view command will return an error. Network licenses (network-enabled dongles and software licenses) do not have this problem.

Workaround when logged in via a remote connection:

When connected to the system via a remote connection, the command to display a local hardware license will return an error. As a workaround, you can display the license contents with the following command (adapt the path of the command if your installation location is different):
$ ssh localhost /opt/charon/bin/hasp_srm_view


Please note
: starting with Charon-AXP/VAX 4.9 and Charon-PAR 1.10, the hasp_srm_view utility on Linux does not follow the settings in the Sentinel ACC with respect to querying remote license servers and network visibility. The utility performs a broadcast search for network licenses even if this has been disabled in the Sentinel ACC. If this behavior has to be prevented for specific reasons, the network access of the system must be temporarily restricted or disabled, for example by blocking the relevant traffic with a firewall. Alternatively, access to the network license at the license server side can be blocked. Note that such methods can negatively impact other functions of the system or, in case of blocking access to a network license on the server, even the functions on other client host systems.

Please note: in rare cases, you may have received an empty dongle without a license section. The hasp_srm_view command will show that no license information was detected. In such cases, please refer to the steps on how to request a license update for a USB dongle.


The following shows sample output of the hasp_srm_view command on Linux (to display all available licenses, use the -all parameter):

$ hasp_srm_view
Trying to connect to the key: 527889790
License Manager running at host: host1
License Manager IP address: 127.0.0.1


The Physical KeyId: 527889790
License type: License Dongle (Local)
CHARON Sentinel HASP License key section
Reading 4032 bytes

The License Number: 1000.826
The License KeyId: 527889790
The Master KeyId: 1645066348
Release date: 15-MAR-2021
Release time: 11:58:42
Update number: 20
End User name: Stromasys
Purchasing Customer name: Stromasys

Virtual Hardware: AlphaServer_DS10, AlphaServer_DS10L, AlphaServer_DS15, AlphaServer_DS20, AlphaServer_DS25, AlphaServer_ES40, AlphaServer_ES45, AlphaServer_GS80, AlphaServer_GS160, AlphaServer_GS320, AlphaServer_400, AlphaServer_800, AlphaServer_1000, AlphaServer_1000A, AlphaServer_1200, AlphaServer_2000, AlphaServer_2100, AlphaServer_4000, AlphaServer_4100
Product Name: CHARON-AXP
Product Code: CHAXP-470xx-WI-LI
Major Version: 4
Minor Version: 12
32bit and 64bit OS requirements: 64bit
Host Operating System required: WINDOWS, LINUX
CPU's allowed: 32
Maximum virtual memory: 262144MB
License expiration date: 25-Nov-2021
Instances allowed: 10
Feature number: 1
Check interval: 60 minutes

<output truncated>


Starting with license driver versions >= 7.60, for example, in Charon-AXP/VAX version 4.9 and Charon-PAR version 1.11, there are some small changes in the output of hasp_srm_view. The parameters are described in the License Content section of the Licensing Handbook. The following sample shows the most important changes (in blue):

License Manager running at host: Host1

License Manager IP address: 192.168.1.111

HASP Net key detected

The Physical KeyId: 1015925129

License type: License Dongle (Network capable)

CHARON Sentinel HASP License key section

Reading 4032 bytes

The License Number: 000.TEST.CENTER

The License KeyId: 1015925129

The Master KeyId: 827774524

Release date: 11-APR-2018

Release time: 16:52:33

Update number: 68

End User name: STROMASYS

Purchasing Customer name: STROMASYS

Product License Number: AXP_4_9_TEST

Virtual Hardware: AlphaServer_DS10, AlphaServer_DS10L, AlphaServer_DS15, <items removed>

Product Name: CHARON-AXP

Product Code: CHAXP-490xx-LI

Major Version: 4

Minor Version: 9

< Parameters Maximum Build and Minimum Build are no longer shown>

32bit and 64bit OS requirements: 64bit <replaces parameter Host CPU supported>

Host Operating System required: LINUX

CPU's allowed: 16

Maximum virtual memory: 65536MB

CHAPI enabled

License expiration date: 01-Nov-2018

Instances allowed: 3

Feature number: 1

Check interval: 15 minutes



Install the License

This section provides a short overview of the initial license installation. For more in-depth information, please refer to the licensing handbook.

Please note: if a conflicting or obsolete license is visible to the system, it can be (temporarily) removed or disabled. If you need to remove a hardware license, simply unplug it. If you need to remove a software license or disable access to a network license, please refer to the relevant chapter in the licensing handbook. Before removing a license or disabling access to it ensure that it is not required by another currently active product.

Installing a Local Hardware License

A local hardware license (USB dongle) is installed by inserting the USB license key into a free USB port of the host system after the Sentinel runtime software has been installed

After this step, verify that the license is visible to the system by following the steps for viewing a license as described above. Please bear in mind that a local hardware license cannot be read when connected to the system via a remote connection (for example, ssh).

Installing a Software License

To install a new software license, perform the following steps:

Step 1:  Create a fingerprint file using the hasp_srm_view command:

Execute the following command to create the fingerprint file:

/opt/charon/bin/hasp_srm_view -fgp <filename.c2v>

The fingerprint will be written to the filename specified.

Please note:

  • Charon-PAR before 1.10: the above command will terminate with the error message "Can not retrieve the C2V (host fingerprint mode) data" or with "Can not retrieve the C2V (host fingerprint mode) data"  if a remote network license is visible to the system. Access to such a license needs to be temporarily disabled before creating the fingerprint file. Please refer to section Tasks Specific to Network Licenses and section Removing a License for details.
  • Charon-PAR versions 1.10 and higher can create a fingerprint file even in the presence of a remote network license.


Step 2:  Send the resulting fingerprint file to Stromasys orders administration using the email address that Stromasys will provide to you.


Step 3: After receiving the V2C file from Stromasys, copy the file to the system where the license needs to be installed and install the new license:

In addition to the Sentinel ACC, the command hasp_update can be used on Linux to apply V2C files.

The following example shows the use of the hasp_update command:

/opt/charon/bin/hasp_update u /path/filename.v2c


Please note: this section describes the installation of a new software license. However, the commands to install a V2C file are identical when updating a hardware license. 

Important caveat: When updating a hardware license, you will in most cases receive two V2C files, a *_fmt.v2c file and a *.v2c file. The *_fmt.v2c file formats the dongle and the *.v2c file contains the updated license data. In such cases the *_fmt.v2c file must be applied first.


Installing a Network License

For a network license to be provided to a client host on the network, a license server must have been set up either with a network-enabled hardware license (red dongle) or a software license (software licenses are always network enabled).

If the license server also runs a Charon emulator product, follow the software installation steps in the user's guide. Additionally, the licensing handbook contains additional information about setting up a dedicated license server without installing the full product kit using the license-specific packages of a product kit.

For the client to access a license on a license server the following steps are required:

  • Any firewall between license server and client must permit the necessary communication.
  • The license server must be configured to allow access from the client.
  • The client must be configured to allow access to the license server.

Firewall Considerations

The following ports are used for the communication between license server and client hosts:

  • On the server side (where network license has been installed), port 1947 must be open for incoming TCP and UDP traffic to allow client access to the license.
  • On the client side, traffic is initiated using ports 30000 through 65535 as the source ports and port 1947 as the target port. If broadcast search for remote licenses is to be used, the client must also permit UDP traffic initiated from port 1947 of the license server to ports 30000 through 65535 of the client.

If a host on the network cannot find the license server even though the server is operational, you can temporarily disable the firewall to determine whether it blocks the traffic.

For details on how to configure the firewall in your network, please consult your operating system documentation and make sure to adhere to your company's security policies.


Allowing Client Access on the License Server

The Sentinel license manager on the license server can be configured to allow or disallow access from remote clients to the network licenses installed on the license server. To access this configuration option, perform the following steps on the license server:

1. Open a web-browser and go to the URL http://localhost:1947/_int_/config_from.html (option: Configuration / Access from Remote Clients).

2. This opens a page similar to the following. Please note: newer Charon emulator products (e.g., Charon-AXP/VAX version 4.9 and Charon-PAR 1.10) have newer versions of Sentinel ACC. The pages of these versions look different, but the functionality remains mostly the same.

Old ACC version:

New ACC version:

Or for versions starting with 8.x:

3. Possible actions:

    • To allow access from remote clients, activate the check-box next to the field Allow Access from Remote Clients or Anyone and cloud licenses can be consumed without identity and press Submit at the bottom of the page.
      To allow access from remote clients, network visibility on the "Network" tab must be set to All Network Adapters.
    • To refuse access from remote clients, clear the check-box next to the field Allow Access from Remote Clients or select No one, and press Submit.
    • Access Restrictions allow refining access rules, e.g., by specifying IP addresses. Please refer to Sentinel ACC help for details.

Sentinel ACC versions 8.x and higher have additional configuration options on this screen (mostly cloud related). These options are not relevant to Charon emulator products.


Allowing Access to a License Server on the Client

The Sentinel ACC can be configured to enable or prevent that the client host discovers network licenses and to change the options used to discover and access network licenses provided by a license server.

1. Open a web-browser on the client host and go to the URL http://localhost:1947/_int_/config_to.html
 (option: Configuration / Access to Remote License Managers). 

2. This will open a configuration page similar to the following. Please note: newer Charon emulator products (e.g., Charon-AXP/VAX version 4.9 and Charon-PAR 1.10 and higher) have newer versions of the Sentinel license drivers. The Sentinel ACC pages of these versions look different, but the functionality remains mostly the same

Old ACC version:

New ACC version:


3. Possible actions:

    • Activate the check-box next to the field Allow Access to Remote Licenses to enable access to license servers. Press Submit to save the setting.
    • Clear the check-box next to the field Allow Access to Remote Licenses to disable access to license servers. Press Submit to save the setting.
    • The option Broadcast Search for Remote Licenses, when activated, enables a broadcast search for license servers on the local network without having to enter the address of a license server.

Please note:

  • If the option Broadcast Search for Remote Licenses is not enabled or cannot be used in the customer specific setting, you can enter specific IP addresses or host names that should be queried for network licenses in the Remote License Search Parameters field. Please refer to the Sentinel ACC help function for more information.
  • To allow access to remote license managers, network visibility on the "Network" tab must be set to All Network Adapters.
  • Starting with Charon-AXP/VAX 4.9 for Linux, Charon-AXP/VAX version 4.8 for Windows, and Charon-PAR 1.10, these Charon emulator products do not follow the settings in the Sentinel ACC with respect to querying remote license servers and network visibility. They perform a broadcast search for network licenses even if this has been disabled in the local Sentinel ACC configuration. If this behavior has to be prevented for specific reasons, the access of the system to the license server has to be temporarily restricted or disabled, for example by blocking the relevant traffic in a firewall. Another possibility would be to block access to the network license at the license server side. Note that such methods can negatively impact other functions of the system or, in the case of blocking access to a network license on the server, even the functions on other license clients.

Verifying License Availability

After installing a license on the system, verify the availability of the license as described in the section View Existing Licenses.

Check if the license shows the correct product, expiration date etc.



Handle Multiple Keys

A Charon host system can have access to several local and remote license keys. Each license key can contain one or more product licenses.

The Charon emulator products can only use one active license at one time. Without additional configuration, they cannot make decisions about which product license or license key to use. If there is more than one available license key, the default license key will be used. The default license key is determined by the Sentinel software. As this can lead to undesirable effects, newer Charon emulator products have configuration parameters that allow the definition of a primary (or production) and a secondary (or backup) key, or the creation of a list of license keys or product licenses sorted by priority.

The following sections describe the options available to achieve a more deterministic license selection. If only one license is available, either locally installed or via the network, this section does not apply.

Please note: for Charon-AXP/VAX before version 4.9, Charon-PAR before version 1.10, and other older Charon products: the parameters described in this section can only be used to define a primary key and a backup key, or to specify the correct key if there is a conflicting license for a different Charon product on the same system. It is not possible with these versions of Charon to combine a local license (black dongle) with other licenses (local or network) to increase the number of concurrent instances of the same Charon product on one host system. Newer versions allow a more flexible use of multiple licenses. Both variants are described in the following sections.

Backup License Characteristics

Error rendering macro 'excerpt-include' : No link could be created for 'Backup License Key Characteristics'.

Primary and Backup License for Charon-PAR prior to Version 1.10

If more than one key is visible to the system, you can define which is the primary and which the backup key. To do this, add the following parameters to the configuration file of the Charon instance:

primary_license <primary-key-id>

secondary_license <secondary-key-id>

To identify the relevant key IDs, display the available licenses as described in section View Existing Licenses.

To get information about modifying the Charon configuration files, refer to the appropriate sections in the user's guide.


Prioritized List of License Keys or Product License IDs for Charon-PAR Version 1.10 and Higher

Prioritized List of License Keys

If more than one key is visible to the system, you can define a prioritized list of license keys.  To do this, add the following parameter to the configuration file of the Charon instance:

license_key_id <key-id prio1>

license_key_id <key-id prio2>   (more than two key ID entries are possible) 

license_use_any_key false|true    (optional parameter, default = false

The first entry in the configuration file has the highest priority. The emulator instance will try to use this key first. If it is not available, it will try the second key in the list and so on. If the parameter license_use_any_key is set to true, the emulator instance will search for any keys not part of the list should none of the listed keys be available.

To identify the relevant key IDs, display the available licenses as described in section View Existing Licenses.

To get information about modifying the Charon configuration files, refer to the appropriate sections in the user's guide.

Prioritized List of Product License IDs

Every license key can contain one or more product sections. Newer licenses can contain a product license ID identifying each product section. A prioritized list of product license IDs can be added to the emulator instance configuration file to specify which product sections to use and which should have the highest priority. To do this, add the following parameter to the configuration file of the Charon instance:

license_id "<lic-id-prio1>"

license_id "<lic-id-prio2>"             (more than two entries are possible

The emulator instance will scan the available license keys for the listed product license IDs. Then it will try to use the first defined product section. If it is not available, it will try the next and so on. If none of the listed product license IDs are found, the emulator will stop.

To identify the relevant product license IDs, display the available licenses as described in section View Existing Licenses.

To get information about modifying the Charon configuration files, refer to the appropriate sections in the user's guide.


Update an Existing License

If you need to update an existing hardware or software license, for example because the time limit on the license has expired or to upgrade to a new product version, perform the following tasks:

  1. Generate the C2V file for the existing license. This step is the same for a hardware license or an existing software license. This Customer-to-Vendor (C2V) file contains the license characteristics necessary for creating the license update.
  2. Send the C2V file to Stromasys. Stromasys will use the data to create the necessary license update. You will receive one (software license) or two (most hardware license updates) V2C files (the Vendor-to-Customer file).
  3. Apply the license data from the V2C file(s). This will install and activate the update for your license.

These tasks are described below:

Step 1:  Generate the C2V file using the hasp_srm_view command:

Execute the following command to create the C2V file:

/opt/charon/bin/hasp_srm_view -c2v <filename.c2v>

If there is more than one license visible to the system, newer product versions (starting from Charon-SSP 2.0.1, Charon-AXP/VAX 4.8 Build 18302, Charon-PAR 1.10) allow selecting a specific license using the -key parameter: 

$ hasp_srm_view -key <license-id> -c2v <filename.c2v>

The C2V file will be written to the filename specified.

Please note: the license content cannot be read if you are connected to the system via a remote connection (e.g., via ssh). The hasp_srm_view command will return an error. You can use the following workaround:

ssh localhost /opt/charon/bin/hasp_srm_view -c2v <filename>

Please note: in older product versions, the hasp_srm_view command cannot be instructed to select a particular key for creating the C2V file. The -key parameter in these versions is only honored when displaying a license, but not for creating a C2V file. The hasp_srm_view command will select one of the available licenses to create a C2V file. This selection cannot be influenced. If you are running a Charon product with this restriction and more than one license is visible to the system, either use Sentinel ACC to create the C2V file for the correct license key or disconnect the other licenses temporarily (this may cause problems for emulators running on the system).


Step 2:  Send the resulting C2V file to Stromasys orders administration using the email address that Stromasys will provide to you.


Step 3: After receiving the V2C file(s) from Stromasys, copy the file(s) to the system where the license needs to be installed and install the new license:

Important caveat: if a hardware USB key is to be updated, in most cases you will have received two files: a *_fmt.v2c file and a *.v2c file. The *_fmt.v2c file formats the dongle and the *.v2c file contains the updated license data. In such cases the *_fmt.v2c file must be applied first.


On Linux, the command hasp_update can be used to apply V2C files.

The following example shows the use of the hasp_update command:

/opt/charon/bin/hasp_update u /path/filename.v2c

Alternatively, you can use the Sentinel ACC to apply V2C files (use the section Update/Attach). Refer to the license handbook for more details.


  • No labels