package org.manalith.ircbot.console; import jline.console.ConsoleReader; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.manalith.ircbot.remote.RemoteService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; @Component public class Launcher { @Autowired private RemoteService remoteService; public static void main(String[] args) throws Exception { // 옵션 반영 Options options = new Options(); options.addOption("c", true, "config file"); CommandLineParser parser = new PosixParser(); CommandLine cmd = parser.parse(options, args); String configFile = "config.xml"; String configFileOptionArg = cmd.getOptionValue("c"); if (StringUtils.isNotBlank(configFileOptionArg)) { configFile = configFileOptionArg; } // 설정 초기화 ApplicationContext context = new FileSystemXmlApplicationContext( configFile); // FIXME 인증 수행 UsernamePasswordAuthenticationToken userToken = new UsernamePasswordAuthenticationToken( "admin", "admin"); SecurityContextHolder.getContext().setAuthentication(userToken); Launcher launcher = context.getBean(Launcher.class); ConsoleReader reader = new ConsoleReader(); String line; while (!StringUtils .equals((line = reader.readLine("prompt> ")), "exit")) { String[] strs = StringUtils.split(line, " "); launcher.sendMessage(strs[0], strs[1]); // System.out.println(line); } } private void sendMessage(String target, String message) { try { remoteService.sendMessage(target, message); } catch (BadCredentialsException e) { System.out.println("인증이 올바르지 않습니다."); Logger.getLogger(Launcher.class).error(e); } } }