# Quarantined Modules

**URL:** <https://forum.inductiveautomation.com/t/quarantined-modules/11594>\
**Category:** Module Development\
**Created:** [April 28, 2016, 10:18am UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594 "2016-04-28T10:18:27Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [April 28, 2016, 10:18am UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/1 "2016-04-28T10:18:27Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [April 28, 2016, 10:44am UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/2 "2016-04-28T10:44:19Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [April 29, 2016, 6:33pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/3 "2016-04-29T18:33:16Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [April 29, 2016, 6:47pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/4 "2016-04-29T18:47:37Z")

</div>

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](https://github.com/inductiveautomation/module-signer)

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [April 30, 2016, 3:53am UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/5 "2016-04-30T03:53:44Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 18, 2016, 12:35am UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/6 "2016-06-18T00:35:02Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 4:32pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/7 "2016-06-20T16:32:18Z")

</div>

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]

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 20, 2016, 4:41pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/8 "2016-06-20T16:41:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 4:44pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/9 "2016-06-20T16:44:44Z")

</div>

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

Thanks,

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 5:25pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/10 "2016-06-20T17:25:41Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 20, 2016, 5:28pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/11 "2016-06-20T17:28:31Z")

</div>

Implement a method in your gateway module hook like this:

```auto
	public boolean isFreeModule() {
		return true;
	}
```

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

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 5:32pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/12 "2016-06-20T17:32:10Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 20, 2016, 5:51pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/13 "2016-06-20T17:51:43Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 6:01pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/14 "2016-06-20T18:01:25Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 20, 2016, 6:07pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/15 "2016-06-20T18:07:31Z")

</div>

Auto-generation is currently done by a limited number of archetypes we’ve implemented: [github.com/inductiveautomation/ … archetypes](https://github.com/inductiveautomation/ignition-sdk-archetypes)

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

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 7:13pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/16 "2016-06-20T19:13:27Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 20, 2016, 7:36pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/17 "2016-06-20T19:36:53Z")

</div>

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

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

The archetypes have been deployed to Maven central.

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 20, 2016, 9:17pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/18 "2016-06-20T21:17:12Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 20, 2016, 9:27pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/19 "2016-06-20T21:27:54Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Jonathan](https://avatars.discourse-cdn.com/v4/letter/j/aeb1de/32.png) [@Jonathan](https://forum.inductiveautomation.com/u/Jonathan)\
**Post date:** [June 21, 2016, 5:47pm UTC](https://forum.inductiveautomation.com/t/quarantined-modules/11594/20 "2016-06-21T17:47:28Z")

</div>

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

[Next page](https://forum.inductiveautomation.com/t/quarantined-modules/11594.md?page=2)
