Skip to content

Commit 2d9fdd4

Browse files
committed
Adding the first version of project.
1 parent 74bfa4f commit 2d9fdd4

6 files changed

Lines changed: 301 additions & 0 deletions

File tree

pom.xml

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>ir.elenoon</groupId>
8+
<artifactId>execommand-alarmcallback</artifactId>
9+
<version>1.0.0-SNAPSHOT</version>
10+
<packaging>jar</packaging>
11+
12+
<name>${project.artifactId}</name>
13+
<description>Graylog ${project.artifactId} plugin.</description>
14+
<url>https://www.graylog.org</url>
15+
16+
<properties>
17+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18+
<maven.compiler.source>1.7</maven.compiler.source>
19+
<maven.compiler.target>1.7</maven.compiler.target>
20+
<graylog2.version>1.0.0</graylog2.version>
21+
<graylog2.plugin-dir>/usr/share/graylog-server/plugin</graylog2.plugin-dir>
22+
</properties>
23+
24+
<dependencies>
25+
<dependency>
26+
<groupId>org.graylog2</groupId>
27+
<artifactId>graylog2-plugin</artifactId>
28+
<version>${graylog2.version}</version>
29+
<scope>provided</scope>
30+
</dependency>
31+
</dependencies>
32+
33+
<build>
34+
<plugins>
35+
<plugin>
36+
<groupId>org.apache.maven.plugins</groupId>
37+
<artifactId>maven-shade-plugin</artifactId>
38+
<version>2.3</version>
39+
<configuration>
40+
<minimizeJar>false</minimizeJar>
41+
</configuration>
42+
<executions>
43+
<execution>
44+
<phase>package</phase>
45+
<goals>
46+
<goal>shade</goal>
47+
</goals>
48+
<configuration>
49+
<transformers>
50+
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
51+
</transformers>
52+
</configuration>
53+
</execution>
54+
</executions>
55+
</plugin>
56+
57+
<plugin>
58+
<artifactId>jdeb</artifactId>
59+
<groupId>org.vafer</groupId>
60+
<version>1.3</version>
61+
<configuration>
62+
<deb>${project.build.directory}/${project.artifactId}-${project.version}.deb</deb>
63+
<dataSet>
64+
<data>
65+
<src>${project.build.directory}/${project.build.finalName}.jar</src>
66+
<type>file</type>
67+
<mapper>
68+
<type>perm</type>
69+
<prefix>${graylog2.plugin-dir}</prefix>
70+
<filemode>644</filemode>
71+
<user>root</user>
72+
<group>root</group>
73+
</mapper>
74+
</data>
75+
</dataSet>
76+
</configuration>
77+
</plugin>
78+
79+
<plugin>
80+
<groupId>org.codehaus.mojo</groupId>
81+
<artifactId>rpm-maven-plugin</artifactId>
82+
<version>2.1.2</version>
83+
<configuration>
84+
<group>Application/Internet</group>
85+
<prefixes>
86+
<prefix>/usr</prefix>
87+
</prefixes>
88+
<defineStatements>
89+
<defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
90+
<defineStatement>_binaries_in_noarch_packages_terminate_build 0</defineStatement>
91+
</defineStatements>
92+
<defaultFilemode>644</defaultFilemode>
93+
<defaultDirmode>755</defaultDirmode>
94+
<defaultUsername>root</defaultUsername>
95+
<defaultGroupname>root</defaultGroupname>
96+
<mappings>
97+
<mapping>
98+
<directory>${graylog2.plugin-dir}</directory>
99+
<sources>
100+
<source>
101+
<location>${project.build.directory}/</location>
102+
<includes>
103+
<include>${project.build.finalName}.jar</include>
104+
</includes>
105+
</source>
106+
</sources>
107+
</mapping>
108+
</mappings>
109+
</configuration>
110+
</plugin>
111+
</plugins>
112+
</build>
113+
</project>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package ir.elenoon;
2+
3+
import java.io.IOException;
4+
import java.util.Map;
5+
6+
import org.graylog2.plugin.alarms.AlertCondition.CheckResult;
7+
import org.graylog2.plugin.alarms.callbacks.AlarmCallback;
8+
import org.graylog2.plugin.alarms.callbacks.AlarmCallbackConfigurationException;
9+
import org.graylog2.plugin.alarms.callbacks.AlarmCallbackException;
10+
import org.graylog2.plugin.configuration.Configuration;
11+
import org.graylog2.plugin.configuration.ConfigurationException;
12+
import org.graylog2.plugin.configuration.ConfigurationRequest;
13+
import org.graylog2.plugin.configuration.fields.ConfigurationField;
14+
import org.graylog2.plugin.configuration.fields.TextField;
15+
import org.graylog2.plugin.streams.Stream;
16+
17+
/**
18+
* This is the plugin. Your class should implement one of the existing plugin
19+
* interfaces. (i.e. AlarmCallback, MessageInput, MessageOutput)
20+
*/
21+
public class ExeCommandAlarmCallBack implements AlarmCallback{
22+
private Configuration configs;
23+
24+
@Override
25+
public void call(Stream arg0, CheckResult arg1)
26+
throws AlarmCallbackException {
27+
try {
28+
Runtime.getRuntime().exec(new String[]{"bash","-c",configs.getString("bashCommand")});
29+
} catch (IOException e) {
30+
e.printStackTrace();
31+
}
32+
}
33+
34+
@Override
35+
public void checkConfiguration() throws ConfigurationException {
36+
String command = configs.getString("bashCommand");
37+
if (command.isEmpty())
38+
throw new ConfigurationException("Fill the bash command field.");
39+
40+
}
41+
42+
@Override
43+
public Map<String, Object> getAttributes() {
44+
return configs.getSource();
45+
}
46+
47+
@Override
48+
public String getName() {
49+
return "Execute Command Alarm Callback";
50+
}
51+
52+
@Override
53+
public ConfigurationRequest getRequestedConfiguration() {
54+
final ConfigurationRequest configurationRequest = new ConfigurationRequest();
55+
configurationRequest.addField(new TextField("bashCommand", "Bash Command", "", "", ConfigurationField.Optional.NOT_OPTIONAL));
56+
return configurationRequest;
57+
}
58+
59+
@Override
60+
public void initialize(Configuration arg0)
61+
throws AlarmCallbackConfigurationException {
62+
configs = new Configuration(arg0.getSource());
63+
}
64+
65+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package ir.elenoon;
2+
3+
import org.graylog2.plugin.PluginMetaData;
4+
import org.graylog2.plugin.ServerStatus;
5+
import org.graylog2.plugin.Version;
6+
7+
import java.net.URI;
8+
import java.util.Collections;
9+
import java.util.Set;
10+
11+
/**
12+
* Implement the PluginMetaData interface here.
13+
*/
14+
public class ExeCommandAlarmCallBackMetaData implements PluginMetaData {
15+
@Override
16+
public String getUniqueId() {
17+
return "ir.elenoon.ExeCommandAlarmCallBackPlugin";
18+
}
19+
20+
@Override
21+
public String getName() {
22+
return "ExeCommandAlarmCallBack";
23+
}
24+
25+
@Override
26+
public String getAuthor() {
27+
return "ahmad.niksefat@gmail.com";
28+
}
29+
30+
@Override
31+
public URI getURL() {
32+
return URI.create("https://www.elenoon.ir/");
33+
}
34+
35+
@Override
36+
public Version getVersion() {
37+
return new Version(1, 0, 0);
38+
}
39+
40+
@Override
41+
public String getDescription() {
42+
return "A graylog2 alarm callback for executing commands on server.";
43+
}
44+
45+
@Override
46+
public Version getRequiredVersion() {
47+
return new Version(1, 0, 0);
48+
}
49+
50+
@Override
51+
public Set<ServerStatus.Capability> getRequiredCapabilities() {
52+
return Collections.emptySet();
53+
}
54+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package ir.elenoon;
2+
3+
import org.graylog2.plugin.PluginConfigBean;
4+
import org.graylog2.plugin.PluginModule;
5+
6+
import java.util.Collections;
7+
import java.util.Set;
8+
9+
/**
10+
* Extend the PluginModule abstract class here to add you plugin to the system.
11+
*/
12+
public class ExeCommandAlarmCallBackModule extends PluginModule {
13+
/**
14+
* Returns all configuration beans required by this plugin.
15+
*
16+
* Implementing this method is optional. The default method returns an empty {@link Set}.
17+
*/
18+
@Override
19+
public Set<? extends PluginConfigBean> getConfigBeans() {
20+
return Collections.emptySet();
21+
}
22+
23+
@Override
24+
protected void configure() {
25+
addAlarmCallback(ExeCommandAlarmCallBack.class);
26+
/*
27+
* Register your plugin types here.
28+
*
29+
* Examples:
30+
*
31+
* addMessageInput(Class<? extends MessageInput>);
32+
* addMessageFilter(Class<? extends MessageFilter>);
33+
* addMessageOutput(Class<? extends MessageOutput>);
34+
* addPeriodical(Class<? extends Periodical>);
35+
* addAlarmCallback(Class<? extends AlarmCallback>);
36+
* addInitializer(Class<? extends Service>);
37+
* addRestResource(Class<? extends PluginRestResource>);
38+
*
39+
*
40+
* Add all configuration beans returned by getConfigBeans():
41+
*
42+
* addConfigBeans();
43+
*/
44+
}
45+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package ir.elenoon;
2+
3+
import org.graylog2.plugin.Plugin;
4+
import org.graylog2.plugin.PluginMetaData;
5+
import org.graylog2.plugin.PluginModule;
6+
7+
import java.util.Arrays;
8+
import java.util.Collection;
9+
10+
/**
11+
* Implement the Plugin interface here.
12+
*/
13+
public class ExeCommandAlarmCallBackPlugin implements Plugin {
14+
@Override
15+
public PluginMetaData metadata() {
16+
return new ExeCommandAlarmCallBackMetaData();
17+
}
18+
19+
@Override
20+
public Collection<PluginModule> modules () {
21+
return Arrays.<PluginModule>asList(new ExeCommandAlarmCallBackModule());
22+
}
23+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ir.elenoon.ExeCommandAlarmCallBackPlugin

0 commit comments

Comments
 (0)