diff --git a/modules/analytics/distribution/src/assembly/bin.xml b/modules/analytics/distribution/src/assembly/bin.xml
index 2055b087..6153fc43 100644
--- a/modules/analytics/distribution/src/assembly/bin.xml
+++ b/modules/analytics/distribution/src/assembly/bin.xml
@@ -833,5 +833,12 @@
true
644
+
+
+
+ ${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/portal/
+
+ 755
+
diff --git a/modules/analytics/distribution/src/repository/jaggeryapps/portal/jaggery.conf b/modules/analytics/distribution/src/repository/jaggeryapps/portal/jaggery.conf
new file mode 100644
index 00000000..77030553
--- /dev/null
+++ b/modules/analytics/distribution/src/repository/jaggeryapps/portal/jaggery.conf
@@ -0,0 +1,187 @@
+{
+ "initScripts": [
+ "js/dashboard-deployer.js"
+ ],
+ "welcomeFiles": [
+ "routers/tenant.jag"
+ ],
+ "errorPages": {
+ "500": "/controllers/error-pages/error500.html",
+ "404": "/controllers/error-pages/error404.html",
+ "401": "/controllers/error-pages/error401.html",
+ "405": "/controllers/error-pages/error405.html",
+ "403": "/controllers/error-pages/error403.html",
+ "400": "/controllers/error-pages/error400.html"
+ },
+ "urlMappings": [
+ {
+ "url": "/login-controller",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/login",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/logout",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/t/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/apis/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/dashboards/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/gadget/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/layout/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/assets/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/create-dashboard",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/dashboard-settings/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/select-layout",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/create-gadget",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/upload-gadget",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/upload-layout",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/geojson/world/*",
+ "path": "/templates/geojson/world.json"
+ },
+ {
+ "url": "/geojson/europe/*",
+ "path": "/templates/geojson/europe.json"
+ },
+ {
+ "url": "/geojson/usa/*",
+ "path": "/templates/geojson/usa.json"
+ },
+ {
+ "url": "/geojson/countryInfo/*",
+ "path": "/templates/geojson/countryInfo.json"
+ },
+ {
+ "url": "/geojson/usaInfo/*",
+ "path": "/templates/geojson/usaInfo.json"
+ },
+ {
+ "url": "/acs",
+ "path": "/controllers/acs.jag"
+ },
+ {
+ "url": "/banners/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/gadgets/*",
+ "path": "/routers/tenant.jag"
+ },
+ {
+ "url": "/configs/designer.json",
+ "path": "/controllers/error-pages/error404.html"
+ }
+ ],
+ "listeners": [
+ {
+ "class": "org.owasp.csrfguard.CsrfGuardServletContextListener"
+ },
+ {
+ "class": "org.owasp.csrfguard.CsrfGuardHttpSessionListener"
+ }
+ ],
+ "servlets": [
+ {
+ "name": "JavaScriptServlet",
+ "class": "org.owasp.csrfguard.servlet.JavaScriptServlet"
+ }
+ ],
+ "servletMappings": [
+ {
+ "name": "JavaScriptServlet",
+ "url": "/csrf.js"
+ }
+ ],
+ "contextParams": [
+ {
+ "name": "Owasp.CsrfGuard.Config",
+ "value": "repository/conf/security/Owasp.CsrfGuard.dashboard.properties"
+ }
+ ],
+ "filters": [
+ {
+ "name": "ContentTypeBasedCachePreventionFilter",
+ "class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
+ "params" : [
+ {"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
+ {"name" : "filterAction", "value" : "enforce"},
+ {"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
+ ]
+ },
+ {
+ "name": "HttpHeaderSecurityFilter",
+ "class": "org.apache.catalina.filters.HttpHeaderSecurityFilter",
+ "params": [
+ {
+ "name": "hstsEnabled",
+ "value": "false"
+ },
+ {
+ "name": "antiClickJackingOption",
+ "value": "SAMEORIGIN"
+ }
+ ]
+ },
+ {
+ "name": "TenantStoresFilter",
+ "class": "org.wso2.carbon.dashboard.store.filter.TenantStoreFilter"
+ }
+ ],
+ "filterMappings": [
+ {
+ "name": "HttpHeaderSecurityFilter",
+ "url": "*"
+ },
+ {
+ "name": "TenantStoresFilter",
+ "url": "/store/*"
+ },
+ {
+ "name": "TenantStoresFilter",
+ "url": "/temp/*"
+ },
+ {
+ "name":"ContentTypeBasedCachePreventionFilter",
+ "url":"*"
+ }
+ ]
+}
diff --git a/modules/core/distribution/src/assembly/bin.xml b/modules/core/distribution/src/assembly/bin.xml
index 2b382f33..edbc77f8 100644
--- a/modules/core/distribution/src/assembly/bin.xml
+++ b/modules/core/distribution/src/assembly/bin.xml
@@ -1312,6 +1312,13 @@
true
644
+
+
+
+ ${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/android-web-agent/
+
+ 755
+
@@ -1347,6 +1354,13 @@
755
+
+
+
+ ${pom.artifactId}-${pom.version}/repository/deployment/server/jaggeryapps/windows-web-agent/
+
+ 755
+
diff --git a/modules/core/distribution/src/repository/conf/security/Owasp.CsrfGuard.Carbon.properties b/modules/core/distribution/src/repository/conf/security/Owasp.CsrfGuard.Carbon.properties
index bf300027..171e8094 100644
--- a/modules/core/distribution/src/repository/conf/security/Owasp.CsrfGuard.Carbon.properties
+++ b/modules/core/distribution/src/repository/conf/security/Owasp.CsrfGuard.Carbon.properties
@@ -465,6 +465,14 @@ org.owasp.csrfguard.unprotected.dcrRestApi=%servletContext%/dynamic-client-web/*
org.owasp.csrfguard.unprotected.deviceMgtSSOAcs=%servletContext%/devicemgt/uuf/sso/acs
org.owasp.csrfguard.unprotected.deviceMgtAcs=%servletContext%/uuf/sso/acs
org.owasp.csrfguard.unprotected.deviceMgtApi=%servletContext%/devicemgt/api/invoker/execute/*
+org.owasp.csrfguard.unprotected.storeEventPublisher=%servletContext%/store/apis/eventpublish/*
+org.owasp.csrfguard.unprotected.publisherAcs=%servletContext%/publisher/acs
+org.owasp.csrfguard.unprotected.storeAcs=%servletContext%/store/acs
+org.owasp.csrfguard.unprotected.apiStoreAcs=%servletContext%/api-store/acs
+org.owasp.csrfguard.unprotected.portalAcs=%servletContext%/portal/acs
+org.owasp.csrfguard.unprotected.socialAcs=%servletContext%/social/acs
+org.owasp.csrfguard.unprotected.appStoreDevices=%servletContext%/store/apps/devices/*
+
#carbon
org.owasp.csrfguard.unprotected.Services=%servletContext%/services/*
diff --git a/modules/core/distribution/src/repository/jaggeryapps/android-web-agent/jaggery.conf b/modules/core/distribution/src/repository/jaggeryapps/android-web-agent/jaggery.conf
new file mode 100644
index 00000000..7c33479a
--- /dev/null
+++ b/modules/core/distribution/src/repository/jaggeryapps/android-web-agent/jaggery.conf
@@ -0,0 +1,58 @@
+{
+ "displayName": "UUF Template App",
+ "logLevel": "warn",
+ "urlMappings": [
+ {
+ "url": "/uuf/login",
+ "path": "/lib/modules/auth/login.jag"
+ },
+ {
+ "url": "/uuf/logout",
+ "path": "/lib/modules/auth/logout.jag"
+ },
+ {
+ "url": "/uuf/sso/acs",
+ "path": "/lib/modules/auth/acs.jag"
+ },
+ {
+ "url": "/public/*",
+ "path": "/lib/static-files.jag"
+ },
+ {
+ "url": "/unit/*",
+ "path": "/lib/units.jag"
+ },
+ {
+ "url": "/*",
+ "path": "/lib/pages.jag"
+ }
+ ],
+ "filters": [
+ {
+ "name": "ContentTypeBasedCachePreventionFilter",
+ "class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
+ "params" : [
+ {"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
+ {"name" : "filterAction", "value" : "enforce"},
+ {"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
+ ]
+ },
+ {
+ "name":"HttpHeaderSecurityFilter",
+ "class":"org.apache.catalina.filters.HttpHeaderSecurityFilter",
+ "params" : [{"name" : "hstsEnabled", "value" : "false"}]
+ }
+
+ ],
+ "filterMappings": [
+ {
+ "name":"HttpHeaderSecurityFilter",
+ "url":"*"
+ },
+ {
+ "name":"ContentTypeBasedCachePreventionFilter",
+ "url":"*"
+ }
+
+ ]
+}
diff --git a/modules/core/distribution/src/repository/jaggeryapps/api-store/jaggery.conf b/modules/core/distribution/src/repository/jaggeryapps/api-store/jaggery.conf
index cd51e91f..520acab5 100644
--- a/modules/core/distribution/src/repository/jaggeryapps/api-store/jaggery.conf
+++ b/modules/core/distribution/src/repository/jaggeryapps/api-store/jaggery.conf
@@ -66,7 +66,7 @@
"name": "ContentTypeBasedCachePreventionFilter",
"class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
"params" : [
- {"name" : "patterns", "value" : "text/html"},
+ {"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
{"name" : "filterAction", "value" : "enforce"},
{"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
]
diff --git a/modules/core/distribution/src/repository/jaggeryapps/windows-web-agent/jaggery.conf b/modules/core/distribution/src/repository/jaggeryapps/windows-web-agent/jaggery.conf
new file mode 100644
index 00000000..00514b3a
--- /dev/null
+++ b/modules/core/distribution/src/repository/jaggeryapps/windows-web-agent/jaggery.conf
@@ -0,0 +1,125 @@
+{
+ "displayName": "EMM Web Agent",
+ "logLevel": "error",
+ "initScripts": ["/app/modules/init.js"],
+ "urlMappings": [
+ {
+ "url": "/enrollment",
+ "path": "/lib/pages.jag"
+ },
+ {
+ "url": "/enrollment/windows/login",
+ "path": "/app/modules/enrollments/windows/agent-controller.jag"
+ },
+ {
+ "url": "/enrollment/windows/enroll",
+ "path": "/app/modules/enrollments/windows/agent-enroll.jag"
+ },
+ {
+ "url": "/enrollment/ios/download-certificate",
+ "path": "/app/modules/enrollments/ios/certificate.jag"
+ },
+ {
+ "url": "/enrollment/ios/download-agent",
+ "path": "/app/modules/enrollments/ios/agent.jag"
+ },
+ {
+ "url": "/enrollment/ios/login",
+ "path": "/app/modules/enrollments/ios/agent-controller.jag"
+ },
+ {
+ "url": "/enrollment/ios/enroll",
+ "path": "/app/modules/enrollments/ios/agent-enroll.jag"
+ },
+ {
+ "url": "/enrollment/ios/check",
+ "path": "/app/modules/enrollments/ios/agent-check.jag"
+ },
+ {
+ "url": "/api/invoker/*",
+ "path": "/api/invoker-api.jag"
+ },
+ {
+ "url": "/uuf/login",
+ "path": "/lib/modules/auth/login.jag"
+ },
+ {
+ "url": "/uuf/logout",
+ "path": "/lib/modules/auth/logout.jag"
+ },
+ {
+ "url": "/uuf/sso/acs",
+ "path": "/lib/modules/auth/acs.jag"
+ },
+ {
+ "url": "/public/*",
+ "path": "/lib/static-files.jag"
+ },
+ {
+ "url": "/unit/*",
+ "path": "/lib/units.jag"
+ },
+ {
+ "url": "/*",
+ "path": "/lib/pages.jag"
+ }
+ ],
+ "securityConstraints": [
+ {
+ "securityConstraint": {
+ "webResourceCollection": {
+ "name": "WINDOWS-WEB-AGENT",
+ "urlPatterns": [
+ "/*"
+ ]
+ },
+ "userDataConstraint": {
+ "transportGuarantee": "CONFIDENTIAL"
+ }
+ }
+ },
+ {
+ "securityConstraint": {
+ "webResourceCollection": {
+ "name": "WINDOWS-WEB-AGENT-http",
+ "urlPatterns": [
+ "/public/*",
+ "/enrollments/windows/*",
+ "/enrollment/windows/*"
+ ]
+ },
+ "userDataConstraint": {
+ "transportGuarantee": "NONE"
+ }
+ }
+ }
+ ],
+ "filters": [
+ {
+ "name": "ContentTypeBasedCachePreventionFilter",
+ "class": "org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter",
+ "params" : [
+ {"name" : "patterns", "value" : "text/html\" ,application/json\" ,text/plain"},
+ {"name" : "filterAction", "value" : "enforce"},
+ {"name" : "httpHeaders", "value" : "Cache-Control: no-store, no-cache, must-revalidate, private"}
+ ]
+ },
+ {
+ "name":"HttpHeaderSecurityFilter",
+ "class":"org.apache.catalina.filters.HttpHeaderSecurityFilter",
+ "params" : [{"name" : "hstsEnabled", "value" : "false"}]
+ }
+
+ ],
+ "filterMappings": [
+ {
+ "name":"HttpHeaderSecurityFilter",
+ "url":"*"
+ },
+ {
+ "name":"ContentTypeBasedCachePreventionFilter",
+ "url":"*"
+ }
+
+ ]
+}
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#certificate-mgt#v1.0/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#certificate-mgt#v1.0/web.xml
index 7a8a130a..8facd4b1 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#certificate-mgt#v1.0/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#certificate-mgt#v1.0/web.xml
@@ -87,7 +87,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#identity#entitlement/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#identity#entitlement/web.xml
index 86c22b52..ef693381 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#identity#entitlement/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#identity#entitlement/web.xml
@@ -43,7 +43,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#scep-mgt#v1.0/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#scep-mgt#v1.0/web.xml
index 36b8b98e..0dfb469c 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#scep-mgt#v1.0/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api#scep-mgt#v1.0/web.xml
@@ -67,7 +67,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api-application-registration/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api-application-registration/web.xml
index c4a51a4a..0e2a3b23 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/api-application-registration/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/api-application-registration/web.xml
@@ -73,7 +73,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/client-registration#v0.11/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/client-registration#v0.11/web.xml
index 0befeb9c..19b51c7a 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/client-registration#v0.11/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/client-registration#v0.11/web.xml
@@ -62,7 +62,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/oauth2/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/oauth2/web.xml
index d7d02a3d..02b4a9e4 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/oauth2/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/oauth2/web.xml
@@ -36,7 +36,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/secured-websocket/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/secured-websocket/web.xml
index 4e114231..ce51b848 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/secured-websocket/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/secured-websocket/web.xml
@@ -36,7 +36,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/distribution/src/repository/resources/web-apps/web-xml/shindig/web.xml b/modules/core/distribution/src/repository/resources/web-apps/web-xml/shindig/web.xml
index ead0c0d4..857a8334 100644
--- a/modules/core/distribution/src/repository/resources/web-apps/web-xml/shindig/web.xml
+++ b/modules/core/distribution/src/repository/resources/web-apps/web-xml/shindig/web.xml
@@ -88,7 +88,7 @@
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter
patterns
- "text/html*","application/json*","text/plain*"
+ text/html" ,application/json" ,text/plain
filterAction
diff --git a/modules/core/p2-profile-gen/pom.xml b/modules/core/p2-profile-gen/pom.xml
index 8856f6a6..e38839e3 100644
--- a/modules/core/p2-profile-gen/pom.xml
+++ b/modules/core/p2-profile-gen/pom.xml
@@ -699,6 +699,9 @@
org.wso2.carbon.analytics:org.wso2.carbon.analytics.api.client.feature:${carbon.analytics.version}
+
+ org.wso2.carbon.analytics:org.wso2.carbon.analytics.jsservice.feature:${carbon.analytics.version}
+
@@ -1497,6 +1500,10 @@
org.wso2.carbon.analytics.api.client.feature.group
${carbon.analytics.version}
+
+ org.wso2.carbon.analytics.jsservice.feature.group
+ ${carbon.analytics.version}
+
diff --git a/modules/distribution/src/resources/samples/connectedcup/feature/connectedcup-feature/pom.xml b/modules/distribution/src/resources/samples/connectedcup/feature/connectedcup-feature/pom.xml
index c5792c9c..9829ece0 100644
--- a/modules/distribution/src/resources/samples/connectedcup/feature/connectedcup-feature/pom.xml
+++ b/modules/distribution/src/resources/samples/connectedcup/feature/connectedcup-feature/pom.xml
@@ -219,7 +219,7 @@
- org.coffeeking:org.coffeeking.connectedcup.plugin:${wso2.iot.version}
+ org.coffeeking:org.coffeeking.connectedcup.plugin:${org.coffeeking.version}
diff --git a/modules/distribution/src/resources/samples/samples-deployer.xml b/modules/distribution/src/resources/samples/samples-deployer.xml
index 5010a1bd..72b03a17 100644
--- a/modules/distribution/src/resources/samples/samples-deployer.xml
+++ b/modules/distribution/src/resources/samples/samples-deployer.xml
@@ -50,8 +50,8 @@
p2-repo-gen
- file:${basedir}/p2-repo
- file:${basedir}/p2-repo
+ file:\${basedir}/p2-repo
+ file:\${basedir}/p2-repo
true
true
@@ -69,9 +69,9 @@
default
- file:${basedir}/p2-repo
- file:${basedir}/p2-repo
- ${basedir}/../core/repository/components
+ file:\${basedir}/p2-repo
+ file:\${basedir}/p2-repo
+ \${basedir}/../core/repository/components
false
diff --git a/pom.xml b/pom.xml
index 906caba9..d2b3d001 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1547,7 +1547,7 @@
5.1.5
- 1.3.0
+ 1.3.3-SNAPSHOT
1.3.0
${product.iot.version}
3.1.0