/*
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
* Copyright (c) 2016 TethrNet Technology Co.Ltd and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.tsdr.syslogs;
import java.io.IOException;
import java.net.*;
/**
* This Class is for Syslog Message generating.
*
* @author Sharon Aicler(saichler@gmail.com)
**/
/*
This is a Syslog Generator for testing purposes
*/
public class SyslogGenerator {
private final DatagramSocket socket;
private final InetAddress destHost;
private final int destPort;
public static final int DEFAULT_SYSLOG_PORT = 514;
public SyslogGenerator(String destHost, int destinationPort) throws SocketException, UnknownHostException {
this.destPort = destinationPort;
//Arbitrary port to send the packets from
this.socket = new DatagramSocket(54321);
this.destHost = InetAddress.getByName(destHost);
}
public final void sendSyslog(String syslogMessageText, int numberOfSyslogsToSend, long delayBetweenSyslogs, int numberOfIteration, long delayBetweenIterations) throws InterruptedException, IOException {
for (int i = 0; i < numberOfIteration; i++) {
for (int j = 0; j < numberOfSyslogsToSend; j++) {
byte data[] = syslogMessageText.getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, destHost, destPort);
socket.send(packet);
System.out.println(syslogMessageText + " has been sent.");
Thread.sleep(delayBetweenSyslogs);
}
Thread.sleep(delayBetweenIterations);
}
}
public final void sendSyslog(String syslogMessageText) throws IOException, InterruptedException {
sendSyslog(syslogMessageText, 1, 0, 1, 0);
}
public final void sendSyslog(String syslogMessageText, int numberOfSyslogsToSend) throws IOException, InterruptedException {
sendSyslog(syslogMessageText, numberOfSyslogsToSend, 50, 1, 0);
}
public static void main(String args[]) {
if (args == null) {
//Will add more usages in the future
System.out.println("Usage: sendSyslog <message> - Send syslog to local host on port 514");
System.out.println(" sendSyslog <message> <count> - Send <count> syslog to local host on port 514");
System.out.println(" sendSyslog <message> <host> <port> - Send syslog to <host> on <port>");
}
try {
if (args.length == 1) {
SyslogGenerator generator = new SyslogGenerator("127.0.0.1", DEFAULT_SYSLOG_PORT);
generator.sendSyslog(args[0]);
} else if (args.length == 2) {
SyslogGenerator generator = new SyslogGenerator("127.0.0.1", DEFAULT_SYSLOG_PORT);
for (int i = 0; i < Integer.parseInt(args[1]); i++) {
generator.sendSyslog("" + i + ":" + args[0]);
Thread.sleep(100);
}
} else if (args.length == 3) {
SyslogGenerator generator = new SyslogGenerator(args[1], Integer.parseInt(args[2]));
generator.sendSyslog(args[0]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}