Compare commits
7 Commits
97ac9b0c4b
...
efbd25c2a6
Author | SHA1 | Date | |
---|---|---|---|
efbd25c2a6 | |||
4d575579cd | |||
a984d4800f | |||
43d91b9bd1 | |||
3544104196 | |||
89e9aefc69 | |||
433cdd3f56 |
@ -1,10 +0,0 @@
|
|||||||
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
|
|
||||||
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
|
|
||||||
--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
|
|
||||||
--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
|
|
File diff suppressed because it is too large
Load Diff
177
pom.xml
177
pom.xml
@ -25,7 +25,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.graylog.plugins</groupId>
|
<groupId>org.graylog.plugins</groupId>
|
||||||
<artifactId>graylog-plugin-web-parent</artifactId>
|
<artifactId>graylog-plugin-web-parent</artifactId>
|
||||||
<version>5.0.0</version>
|
<version>6.0.0</version>
|
||||||
<relativePath>../graylog2-server/graylog-plugin-parent/graylog-plugin-web-parent</relativePath>
|
<relativePath>../graylog2-server/graylog-plugin-parent/graylog-plugin-web-parent</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -54,56 +54,69 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.source>17</maven.compiler.source>
|
<maven.compiler.release>11</maven.compiler.release>
|
||||||
<maven.compiler.target>17</maven.compiler.target>
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<maven.compiler.useIncrementalCompilation>false</maven.compiler.useIncrementalCompilation>
|
||||||
|
|
||||||
<!-- Plugins will not be deployed by default - set to `false` if you actually want to deploy it -->
|
<!-- Plugins will not be deployed by default - set to `false` if you actually want to deploy it -->
|
||||||
<maven.deploy.skip>true</maven.deploy.skip>
|
<maven.deploy.skip>true</maven.deploy.skip>
|
||||||
|
|
||||||
<graylog.version>${project.parent.version}</graylog.version>
|
|
||||||
<graylog.plugin-dir>/usr/share/graylog-server/plugin</graylog.plugin-dir>
|
<graylog.plugin-dir>/usr/share/graylog-server/plugin</graylog.plugin-dir>
|
||||||
|
|
||||||
|
<graylog.version>6.0.0</graylog.version>
|
||||||
|
<guice.version>7.0.0</guice.version>
|
||||||
|
<auto-value.version>1.10.4</auto-value.version>
|
||||||
|
<auto-value-javabean.version>2.5.2</auto-value-javabean.version>
|
||||||
|
<jackson.version>2.17.1</jackson.version>
|
||||||
|
<validation-api.version>3.0.2</validation-api.version>
|
||||||
|
<joda-time.version>2.12.7</joda-time.version>
|
||||||
|
<commons-lang3.version>3.14.0</commons-lang3.version>
|
||||||
|
<metrics.version>4.2.25</metrics.version>
|
||||||
|
<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
|
||||||
|
<license-maven.version>4.3</license-maven.version>
|
||||||
|
|
||||||
|
<!-- Nodejs dependencies -->
|
||||||
|
<nodejs.version>v18.18.0</nodejs.version>
|
||||||
|
<yarn.version>v1.22.19</yarn.version>
|
||||||
|
|
||||||
|
<!-- Plugin versions -->
|
||||||
|
<license-maven.version>4.3</license-maven.version>
|
||||||
|
<download-maven-plugin.version>1.6.8.1</download-maven-plugin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<!-- <distributionManagement>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>sonatype-nexus-snapshots</id>
|
|
||||||
<name>Sonatype Nexus Snapshots</name>
|
|
||||||
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
<repository>
|
|
||||||
<id>sonatype-nexus-staging</id>
|
|
||||||
<name>Nexus Release Repository</name>
|
|
||||||
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
|
||||||
</repository>
|
|
||||||
</distributionManagement>
|
|
||||||
|
|
||||||
<repositories>
|
|
||||||
--> <!-- to make our snapshot releases work with Travis et al -->
|
|
||||||
<!-- <repository>
|
|
||||||
<id>sonatype-nexus-snapshots</id>
|
|
||||||
<name>Sonatype Nexus Snapshots</name>
|
|
||||||
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
|
||||||
<releases>
|
|
||||||
<enabled>false</enabled>
|
|
||||||
</releases>
|
|
||||||
<snapshots>
|
|
||||||
<enabled>true</enabled>
|
|
||||||
</snapshots>
|
|
||||||
</repository>
|
|
||||||
<repository>
|
|
||||||
<id>sonatype-nexus-releases</id>
|
|
||||||
<name>Sonatype Nexus Releases</name>
|
|
||||||
<url>https://oss.sonatype.org/content/repositories/releases</url>
|
|
||||||
<releases>
|
|
||||||
<enabled>true</enabled>
|
|
||||||
</releases>
|
|
||||||
<snapshots>
|
|
||||||
<enabled>false</enabled>
|
|
||||||
</snapshots>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
-->
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<!-- com.codahale.metrics -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.dropwizard.metrics</groupId>
|
||||||
|
<artifactId>metrics-core</artifactId>
|
||||||
|
<version>${metrics.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
|
<artifactId>jackson-databind</artifactId>
|
||||||
|
<version>${jackson.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>jakarta.validation</groupId>
|
||||||
|
<artifactId>jakarta.validation-api</artifactId>
|
||||||
|
<version>${validation-api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>joda-time</groupId>
|
||||||
|
<artifactId>joda-time</artifactId>
|
||||||
|
<version>${joda-time.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>${commons-lang3.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.auto.value</groupId>
|
||||||
|
<artifactId>auto-value-annotations</artifactId>
|
||||||
|
<version>${auto-value.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.graylog2</groupId>
|
<groupId>org.graylog2</groupId>
|
||||||
<artifactId>graylog2-server</artifactId>
|
<artifactId>graylog2-server</artifactId>
|
||||||
@ -118,6 +131,24 @@
|
|||||||
<type>test-jar</type>
|
<type>test-jar</type>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-jdk14</artifactId>
|
||||||
|
<version>1.7.21</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.inject</groupId>
|
||||||
|
<artifactId>guice</artifactId>
|
||||||
|
<version>${guice.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.inject.extensions</groupId>
|
||||||
|
<artifactId>guice-assistedinject</artifactId>
|
||||||
|
<version>${guice.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.auto.value</groupId>
|
<groupId>com.google.auto.value</groupId>
|
||||||
<artifactId>auto-value</artifactId>
|
<artifactId>auto-value</artifactId>
|
||||||
@ -147,42 +178,12 @@
|
|||||||
</resources>
|
</resources>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>com.mycila</groupId>
|
<groupId>de.thetaphi</groupId>
|
||||||
<artifactId>license-maven-plugin</artifactId>
|
<artifactId>forbiddenapis</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<licenseSets>
|
<skip>true</skip>
|
||||||
<licenseSet>
|
|
||||||
<header>com/mycila/maven/plugin/license/templates/SSPL-1.txt</header>
|
|
||||||
<properties>
|
|
||||||
<project.inceptionYear>2024</project.inceptionYear>
|
|
||||||
<owner>johan@nosd.in</owner>
|
|
||||||
</properties>
|
|
||||||
<includes>
|
|
||||||
<include>**/src/main/java/**</include>
|
|
||||||
<include>**/src/test/java/**</include>
|
|
||||||
<include>**/pom.xml</include>
|
|
||||||
<include>*.js</include>
|
|
||||||
<include>src/web/**/*.js</include>
|
|
||||||
<include>src/web/**/*.jsx</include>
|
|
||||||
<include>src/web/**/*.ts</include>
|
|
||||||
<include>src/web/**/*.tsx</include>
|
|
||||||
<include>src/web/**/*.css</include>
|
|
||||||
</includes>
|
|
||||||
<excludes>
|
|
||||||
<exclude>*.config.js</exclude>
|
|
||||||
</excludes>
|
|
||||||
</licenseSet>
|
|
||||||
</licenseSets>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>check</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
@ -193,12 +194,25 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>3.10.1</version>
|
<version>3.13.0</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<release>17</release>
|
<release>17</release>
|
||||||
<showWarnings>true</showWarnings>
|
<showWarnings>true</showWarnings>
|
||||||
<showDeprecation>true</showDeprecation>
|
<showDeprecation>true</showDeprecation>
|
||||||
<forceJavacCompilerUse>true</forceJavacCompilerUse>
|
<forceJavacCompilerUse>false</forceJavacCompilerUse>
|
||||||
|
<fork>true</fork>
|
||||||
|
<compilerArgs>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
|
||||||
|
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
|
||||||
|
</compilerArgs>
|
||||||
<annotationProcessors>
|
<annotationProcessors>
|
||||||
<annotationProcessor>com.google.auto.value.processor.AutoValueProcessor</annotationProcessor>
|
<annotationProcessor>com.google.auto.value.processor.AutoValueProcessor</annotationProcessor>
|
||||||
</annotationProcessors>
|
</annotationProcessors>
|
||||||
@ -224,6 +238,12 @@
|
|||||||
<version>2.4.1</version>
|
<version>2.4.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<minimizeJar>false</minimizeJar>
|
<minimizeJar>false</minimizeJar>
|
||||||
|
<artifactSet>
|
||||||
|
<excludes>
|
||||||
|
<exclude>com.fasterxml.jackson.core:*</exclude>
|
||||||
|
<exclude>joda-time:joda-time</exclude>
|
||||||
|
</excludes>
|
||||||
|
</artifactSet>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
@ -322,6 +342,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>com.github.eirslett</groupId>
|
<groupId>com.github.eirslett</groupId>
|
||||||
<artifactId>frontend-maven-plugin</artifactId>
|
<artifactId>frontend-maven-plugin</artifactId>
|
||||||
|
<version>1.15.0</version>
|
||||||
|
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
|
@ -27,17 +27,17 @@ import java.util.Set;
|
|||||||
/**
|
/**
|
||||||
* Implement the PluginMetaData interface here.
|
* Implement the PluginMetaData interface here.
|
||||||
*/
|
*/
|
||||||
public class RedisLookupPluginMetaData implements PluginMetaData {
|
public class RedisLookupMetaData implements PluginMetaData {
|
||||||
private static final String PLUGIN_PROPERTIES = "in.nosd.redis.graylog-plugin-redis-lookup/graylog-plugin.properties";
|
private static final String PLUGIN_PROPERTIES = "in.nosd.redis.graylog-plugin-redis-lookup/graylog-plugin.properties";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUniqueId() {
|
public String getUniqueId() {
|
||||||
return "in.nosd.redis.RedisLookupPluginPlugin";
|
return "in.nosd.redis.RedisLookupPlugin";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "RedisLookupPlugin";
|
return "Redis Lookup";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@ -16,14 +16,15 @@
|
|||||||
*/
|
*/
|
||||||
package in.nosd.redis;
|
package in.nosd.redis;
|
||||||
|
|
||||||
import com.google.inject.Binder;
|
|
||||||
import com.google.inject.TypeLiteral;
|
|
||||||
import com.google.inject.multibindings.MapBinder;
|
|
||||||
|
|
||||||
import org.graylog.plugins.pipelineprocessor.ast.functions.Function;
|
import org.graylog.plugins.pipelineprocessor.ast.functions.Function;
|
||||||
import org.graylog2.plugin.PluginConfigBean;
|
import org.graylog2.plugin.PluginConfigBean;
|
||||||
import org.graylog2.plugin.PluginModule;
|
import org.graylog2.plugin.PluginModule;
|
||||||
|
|
||||||
|
import com.google.inject.multibindings.MapBinder;
|
||||||
|
import com.google.inject.Binder;
|
||||||
|
import com.google.inject.TypeLiteral;
|
||||||
|
|
||||||
import in.nosd.redis.dataadapters.RedisLookupDataAdapter;
|
import in.nosd.redis.dataadapters.RedisLookupDataAdapter;
|
||||||
import in.nosd.redis.functions.RedisLookupPluginFunction;
|
import in.nosd.redis.functions.RedisLookupPluginFunction;
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ import java.util.Set;
|
|||||||
/**
|
/**
|
||||||
* Extend the PluginModule abstract class here to add you plugin to the system.
|
* Extend the PluginModule abstract class here to add you plugin to the system.
|
||||||
*/
|
*/
|
||||||
public class RedisLookupPluginModule extends PluginModule {
|
public class RedisLookupModule extends PluginModule {
|
||||||
/**
|
/**
|
||||||
* Returns all configuration beans required by this plugin.
|
* Returns all configuration beans required by this plugin.
|
||||||
*
|
*
|
||||||
@ -55,7 +56,7 @@ public class RedisLookupPluginModule extends PluginModule {
|
|||||||
* addMessageFilter(Class<? extends MessageFilter>);
|
* addMessageFilter(Class<? extends MessageFilter>);
|
||||||
* addMessageOutput(Class<? extends MessageOutput>);
|
* addMessageOutput(Class<? extends MessageOutput>);
|
||||||
* addPeriodical(Class<? extends Periodical>);
|
* addPeriodical(Class<? extends Periodical>);
|
||||||
* addAlarmCallback(Class<? extends AlarmCallback>);
|
// * addAlarmCallback(Class<? extends AlarmCallback>);
|
||||||
* addInitializer(Class<? extends Service>);
|
* addInitializer(Class<? extends Service>);
|
||||||
* addRestResource(Class<? extends PluginRestResource>);
|
* addRestResource(Class<? extends PluginRestResource>);
|
||||||
*
|
*
|
||||||
@ -64,12 +65,12 @@ public class RedisLookupPluginModule extends PluginModule {
|
|||||||
*
|
*
|
||||||
* addConfigBeans();
|
* addConfigBeans();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
addMessageProcessorFunction(RedisLookupPluginFunction.NAME, RedisLookupPluginFunction.class);
|
addMessageProcessorFunction(RedisLookupPluginFunction.NAME, RedisLookupPluginFunction.class);
|
||||||
|
|
||||||
installLookupDataAdapter2(RedisLookupDataAdapter.NAME, RedisLookupDataAdapter.class,
|
installLookupDataAdapter2(RedisLookupDataAdapter.NAME, RedisLookupDataAdapter.class,
|
||||||
RedisLookupDataAdapter.Factory.class, RedisLookupDataAdapter.Config.class);
|
RedisLookupDataAdapter.Factory.class, RedisLookupDataAdapter.Config.class);
|
||||||
|
|
||||||
addConfigBeans();
|
addConfigBeans();
|
||||||
}
|
}
|
||||||
|
|
@ -30,11 +30,11 @@ import java.util.Collections;
|
|||||||
public class RedisLookupPlugin implements Plugin {
|
public class RedisLookupPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public PluginMetaData metadata() {
|
public PluginMetaData metadata() {
|
||||||
return new RedisLookupPluginMetaData();
|
return new RedisLookupMetaData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<PluginModule> modules () {
|
public Collection<PluginModule> modules () {
|
||||||
return Collections.<PluginModule>singletonList(new RedisLookupPluginModule());
|
return Collections.<PluginModule>singletonList(new RedisLookupModule());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2024 johan@nosd.in
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the Server Side Public License, version 1,
|
|
||||||
* as published by MongoDB, Inc.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* Server Side Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the Server Side Public License
|
|
||||||
* along with this program. If not, see
|
|
||||||
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
|
||||||
*/
|
|
||||||
package in.nosd.redis;
|
|
||||||
|
|
||||||
import org.graylog2.plugin.Plugin;
|
|
||||||
import org.graylog2.plugin.PluginMetaData;
|
|
||||||
import org.graylog2.plugin.PluginModule;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implement the Plugin interface here.
|
|
||||||
*/
|
|
||||||
public class RedisLookupPluginPlugin implements Plugin {
|
|
||||||
@Override
|
|
||||||
public PluginMetaData metadata() {
|
|
||||||
return new RedisLookupPluginMetaData();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<PluginModule> modules () {
|
|
||||||
return Collections.<PluginModule>singletonList(new RedisLookupPluginModule());
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,6 +16,20 @@
|
|||||||
*/
|
*/
|
||||||
package in.nosd.redis.dataadapters;
|
package in.nosd.redis.dataadapters;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.graylog.autovalue.WithBeanGetter;
|
||||||
|
import org.graylog2.lookup.dto.DataAdapterDto;
|
||||||
|
import org.graylog2.plugin.lookup.LookupCachePurge;
|
||||||
|
import org.graylog2.plugin.lookup.LookupDataAdapter;
|
||||||
|
import org.graylog2.plugin.lookup.LookupDataAdapterConfiguration;
|
||||||
|
import org.graylog2.plugin.lookup.LookupResult;
|
||||||
|
import org.joda.time.Duration;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.codahale.metrics.Meter;
|
import com.codahale.metrics.Meter;
|
||||||
import com.codahale.metrics.MetricRegistry;
|
import com.codahale.metrics.MetricRegistry;
|
||||||
import com.codahale.metrics.Timer;
|
import com.codahale.metrics.Timer;
|
||||||
@ -26,37 +40,18 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import com.google.auto.value.AutoValue;
|
import com.google.auto.value.AutoValue;
|
||||||
import org.graylog2.lookup.dto.DataAdapterDto;
|
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.assistedinject.Assisted;
|
import com.google.inject.assistedinject.Assisted;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import io.lettuce.core.RedisClient;
|
import io.lettuce.core.RedisClient;
|
||||||
import io.lettuce.core.RedisURI;
|
import io.lettuce.core.RedisURI;
|
||||||
import io.lettuce.core.api.StatefulRedisConnection;
|
import io.lettuce.core.api.StatefulRedisConnection;
|
||||||
import io.lettuce.core.api.sync.RedisCommands;
|
import io.lettuce.core.api.sync.RedisCommands;
|
||||||
import in.nosd.redis.dataadapters.AutoValue_RedisLookupDataAdapter_Config;
|
import jakarta.validation.constraints.Min;
|
||||||
import org.graylog2.plugin.lookup.LookupCachePurge;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import org.graylog2.plugin.lookup.LookupDataAdapter;
|
import reactor.util.annotation.Nullable;
|
||||||
import org.graylog2.plugin.lookup.LookupDataAdapterConfiguration;
|
|
||||||
import org.graylog2.plugin.lookup.LookupResult;
|
|
||||||
import org.joda.time.Duration;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import com.google.inject.Inject;
|
|
||||||
import com.google.inject.assistedinject.Assisted;
|
|
||||||
import javax.validation.constraints.Min;
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.StringJoiner;
|
|
||||||
|
|
||||||
public class RedisLookupDataAdapter extends LookupDataAdapter {
|
public class RedisLookupDataAdapter extends LookupDataAdapter {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(RedisLookupDataAdapter.class);
|
private static final Logger LOG = LoggerFactory.getLogger(RedisLookupDataAdapter.class);
|
||||||
@ -90,8 +85,8 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
public RedisLookupDataAdapter(@Assisted("dto") DataAdapterDto dto,
|
public RedisLookupDataAdapter(@Assisted("dto") DataAdapterDto dto,
|
||||||
MetricRegistry metricRegistry) {
|
MetricRegistry metricRegistry) {
|
||||||
super(dto, metricRegistry);
|
super(dto, metricRegistry);
|
||||||
|
|
||||||
this.config = (Config) dto.config();
|
this.config = (Config) dto.config();
|
||||||
|
|
||||||
RedisURI redisUri ;
|
RedisURI redisUri ;
|
||||||
redisUri = RedisURI.Builder.redis(this.config.redisHost(),this.config.redisPort())
|
redisUri = RedisURI.Builder.redis(this.config.redisHost(),this.config.redisPort())
|
||||||
.withPort(this.config.redisPort())
|
.withPort(this.config.redisPort())
|
||||||
@ -187,7 +182,6 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
// This is deprecated, see setValue
|
// This is deprecated, see setValue
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void set(Object key, Object value) {
|
public void set(Object key, Object value) {
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -195,6 +189,7 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
return setValueWithTtl(key, value, this.config.redisKeyTTL());
|
return setValueWithTtl(key, value, this.config.redisKeyTTL());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public LookupResult setValueWithTtl(Object key, Object value, Long ttlSec) {
|
public LookupResult setValueWithTtl(Object key, Object value, Long ttlSec) {
|
||||||
final Timer.Context time = redisSetRequestTimer.time();
|
final Timer.Context time = redisSetRequestTimer.time();
|
||||||
final String trimmedKey = StringUtils.trimToNull(key.toString());
|
final String trimmedKey = StringUtils.trimToNull(key.toString());
|
||||||
@ -273,6 +268,7 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TTL -1 = never expire
|
// TTL -1 = never expire
|
||||||
|
@Override
|
||||||
public LookupResult assignTtl(Object key, Long ttlSec) {
|
public LookupResult assignTtl(Object key, Long ttlSec) {
|
||||||
final Timer.Context time = redisAssignTtlRequestTimer.time();
|
final Timer.Context time = redisAssignTtlRequestTimer.time();
|
||||||
final String trimmedKey = StringUtils.trimToNull(key.toString());
|
final String trimmedKey = StringUtils.trimToNull(key.toString());
|
||||||
@ -347,11 +343,12 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public LookupResult setStringListWithTtl(Object key, List<String> listValue, Long ttlSec) {
|
public LookupResult setStringListWithTtl(Object key, List<String> listValue, Long ttlSec) {
|
||||||
final Timer.Context time = redisSetStringListWithTtlRequestTimer.time();
|
final Timer.Context time = redisSetStringListWithTtlRequestTimer.time();
|
||||||
try {
|
try {
|
||||||
setStringList(key, listValue);
|
setStringList(key, listValue);
|
||||||
return(assignTtl(key, ttlSec));
|
return assignTtl(key, ttlSec);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// This exception comes from assignTtl
|
// This exception comes from assignTtl
|
||||||
if (e.getMessage().startsWith("WRONGTYPE Operation against a key holding the wrong kind of value")) {
|
if (e.getMessage().startsWith("WRONGTYPE Operation against a key holding the wrong kind of value")) {
|
||||||
@ -420,11 +417,12 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
|
|
||||||
|
|
||||||
@AutoValue
|
@AutoValue
|
||||||
|
@WithBeanGetter
|
||||||
@JsonAutoDetect
|
@JsonAutoDetect
|
||||||
@JsonDeserialize(builder = RedisLookupDataAdapter.Config.Builder.class)
|
@JsonDeserialize(builder = AutoValue_RedisLookupDataAdapter_Config.Builder.class)
|
||||||
@JsonTypeName(NAME)
|
@JsonTypeName(NAME)
|
||||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||||
public abstract static class Config implements LookupDataAdapterConfiguration {
|
public static abstract class Config implements LookupDataAdapterConfiguration {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@JsonProperty(TYPE_FIELD)
|
@JsonProperty(TYPE_FIELD)
|
||||||
@ -472,11 +470,6 @@ public class RedisLookupDataAdapter extends LookupDataAdapter {
|
|||||||
|
|
||||||
@AutoValue.Builder
|
@AutoValue.Builder
|
||||||
public abstract static class Builder {
|
public abstract static class Builder {
|
||||||
@JsonCreator
|
|
||||||
public static Builder create() {
|
|
||||||
return Config.builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonProperty(TYPE_FIELD)
|
@JsonProperty(TYPE_FIELD)
|
||||||
public abstract Builder type(String type);
|
public abstract Builder type(String type);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import org.graylog2.plugin.lookup.LookupResult;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
public class RedisLookupPluginFunction extends LookupTableFunction<GenericLookupResult> {
|
public class RedisLookupPluginFunction extends LookupTableFunction<GenericLookupResult> {
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
in.nosd.redis.RedisLookupPluginPlugin
|
in.nosd.redis.RedisLookupPlugin
|
||||||
|
@ -1,36 +1,35 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2024 johan@nosd.in
|
* Copyright (C) 2024 johan@nosd.in
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the Server Side Public License, version 1,
|
* it under the terms of the Server Side Public License, version 1,
|
||||||
* as published by MongoDB, Inc.
|
* as published by MongoDB, Inc.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* Server Side Public License for more details.
|
* Server Side Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the Server Side Public License
|
* You should have received a copy of the Server Side Public License
|
||||||
* along with this program. If not, see
|
* along with this program. If not, see
|
||||||
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
||||||
*/
|
*/
|
||||||
/* eslint-disable react/no-unescaped-entities, no-template-curly-in-string */
|
import React from 'react';
|
||||||
import React from 'react';
|
|
||||||
|
class RedisLookupAdapterDocumentation extends React.Component {
|
||||||
class RedisLookupAdapterDocumentation extends React.Component {
|
render() {
|
||||||
render() {
|
const style = { marginBottom: 10 };
|
||||||
const style = { marginBottom: 10 };
|
return (
|
||||||
return (
|
<div>
|
||||||
<div>
|
<p style={style}>
|
||||||
<p style={style}>
|
The Redis Lookup data adapter lookup redis for the given key and returns the values.<br/>
|
||||||
The Redis Lookup data adapter lookup redis for the given key and returns the values.<br/>
|
It supports writing key/values to Redis (SET command). <br/>
|
||||||
It supports writing key/values to Redis (SET command). <br/>
|
All created keys will have the TTL configured for the data adapter.
|
||||||
All created keys will have the TTL configured for the data adapter.
|
</p>
|
||||||
</p>
|
</div>
|
||||||
</div>
|
)
|
||||||
)
|
;
|
||||||
;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
export default RedisLookupAdapterDocumentation;
|
||||||
export default RedisLookupAdapterDocumentation;
|
|
||||||
|
@ -1,116 +1,115 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2024 johan@nosd.in
|
* Copyright (C) 2024 johan@nosd.in
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the Server Side Public License, version 1,
|
* it under the terms of the Server Side Public License, version 1,
|
||||||
* as published by MongoDB, Inc.
|
* as published by MongoDB, Inc.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* Server Side Public License for more details.
|
* Server Side Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the Server Side Public License
|
* You should have received a copy of the Server Side Public License
|
||||||
* along with this program. If not, see
|
* along with this program. If not, see
|
||||||
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
||||||
*/
|
*/
|
||||||
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
//import { Button } from 'components/graylog';
|
//import { Button } from 'components/graylog';
|
||||||
import { Input } from 'components/bootstrap';
|
import { Input } from 'components/bootstrap';
|
||||||
|
|
||||||
class RedisLookupAdapterFieldSet extends React.Component {
|
class RedisLookupAdapterFieldSet extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
config: PropTypes.shape({
|
config: PropTypes.shape({
|
||||||
redis_host: PropTypes.string.isRequired,
|
redis_host: PropTypes.string.isRequired,
|
||||||
}).isRequired,
|
}).isRequired,
|
||||||
updateConfig: PropTypes.func.isRequired,
|
updateConfig: PropTypes.func.isRequired,
|
||||||
handleFormEvent: PropTypes.func.isRequired,
|
handleFormEvent: PropTypes.func.isRequired,
|
||||||
validationState: PropTypes.func.isRequired,
|
validationState: PropTypes.func.isRequired,
|
||||||
validationMessage: PropTypes.func.isRequired,
|
validationMessage: PropTypes.func.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
handleSelect = (fieldName) => {
|
handleSelect = (fieldName) => {
|
||||||
return (selectedIndicator) => {
|
return (selectedIndicator) => {
|
||||||
const config = lodash.cloneDeep(this.props.config);
|
const config = lodash.cloneDeep(this.props.config);
|
||||||
config[fieldName] = selectedIndicator;
|
config[fieldName] = selectedIndicator;
|
||||||
this.props.updateConfig(config);
|
this.props.updateConfig(config);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { config } = this.props;
|
const { config } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<Input type="text"
|
<Input type="text"
|
||||||
id="redis_host"
|
id="redis_host"
|
||||||
name="redis_host"
|
name="redis_host"
|
||||||
label="Redis host"
|
label="Redis host"
|
||||||
required
|
required
|
||||||
onChange={this.props.handleFormEvent}
|
onChange={this.props.handleFormEvent}
|
||||||
help={this.props.validationMessage('redis_host', 'Your Redis Host')}
|
help={this.props.validationMessage('redis_host', 'Your Redis Host')}
|
||||||
bsStyle={this.props.validationState('redis_host')}
|
bsStyle={this.props.validationState('redis_host')}
|
||||||
value={config.redis_host}
|
value={config.redis_host}
|
||||||
labelClassName="col-sm-3"
|
labelClassName="col-sm-3"
|
||||||
wrapperClassName="col-sm-9" />
|
wrapperClassName="col-sm-9" />
|
||||||
<Input type="text"
|
<Input type="text"
|
||||||
id="redis_port"
|
id="redis_port"
|
||||||
name="redis_port"
|
name="redis_port"
|
||||||
label="Redis port"
|
label="Redis port"
|
||||||
required
|
required
|
||||||
onChange={this.props.handleFormEvent}
|
onChange={this.props.handleFormEvent}
|
||||||
help={this.props.validationMessage('redis_port', 'Redis port instance is listening on')}
|
help={this.props.validationMessage('redis_port', 'Redis port instance is listening on')}
|
||||||
bsStyle={this.props.validationState('redis_port')}
|
bsStyle={this.props.validationState('redis_port')}
|
||||||
value={config.redis_port}
|
value={config.redis_port}
|
||||||
labelClassName="col-sm-3"
|
labelClassName="col-sm-3"
|
||||||
wrapperClassName="col-sm-9" />
|
wrapperClassName="col-sm-9" />
|
||||||
<Input type="text"
|
<Input type="text"
|
||||||
id="redis_database"
|
id="redis_database"
|
||||||
name="redis_database"
|
name="redis_database"
|
||||||
label="Redis database"
|
label="Redis database"
|
||||||
required
|
required
|
||||||
onChange={this.props.handleFormEvent}
|
onChange={this.props.handleFormEvent}
|
||||||
help={this.props.validationMessage('redis_database', 'Redis database')}
|
help={this.props.validationMessage('redis_database', 'Redis database')}
|
||||||
bsStyle={this.props.validationState('redis_database')}
|
bsStyle={this.props.validationState('redis_database')}
|
||||||
value={config.redis_database}
|
value={config.redis_database}
|
||||||
labelClassName="col-sm-3"
|
labelClassName="col-sm-3"
|
||||||
wrapperClassName="col-sm-9" />
|
wrapperClassName="col-sm-9" />
|
||||||
<Input type="text"
|
<Input type="text"
|
||||||
id="redis_ttl"
|
id="redis_ttl"
|
||||||
name="redis_ttl"
|
name="redis_ttl"
|
||||||
label="Redis key TTL"
|
label="Redis key TTL"
|
||||||
required
|
required
|
||||||
onChange={this.props.handleFormEvent}
|
onChange={this.props.handleFormEvent}
|
||||||
help={this.props.validationMessage('redis_ttl', 'Redis key TTL in seconds. Set -1 to not expire keys')}
|
help={this.props.validationMessage('redis_ttl', 'Redis key TTL in seconds. Set -1 to not expire keys')}
|
||||||
bsStyle={this.props.validationState('redis_ttl')}
|
bsStyle={this.props.validationState('redis_ttl')}
|
||||||
value={config.redis_ttl}
|
value={config.redis_ttl}
|
||||||
labelClassName="col-sm-3"
|
labelClassName="col-sm-3"
|
||||||
wrapperClassName="col-sm-9" />
|
wrapperClassName="col-sm-9" />
|
||||||
<Input type="text"
|
<Input type="text"
|
||||||
id="redis_username"
|
id="redis_username"
|
||||||
name="redis_username"
|
name="redis_username"
|
||||||
label="Redis username"
|
label="Redis username"
|
||||||
onChange={this.props.handleFormEvent}
|
onChange={this.props.handleFormEvent}
|
||||||
help={this.props.validationMessage('redis_username', 'Redis username. Leave empty for no auth or "requirepass" authentication')}
|
help={this.props.validationMessage('redis_username', 'Redis username. Leave empty for no auth or "requirepass" authentication')}
|
||||||
bsStyle={this.props.validationState('redis_username')}
|
bsStyle={this.props.validationState('redis_username')}
|
||||||
value={config.redis_username}
|
value={config.redis_username}
|
||||||
labelClassName="col-sm-3"
|
labelClassName="col-sm-3"
|
||||||
wrapperClassName="col-sm-9" />
|
wrapperClassName="col-sm-9" />
|
||||||
<Input type="password"
|
<Input type="password"
|
||||||
id="redis_password"
|
id="redis_password"
|
||||||
label="Redis password"
|
label="Redis password"
|
||||||
onChange={this.props.handleFormEvent}
|
onChange={this.props.handleFormEvent}
|
||||||
help={this.props.validationMessage('redis_password', 'Redis password. Leave empty for no auth')}
|
help={this.props.validationMessage('redis_password', 'Redis password. Leave empty for no auth')}
|
||||||
bsStyle={this.props.validationState('redis_password')}
|
bsStyle={this.props.validationState('redis_password')}
|
||||||
value={config.redis_password}
|
value={config.redis_password}
|
||||||
labelClassName="col-sm-3"
|
labelClassName="col-sm-3"
|
||||||
wrapperClassName="col-sm-9">
|
wrapperClassName="col-sm-9">
|
||||||
</Input>
|
</Input>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default RedisLookupAdapterFieldSet;
|
||||||
export default RedisLookupAdapterFieldSet;
|
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2024 johan@nosd.in
|
* Copyright (C) 2024 johan@nosd.in
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the Server Side Public License, version 1,
|
* it under the terms of the Server Side Public License, version 1,
|
||||||
* as published by MongoDB, Inc.
|
* as published by MongoDB, Inc.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* Server Side Public License for more details.
|
* Server Side Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the Server Side Public License
|
* You should have received a copy of the Server Side Public License
|
||||||
* along with this program. If not, see
|
* along with this program. If not, see
|
||||||
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line react/prefer-stateless-function
|
// eslint-disable-next-line react/prefer-stateless-function
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
class RedisLookupAdapterSummary extends React.Component {
|
class RedisLookupAdapterSummary extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
dataAdapter: PropTypes.shape({
|
dataAdapter: PropTypes.shape({
|
||||||
config: PropTypes.shape({
|
config: PropTypes.shape({
|
||||||
redis_host: PropTypes.string.isRequired,
|
redis_host: PropTypes.string.isRequired,
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { config } = this.props.dataAdapter;
|
const { config } = this.props.dataAdapter;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Redis host</dt>
|
<dt>Redis host</dt>
|
||||||
<dd>{config.redis_host || 'n/a'}</dd>
|
<dd>{config.redis_host || 'n/a'}</dd>
|
||||||
<dt>Redis port</dt>
|
<dt>Redis port</dt>
|
||||||
<dd>{config.redis_port || 'n/a'}</dd>
|
<dd>{config.redis_port || 'n/a'}</dd>
|
||||||
<dt>Redis database</dt>
|
<dt>Redis database</dt>
|
||||||
<dd>{config.redis_database}</dd>
|
<dd>{config.redis_database}</dd>
|
||||||
<dt>Redis key TTL</dt>
|
<dt>Redis key TTL</dt>
|
||||||
<dd>{config.redis_ttl || 'n/a'}</dd>
|
<dd>{config.redis_ttl || 'n/a'}</dd>
|
||||||
<dt>Redis username</dt>
|
<dt>Redis username</dt>
|
||||||
<dd>{config.redis_username || 'n/a'}</dd>
|
<dd>{config.redis_username || 'n/a'}</dd>
|
||||||
<dt>Redis password</dt>
|
<dt>Redis password</dt>
|
||||||
<dd>******</dd>
|
<dd>******</dd>
|
||||||
</dl>
|
</dl>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default RedisLookupAdapterSummary;
|
export default RedisLookupAdapterSummary;
|
||||||
|
@ -1,39 +1,39 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2024 johan@nosd.in
|
* Copyright (C) 2024 johan@nosd.in
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the Server Side Public License, version 1,
|
* it under the terms of the Server Side Public License, version 1,
|
||||||
* as published by MongoDB, Inc.
|
* as published by MongoDB, Inc.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* Server Side Public License for more details.
|
* Server Side Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the Server Side Public License
|
* You should have received a copy of the Server Side Public License
|
||||||
* along with this program. If not, see
|
* along with this program. If not, see
|
||||||
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
import webpackEntry from 'webpack-entry';
|
import webpackEntry from 'webpack-entry';
|
||||||
|
|
||||||
import { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';
|
import { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';
|
||||||
import packageJson from '../../package.json';
|
import packageJson from '../../package.json';
|
||||||
|
|
||||||
import RedisLookupAdapterDocumentation from './dataadapters/RedisLookupAdapterDocumentation';
|
import RedisLookupAdapterDocumentation from './dataadapters/RedisLookupAdapterDocumentation';
|
||||||
import RedisLookupAdapterFieldSet from './dataadapters/RedisLookupAdapterFieldSet';
|
import RedisLookupAdapterFieldSet from './dataadapters/RedisLookupAdapterFieldSet';
|
||||||
import RedisLookupAdapterSummary from './dataadapters/RedisLookupAdapterSummary';
|
import RedisLookupAdapterSummary from './dataadapters/RedisLookupAdapterSummary';
|
||||||
|
|
||||||
const manifest = new PluginManifest(packageJson, {
|
const manifest = new PluginManifest(packageJson, {
|
||||||
lookupTableAdapters: [
|
lookupTableAdapters: [
|
||||||
{
|
{
|
||||||
type: 'RedisLookup',
|
type: 'RedisLookup',
|
||||||
displayName: 'Redis Lookup',
|
displayName: 'Redis Lookup',
|
||||||
formComponent: RedisLookupAdapterFieldSet,
|
formComponent: RedisLookupAdapterFieldSet,
|
||||||
summaryComponent: RedisLookupAdapterSummary,
|
summaryComponent: RedisLookupAdapterSummary,
|
||||||
documentationComponent: RedisLookupAdapterDocumentation,
|
documentationComponent: RedisLookupAdapterDocumentation,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
PluginStore.register(manifest);
|
PluginStore.register(manifest);
|
||||||
|
@ -19,6 +19,6 @@ const { PluginWebpackConfig } = require('graylog-web-plugin');
|
|||||||
const { loadBuildConfig } = require('graylog-web-plugin');
|
const { loadBuildConfig } = require('graylog-web-plugin');
|
||||||
|
|
||||||
// Remember to use the same name here and in `getUniqueId()` in the java MetaData class
|
// Remember to use the same name here and in `getUniqueId()` in the java MetaData class
|
||||||
module.exports = new PluginWebpackConfig(__dirname, 'in.nosd.redis.RedisLookupPluginPlugin', loadBuildConfig(path.resolve(__dirname, './build.config')), {
|
module.exports = new PluginWebpackConfig(__dirname, 'in.nosd.redis.RedisLookupPlugin', loadBuildConfig(path.resolve(__dirname, './build.config')), {
|
||||||
// Here goes your additional webpack configuration.
|
// Here goes your additional webpack configuration.
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user