Commit 15305f31 15305f316008bb98d8a92a135e6e860505f0fb14 by root

save

1 parent c4f08700
Showing 67 changed files with 2912 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DevInfo</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.5
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
File mode changed
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_25" class="java.beans.XMLDecoder">
<object class="DevInfo.DevInfo.DevInfoBean">
<void property="description">
<string>Tes Device</string>
</void>
<void property="guid">
<string>dsdd-3424-sad-asdas-sddd</string>
</void>
</object>
</java>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>DevInfo</groupId>
<artifactId>DevInfo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
package org.emercit.devinfo;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;
import org.apache.log4j.Logger;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.emercit.devinfo.model.DevInfoBean;
import org.emercit.devinfo.service.DevInfoService;
public class App
{
private static final Logger log = Logger.getLogger(App.class);
private static String method;
private static String pr;
private static String value;
public static void main( String[] args )
{
ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
try {
parser.description("Информация об устройстве")
.version("Version:1.0.0.0")
.defaultHelp(true);
parser.addArgument("-v")
.type(String.class)
.setDefault("")
.help("Значение параметра");
parser.addArgument("-m")
.type(String.class)
.setDefault("get")
.help("Функция. Получение параметров - get, установка параметров - set, создание файла DevInfo.xml - create");
parser.addArgument("-log")
.type(Integer.class)
.setDefault(0)
.help("Логирование. 0-выкл.; 1-консоль; 2-файл");
parser.addArgument("-p")
.type(String.class)
.setDefault("get")
.help("Параметр, который хотим прочитать или изменить");
Logger rootLogger = Logger.getRootLogger();
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
//rootLogger.setLevel(Level.OFF);
rootLogger.setLevel(Level.DEBUG);
rootLogger.addAppender(new ConsoleAppender(layout));
try
{
RollingFileAppender fileAppender = new RollingFileAppender(layout, "/var/log/devtools/DevInfo.log");
rootLogger.addAppender(fileAppender);
}
catch (IOException e)
{
log.error(e.getMessage());
}
Namespace res = parser.parseArgs(args);
method=res.getString("m");
pr=res.getString("p");
if (method.equals("set")) { // Установка параметров
value = res.getString("v");
DevInfoBean m=DevInfoService.INSTANCE.Get();
if (pr.equals("title")) {
m.setDescription(value);
}else if (pr.equals("guid")) {
m.setGuid(value);
}
DevInfoService.INSTANCE.Set(m);
}else if (method.equals("get")) { // Получение параметров
DevInfoBean m=DevInfoService.INSTANCE.Get();
if (pr.equals("title")) {
System.out.println(m.getDescription());
}else if (pr.equals("guid")) {
System.out.println(m.getGuid());
}
}else if (method.equals("create")) {
DevInfoBean db=new DevInfoBean();
db.setDescription("");
db.setGuid("");
DevInfoService.INSTANCE.Set(db);
}
}catch(Exception e){
if(e instanceof ArgumentParserException){
log.error(e.getMessage());
} else {
parser.handleError((ArgumentParserException) e);
log.error(e.getMessage());
System.exit(1);
}
}
}
}
package org.emercit.devinfo.model;
import java.io.Serializable;
import java.util.Vector;
public class DevInfoBean implements Serializable {
private String guid;
private String description;
public DevInfoBean() {
}
public String getGuid() {
return guid;
}
public void setGuid(String value) {
this.guid=value;
}
public String getDescription() {
return description;
}
public void setDescription(String value) {
this.description=value;
}
}
package org.emercit.devinfo.service;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.log4j.Logger;
import org.emercit.devinfo.App;
import org.emercit.devinfo.model.DevInfoBean;
public class DevInfoImpl implements IDevInfo {
private static final Logger log = Logger.getLogger(DevInfoImpl.class);
public boolean Set(DevInfoBean m) {
try {
FileOutputStream fos = new FileOutputStream("/opt/devtools/beans/DevInfo.xml");
BufferedOutputStream bos = new BufferedOutputStream(fos);
XMLEncoder xmlEncoder = new XMLEncoder(bos);
xmlEncoder.writeObject(m);
xmlEncoder.close();
return true;
}catch(Exception e) {
log.error(e.getMessage());
return false;
}
}
public DevInfoBean Get() {
try {
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("/opt/devtools/beans/DevInfo.xml")));
DevInfoBean result =(DevInfoBean) d.readObject();
d.close();
return result;
}catch(Exception e) {
log.error(e.getMessage());
return null;
}
}
}
package org.emercit.devinfo.service;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import org.emercit.devinfo.model.DevInfoBean;
public enum DevInfoService {
INSTANCE;
public boolean Set(DevInfoBean m) throws Exception {
boolean result=false;
FileOutputStream fos = new FileOutputStream("/opt/devtools/beans/DevInfo.xml");
BufferedOutputStream bos = new BufferedOutputStream(fos);
XMLEncoder xmlEncoder = new XMLEncoder(bos);
xmlEncoder.writeObject(m);
xmlEncoder.close();
return result;
}
public DevInfoBean Get() throws Exception {
DevInfoBean result=null;
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("/opt/devtools/beans/DevInfo.xml")));
result =(DevInfoBean) d.readObject();
d.close();
return result;
}
}
package org.emercit.devinfo.service;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.emercit.devinfo.model.DevInfoBean;
public interface IDevInfo {
public boolean Set(DevInfoBean m);
public DevInfoBean Get();
}
package org.emercit.devinfo;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DnsManager</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.5
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>DnsServer</groupId>
<artifactId>DnsServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>DnsServer</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java-version>1.7</java-version>
</properties>
<dependencies>
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</project>
package org.emercit.dnsmanager;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;
import org.apache.log4j.Logger;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.emercit.dnsmanager.service.DnsLinux;
public class App
{
private static final Logger log = Logger.getLogger(App.class);
private static DnsLinux dnslinux=new DnsLinux();
private static String method;
private static String param;
private static String value;
public static void main( String[] args )
{
ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
try {
parser.description("Конфигуратор DNS")
.version("Version:1.0.0.0")
.defaultHelp(true);
parser.addArgument("-m")
.type(String.class)
.setDefault("get")
.help("Методы: \n"
+ "1) get - получение всех IP DNS серверов;\n"
+ "2) add - добавление IP адреса DNS сервера;\n"
+ "3) del - удаление IP DNS сервера.\n");
parser.addArgument("-v")
.type(String.class)
.setDefault("")
.help("Значение параметра");
parser.addArgument("-p")
.type(String.class)
.setDefault("")
.help("Имя параметра.\n Возможные параметры:\n"
+"1) ip - адрес DNS сервера\n");
parser.addArgument("-e")
.type(String.class)
.setDefault("")
.help("Название сетевого интерфейса");
parser.addArgument("-log")
.type(Integer.class)
.setDefault(0)
.help("Логирование. 0-выкл.; 1-консоль; 2-файл");
Logger rootLogger = Logger.getRootLogger();
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
//rootLogger.setLevel(Level.OFF);
rootLogger.setLevel(Level.DEBUG);
rootLogger.addAppender(new ConsoleAppender(layout));
try {
RollingFileAppender fileAppender = new RollingFileAppender(layout, "/var/log/devtools/DnsManager.log");
rootLogger.addAppender(fileAppender);
} catch (IOException e) {
log.error(e.getMessage());
}
Namespace res = parser.parseArgs(args);
method=res.getString("m");
if (method.equals("add")) { //Добавление Ip DNS сервера
value=res.getString("v");
dnslinux.Add(value);
}else if (method.equals("get")) { //Вывод списка DNS в JSON формате
dnslinux.PrintInfoDnsAll();
}else if (method.equals("del")) { // Удаление IP адреса DNS
value=res.getString("v");
dnslinux.Delete(value);
}
}catch(Exception e){
if(e instanceof ArgumentParserException){
log.error(e.getMessage());
}
else {
parser.handleError((ArgumentParserException) e);
log.error(e.getMessage());
System.exit(1);
}
}
}
}
package org.emercit.dnsmanager.model;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
import java.util.Vector;
public class CommandExecutor {
public Vector<String> Run(String cmd) throws Exception {
Vector<String> v=new Vector<String>();
Runtime run = Runtime.getRuntime();
Process proc = run.exec(new String[]{"/bin/sh", "-c",cmd});
proc.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(br.ready()) {
v.add(br.readLine());
}
return v;
}
}
package org.emercit.dnsmanager.model;
import java.io.Serializable;
public class DnsBean implements Serializable {
private int id;
private String ip;
public DnsBean() {
}
public void setIp(String value) {
this.ip=value;
}
public String getIp() {
return ip;
}
public void setId(int value) {
this.id=value;
}
public int getId() {
return id;
}
}
package org.emercit.dnsmanager.service;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
import org.apache.log4j.Logger;
import org.emercit.dnsmanager.model.DnsBean;
import com.cedarsoftware.util.io.JsonWriter;
import org.emercit.dnsmanager.model.CommandExecutor;
public class DnsLinux implements IDns{
private static final Logger log = Logger.getLogger(DnsLinux.class);
private CommandExecutor ce=new CommandExecutor();
private Vector<DnsBean> dbs;
private DnsBean db;
private String json;
public void Add (String value){
dbs=getAllDns();
db=new DnsBean();
db.setIp(value);
dbs.add(db);
Config(dbs);
}
/*
* Вывод на экран списка DNS серверов в JSON формате
* @see org.emerct.dnsmanager.service.IDns#PrintInfoDnsAll()
*/
public void PrintInfoDnsAll() {
dbs=getAllDns();
try {
json = JsonWriter.objectToJson(dbs);
System.out.println(json);
}catch(Exception e) {
log.error(e.getMessage());
}
}
public void Delete(String value) {
dbs=getAllDns();
for (DnsBean db:dbs) {
if (db.getIp().equals(value)) {
dbs.remove(db);
break;
}
}
Config(dbs);
}
public boolean Update(Vector<DnsBean> beans) {
return Config(beans);
}
public Vector<DnsBean> getAllDns() {
dbs=new Vector<DnsBean>();
try {
Vector<String> v=ce.Run("cat /etc/resolv.conf | grep nameserver | awk '{print $2}'");
int i=0;
for (String ip:v) {
db=new DnsBean();
db.setIp(ip);
db.setId(i);
dbs.add(db);
i++;
}
} catch(Exception e) {
log.error(e.getMessage());
}
return dbs;
}
public boolean Config(Vector<DnsBean> dbs) {
try {
File file = new File("/etc/resolv.conf");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write("#Generated by DnsManager\n");
bw.write("\n");
for (DnsBean b:dbs) {
bw.write("nameserver "+b.getIp());
bw.write("\n");
}
bw.close();
return true;
} catch (IOException e) {
log.error(e.getMessage());
}
return false;
}
}
package org.emercit.dnsmanager.service;
import org.emercit.dnsmanager.model.DnsBean;
import java.util.Vector;
public interface IDns {
public void Add (String value);
public void PrintInfoDnsAll();
public void Delete(String value);
public boolean Config(Vector<DnsBean> dbs);
public Vector<DnsBean> getAllDns();
}
package DnsServer.DnsServer;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>EthManager</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>NetConfig</groupId>
<artifactId>NetConfig</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>NetConfig</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java-version>1.7</java-version>
</properties>
<dependencies>
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</project>
package org.emercit.ethmanager;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Vector;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;
import org.apache.log4j.Logger;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.emercit.ethmanager.service.EthLinux;
public class App
{
private static final Logger log = Logger.getLogger(App.class);
private static EthLinux ethlinux=new EthLinux();
public static void main( String[] args )
{
ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
String eth; //Название интерфейса
String param; //Параметр который нужно изменить
String method; // Метод
String value; // Значение параметра
String name; // Название интерфейса
try {
parser.description("Конфигуратор сетевых интерфейсов")
.version("Version:1.0.0.0")
.defaultHelp(true);
parser.addArgument("-m")
.type(String.class)
.setDefault("get")
.help("Методы: \n"
+ "1) get - получение параметра;\n"
+ "2) set - установка параметра;\n"
+ "3) reset-сброс сетевых настроек на интерфейсах;\n"
+ "4) eths- список сетевых интерфейсов.\n");
parser.addArgument("-v")
.type(String.class)
.setDefault("")
.help("Значение параметра");
parser.addArgument("-p")
.type(String.class)
.setDefault("")
.help("Имя параметра.\n Возможные параметры:\n"
+"1) dhcp - может принимать значение true или false;\n"
+"2) ip - адресс;\n"
+"3) netmask - маска сети;\n"
+"4) gateway - основной шлюз.\n");
parser.addArgument("-e")
.type(String.class)
.setDefault("")
.help("Название сетевого интерфейса");
parser.addArgument("-log")
.type(Integer.class)
.setDefault(0)
.help("Логирование. 0-выкл.; 1-консоль; 2-файл");
Logger rootLogger = Logger.getRootLogger();
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
//rootLogger.setLevel(Level.OFF);
rootLogger.setLevel(Level.DEBUG);
rootLogger.addAppender(new ConsoleAppender(layout));
try {
RollingFileAppender fileAppender = new RollingFileAppender(layout, "/var/log/devtools/EthManager.log");
rootLogger.addAppender(fileAppender);
} catch (IOException e) {
log.error(e.getMessage());
}
Namespace res = parser.parseArgs(args);
// param=res.getString("p");
method=res.getString("m");
if (method.equals("set")) { //Конфигурация интерфейса
name=res.getString("e");
param= res.getString("p");
value=res.getString("v");
ethlinux.ApplyConfig(name, param,(Object)value );
}else if (method.equals("get")) { //Вывод информации из файла
name=res.getString("e");
ethlinux.PrintInfoByName(name);
}else if (method.equals("reset")) { // Сброс сетевых настроек
ethlinux.setDefaults();
}else if (method.equals("eths")) {
Vector<String> v=ethlinux.getListEth();
for (String s:v) {
System.out.println(s);
}
}
}catch(Exception e){
if(e instanceof ArgumentParserException){
log.error(e.getMessage());
}
else {
parser.handleError((ArgumentParserException) e);
log.error(e.getMessage());
System.exit(1);
}
}
}
}
package org.emercit.ethmanager.model;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
import java.util.Vector;
public class CommandExecutor {
public Vector<String> Run(String cmd) throws Exception {
Vector<String> v=new Vector<String>();
Runtime run = Runtime.getRuntime();
Process proc = run.exec(new String[]{"/bin/sh", "-c",cmd});
proc.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(br.ready()) {
v.add(br.readLine());
}
return v;
}
}
\ No newline at end of file
package org.emercit.ethmanager.model;
import java.io.Serializable;
import java.util.Vector;
public class EthBean implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String mac;
private boolean dhcp;
private String ip;
private String netmask;
private String gateway;
private String broadcast;
private Vector<String> info;
public EthBean() {
}
public int getId() {
return this.id;
}
public void setId(int value) {
this.id=value;
}
public String getName() {
return name;
}
public void setName(String value) {
this.name=value;
}
public String getMac() {
return mac;
}
public void setMac(String value) {
this.mac=value;
}
public boolean getDhcp() {
return this.dhcp;
}
public void setDhcp(boolean value) {
this.dhcp = value;
}
public String getIp() {
return ip;
}
public void setIp(String value) {
this.ip = value;
}
public String getNetmask() {
return netmask;
}
public void setNetmask(String value) {
this.netmask=value;
}
public String getGateway() {
return gateway;
}
public void setGateway(String value) {
this.gateway=value;
}
public String getBroadcast() {
return broadcast;
}
public void setBroadcast(String value) {
this.broadcast=value;
}
public Vector<String> getInfo() {
return info;
}
public void setInfo(Vector<String> value) {
this.info=value;
}
}
package org.emercit.ethmanager.service;
import java.util.Vector;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import org.apache.log4j.Logger;
import org.emercit.ethmanager.App;
import org.emercit.ethmanager.model.EthBean;
public class EthDBImpl implements IEthDB {
private static final Logger log = Logger.getLogger(EthDBImpl.class);
public boolean updateDb(Vector<EthBean> m) {
boolean result=true;
try {
FileOutputStream fos = new FileOutputStream("/opt/devtools/beans/EthBeans.xml");
BufferedOutputStream bos = new BufferedOutputStream(fos);
XMLEncoder xmlEncoder = new XMLEncoder(bos);
xmlEncoder.writeObject(m);
xmlEncoder.close();
}catch(Exception e) {
log.error(e.getMessage());
result=false;
}
return result;
}
public Vector<EthBean> selectDb() {
Vector<EthBean> result=new Vector<EthBean>();
try {
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("/opt/devtools/beans/EthBeans.xml")));
result=(Vector<EthBean>)d.readObject();
d.close();
}catch(Exception e) {
log.error(e.getMessage());
result=null;
}
return result;
}
}
package org.emercit.ethmanager.service;
import org.apache.log4j.Logger;
import org.emercit.ethmanager.model.EthBean;
import com.cedarsoftware.util.io.JsonReader;
import com.cedarsoftware.util.io.JsonWriter;
import java.util.Vector;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import org.emercit.ethmanager.model.CommandExecutor;
public class EthLinux implements IEth {
private static final Logger log = Logger.getLogger(EthLinux.class);
private CommandExecutor ce=new CommandExecutor();
private EthDBImpl ethStore=new EthDBImpl();
private Vector<EthBean> ebs;
private Vector<String> extinfo;
private String mac;
private String json;
private Object obj;
private EthBean emp;
public void ApplyConfig (String eth, String p, Object v) {
ebs=ethStore.selectDb();
if (!p.equals("object")) {
for(EthBean eb : ebs) {
if(eb.getName().equals(eth)) {
switch(p) {
case "dhcp": eb.setDhcp(Boolean.valueOf((String)v)); break;
case "ip": eb.setIp((String)v); break;
case "netmask": eb.setNetmask((String)v); break;
case "gateway": eb.setGateway((String)v); break;
default: break;
}
break;
}
}
}else {
obj = JsonReader.jsonToJava((String)json);
emp = (EthBean) obj;
for(EthBean eb : ebs) {
if(eb.getName().equals(emp.getName())) {
eb.setDhcp(emp.getDhcp());
eb.setIp(emp.getIp());
eb.setNetmask(emp.getNetmask());
eb.setGateway(emp.getGateway());
}
break;
}
}
Config(ebs);
}
/*
* Список интерфейсов Ethernet на данном устройстве
* @see org.emercit.ethmanager.service.IEth#getListEth()
*/
public Vector<String> getListEth() {
Vector<String> result=new Vector<String>();
try {
Vector<String> buff=ce.Run("ifconfig | grep eth | awk '{print $1}'");
ebs=ethStore.selectDb();
for (EthBean eb:ebs) {
for (String ebbuff:buff) {
if (eb.getName().equals(ebbuff)) {
result.add(ebbuff);
//System.out.println(ebbuff);
}
}
}
}catch(Exception e) {
log.error(e.getMessage());
}
return result;
}
public void PrintInfoByName(String name) {
ebs=ethStore.selectDb();
for(EthBean eb : ebs) {
if(eb.getName().equals(name)) {
try {
extinfo=ce.Run("ifconfig"+" "+eb.getName());
mac=ce.Run("ifconfig"+" "+eb.getName()+" | grep HWaddr | awk '{ print $5}' ").toString();
eb.setInfo(extinfo);
eb.setMac(mac);
if (eb.getDhcp()) {
String addr=ce.Run("ifconfig"+" "+eb.getName()+" "+"| grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'").toString();
String mask=ce.Run("ifconfig"+" "+eb.getName()+" "+"| grep 'inet addr:' | cut -d: -f4 | awk '{ print $1}'").toString();
String gateway=ce.Run("/sbin/route -n | grep 'UG' | awk '{print $2}'").toString();
eb.setIp(addr);
eb.setNetmask(mask);
eb.setGateway(gateway);
}
json = JsonWriter.objectToJson(eb);
System.out.println(json);
}catch(Exception e) {
log.error(e.getMessage());
}
}
}
}
public EthBean getEthByName(String name) {
ebs=ethStore.selectDb();
for(EthBean eb : ebs) {
if(eb.getName().equals(name)) {
try {
extinfo=ce.Run("ifconfig"+" "+eb.getName());
mac=ce.Run("ifconfig"+" "+eb.getName()+" | grep HWaddr | awk '{ print $5}' ").toString();
eb.setInfo(extinfo);
eb.setMac(mac);
if (eb.getDhcp()) {
String addr=ce.Run("ifconfig"+" "+eb.getName()+" "+"| grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'").toString();
String mask=ce.Run("ifconfig"+" "+eb.getName()+" "+"| grep 'inet addr:' | cut -d: -f4 | awk '{ print $1}'").toString();
String gateway=ce.Run("/sbin/route -n | grep 'UG' | awk '{print $2}'").toString();
eb.setIp(addr);
eb.setNetmask(mask);
eb.setGateway(gateway);
}
return eb;
}catch(Exception e) {
log.error(e.getMessage());
}
}
}
return null;
}
public boolean Update(EthBean m) {
ebs=ethStore.selectDb();
for (EthBean eb:ebs) {
if (eb.getName().equals(m.getName())) {
eb.setId(m.getId());
eb.setBroadcast(m.getBroadcast());
eb.setGateway(m.getGateway());
eb.setIp(m.getIp());
eb.setNetmask(m.getNetmask());
eb.setDhcp(m.getDhcp());
break;
}
}
Config(ebs);
return true;
}
private void Config(Vector<EthBean> ebs) {
try {
File file = new File("/etc/network/interfaces");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write("#Generated by EthManager \n");
bw.write("\n");
bw.write("auto lo");
bw.write("\n");
bw.write("iface lo inet loopback");
bw.write("\n");
bw.write("\n");
int id=0;
for (EthBean eb:ebs) {
eb.setId(id);
if (!eb.getDhcp()) {
bw.write("auto "+eb.getName());
bw.write("\n");
bw.write("iface "+eb.getName()+" inet static");
bw.write("\n");
bw.write("address "+eb.getIp());
bw.write("\n");
bw.write("netmask "+eb.getNetmask());
bw.write("\n");
bw.write("gateway "+eb.getGateway());
bw.write("\n");
} else {
bw.write("auto "+eb.getName());
bw.write("\n");
bw.write("iface "+eb.getName()+" inet dhcp");
bw.write("\n");
}
bw.write("\n");
bw.write("\n");
id++;
}
bw.close();
ethStore.updateDb(ebs);
} catch (IOException e) {
log.error(e.getMessage());
}
}
public void setDefaults() {
ebs=ethStore.selectDb();
Vector<String> v=new Vector<String>();
v.add("");
if (ebs==null || ebs.size()==0) {
ebs=new Vector<EthBean>();
EthBean NewEb=new EthBean();
//Eth0
NewEb.setName("eth0");
NewEb.setBroadcast("");
NewEb.setDhcp(false);
NewEb.setIp("192.168.7.100");
NewEb.setNetmask("255.255.255.0");
NewEb.setGateway("192.168.7.1");
NewEb.setInfo(v);
NewEb.setId(0);
ebs.add(NewEb);
//Eth1
NewEb=new EthBean();
NewEb.setName("eth1");
NewEb.setDhcp(true);
NewEb.setIp("");
NewEb.setNetmask("");
NewEb.setGateway("");
NewEb.setBroadcast("");
NewEb.setMac("");
NewEb.setId(1);
NewEb.setInfo(v);
ebs.add(NewEb);
}
Config(ebs);
}
}
package org.emercit.ethmanager.service;
import java.util.Vector;
import org.emercit.ethmanager.model.*;
public interface IEth {
public void ApplyConfig (String eth, String p, Object v);
public void PrintInfoByName(String name);
public void setDefaults();
public boolean Update(EthBean m);
public EthBean getEthByName(String name);
public Vector<String> getListEth();
}
package org.emercit.ethmanager.service;
import java.util.Vector;
import org.emercit.ethmanager.model.EthBean;
public interface IEthDB {
public boolean updateDb(Vector<EthBean> m);
public Vector<EthBean> selectDb();
}
package org.emercit.netmanager;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ProxyManager</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ProxyManager</groupId>
<artifactId>ProxyManager</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ProxyManager</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java-version>1.7</java-version>
</properties>
<dependencies>
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</project>
</dependencies>
</project>
package org.emercit.proxymanager;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;
import org.apache.log4j.Logger;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.emercit.proxymanager.service.ProxyLinux;
public class App
{
private static final Logger log = Logger.getLogger(App.class);
private static ProxyLinux proxyLinux=new ProxyLinux();
private static String eth; //Название интерфейса
private static String param; //Параметр который нужно изменить
private static String method; // Метод
private static String value; // Значение параметра
private static String name; // Название интерфейса
public static void main( String[] args )
{
ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
try {
parser.description("Настройки прокси")
.version("Version:1.0.0.0")
.defaultHelp(true);
parser.addArgument("-m")
.type(String.class)
.setDefault("get")
.help("Методы:\n 1) get - получение параметра;\n"
+ "2) set- установка параметра.\n");
parser.addArgument("-v")
.type(String.class)
.setDefault("")
.help("Значение параметра");
parser.addArgument("-p")
.type(String.class)
.setDefault("")
.help("Имя параметра\n"
+ "Возможные параметры:\n "
+ "1) host - адрес прокси сервера;\n"
+ "2) port - порт прокси сервера;\n"
+ "3) login - имя пользователя;\n"
+ "4) pass -пароль;\n"
+ "5) enabled - проксирование. Значение true -включено, false- выкл.\n"
+ "6) protocol - навзание протакола (http,https,ftp);\n"
+ "7) useauth - использовать логин и пароль. Значение true - использовать, false -нет.\n");
parser.addArgument("-protocol")
.type(String.class)
.setDefault("")
.help("Протокол");
parser.addArgument("-log")
.type(Integer.class)
.setDefault(0)
.help("Логирование. 0-выкл.; 1-консоль; 2-файл");
Logger rootLogger = Logger.getRootLogger();
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
//rootLogger.setLevel(Level.OFF);
rootLogger.setLevel(Level.DEBUG);
rootLogger.addAppender(new ConsoleAppender(layout));
try {
RollingFileAppender fileAppender = new RollingFileAppender(layout, "/var/log/devtools/ProxyManager.log");
rootLogger.addAppender(fileAppender);
} catch (IOException e) {
log.error(e.getMessage());
}
Namespace res = parser.parseArgs(args);
method=res.getString("m");
if (method.equals("set")) { //Конфигурация интерфейса
name=res.getString("protocol");
param= res.getString("p");
value=res.getString("v");
proxyLinux.ApplyConfig(name, param,(Object)value );
}else if (method.equals("get")) { //Вывод информации из файла
name=res.getString("protocol");
proxyLinux.InfoByName(name);
}
}catch(Exception e){
log.error(e.getMessage());
if(e instanceof ArgumentParserException){
log.error(e.getMessage());
}
else {
parser.handleError((ArgumentParserException) e);
log.error(e.getMessage());
System.exit(1);
}
}
}
}
package org.emercit.proxymanager.model;
import java.io.Serializable;
public class ProxyBean implements Serializable {
private String protocol;
private String host;
private int port;
private String login;
private String pass;
private boolean enabled;
private boolean useauth;
public ProxyBean() {
}
/*
* SET
*/
public void setProtocol(String value) {
this.protocol=value;
}
public void setHost(String value) {
this.host=value;
}
public void setPort(int value) {
this.port=value;
}
public void setLogin(String value) {
this.login=value;
}
public void setPass(String value) {
this.pass=value;
}
public void setEnabled(boolean value) {
this.enabled=value;
}
public void setUseAuth(boolean value) {
this.useauth=value;
}
/*
* GET
*/
public String getProtocol() {
return this.protocol;
}
public String getHost() {
return this.host;
}
public int getPort() {
return this.port;
}
public String getLogin() {
return this.login;
}
public String getPass() {
return this.pass;
}
public boolean getEnabled() {
return this.enabled;
}
public boolean getUseAuth() {
return this.useauth;
}
}
package org.emercit.proxymanager.service;
public interface IProxy {
public void ApplyConfig (String p, Object v);
public void InfoByName(String name);
}
package org.emercit.proxymanager.service;
import java.util.Vector;
import org.emercit.proxymanager.model.ProxyBean;
public interface IProxyDB {
public boolean updateDb(Vector<ProxyBean> m);
public Vector<ProxyBean> selectDb();
}
package org.emercit.proxymanager.service;
import java.util.Vector;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import org.apache.log4j.Logger;
import org.emercit.proxymanager.App;
import org.emercit.proxymanager.model.ProxyBean;
public class ProxyDBImpl implements IProxyDB {
private static final Logger log = Logger.getLogger(ProxyDBImpl.class);
public boolean updateDb(Vector<ProxyBean> m) {
boolean result=true;
try {
FileOutputStream fos = new FileOutputStream("/opt/devtools/beans/ProxyBeans.xml");
BufferedOutputStream bos = new BufferedOutputStream(fos);
XMLEncoder xmlEncoder = new XMLEncoder(bos);
xmlEncoder.writeObject(m);
xmlEncoder.close();
}catch(Exception e) {
log.error(e.getMessage());
result=false;
}
return result;
}
public Vector<ProxyBean> selectDb() {
Vector<ProxyBean> result=new Vector<ProxyBean>();
try {
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("/opt/devtools/beans/ProxyBeans.xml")));
result=(Vector<ProxyBean>)d.readObject();
d.close();
}catch(Exception e) {
log.error(e.getMessage());
result=null;
}
return result;
}
}
package org.emercit.proxymanager.service;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
import org.apache.log4j.Logger;
import org.emercit.proxymanager.model.ProxyBean;
import org.emercit.proxymanager.service.ProxyDBImpl;
import com.cedarsoftware.util.io.JsonReader;
import com.cedarsoftware.util.io.JsonWriter;
public class ProxyLinux {
private static final Logger log = Logger.getLogger(ProxyLinux.class);
private ProxyDBImpl proxyStore=new ProxyDBImpl();
private Vector<ProxyBean> pbs;
private boolean found;
private String json;
private Object obj;
private ProxyBean pmp;
public void ApplyConfig (String protocol, String p, Object v) {
pbs=proxyStore.selectDb();
found=false;
if (p.equals("object")) {
for(ProxyBean pb : pbs) {
if(pb.getProtocol().equals(protocol)) {
found=true;
switch(p) {
case "host":pb.setHost((String)v); break;
case "port":pb.setPort(Integer.valueOf((String)v)); break;
case "login":pb.setLogin((String)v); break;
case "pass":pb.setPass((String)v); break;
case "enabled":pb.setEnabled(Boolean.valueOf((String)v)); break;
case "useauth":pb.setUseAuth(Boolean.valueOf((String)v)); break;
}
}
}
if (!found) { // Добавляем в файл ProxyBeans
if (checkProrocol(protocol)) {
ProxyBean pb=new ProxyBean();
pb.setProtocol(protocol);
pb.setHost("");
pb.setPort(0);
pb.setLogin("");
pb.setPass("");
pb.setEnabled(false);
pb.setUseAuth(false);
pbs.add(pb);
}else {
log.error(protocol+" - неизвестный тип протокола");
}
}
} else {
obj = JsonReader.jsonToJava((String)json);
pmp = (ProxyBean) obj;
for(ProxyBean pb : pbs) {
if(pb.getProtocol().equals(pmp.getProtocol())) {
pb.setHost(pmp.getHost());
pb.setPort(pmp.getPort());
pb.setLogin(pmp.getLogin());
pb.setPass(pmp.getPass());
pb.setEnabled(pmp.getEnabled());
pb.setUseAuth(pmp.getUseAuth());
}
break;
}
}
Config(pbs);
}
private boolean checkProrocol(String value) {
if (value.equals("http")|| value.equals("ftp") || value.equals("https")) {
return true;
}
return false;
}
public void InfoByName(String protocol) {
pbs=proxyStore.selectDb();
if (pbs!=null) {
for(ProxyBean pb : pbs) {
if(pb.getProtocol().equals(protocol)) {
json = JsonWriter.objectToJson(pb);
System.out.println(json);
}
}
}
}
private void Config(Vector<ProxyBean> pbs) {
try {
File file = new File("/etc/environment");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write("#Generated by ProxyManager \n");
bw.write("\n");
for (ProxyBean pb:pbs) {
if (pb.getEnabled()) {
if (pb.getUseAuth()) {
bw.write(pb.getProtocol()+"_proxy"+"='"+"http://"+pb.getLogin()+":"+pb.getPass()+"@"+pb.getHost()+":"+pb.getPort()+"'\n");
}else {
bw.write(pb.getProtocol()+"_proxy"+"='"+"http://"+pb.getHost()+":"+pb.getPort()+"'\n");
}
}
}
bw.write("\n");
bw.close();
proxyStore.updateDb(pbs);
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
\ No newline at end of file
package org.emercit.proxymanager.service;
public class ProxyService {
}
package org.emercit.proxymanager;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>SSHCmdExecutor</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.5
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>NetConfig</groupId>
<artifactId>SSHClient</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SSHClient</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.51</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.6.0</version>
</dependency>
</dependencies>
</project>
package org.emercit.sshcmdexecutor;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;
import org.apache.log4j.Logger;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
public class App
{
private static final Logger log = Logger.getLogger(App.class);
private static SSHCmdExecutor executor=new SSHCmdExecutor();
public static void main( String[] args )
{
ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
try {
parser.description("Выполнение команд через подключении по SSH")
.version("Version:1.0.0.0")
.defaultHelp(true);
parser.addArgument("-login")
.type(String.class)
.help("Имя пользователя");
parser.addArgument("-pass")
.type(String.class)
.help("Пароль");
parser.addArgument("-host")
.type(String.class)
.help("Адрес");
parser.addArgument("-port")
.type(Integer.class)
.help("Порт");
parser.addArgument("-cmd")
.type(String.class)
.help("Команда для выполнения");
parser.addArgument("-log")
.type(Integer.class)
.setDefault(0)
.help("Логирование. 0-выкл.; 1-консоль; 2-файл");
Logger rootLogger = Logger.getRootLogger();
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
//rootLogger.setLevel(Level.OFF);
rootLogger.setLevel(Level.DEBUG);
rootLogger.addAppender(new ConsoleAppender(layout));
try {
RollingFileAppender fileAppender = new RollingFileAppender(layout, "/var/log/devtools/SSHCmdExcecutor.log");
rootLogger.addAppender(fileAppender);
} catch (IOException e) {
log.error(e.getMessage());
}
Namespace res = parser.parseArgs(args);
executor.setLogin(res.getString("login"));
executor.setPassword(res.getString("pass"));
executor.setHost(res.getString("host"));
executor.setPort(res.getInt("port"));
executor.setCmd(res.getString("cmd"));
executor.Exec();
}catch(Exception e){
log.error(e.getMessage());
if(e instanceof ArgumentParserException){
log.error(e.getMessage());
} else {
parser.handleError((ArgumentParserException) e);
log.error(e.getMessage());
System.exit(1);
}
}
}
}
package org.emercit.sshcmdexecutor;
import java.util.Properties;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.log4j.Logger;
public class SSHCmdExecutor {
private static final Logger log = Logger.getLogger(SSHCmdExecutor.class);
Properties config = new Properties();
private String login;
private String password;
private String host;
private int port;
private String cmd;
public SSHCmdExecutor() {
config.put("StrictHostKeyChecking", "no");
}
public void setLogin(String value) {
this.login=value;
}
public void setPassword(String value) {
this.password=value;
}
public void setHost(String value) {
this.host=value;
}
public void setPort(int value){
this.port=value;
}
public void setCmd(String value) {
this.cmd=value;
}
public void Exec() throws Exception {
JSch jsch = new JSch();
Session session=jsch.getSession(this.login, this.host, this.port);
session.setPassword(password);
session.setConfig(config);
session.connect();
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand("sudo -S -p '' "+cmd);
InputStream in=channel.getInputStream();
OutputStream out=channel.getOutputStream();
((ChannelExec)channel).setErrStream(System.err);
channel.connect();
out.write((password+"\n").getBytes());
out.flush();
byte[] tmp=new byte[1024];
while(true){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed()){
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
}
channel.disconnect();
session.disconnect();
}
}
package NetConfig.SSHClient;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}