Go to file
Yannick Schaus 4e045204ac
[automation] Create Nashorn script engines with the proper class loader (#1799)
This should fix the issue reported here:
https://community.openhab.org/t/openhab-3-0-milestone-2-discussion/107564/8

where the Nashorn script engine would be created with the
current thread's class loader, causing JS code like this:
```
var Log = Java.type("org.openhab.core.model.script.actions.Log");
Log.logError("Experiments", "This is an OH error log");
Log.logWarn("Experiments", "This is an OH warn log");
Log.logInfo("Experiments", "This is an OH info log");
Log.logDebug("Experiments", "This is an OH debug log");
```
to run fine when the rule was triggered but fail to find the Log
class when run from the REST API's `/rest/rules/{ruleUID}/runnow`,
because in that case the generic createScriptEngine implementation
would return script engines using the JAX-RS class loader as the
"app" class loader.

Note:
We also have an opportunity to restrict which classes are exposed
to the script with a ClassFilter to a specific set:
https://docs.oracle.com/javase/8/docs/jdk/api/nashorn/jdk/nashorn/api/scripting/NashornScriptEngineFactory.html#getScriptEngine-java.lang.String:A-java.lang.ClassLoader-jdk.nashorn.api.scripting.ClassFilter-
This could prove useful to mitigate code execution vulnerabilities,
as the script code is modifiable remotely.

Signed-off-by: Yannick Schaus <github@schaus.net>
2020-11-14 15:17:33 +01:00
bom upgraded JmDNS to version 3.5.6 (#1721) 2020-10-16 12:52:25 +02:00
bundles [automation] Create Nashorn script engines with the proper class loader (#1799) 2020-11-14 15:17:33 +01:00
features Fix issues with configuration PIDs (#1727) 2020-10-18 18:02:13 +02:00
itests [infrastructure] add external null-annotations (#1775) 2020-11-03 21:33:48 +01:00
licenses/epl-2.0 mavenize openHAB and integrate mavenized ESH repository (#467) 2019-01-28 13:07:31 +01:00
tools Remove Eclipse project files from binding archetype (#1660) 2020-09-21 22:49:13 +02:00
.gitattributes Add .gitattributes (#1767) 2020-10-26 22:24:59 +01:00
.gitignore [model] don't require to download antlr generator on build time (#810) 2019-05-14 09:04:35 +02:00
.travis.yml Remove non-existing $HOME/.bnd/cache/ dir from .travis.yml (#1632) 2020-09-10 11:08:46 +02:00
CONTRIBUTING.md removed 1.x compatibility layer (#1284) 2019-12-21 11:32:29 +01:00
LICENSE Changed license from EPL v1 to EPL v2 (#466) 2019-01-16 22:59:49 +01:00
NOTICE Add NOTICE file (#631) 2019-03-06 16:09:24 +01:00
README.md Update links to travis-ci.com 2020-06-23 23:18:22 +02:00
pom.xml [infrastructure] add external null-annotations (#1775) 2020-11-03 21:33:48 +01:00

README.md

openHAB Core

Build Status EPL-2.0 Bountysource

This project contains core bundles of the openHAB runtime.

Building and running the project is fairly easy if you follow the steps detailed below.

Please note that openHAB Core is not a product itself, but a framework to build solutions on top. It is picked up by the main openHAB distribution.

This means that what you build is primarily an artifact repository of OSGi bundles that can be used within smart home products.

1. Prerequisites

The build infrastructure is based on Maven. If you know Maven already then there won't be any surprises for you. If you have not worked with Maven yet, just follow the instructions and everything will miraculously work ;-)

What you need before you start:

Make sure that the mvn command is available on your path

2. Checkout

Checkout the source code from GitHub, e.g. by running:

git clone https://github.com/openhab/openhab-core.git

3. Building with Maven

To build this project from the sources, Maven takes care of everything:

  • set MAVEN_OPTS to -Xms512m -Xmx1024m
  • change into the openhab-core directory (cd openhab-core)
  • run mvn clean install to compile and package all sources

If there are tests that are failing occasionally on your local build, run mvn -DskipTests=true clean install instead to skip them.

How to contribute

If you want to become a contributor to the project, please read about contributing and check our guidelines first.