Quarantined Modules

Hi ,
I just signedup a new (Private) module on developer portal for a few times with a simple or no changes yesterday. Today I find them appear (7 times that I signedup) on my module list of modules. Is this a new feature? What can I do with this list. It says install / delete. Will delete, delete it from your server?

regards
Prafull

I free all resources (like threads, ports etc) used by it in the shutdown method. When I restart my Ignition module from control panel, the tread which was active (communicating on a TCP port to my external application out side Ignition) remains locked is not freed and the restart fails giving IO exception on that port in the log file! I have to restart the Ignition server itself to free this resource for the next restart to be successful. Where as if I first stop my external application then restart my Ignition module, then it works all right.

I guess the shutdown is triggering, but if a resource is locked, then it doesn’t free that resource. I must force-free that resource. How can I do that for a TCP socket? I am closing that port (including all other resources used in the module) in shutdown method of GatewayHook module.

How to force free a resource?

regards
Prafull

Hi Kevin,
What is the purpose of the Quarantined modules sections newly added in Ignition? Is it the failed build models that we had to delete from user-lib directory that can now be deleted from the console itself?

Please explain the purpose.

regards
prafull

No, it’s for our new module signing system that will be released with 7.8.3 (and backported to 7.7.9). There should be documentation available soon about how to use it.

The quick summary is that we’re no longer signing modules for developers; you sign them yourself, using either a self-signed certificate or a real code signing certificate. Then when installing a module for the first time users are presented the certificate that signed the module and asked if they wish to trust it. Modules that have not been trusted by users in this manner will go to the quarantine section and not run until the user goes and installs them, agreeing to trust that certificate.

When we have publicly available documentation I will post it to this forum.

The new tool used to sign modules is available here: github.com/inductiveautomation/module-signer

Hmmmm…
But I have installed 7.7.8 and it still has the quarantine option.
Then there will not be any public and private modules in that case I guess?
Hopefully it will simplify the module marketplace.
Lets wait for the release of this new module signing option.
regards
prafull

i cannot find any documentation that walks me through step by step how to self sign with this new process. i have gotten to the point where i have downloaded eclipse and i have cloned the git project. then i have clean, generate-sources, install, and test, but i cannot find the file module-signer.jar any where in the project folder.

the only jar files i can find are in the target folder and they are module-signer-1.0.0-SNAPSHOT.jar and module-signer-1.0.0-SNAPSHOT-jar-with-dependencies.jar

if i just try running the project as a java application it says it needs parameters, but i cannot figure out where to put the parameters to this file i cannot find.

i believe i have gotten a little bit further. i have setup all my arguments in the Java Application Run Configuration within eclipse, but i receive an error “Cannot recover key”

i have setup a key with KeyStore Explorer and i have exported a certificate of file type .p7b.

here is what my configuration arguments look like
[attachment=1]run configuration.png[/attachment]

here is the error
[attachment=0]keystore error.png[/attachment]

You may need the alias-pwd command as well - not 100% what that error means though.

very good. i must have over looked that argument when i was typing them in. seems to have worked.

Thanks,

how do you make a module free in this new module signing architecture? in the old way i would just put a line in the module.xml file that says true.

when i install my module with the new way of signing it always says trial.

Implement a method in your gateway module hook like this:

	public boolean isFreeModule() {
		return true;
	}

The module.xml entry is no longer used because of the module signing changes.

my modules do not have hooks. i just using modules to import jar libraries into the different scopes.

You’ll need to add a gateway hook then. It can do nothing other than make the module free.

how do you use the ignition-maven-plugin from eclipse to create a new skeleton project? i have all the example projects imported in and i have tried making a new maven project, but i do not see anywhere that it will automatically create the proper structure for an ignition module project.

Auto-generation is currently done by a limited number of archetypes we’ve implemented: github.com/inductiveautomation/ … archetypes

You could probably generate from the client-designer-gateway archetype and then just remove the client and designer modules.

i cannot seem to get it any of the files in that git directory to work as the archetypes catalog. Can you please point me to the catalog file?

You don’t actually need to do anything but run this command:

mvn archetype:generate \
-DarchetypeGroupId=com.inductiveautomation.ignitionsdk \
-DarchetypeArtifactId=client-designer-gateway-archetype \
-DarchetypeVersion=1.0.2

The archetypes have been deployed to Maven central.

Where is the best place to put an external jar file that i want to make available in all three scopes? gateway, designer, and client. should i add reference to the external jar to each of the individual project folders?

If this were a larger project you have a “common” maven module as well… and put it there, but since you’re just trying to get this jar into all the right scopes I don’t think a reference in each pom file will hurt.

could give me an example or point to an example of adding a jar file reference to a pom.xml?