You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by rm...@apache.org on 2018/08/28 19:20:35 UTC
[3/3] metron git commit: METRON-1665 Move hosting of Alerts and
Config UIs from Nodejs to Spring Boot (simonellistonball via merrimanr)
closes apache/metron#1111
METRON-1665 Move hosting of Alerts and Config UIs from Nodejs to Spring Boot (simonellistonball via merrimanr) closes apache/metron#1111
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/54880ba8
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/54880ba8
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/54880ba8
Branch: refs/heads/feature/METRON-1663-knoxsso
Commit: 54880ba8f2467fefe56b9c377da003d08f0fe203
Parents: 28f4b57
Author: simonellistonball <si...@simonellistonball.com>
Authored: Tue Aug 28 14:20:10 2018 -0500
Committer: rmerriman <me...@gmail.com>
Committed: Tue Aug 28 14:20:10 2018 -0500
----------------------------------------------------------------------
.gitignore | 6 +
dependencies_with_url.csv | 48 +++
.../packaging/ambari/metron-mpack/README.md | 2 -
.../common-services/METRON/CURRENT/metainfo.xml | 3 -
.../packaging/docker/ansible-docker/Dockerfile | 3 -
.../packaging/docker/deb-docker/Dockerfile | 4 -
.../docker/deb-docker/prepackage/metron-config | 3 -
.../packaging/docker/rpm-docker/Dockerfile | 4 -
.../docker/rpm-docker/SPECS/metron.spec | 97 ++-----
.../packaging/docker/rpm-docker/pom.xml | 4 +-
metron-interface/metron-alerts-host/.gitignore | 24 ++
metron-interface/metron-alerts-host/pom.xml | 141 +++++++++
.../src/main/assembly/assembly.xml | 39 +++
.../org/apache/metron/ui/AlertsApplication.java | 29 ++
.../src/main/resources/application.yml | 61 ++++
.../src/main/scripts/metron-alerts.sh | 55 ++++
metron-interface/metron-alerts/.gitignore | 3 +
metron-interface/metron-alerts/assembly.xml | 55 ----
metron-interface/metron-alerts/pom.xml | 21 +-
.../metron-alerts/scripts/alerts-server.js | 76 -----
.../metron-alerts/scripts/metron-alerts-ui | 159 ----------
.../metron-alerts/scripts/package.json | 21 --
metron-interface/metron-config-host/pom.xml | 142 +++++++++
.../src/main/assembly/assembly.xml | 39 +++
.../org/apache/metron/ui/ConfigApplication.java | 31 ++
.../src/main/resources/application.yml | 34 +++
.../src/main/scripts/metron-config.sh | 55 ++++
metron-interface/metron-config/.gitignore | 3 +
metron-interface/metron-config/assembly.xml | 65 -----
metron-interface/metron-config/pom.xml | 236 ++++++++-------
.../metron-config/scripts/metron-management-ui | 159 ----------
.../metron-config/scripts/package.json | 22 --
.../metron-config/scripts/server.js | 76 -----
metron-interface/metron-rest/README.md | 95 ++----
metron-interface/metron-rest/pom.xml | 6 +-
.../metron/rest/MetronRestApplication.java | 16 +-
.../metron/rest/config/WebSecurityConfig.java | 108 -------
.../rest/controller/AlertsUIController.java | 6 +-
.../src/main/resources/application-test.yml | 19 ++
.../metron-rest/src/main/scripts/metron-rest.sh | 7 +-
.../metron/rest/config/TestSecurityConfig.java | 44 +++
.../AlertsUIControllerIntegrationTest.java | 18 +-
metron-interface/metron-ui-host/pom.xml | 138 +++++++++
.../metron/ui/AbstractHostApplication.java | 28 ++
.../org/apache/metron/ui/UserController.java | 71 +++++
.../metron/ui/ZuulAuthenticationFilter.java | 77 +++++
.../java/org/apache/metron/ui/ZuulError.java | 34 +++
.../org/apache/metron/ui/ZuulErrorFilter.java | 67 +++++
.../src/main/resources/application.yml | 59 ++++
.../apache/metron/ui/TestHostApplication.java | 25 ++
.../java/org/apache/metron/ui/WhoamiTest.java | 120 ++++++++
.../ui/ZuulAuthorizationHeaderProxyTest.java | 103 +++++++
.../src/test/resources/application-test.yml | 77 +++++
metron-interface/metron-ui-security/pom.xml | 135 +++++++++
.../metron/ui/KnoxSSOAuthenticationFilter.java | 289 +++++++++++++++++++
.../ui/MetronAuthenticationException.java | 29 ++
.../metron/ui/MetronAuthenticationProvider.java | 60 ++++
.../apache/metron/ui/MetronSecurityConfig.java | 188 ++++++++++++
.../java/org/apache/metron/ui/EmbeddedLdap.java | 164 +++++++++++
.../java/org/apache/metron/ui/JWTTests.java | 170 +++++++++++
.../ui/KnoxSSOAuthenticationFilterTests.java | 66 +++++
.../ui/MetronAuthenticationProviderTests.java | 33 +++
.../metron/ui/config/TestSecurityConfig.java | 31 ++
.../resources/application-embedded-ldap.yml | 35 +++
.../resources/org/apache/metron/ui/headers.pem | 27 ++
.../resources/org/apache/metron/ui/invalid.pem | 27 ++
.../org/apache/metron/ui/noheaders.pem | 25 ++
.../src/test/resources/schema.ldif | 77 +++++
metron-interface/pom.xml | 13 +
69 files changed, 3147 insertions(+), 1060 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 12fd7cd..5b0971e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,9 @@ temp/**
temp/**/*
metron-interface/metron-alerts/node/
repodata/
+
+# Ignores for eclipse IDE
+.springBeans
+.factorypath
+.vscode
+.pydevproject
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/dependencies_with_url.csv
----------------------------------------------------------------------
diff --git a/dependencies_with_url.csv b/dependencies_with_url.csv
index 6ac1f23..5740ffe 100644
--- a/dependencies_with_url.csv
+++ b/dependencies_with_url.csv
@@ -421,3 +421,51 @@ com.google.code.gson:gson:jar:2.8.2:compile,ASLv2,https://github.com/google/gson
com.zaxxer:HikariCP:jar:2.7.8:compile,ASLv2,https://github.com/brettwooldridge/HikariCP
org.hibernate.validator:hibernate-validator:jar:6.0.9.Final:compile,ASLv2,https://github.com/hibernate/hibernate-validator
+com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile,ASLv2,http://stephenc.github.io/jcip-annotations/
+com.google.guava:guava:jar:15.0:compile,ASLv2,
+com.netflix.archaius:archaius-core:jar:0.7.6:compile,ASLv2,https://github.com/Netflix/archaius
+com.netflix.hystrix:hystrix-core:jar:1.5.12:compile,ASLv2,https://github.com/Netflix/Hystrix
+com.netflix.hystrix:hystrix-javanica:jar:1.5.12:compile,ASLv2,https://github.com/Netflix/Hystrix
+com.netflix.hystrix:hystrix-metrics-event-stream:jar:1.5.12:compile,ASLv2,https://github.com/Netflix/Hystrix
+com.netflix.hystrix:hystrix-serialization:jar:1.5.12:compile,ASLv2,https://github.com/Netflix/Hystrix
+com.netflix.netflix-commons:netflix-commons-util:jar:0.3.0:compile
+com.netflix.ribbon:ribbon-core:jar:2.2.5:compile,ASLv2,https://github.com/Netflix/ribbon
+com.netflix.ribbon:ribbon-httpclient:jar:2.2.5:compile,ASLv2,https://github.com/Netflix/ribbon
+com.netflix.ribbon:ribbon-loadbalancer:jar:2.2.5:compile,ASLv2,https://github.com/Netflix/ribbon
+com.netflix.ribbon:ribbon:jar:2.2.5:compile,ASLv2,https://github.com/Netflix/ribbon
+com.netflix.zuul:zuul-core:jar:1.3.1:compile,ASLv2,https://github.com/Netflix/zuul
+com.nimbusds:nimbus-jose-jwt:jar:4.41.2:compile,ASLv2,https://connect2id.com/products/nimbus-jose-jwt
+commons-configuration:commons-configuration:jar:1.8:compile,ASLv2,http://commons.apache.org/
+commons-lang:commons-lang:jar:2.3:compile,ASLv2,http://commons.apache.org/
+io.micrometer:micrometer-core:jar:1.0.3:compile,ASLv2,http://micrometer.io/
+io.reactivex:rxjava-reactive-streams:jar:1.2.1:compile,ASLv2,http://reactivex.io/
+io.reactivex:rxjava:jar:1.2.0:compile,ASLv2,http://reactivex.io/
+io.undertow:undertow-core:jar:1.4.23.Final:compile,ASLv2,http://undertow.io/
+io.undertow:undertow-servlet:jar:1.4.23.Final:compile,ASLv2,http://undertow.io/
+io.undertow:undertow-websockets-jsr:jar:1.4.23.Final:compile,ASLv2,http://undertow.io/
+org.bouncycastle:bcpkix-jdk15on:jar:1.56:compile,MIT,https://www.bouncycastle.org/
+org.bouncycastle:bcprov-jdk15on:jar:1.56:compile,MIT,https://www.bouncycastle.org/
+org.glassfish:javax.el:jar:3.0.0:compile,Common Development and Distribution License (CDDL) v1.0
+org.hdrhistogram:HdrHistogram:jar:2.1.10:compile,BSD 2-clause,http://hdrhistogram.org/
+org.jboss.xnio:xnio-api:jar:3.3.8.Final:compile,ASLv2,http://xnio.jboss.org/
+org.latencyutils:LatencyUtils:jar:2.0.3:compile,BSD 2-clause,http://latencyutils.org/
+org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile,ASLv2,https://spring.io/projects/spring-boot
+org.springframework.boot:spring-boot-actuator:jar:2.0.1.RELEASE:compile,ASLv2,https://spring.io/projects/spring-boot
+org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile,ASLv2,https://spring.io/projects/spring-boot
+org.springframework.boot:spring-boot-starter-undertow:jar:2.0.1.RELEASE:compile,ASLv2,https://spring.io/projects/spring-boot
+org.springframework.cloud:spring-cloud-commons:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-context:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-netflix-archaius:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-netflix-core:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-netflix-ribbon:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-netflix-zuul:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-starter-netflix-archaius:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-starter-netflix-hystrix:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-starter-netflix-ribbon:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-starter-netflix-zuul:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.cloud:spring-cloud-starter:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
+org.springframework.ldap:spring-ldap-core:jar:2.3.2.RELEASE:compile,ASLv2,https://spring.io/projects/spring-ldap
+org.springframework.security:spring-security-crypto:jar:5.0.4.RELEASE:compile,ASLv2,https://spring.io/projects/spring-security
+org.springframework.security:spring-security-ldap:jar:5.0.4.RELEASE:compile,ASLv2,https://spring.io/projects/spring-security
+org.springframework.security:spring-security-rsa:jar:1.0.5.RELEASE:compile,ASLv2,https://spring.io/projects/spring-security
+org.springframework.cloud:spring-cloud-commons:jar:2.0.0.RELEASE:compile,ASLv2,http://projects.spring.io/spring-cloud/
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/ambari/metron-mpack/README.md
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/README.md b/metron-deployment/packaging/ambari/metron-mpack/README.md
index cd9399d..785d20e 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/README.md
+++ b/metron-deployment/packaging/ambari/metron-mpack/README.md
@@ -26,8 +26,6 @@ This allows you to easily install Metron using a simple, guided process. This a
* Installable Metron packages (either RPMs or DEBs) located in a repository on each host at `/localrepo`.
-* A [Node.js](https://nodejs.org/en/download/package-manager/) repository installed on the host running the Management and Alarm UI.
-
### Quick Start
1. Build the Metron MPack. Execute the following command from the project's root directory.
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
index f83d93b..85302a9 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
@@ -422,9 +422,6 @@
<name>metron-rest</name>
</package>
<package>
- <name>nodejs</name>
- </package>
- <package>
<name>metron-config</name>
</package>
<package>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/docker/ansible-docker/Dockerfile
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/ansible-docker/Dockerfile b/metron-deployment/packaging/docker/ansible-docker/Dockerfile
index ebf002a..d5f7d24 100644
--- a/metron-deployment/packaging/docker/ansible-docker/Dockerfile
+++ b/metron-deployment/packaging/docker/ansible-docker/Dockerfile
@@ -58,8 +58,5 @@ RUN yum -y install asciidoc rpm-build rpm2cpio tar unzip xmlto zip rpmlint make
# create a .bashrc for root, enabling the cpp 11 toolset
RUN touch /root/.bashrc \
&& cat '/opt/rh/devtoolset-4/enable' >> /root/.bashrc
-# install node so that the node dependencies can be packaged into the RPMs
-RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
-RUN yum -y install nodejs
WORKDIR /root
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/docker/deb-docker/Dockerfile
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/deb-docker/Dockerfile b/metron-deployment/packaging/docker/deb-docker/Dockerfile
index 44203c6..d4e1f91 100644
--- a/metron-deployment/packaging/docker/deb-docker/Dockerfile
+++ b/metron-deployment/packaging/docker/deb-docker/Dockerfile
@@ -26,8 +26,4 @@ RUN apt-get update && apt-get install -y \
dpkg-dev \
gettext
-# install nodejs so that the node dependencies can be packaged into the DEBs
-RUN curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
-RUN apt-get install -y nodejs
-
WORKDIR /root
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/docker/deb-docker/prepackage/metron-config
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/deb-docker/prepackage/metron-config b/metron-deployment/packaging/docker/deb-docker/prepackage/metron-config
index a5ac74f..90bf183 100644
--- a/metron-deployment/packaging/docker/deb-docker/prepackage/metron-config
+++ b/metron-deployment/packaging/docker/deb-docker/prepackage/metron-config
@@ -27,6 +27,3 @@
# the working directory containing all of the files to
# be packaged will be passed as the only argument to this script.
#
-
-# package the 'production' node dependencies
-npm install --prefix="${PACKAGE_WORKDIR}/${METRON_HOME}/web/expressjs" --only=production
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/docker/rpm-docker/Dockerfile
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/rpm-docker/Dockerfile b/metron-deployment/packaging/docker/rpm-docker/Dockerfile
index a2dae8e..2fd2565 100644
--- a/metron-deployment/packaging/docker/rpm-docker/Dockerfile
+++ b/metron-deployment/packaging/docker/rpm-docker/Dockerfile
@@ -27,7 +27,3 @@ RUN mv apache-maven-3.2.5 /opt/maven
RUN ln -s /opt/maven/bin/mvn /usr/bin/mvn
RUN yum -y install asciidoc rpm-build rpm2cpio tar unzip xmlto zip rpmlint && yum clean all
WORKDIR /root
-
-# install node so that the node dependencies can be packaged into the RPMs
-RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
-RUN yum -y install gcc-c++ make nodejs
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
index 4b88fd0..df712ad 100644
--- a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
+++ b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
@@ -53,10 +53,10 @@ Source6: metron-indexing-%{full_version}-archive.tar.gz
Source7: metron-pcap-backend-%{full_version}-archive.tar.gz
Source8: metron-profiler-%{full_version}-archive.tar.gz
Source9: metron-rest-%{full_version}-archive.tar.gz
-Source10: metron-config-%{full_version}-archive.tar.gz
+Source10: metron-config-host-%{full_version}-archive.tar.gz
Source11: metron-management-%{full_version}-archive.tar.gz
Source12: metron-maas-service-%{full_version}-archive.tar.gz
-Source13: metron-alerts-%{full_version}-archive.tar.gz
+Source13: metron-alerts-host-%{full_version}-archive.tar.gz
Source14: metron-performance-%{full_version}-archive.tar.gz
%description
@@ -77,7 +77,11 @@ rm -rf %{_builddir}/*
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{metron_home}
-mkdir -p %{buildroot}/etc/init.d
+
+# make PID locations for metron uis
+mkdir -p %{buildroot}/var/run/metron-alerts
+mkdir -p %{buildroot}/var/run/metron-config
+mkdir -p %{buildroot}/var/run/metron-rest
# copy source files and untar
tar -xzf %{SOURCE0} -C %{buildroot}%{metron_home}
@@ -96,12 +100,6 @@ tar -xzf %{SOURCE12} -C %{buildroot}%{metron_home}
tar -xzf %{SOURCE13} -C %{buildroot}%{metron_home}
tar -xzf %{SOURCE14} -C %{buildroot}%{metron_home}
-install %{buildroot}%{metron_home}/bin/metron-management-ui %{buildroot}/etc/init.d/
-install %{buildroot}%{metron_home}/bin/metron-alerts-ui %{buildroot}/etc/init.d/
-
-# allows node dependencies to be packaged in the RPMs
-npm install --prefix="%{buildroot}%{metron_home}/web/expressjs" --only=production
-
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%package common
@@ -435,41 +433,12 @@ This package installs the Metron Management UI %{metron_home}
%defattr(-,root,root,755)
%dir %{metron_root}
%dir %{metron_home}
+%dir %{metron_home}/config
%dir %{metron_home}/bin
-%dir %{metron_home}/web
-%dir %{metron_home}/web/expressjs
-%dir %{metron_home}/web/expressjs/node_modules
-%dir %{metron_home}/web/expressjs/node_modules/.bin
-%dir %{metron_home}/web/management-ui
-%dir %{metron_home}/web/management-ui/assets
-%dir %{metron_home}/web/management-ui/assets/ace
-%dir %{metron_home}/web/management-ui/assets/ace/snippets
-%dir %{metron_home}/web/management-ui/assets/fonts
-%dir %{metron_home}/web/management-ui/assets/fonts/Roboto
-%dir %{metron_home}/web/management-ui/assets/images
-%dir %{metron_home}/web/management-ui/license
-%{metron_home}/bin/metron-management-ui
-/etc/init.d/metron-management-ui
-%attr(0755,root,root) %{metron_home}/web/expressjs/node_modules/*
-%attr(0755,root,root) %{metron_home}/web/expressjs/node_modules/.bin/*
-%attr(0755,root,root) %{metron_home}/web/expressjs/server.js
-%attr(0644,root,root) %{metron_home}/web/expressjs/package.json
-%attr(0644,root,root) %{metron_home}/web/management-ui/favicon.ico
-%attr(0644,root,root) %{metron_home}/web/management-ui/index.html
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.js
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.js.gz
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.ttf
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.svg
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.eot
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.woff
-%attr(0644,root,root) %{metron_home}/web/management-ui/*.woff2
-%attr(0644,root,root) %{metron_home}/web/management-ui/assets/ace/*.js
-%attr(0644,root,root) %{metron_home}/web/management-ui/assets/ace/LICENSE
-%attr(0644,root,root) %{metron_home}/web/management-ui/assets/ace/snippets/*.js
-%attr(0644,root,root) %{metron_home}/web/management-ui/assets/fonts/Roboto/LICENSE.txt
-%attr(0644,root,root) %{metron_home}/web/management-ui/assets/fonts/Roboto/*.ttf
-%attr(0644,root,root) %{metron_home}/web/management-ui/assets/images/*
-%attr(0644,root,root) %{metron_home}/web/management-ui/license/*
+%dir %{metron_home}/lib
+%attr(0755,root,root) %{metron_home}/lib/metron-config-host-%{full_version}.jar
+%attr(0755,root,root) %{metron_home}/bin/metron-config.sh
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -504,46 +473,18 @@ This package installs the Metron Alerts UI %{metron_home}
%defattr(-,root,root,755)
%dir %{metron_root}
%dir %{metron_home}
+%dir %{metron_home}/config
%dir %{metron_home}/bin
-%dir %{metron_home}/web
-%dir %{metron_home}/web/alerts-ui
-%dir %{metron_home}/web/alerts-ui/assets
-%dir %{metron_home}/web/alerts-ui/assets/ace
-%dir %{metron_home}/web/alerts-ui/assets/fonts
-%dir %{metron_home}/web/alerts-ui/assets/fonts/Roboto
-%dir %{metron_home}/web/alerts-ui/assets/images
-%{metron_home}/bin/metron-alerts-ui
-/etc/init.d/metron-alerts-ui
-%attr(0755,root,root) %{metron_home}/web/expressjs/alerts-server.js
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/favicon.ico
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/index.html
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.bundle.css
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.js
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.ttf
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.svg
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.jpg
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.eot
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.woff
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/*.woff2
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/3rdpartylicenses.txt
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/ace/*.js
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/ace/LICENSE
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/fonts/font.css
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/fonts/Roboto/LICENSE.txt
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/fonts/Roboto/*.ttf
-%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/images/*
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%dir %{metron_home}/lib
+%attr(0755,root,root) %{metron_home}/lib/metron-alerts-host-%{full_version}.jar
+%attr(0755,root,root) %{metron_home}/bin/metron-alerts.sh
-%post config
-chkconfig --add metron-management-ui
-chkconfig --add metron-alerts-ui
-%preun config
-chkconfig --del metron-management-ui
-chkconfig --del metron-alerts-ui
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%changelog
+* Thu Jul 19 2018 Apache Metron <de...@metron.apache.org> - 0.5.1
+- Added new UI hosting methods
* Thu Feb 1 2018 Apache Metron <de...@metron.apache.org> - 0.4.3
- Add Solr install script to Solr RPM
* Tue Sep 25 2017 Apache Metron <de...@metron.apache.org> - 0.4.2
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-deployment/packaging/docker/rpm-docker/pom.xml
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/rpm-docker/pom.xml b/metron-deployment/packaging/docker/rpm-docker/pom.xml
index ba57079..878f55a 100644
--- a/metron-deployment/packaging/docker/rpm-docker/pom.xml
+++ b/metron-deployment/packaging/docker/rpm-docker/pom.xml
@@ -174,7 +174,7 @@
</includes>
</resource>
<resource>
- <directory>${metron_dir}/metron-interface/metron-config/target/</directory>
+ <directory>${metron_dir}/metron-interface/metron-config-host/target/</directory>
<includes>
<include>*.tar.gz</include>
</includes>
@@ -186,7 +186,7 @@
</includes>
</resource>
<resource>
- <directory>${metron_dir}/metron-interface/metron-alerts/target/</directory>
+ <directory>${metron_dir}/metron-interface/metron-alerts-host/target/</directory>
<includes>
<include>*.tar.gz</include>
</includes>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts-host/.gitignore
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts-host/.gitignore b/metron-interface/metron-alerts-host/.gitignore
new file mode 100644
index 0000000..e0dea38
--- /dev/null
+++ b/metron-interface/metron-alerts-host/.gitignore
@@ -0,0 +1,24 @@
+/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/build/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts-host/pom.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts-host/pom.xml b/metron-interface/metron-alerts-host/pom.xml
new file mode 100644
index 0000000..aa2ba1b
--- /dev/null
+++ b/metron-interface/metron-alerts-host/pom.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.metron.ui</groupId>
+ <artifactId>metron-alerts-host</artifactId>
+ <packaging>jar</packaging>
+
+ <name>Metron Alerts UI Host</name>
+ <description>Spring Server to run frontend</description>
+
+ <parent>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-interface</artifactId>
+ <version>0.5.1</version>
+ </parent>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>1.8</java.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-alerts</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-ui-host</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+
+ </dependencies>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-dependencies</artifactId>
+ <version>${spring-cloud.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <!-- Import dependency management from Spring Boot -->
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring.boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring.boot.version}</version>
+ <configuration>
+ <executable>true</executable>
+ <mainClass>org.apache.metron.ui.AlertsApplication</mainClass>
+ <embeddedLaunchScriptProperties>
+ <initInfoProvides>metron-alerts</initInfoProvides>
+ <initInfoDescription>Metron Alerts UI server</initInfoDescription>
+ <initInfoShortDescription>Metron Alerts</initInfoShortDescription>
+ </embeddedLaunchScriptProperties>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack-shared-resources</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
+ <includeArtifacIds>shared-resources</includeArtifacIds>
+ <includeGroupIds>${project.groupId}</includeGroupIds>
+ <excludeTransitive>true</excludeTransitive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptor>src/main/assembly/assembly.xml</descriptor>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts-host/src/main/assembly/assembly.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts-host/src/main/assembly/assembly.xml b/metron-interface/metron-alerts-host/src/main/assembly/assembly.xml
new file mode 100644
index 0000000..1377f60
--- /dev/null
+++ b/metron-interface/metron-alerts-host/src/main/assembly/assembly.xml
@@ -0,0 +1,39 @@
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+
+<assembly>
+ <id>archive</id>
+ <formats>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>${project.basedir}/target</directory>
+ <includes>
+ <include>${project.artifactId}-${project.version}.jar</include>
+ </includes>
+ <outputDirectory>lib</outputDirectory>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/src/main/scripts</directory>
+ <includes>
+ <include>metron-alerts.sh</include>
+ </includes>
+ <outputDirectory>bin</outputDirectory>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ <filtered>true</filtered>
+ </fileSet>
+ </fileSets>
+</assembly>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts-host/src/main/java/org/apache/metron/ui/AlertsApplication.java
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts-host/src/main/java/org/apache/metron/ui/AlertsApplication.java b/metron-interface/metron-alerts-host/src/main/java/org/apache/metron/ui/AlertsApplication.java
new file mode 100644
index 0000000..8423dcc
--- /dev/null
+++ b/metron-interface/metron-alerts-host/src/main/java/org/apache/metron/ui/AlertsApplication.java
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.metron.ui;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
+
+@SpringBootApplication
+@ComponentScans(
+ value = {@ComponentScan, @ComponentScan(basePackageClasses = MetronSecurityConfig.class)})
+public class AlertsApplication extends AbstractHostApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(AlertsApplication.class, args);
+ }
+}
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts-host/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts-host/src/main/resources/application.yml b/metron-interface/metron-alerts-host/src/main/resources/application.yml
new file mode 100644
index 0000000..3eb9045
--- /dev/null
+++ b/metron-interface/metron-alerts-host/src/main/resources/application.yml
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+metron:
+ version: ${project.version}
+
+server:
+ session:
+ cookie:
+ secure: false
+ name: METRONUISESSION
+
+zuul:
+ routes:
+ rest:
+ path: /api/v1/**
+ url: http://localhost:8082/api/v1/
+ sensitiveHeaders: Cookie,Set-Cookie
+
+proxy:
+ auth:
+ routes:
+ rest: passthru
+
+ribbon:
+ ConnectTimeout: 3000
+ ReadTimeout: 60000
+
+
+ldap:
+ provider:
+ url: ldap://localhost:33389
+ userdn: uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
+ password: admin-password
+ user:
+ dn.patterns: uid={0},ou=people,dc=hadoop,dc=apache,dc=org
+ passwordAttribute: userPassword
+ searchBase: ou=people,dc=hadoop,dc=apache,dc=org
+ searchFilter: ""
+ group:
+ searchBase: ou=groups,dc=hadoop,dc=apache,dc=org
+ searchFilter: "member={0}"
+ roleAttribute: "cn"
+
+knox:
+ sso:
+ url: ''
+ pubkey: ''
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts-host/src/main/scripts/metron-alerts.sh
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts-host/src/main/scripts/metron-alerts.sh b/metron-interface/metron-alerts-host/src/main/scripts/metron-alerts.sh
new file mode 100644
index 0000000..a171cff
--- /dev/null
+++ b/metron-interface/metron-alerts-host/src/main/scripts/metron-alerts.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+if [ -z "${METRON_SSL_PASSWORD}" ]; then
+ echo "METRON_SSL_PASSWORD unset."
+fi
+
+METRON_VERSION=${project.version}
+METRON_HOME="${METRON_HOME:-/usr/metron/${METRON_VERSION}}"
+METRON_SYSCONFIG="${METRON_SYSCONFIG:-/etc/default/metron}"
+
+echo "METRON_VERSION=${METRON_VERSION}"
+echo "METRON_HOME=${METRON_HOME}"
+echo "METRON_SYSCONFIG=${METRON_SYSCONFIG}"
+
+if [ -f "$METRON_SYSCONFIG" ]; then
+ echo "METRON_SYSCONFIG=${METRON_SYSCONFIG}"
+ set -a
+ . "$METRON_SYSCONFIG"
+fi
+
+echo "METRON_SPRING_PROFILES_ACTIVE=${METRON_SPRING_PROFILES_ACTIVE}"
+
+METRON_CONFIG_LOCATION=" --spring.config.location=classpath:/application.yml,$METRON_HOME/config/alerts_ui.yml"
+echo "METRON_CONFIG_LOCATION=${METRON_CONFIG_LOCATION}"
+METRON_SPRING_OPTIONS+=${METRON_CONFIG_LOCATION}
+
+# Find the metron alerts jar
+files=( "${METRON_HOME}/lib/metron-alerts-host-*.jar" )
+echo "Default metron-alerts-host jar is: ${files[0]}"
+APP_JAR="${files[0]}"
+
+export CONF_FOLDER=$METHRON_HOME/config
+export LOG_FOLDER=/var/log/metron/
+export PID_FOLDER=/var/run/metron/
+export RUN_ARGS=$METRON_SPRING_OPTIONS
+export APP_NAME=metron-alerts
+export MODE=service
+${APP_JAR} $1
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts/.gitignore
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/.gitignore b/metron-interface/metron-alerts/.gitignore
index 703c7a9..de23844 100644
--- a/metron-interface/metron-alerts/.gitignore
+++ b/metron-interface/metron-alerts/.gitignore
@@ -4,3 +4,6 @@ metron-alerts.iml
node_modules/
/dist/
coverage
+
+# Build Files
+bin/
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts/assembly.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/assembly.xml b/metron-interface/metron-alerts/assembly.xml
deleted file mode 100644
index f392a66..0000000
--- a/metron-interface/metron-alerts/assembly.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<!--
- Licensed to the Apache Software
- Foundation (ASF) under one or more contributor license agreements. See the
- NOTICE file distributed with this work for additional information regarding
- copyright ownership. The ASF licenses this file to You under the Apache License,
- Version 2.0 (the "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed
- under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
- OR CONDITIONS OF ANY KIND, either express or implied. See the License for
- the specific language governing permissions and limitations under the License.
- -->
-
-<assembly>
- <id>archive</id>
- <formats>
- <format>tar.gz</format>
- </formats>
- <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${project.basedir}/dist</directory>
- <outputDirectory>/web/alerts-ui</outputDirectory>
- <excludes>
- <exclude>**/.npmignore</exclude>
- </excludes>
- <fileMode>0644</fileMode>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/scripts</directory>
- <outputDirectory>web/expressjs</outputDirectory>
- <includes>
- <include>alerts-server.js</include>
- </includes>
- <fileMode>0644</fileMode>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/scripts</directory>
- <outputDirectory>bin</outputDirectory>
- <useDefaultExcludes>true</useDefaultExcludes>
- <includes>
- <include>metron-alerts-ui</include>
- </includes>
- <fileMode>0755</fileMode>
- <lineEnding>unix</lineEnding>
- <filtered>true</filtered>
- </fileSet>
- </fileSets>
- <files>
- <file>
- <source>src/favicon.ico</source>
- <outputDirectory>/web/alerts-ui</outputDirectory>
- </file>
- </files>
-</assembly>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts/pom.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/pom.xml b/metron-interface/metron-alerts/pom.xml
index e7706b3..b47f241 100644
--- a/metron-interface/metron-alerts/pom.xml
+++ b/metron-interface/metron-alerts/pom.xml
@@ -31,6 +31,12 @@
<dependencies>
</dependencies>
<build>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>public</targetPath>
+ </resource>
+ </resources>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
@@ -97,21 +103,6 @@
</configuration>
</plugin>
<plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptor>assembly.xml</descriptor>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id> <!-- this is used for inheritance merges -->
- <phase>package</phase> <!-- bind to the packaging phase -->
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts/scripts/alerts-server.js
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/scripts/alerts-server.js b/metron-interface/metron-alerts/scripts/alerts-server.js
deleted file mode 100644
index 716f37b..0000000
--- a/metron-interface/metron-alerts/scripts/alerts-server.js
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env node
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var os = require('os');
-var app = require('express')();
-var path = require('path');
-var compression = require('compression');
-var serveStatic = require('serve-static');
-var favicon = require('serve-favicon');
-var proxy = require('http-proxy-middleware');
-var argv = require('optimist')
- .demand(['c'])
- .alias('c', 'config_file')
- .usage('Usage: alerts-server.js -c [config_file]')
- .describe('c', 'Path to alerts_ui.yml')
- .argv;
-var YAML = require('yamljs');
-
-var metronUIAddress = '';
-var ifaces = os.networkInterfaces();
-var uiConfig = YAML.load(argv.c);
-
-Object.keys(ifaces).forEach(function (dev) {
- ifaces[dev].forEach(function (details) {
- if (details.family === 'IPv4') {
- metronUIAddress += '\n';
- metronUIAddress += 'http://' + details.address + ':' + uiConfig.port;
- }
- });
-});
-
-function setCustomCacheControl (res, path) {
- if (serveStatic.mime.lookup(path) === 'text/html') {
- res.setHeader('Cache-Control', 'public, max-age=10')
- }
- res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
-}
-
-app.use(compression());
-
-var restUrl = 'http://' + uiConfig.rest.host + ':' + uiConfig.rest.port;
-app.use('/api/v1', proxy(restUrl));
-app.use('/logout', proxy(restUrl));
-
-app.use(favicon(path.join(__dirname, '../alerts-ui/favicon.ico')));
-
-app.use(serveStatic(path.join(__dirname, '../alerts-ui'), {
- maxAge: '1d',
- setHeaders: setCustomCacheControl
-}));
-
-app.get('*', function(req, res){
- res.sendFile(path.join(__dirname, '../alerts-ui/index.html'));
-});
-
-app.listen(uiConfig.port, function(){
- console.log("Metron alerts ui is listening on " + metronUIAddress);
-});
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts/scripts/metron-alerts-ui
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/scripts/metron-alerts-ui b/metron-interface/metron-alerts/scripts/metron-alerts-ui
deleted file mode 100644
index bb8e67c..0000000
--- a/metron-interface/metron-alerts/scripts/metron-alerts-ui
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# metron alerts UI service
-# chkconfig: - 20 80
-# description: Alerts UI
-# processname: metron-alerts-ui
-#
-
-# all LSB compliant distributions provide the following
-# http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/iniscrptfunc.html
-if [ -f /lib/lsb/init-functions ]; then
- . /lib/lsb/init-functions
-fi
-
-NAME=metron-alerts-ui
-DESC="Metron Alerts UI"
-METRON_VERSION=${project.version}
-METRON_HOME=/usr/metron/$METRON_VERSION
-METRON_LOG_DIR="/var/log/metron"
-METRON_PID_DIR="/var/run/metron"
-METRON_USER="metron"
-METRON_GROUP="metron"
-METRON_SYSCONFIG="/etc/default/metron"
-if [ -f "$METRON_SYSCONFIG" ]; then
- set -a
- . "$METRON_SYSCONFIG"
-fi
-
-PIDFILE="$METRON_PID_DIR/$NAME.pid"
-
-DAEMON="node $METRON_HOME/web/expressjs/alerts-server.js -c $METRON_HOME/config/alerts_ui.yml"
-
-#
-# start the rest application
-#
-start() {
-
- # if pidfile exists, do not start another
- if [ -f $PIDFILE ]; then
- PID=`cat $PIDFILE`
- printf "OK [$PID]\n"
- return
- fi
-
- if [ ! -d "$METRON_LOG_DIR" ]; then
- mkdir -p "$METRON_LOG_DIR" && chown "$METRON_USER":"$METRON_GROUP" "$METRON_LOG_DIR"
- fi
-
- if [ ! -d "$METRON_PID_DIR" ]; then
- mkdir -p "$METRON_PID_DIR" && chown "$METRON_USER":"$METRON_GROUP" "$METRON_PID_DIR"
- fi
-
- # kick-off the daemon
- CMD="$DAEMON >> $METRON_LOG_DIR/$NAME.log 2>&1 & echo \$!"
- PID=`su -c "$CMD" $METRON_USER`
-
- if [ -z $PID ]; then
- printf "Fail\n"
- else
- echo $PID > $PIDFILE
- printf "Ok [$PID]\n"
- fi
-}
-
-#
-# stop the rest application
-#
-stop() {
- if [ -f $PIDFILE ]; then
- PID=`cat $PIDFILE`
- while sleep 1
- echo -n "."
- kill -0 $PID >/dev/null 2>&1
- do
- kill $PID
- done
- rm -f $PIDFILE
- printf "%s\n" "Ok"
- else
- printf "%s\n" "Not running"
- fi
-}
-
-#
-# status check of the rest application
-#
-status() {
- if [ -f $PIDFILE ]; then
- PID=`cat $PIDFILE`
- if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
- printf "%s\n" "Process dead but pidfile exists"
- else
- echo "Running"
- fi
- else
- printf "%s\n" "Service not running"
- fi
-}
-
-case "$1" in
-
- ##############################################################################
- # start
- #
- start)
- printf "%-50s \n" "Starting $NAME..."
- start
- ;;
-
- ##############################################################################
- # status
- #
- status)
- printf "%-50s \n" "Checking $NAME..."
- status
- ;;
-
- ##############################################################################
- # stop
- #
- stop)
- printf "%-50s \n" "Stopping $NAME..."
- stop
- ;;
-
- ##############################################################################
- # restart
- #
- restart)
- $0 stop
- $0 start
- ;;
-
- ##############################################################################
- # reload
- #
- reload)
- ;;
-
- *)
- echo "Usage: $0 {status|start|stop|restart}"
- exit 1
-esac
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-alerts/scripts/package.json
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/scripts/package.json b/metron-interface/metron-alerts/scripts/package.json
deleted file mode 100644
index d41da81..0000000
--- a/metron-interface/metron-alerts/scripts/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "metron-alerts-ui-web-server",
- "version": "0.4.0",
- "description": "Metron alerts ui web server",
- "main": "server.js",
- "dependencies": {
- "compression": "1.6.2",
- "express": "4.15.2",
- "http-proxy-middleware": "0.17.4",
- "optimist": "0.6.1",
- "serve-favicon": "2.4.2",
- "serve-static": "1.12.1"
- },
- "devDependencies": {},
- "scripts": {
- "start": "node server.js"
- },
- "private": true,
- "author": "",
- "license": "Apache 2.0"
-}
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config-host/pom.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config-host/pom.xml b/metron-interface/metron-config-host/pom.xml
new file mode 100644
index 0000000..f51692b
--- /dev/null
+++ b/metron-interface/metron-config-host/pom.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.metron.ui</groupId>
+ <artifactId>metron-config-host</artifactId>
+ <packaging>jar</packaging>
+
+ <name>Metron Config UI Host</name>
+ <description>Spring Server to host config ui</description>
+
+ <parent>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-interface</artifactId>
+ <version>0.5.1</version>
+ </parent>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>1.8</java.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-config</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-ui-host</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ </dependencies>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-dependencies</artifactId>
+ <version>${spring-cloud.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <!-- Import dependency management from Spring Boot -->
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring.boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring.boot.version}</version>
+ <configuration>
+ <executable>true</executable>
+ <mainClass>org.apache.metron.ui.ConfigApplication</mainClass>
+ <embeddedLaunchScriptProperties>
+ <initInfoProvides>metron-config</initInfoProvides>
+ <initInfoDescription>Metron Management UI server</initInfoDescription>
+ <initInfoShortDescription>Metron Management</initInfoShortDescription>
+ </embeddedLaunchScriptProperties>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack-shared-resources</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
+ <includeArtifacIds>shared-resources</includeArtifacIds>
+ <includeGroupIds>${project.groupId}</includeGroupIds>
+ <excludeTransitive>true</excludeTransitive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptor>src/main/assembly/assembly.xml</descriptor>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config-host/src/main/assembly/assembly.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config-host/src/main/assembly/assembly.xml b/metron-interface/metron-config-host/src/main/assembly/assembly.xml
new file mode 100644
index 0000000..e20c39f
--- /dev/null
+++ b/metron-interface/metron-config-host/src/main/assembly/assembly.xml
@@ -0,0 +1,39 @@
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+
+<assembly>
+ <id>archive</id>
+ <formats>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>${project.basedir}/target</directory>
+ <includes>
+ <include>${project.artifactId}-${project.version}.jar</include>
+ </includes>
+ <outputDirectory>lib</outputDirectory>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/src/main/scripts</directory>
+ <includes>
+ <include>metron-config.sh</include>
+ </includes>
+ <outputDirectory>bin</outputDirectory>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ <filtered>true</filtered>
+ </fileSet>
+ </fileSets>
+</assembly>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config-host/src/main/java/org/apache/metron/ui/ConfigApplication.java
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config-host/src/main/java/org/apache/metron/ui/ConfigApplication.java b/metron-interface/metron-config-host/src/main/java/org/apache/metron/ui/ConfigApplication.java
new file mode 100644
index 0000000..d769be3
--- /dev/null
+++ b/metron-interface/metron-config-host/src/main/java/org/apache/metron/ui/ConfigApplication.java
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.metron.ui;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
+
+@SpringBootApplication
+@ComponentScans(value = { @ComponentScan, @ComponentScan(basePackageClasses = MetronSecurityConfig.class) })
+public class ConfigApplication extends AbstractHostApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(ConfigApplication.class, args);
+ }
+}
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config-host/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config-host/src/main/resources/application.yml b/metron-interface/metron-config-host/src/main/resources/application.yml
new file mode 100644
index 0000000..906b739
--- /dev/null
+++ b/metron-interface/metron-config-host/src/main/resources/application.yml
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+metron:
+ version: 0.5.0
+
+logging:
+ level:
+ root: INFO
+
+server:
+ port: 4200
+
+zuul:
+ routes:
+ rest:
+ path: /api/v1/**
+ url: http://localhost:8082/api/v1
+
+ribbon:
+ ConnectTimeout: 3000
+ ReadTimeout: 60000
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config-host/src/main/scripts/metron-config.sh
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config-host/src/main/scripts/metron-config.sh b/metron-interface/metron-config-host/src/main/scripts/metron-config.sh
new file mode 100644
index 0000000..5d4d72a
--- /dev/null
+++ b/metron-interface/metron-config-host/src/main/scripts/metron-config.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+if [ -z "${METRON_SSL_PASSWORD}" ]; then
+ echo "METRON_SSL_PASSWORD unset."
+fi
+
+METRON_VERSION=${project.version}
+METRON_HOME="${METRON_HOME:-/usr/metron/${METRON_VERSION}}"
+METRON_SYSCONFIG="${METRON_SYSCONFIG:-/etc/default/metron}"
+
+echo "METRON_VERSION=${METRON_VERSION}"
+echo "METRON_HOME=${METRON_HOME}"
+echo "METRON_SYSCONFIG=${METRON_SYSCONFIG}"
+
+if [ -f "$METRON_SYSCONFIG" ]; then
+ echo "METRON_SYSCONFIG=${METRON_SYSCONFIG}"
+ set -a
+ . "$METRON_SYSCONFIG"
+fi
+
+echo "METRON_SPRING_PROFILES_ACTIVE=${METRON_SPRING_PROFILES_ACTIVE}"
+
+METRON_CONFIG_LOCATION=" --spring.config.location=classpath:/application.yml,$METRON_HOME/config/config_ui.yml"
+echo "METRON_CONFIG_LOCATION=${METRON_CONFIG_LOCATION}"
+METRON_SPRING_OPTIONS+=${METRON_CONFIG_LOCATION}
+
+# Find the metron alerts jar
+files=( "${METRON_HOME}/lib/metron-config-host-*.jar" )
+echo "Default metron-alerts-host jar is: ${files[0]}"
+APP_JAR="${files[0]}"
+
+export CONF_FOLDER=$METHRON_HOME/config
+export LOG_FOLDER=/var/log/metron/
+export PID_FOLDER=/var/run/metron/
+export RUN_ARGS=$METRON_SPRING_OPTIONS
+export APP_NAME=metron-config
+export MODE=service
+${APP_JAR} $1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config/.gitignore
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/.gitignore b/metron-interface/metron-config/.gitignore
index 4be186c..82c2d7a 100644
--- a/metron-interface/metron-config/.gitignore
+++ b/metron-interface/metron-config/.gitignore
@@ -40,3 +40,6 @@ testem.log
#System Files
.DS_Store
Thumbs.db
+
+# Build Files
+bin/
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config/assembly.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/assembly.xml b/metron-interface/metron-config/assembly.xml
deleted file mode 100644
index c07fbd6..0000000
--- a/metron-interface/metron-config/assembly.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--
- Licensed to the Apache Software
- Foundation (ASF) under one or more contributor license agreements. See the
- NOTICE file distributed with this work for additional information regarding
- copyright ownership. The ASF licenses this file to You under the Apache License,
- Version 2.0 (the "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed
- under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
- OR CONDITIONS OF ANY KIND, either express or implied. See the License for
- the specific language governing permissions and limitations under the License.
- -->
-
-<assembly>
- <id>archive</id>
- <formats>
- <format>tar.gz</format>
- </formats>
- <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${project.basedir}/dist</directory>
- <outputDirectory>web/management-ui</outputDirectory>
- <excludes>
- <exclude>**/.npmignore</exclude>
- </excludes>
- <fileMode>0644</fileMode>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/scripts</directory>
- <outputDirectory>web/expressjs</outputDirectory>
- <includes>
- <include>package.json</include>
- <include>server.js</include>
- </includes>
- <fileMode>0644</fileMode>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/scripts</directory>
- <outputDirectory>bin</outputDirectory>
- <useDefaultExcludes>true</useDefaultExcludes>
- <includes>
- <include>metron-management-ui</include>
- </includes>
- <fileMode>0755</fileMode>
- <lineEnding>unix</lineEnding>
- <filtered>true</filtered>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}</directory>
- <outputDirectory>web/management-ui/license</outputDirectory>
- <includes>
- <include>LICENSE</include>
- <include>NOTICE</include>
- </includes>
- <fileMode>0644</fileMode>
- </fileSet>
- </fileSets>
- <files>
- <file>
- <source>src/favicon.ico</source>
- <outputDirectory>web/management-ui</outputDirectory>
- </file>
- </files>
-</assembly>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config/pom.xml
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/pom.xml b/metron-interface/metron-config/pom.xml
index 14acdc6..e48515b 100644
--- a/metron-interface/metron-config/pom.xml
+++ b/metron-interface/metron-config/pom.xml
@@ -12,133 +12,123 @@
the specific language governing permissions and limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.metron</groupId>
- <artifactId>metron-interface</artifactId>
- <version>0.5.1</version>
- </parent>
- <artifactId>metron-config</artifactId>
- <url>https://metron.apache.org/</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <node.version>v6.2.0</node.version>
- <npm.version>3.8.9</npm.version>
- </properties>
- <dependencies>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.github.eirslett</groupId>
- <artifactId>frontend-maven-plugin</artifactId>
- <version>1.3</version>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.metron</groupId>
+ <artifactId>metron-interface</artifactId>
+ <version>0.5.1</version>
+ </parent>
+ <artifactId>metron-config</artifactId>
+ <url>https://metron.apache.org/</url>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <node.version>v7.10.0</node.version>
+ <npm.version>4.2.0</npm.version>
+ </properties>
+ <dependencies>
+ </dependencies>
+ <build>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>public</targetPath>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>com.github.eirslett</groupId>
+ <artifactId>frontend-maven-plugin</artifactId>
+ <version>1.3</version>
+ <configuration>
+ <workingDirectory>./</workingDirectory>
+ <nodeVersion>${node.version}</nodeVersion>
+ <npmVersion>${npm.version}</npmVersion>
+ <npmInheritsProxyConfigFromMaven>false</npmInheritsProxyConfigFromMaven>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <id>install node and npm</id>
+ <goals>
+ <goal>install-node-and-npm</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>generate-resources</phase>
+ <id>npm install</id>
+ <goals>
+ <goal>npm</goal>
+ </goals>
+ <configuration>
+ <arguments>install</arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <phase>generate-resources</phase>
+ <id>ng build</id>
+ <goals>
+ <goal>npm</goal>
+ </goals>
<configuration>
- <workingDirectory>./</workingDirectory>
- <nodeVersion>${node.version}</nodeVersion>
- <npmVersion>${npm.version}</npmVersion>
- <npmInheritsProxyConfigFromMaven>false</npmInheritsProxyConfigFromMaven>
+ <arguments>run build</arguments>
</configuration>
- <executions>
- <execution>
- <phase>generate-resources</phase>
- <id>install node and npm</id>
- <goals>
- <goal>install-node-and-npm</goal>
- </goals>
- </execution>
- <execution>
- <phase>generate-resources</phase>
- <id>npm install</id>
- <goals>
- <goal>npm</goal>
- </goals>
- <configuration>
- <arguments>install</arguments>
- </configuration>
- </execution>
- <execution>
- <phase>generate-resources</phase>
- <id>ng build</id>
- <goals>
- <goal>npm</goal>
- </goals>
- <configuration>
- <arguments>run build</arguments>
- </configuration>
- </execution>
- <execution>
- <id>npm test</id>
- <goals>
- <goal>npm</goal>
- </goals>
- <phase>test</phase>
- <configuration>
- <arguments>test</arguments>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>3.0.0</version>
+ </execution>
+ <execution>
+ <id>npm test</id>
+ <goals>
+ <goal>npm</goal>
+ </goals>
+ <phase>test</phase>
<configuration>
- <filesets>
- <fileset>
- <directory>coverage</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
- <fileset>
- <directory>dist</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
- <fileset>
- <directory>node</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
- <fileset>
- <directory>node_modules</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
- </filesets>
+ <arguments>test</arguments>
</configuration>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>coverage</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ <fileset>
+ <directory>dist</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ <fileset>
+ <directory>node</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ <fileset>
+ <directory>node_modules</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.5.0</version>
+ <executions>
+ <execution>
+ <id>prepend-license-header</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
<configuration>
- <descriptor>assembly.xml</descriptor>
+ <executable>./scripts/prepend_license_header.sh</executable>
</configuration>
- <executions>
- <execution>
- <id>make-assembly</id> <!-- this is used for inheritance merges -->
- <phase>package</phase> <!-- bind to the packaging phase -->
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>exec-maven-plugin</artifactId>
- <version>1.5.0</version>
- <executions>
- <execution>
- <id>prepend-license-header</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <executable>./scripts/prepend_license_header.sh</executable>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config/scripts/metron-management-ui
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/scripts/metron-management-ui b/metron-interface/metron-config/scripts/metron-management-ui
deleted file mode 100644
index 76b9be8..0000000
--- a/metron-interface/metron-config/scripts/metron-management-ui
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# metron management UI service
-# chkconfig: - 20 80
-# description: Management UI
-# processname: metron-management-ui
-#
-
-# all LSB compliant distributions provide the following
-# http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/iniscrptfunc.html
-if [ -f /lib/lsb/init-functions ]; then
- . /lib/lsb/init-functions
-fi
-
-NAME=metron-management-ui
-DESC="Metron Management UI"
-METRON_VERSION=${project.version}
-METRON_HOME=/usr/metron/$METRON_VERSION
-METRON_LOG_DIR="/var/log/metron"
-METRON_PID_DIR="/var/run/metron"
-METRON_USER="metron"
-METRON_GROUP="metron"
-METRON_SYSCONFIG="/etc/default/metron"
-if [ -f "$METRON_SYSCONFIG" ]; then
- set -a
- . "$METRON_SYSCONFIG"
-fi
-
-PIDFILE="$METRON_PID_DIR/$NAME.pid"
-
-DAEMON="node $METRON_HOME/web/expressjs/server.js -c $METRON_HOME/config/management_ui.yml"
-
-#
-# start the rest application
-#
-start() {
-
- # if pidfile exists, do not start another
- if [ -f $PIDFILE ]; then
- PID=`cat $PIDFILE`
- printf "OK [$PID]\n"
- return
- fi
-
- if [ ! -d "$METRON_LOG_DIR" ]; then
- mkdir -p "$METRON_LOG_DIR" && chown "$METRON_USER":"$METRON_GROUP" "$METRON_LOG_DIR"
- fi
-
- if [ ! -d "$METRON_PID_DIR" ]; then
- mkdir -p "$METRON_PID_DIR" && chown "$METRON_USER":"$METRON_GROUP" "$METRON_PID_DIR"
- fi
-
- # kick-off the daemon
- CMD="$DAEMON >> $METRON_LOG_DIR/$NAME.log 2>&1 & echo \$!"
- PID=`su -c "$CMD" $METRON_USER`
-
- if [ -z $PID ]; then
- printf "Fail\n"
- else
- echo $PID > $PIDFILE
- printf "Ok [$PID]\n"
- fi
-}
-
-#
-# stop the rest application
-#
-stop() {
- if [ -f $PIDFILE ]; then
- PID=`cat $PIDFILE`
- while sleep 1
- echo -n "."
- kill -0 $PID >/dev/null 2>&1
- do
- kill $PID
- done
- rm -f $PIDFILE
- printf "%s\n" "Ok"
- else
- printf "%s\n" "Not running"
- fi
-}
-
-#
-# status check of the rest application
-#
-status() {
- if [ -f $PIDFILE ]; then
- PID=`cat $PIDFILE`
- if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
- printf "%s\n" "Process dead but pidfile exists"
- else
- echo "Running"
- fi
- else
- printf "%s\n" "Service not running"
- fi
-}
-
-case "$1" in
-
- ##############################################################################
- # start
- #
- start)
- printf "%-50s \n" "Starting $NAME..."
- start
- ;;
-
- ##############################################################################
- # status
- #
- status)
- printf "%-50s \n" "Checking $NAME..."
- status
- ;;
-
- ##############################################################################
- # stop
- #
- stop)
- printf "%-50s \n" "Stopping $NAME..."
- stop
- ;;
-
- ##############################################################################
- # restart
- #
- restart)
- $0 stop
- $0 start
- ;;
-
- ##############################################################################
- # reload
- #
- reload)
- ;;
-
- *)
- echo "Usage: $0 {status|start|stop|restart}"
- exit 1
-esac
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config/scripts/package.json
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/scripts/package.json b/metron-interface/metron-config/scripts/package.json
deleted file mode 100644
index 24d17e0..0000000
--- a/metron-interface/metron-config/scripts/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "metron-management-ui-web-server",
- "version": "0.5.1",
- "description": "Metron management ui web server",
- "main": "server.js",
- "dependencies": {
- "compression": "1.6.2",
- "express": "4.15.2",
- "http-proxy-middleware": "0.17.4",
- "optimist": "0.6.1",
- "serve-favicon": "2.4.2",
- "serve-static": "1.12.1",
- "yamljs": "0.2.9"
- },
- "devDependencies": {},
- "scripts": {
- "start": "node server.js"
- },
- "private": true,
- "author": "",
- "license": "Apache-2.0"
-}
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-config/scripts/server.js
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/scripts/server.js b/metron-interface/metron-config/scripts/server.js
deleted file mode 100755
index 7c8ee9e..0000000
--- a/metron-interface/metron-config/scripts/server.js
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env node
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var os = require('os');
-var app = require('express')();
-var path = require('path');
-var compression = require('compression');
-var serveStatic = require('serve-static');
-var favicon = require('serve-favicon');
-var proxy = require('http-proxy-middleware');
-var argv = require('optimist')
- .demand(['c'])
- .alias('c', 'config_file')
- .usage('Usage: server.js -c [config_file]')
- .describe('c', 'Path to management_ui.yml')
- .argv;
-var YAML = require('yamljs');
-
-var metronUIAddress = '';
-var ifaces = os.networkInterfaces();
-var uiConfig = YAML.load(argv.c);
-
-Object.keys(ifaces).forEach(function (dev) {
- ifaces[dev].forEach(function (details) {
- if (details.family === 'IPv4') {
- metronUIAddress += '\n';
- metronUIAddress += 'http://' + details.address + ':' + uiConfig.port;
- }
- });
-});
-
-function setCustomCacheControl (res, path) {
- if (serveStatic.mime.lookup(path) === 'text/html') {
- res.setHeader('Cache-Control', 'public, max-age=10')
- }
- res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
-}
-
-app.use(compression());
-
-var restUrl = 'http://' + uiConfig.rest.host + ':' + uiConfig.rest.port;
-app.use('/api/v1', proxy(restUrl));
-app.use('/logout', proxy(restUrl));
-
-app.use(favicon(path.join(__dirname, '../management-ui/favicon.ico')));
-
-app.use(serveStatic(path.join(__dirname, '../management-ui'), {
- maxAge: '1d',
- setHeaders: setCustomCacheControl
-}));
-
-app.get('*', function(req, res){
- res.sendFile(path.join(__dirname, '../management-ui/index.html'));
-});
-
-app.listen(uiConfig.port, function(){
- console.log("Metron server listening on " + metronUIAddress);
-});