C-based (FNE) floating license server
Hi @jberthold - we are looking for a solution for floating licenses (initially for offline devices) and have looked into different options such as your local license server. Unfortunately the java-based license server application cannot be used as you previously pointed out that it will not be able to run on ARM which will be the core target platform for our floating license server.
Within the FNE SDK we are using right now we found several functions for setting up and configuring a license server and a C-based example license server implementation which basically waits for capability requests, processes them and generates the capability responses while being able to display the allocated resources (e.g. connected devices, etc.).
Basically that is what we need. We actually don't need the exhaustive functionality the java-based application offers such as feature partitions, reservations, lots of configuration options, built-in security (token, user-management, etc.) but require the basic functionality to process requests and generate responses and maybe some options for data display. Our main use-case is "floating" licenses - we don't use any consumption based monetization models (e.g. metered licenses). Our already existent web-based application will come with the required security infrastructure for HTTPs, authorization and so on - the server should have basic capability request / response functionality. We are currently having some questions about whether we can use the c-based license server or not.
- does revenera plan to extend their product portfolio by a maintained and updated c-based server?
- is there any reason to not use the current c-based license server at all?
- is there anything important that actually cannot be modelled / implemented with the C-based server (back-office sync, etc.)?
- also, what's with the client-server identity file?
- for the java server we woud generate a signed producer settings file and not use the private key contained within the identity file directly.
- does the C-based server need to use the sensitive client-server identity file directly? If so what would be the potential risk of a client-server identity file theft?
- anything else we should be anticipating in this regard?
@jberthold - thanks, that would definitely help us with our pending decision! Could you give some insights about the handling of the client-server identity file, associated risks (e.g. upon theft) and whether it would be required on the license server in the meantime?
Hi @TrinityTonic ,
This is legacy code that pre-dates the original C-based fully functional server (referred to as the "Server Application") that was released quite a long time ago that has since been deprecated and replaced by the Java-based server. I'm not sure if it is officially supported and will need input from PM. The client-server identity file is required and my understanding is that it is does not present any additional risks than does the current Java-based server.
I'm asking because the client-server identity file (seen when parsed with the printbin.bat tool) contains a private key. Now we were wondering if we could really compile the client-server identity file containing the private key directly into our application binary.
However if you say that it does not pose any risks, that would be okay. In that case we believe that the private key cannot be used to sign any random capability response to make it valid for use on any device.
Hi @TrinityTonic ,
Update: Note this is not a C-based license server. Sample code has been provided for providing basic counting capability using a server API. The server API is supported however we have no plans to enhance the server API functionality.
what do you mean with basic counting capability. What I am refering to is the "Server.c" file inside the FlexNet Embedded Client (flexnet_client-x64_linux/windows.zip) - see the attached image for a file tree of the flexnet folder.
The Server.c example calls functions to
- initialize the license server (FlxServerCreate)
- initialize reservations
- sets borrow / renewal intervals for the license server
- sets up a listener at a specified port
- accepts client requests
- read capability request from client request
- process capability response
- serve capability response to client
Are we talking about the same? So what you are basically saying is that the functions inside the C SDK for setting up a license server can be used, however you do not intend to make any further improvements to the server functionality?