implemented NickServ identify for using registered nickname

pull/6/head
Vyacheslav N. Boyko 2018-03-28 11:31:24 +03:00
parent c8088c430a
commit fd4e13eafe
8 changed files with 56 additions and 31 deletions

View File

@ -5,7 +5,7 @@ After=network.target
[Service]
User=bvn13
WorkingDirectory=/srv/jircbot
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.2.2.jar
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.2.3.jar
SuccessExitStatus=143
[Install]

View File

@ -6,7 +6,7 @@
<groupId>ru.bvn13</groupId>
<artifactId>jircbot</artifactId>
<version>1.2.2</version>
<version>1.2.3</version>
<packaging>jar</packaging>

View File

@ -127,33 +127,39 @@ public class JircBot extends ListenerAdapter {
this.config.getConnections().forEach(c -> {
List<Configuration.ServerEntry> servers = new ArrayList<>();
servers.add(new Configuration.ServerEntry(c.getServer(), c.getPort()));
Configuration.Builder confBuilder = templateConfig
.setName(c.getBotName())
.addListener(adminListener)
.addListener(pingPongListener)
.addListener(calculatorListener)
.addListener(regexCheckerListener)
.addListener(adviceListener)
.addListener(quizListener)
.addListener(bashOrgListener)
.addListener(autoRejoinListener)
.addListener(deferredMessagesListener)
.addListener(linkPreviewListener)
.addListener(helloOnJoinListener)
.addListener(grammarCorrectorListener)
.addListener(googleSearchListener)
.addListener(loggerListener)
// not tested
//.addListener(new GoogleDoodleListener(this.config))
//.addListener(new YandexSearchListener(this.config, this.yandexSearchService))
.setServers(servers)
.setAutoReconnect(true)
.addAutoJoinChannels(c.getChannelsNames());
if (c.getBotPassword() != null && !c.getBotPassword().isEmpty()) {
confBuilder.setNickservPassword(c.getBotPassword());
}
this.bots.put(
String.format("%s/%s", c.getServer(), "1"),
new PircBotX(templateConfig
.setName(c.getBotName())
.addListener(adminListener)
.addListener(pingPongListener)
.addListener(calculatorListener)
.addListener(regexCheckerListener)
.addListener(adviceListener)
.addListener(quizListener)
.addListener(bashOrgListener)
.addListener(autoRejoinListener)
.addListener(deferredMessagesListener)
.addListener(linkPreviewListener)
.addListener(helloOnJoinListener)
.addListener(grammarCorrectorListener)
.addListener(googleSearchListener)
.addListener(loggerListener)
// not tested
//.addListener(new GoogleDoodleListener(this.config))
//.addListener(new YandexSearchListener(this.config, this.yandexSearchService))
.setServers(servers)
.setAutoReconnect(true)
.addAutoJoinChannels(c.getChannelsNames())
.buildForServer(c.getServer())
new PircBotX(confBuilder.buildForServer(c.getServer())
)
);
});

View File

@ -81,9 +81,15 @@ public class JircBotConfiguration {
config.setServer((String)data.get("server"));
config.setPort(Integer.parseInt(data.get("port").toString()));
if (data.containsKey("botPassword")) {
config.setBotPassword((String)data.get("botPassword"));
} else {
config.setBotPassword("");
}
List<String> channelsNames = new ArrayList<>();
JSONArray channels = (JSONArray) data.get("channelsNames");
JSONArray channels = (JSONArray) data.get("channels");
if (channels != null && channels.size() > 0) {
for (int i=0; i < channels.size(); i++) {

View File

@ -24,7 +24,7 @@ public class ChannelSettingsService {
return settings;
}
public void creaateChannelSettings(String serverHost, String channelName) {
public void createChannelSettings(String serverHost, String channelName) {
ChannelSettings settings = channelSettingsRepository.getFirstByServerHostAndChannelName(serverHost, channelName);
if (settings == null) {
settings = new ChannelSettings();

View File

@ -2,6 +2,8 @@ package ru.bvn13.jircbot.listeners;
import org.pircbotx.hooks.events.JoinEvent;
import org.pircbotx.hooks.events.PrivateMessageEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import ru.bvn13.jircbot.bot.ImprovedListenerAdapter;
@ -19,6 +21,8 @@ import java.util.concurrent.atomic.AtomicReference;
@Component
public class AdminListener extends ImprovedListenerAdapter {
private static final Logger logger = LoggerFactory.getLogger(AdminListener.class);
private static final String COMMAND = "?";
@Autowired
@ -30,7 +34,14 @@ public class AdminListener extends ImprovedListenerAdapter {
@Override
public void onJoin(JoinEvent event) throws Exception {
if (event.getChannel().getName().startsWith("#")) {
channelSettingsService.creaateChannelSettings(JircBot.extractServer(event.getUser().getServer()), event.getChannel().getName());
if (event.getUser().getNick().equals(event.getBot().getNick())) {
event.getBot().sendRaw().rawLineNow("MODE " + event.getBot().getUserBot().getNick() + " +B");
try {
channelSettingsService.createChannelSettings(JircBot.extractServer(event.getBot().getUserBot().getServer()), event.getChannel().getName());
} catch (Exception e) {
logger.error("Could not create channel settings for channel "+event.getChannel().getName(), e);
}
}
}
}

View File

@ -19,6 +19,8 @@ public class Config {
private String botName;
private String botPassword = "";
private List<String> channelsNames;
private String masterNick;

View File

@ -16,7 +16,7 @@
<logger name="ru.bvn13.jircbot" level="ALL"/>
<logger name="ru.bvn13.jircbot.listeners" level="ALL"/>
<logger name="ru.bvn13.jircbot.listeners.calculator" level="ALL"/>
<logger name="org.pircbotx" level="ERROR"/>
<logger name="org.pircbotx" level="DEBUG"/>
<logger name="org.hibernate.SQL" level="WARN"/>
<!--<logger name="org.hibernate.type" level="TRACE">-->