/xservices/trunk/src/java/net/brutex/xservices/ws/FileService.java |
---|
0,0 → 1,240 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import java.util.List; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import javax.xml.bind.annotation.XmlElement; |
import org.apache.cxf.annotations.WSDLDocumentation; |
import org.apache.cxf.annotations.WSDLDocumentationCollection; |
import com.sun.xml.internal.ws.api.model.wsdl.WSDLDescriptorKind; |
import net.brutex.xservices.types.ArchiveResource; |
import net.brutex.xservices.types.AttachmentType; |
import net.brutex.xservices.types.FileResource; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.ReplacePattern; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.XServicesDocumentation; |
/** |
* @author Brian Rosenberger |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
@WSDLDocumentationCollection( |
{ |
@WSDLDocumentation(value = BrutexNamespaces.BRUTEX_COPYRIGHT, placement = WSDLDocumentation.Placement.TOP) |
} |
) |
public interface FileService { |
public static final String OPERATION_BASENAME ="basename"; |
public static final String OPERATION_DOWNLOADFILE ="downloadFile"; |
public static final String OPERATION_UPLOADFILE ="uploadFile"; |
public static final String OPERATION_COPY ="copy"; |
public static final String OPERATION_COPYFILE ="copyFile"; |
public static final String OPERATION_LOADRESOURCE = "loadResource"; |
public static final String OPERATION_LOADRESOURCEFROMARCHIVE = "loadResourceFromArchive"; |
public static final String OPERATION_ECHOTOFILE = "echoToFile"; |
public static final String OPERATION_CHANGEOWNER = "changeOwner"; |
public static final String OPERATION_CHANGEMODE = "changeMode"; |
public static final String OPERATION_CHANGEGROUP = "changeGroup"; |
public static final String OPERATION_REPLACEINFILE = "replaceInFile"; |
public static final String OPERATION_REPLACEINFILE2 = "replaceInFile2"; |
public static final String OPERATION_REPLACEINFILEREGEX = "replaceInFileRegEx"; |
/** |
* @param filename |
* @param suffix |
* @return The base name of the given file excluding the suffix. |
*/ |
@WSDLDocumentation(value = "The base name of the given file excluding the suffix.") |
@WebMethod(operationName = OPERATION_BASENAME) |
public abstract String basename( |
@WebParam(name = "file") @XmlElement(required=true) String filename, |
@WebParam(name = "suffix") String suffix); |
/** |
* @param res |
* @return The file itself (MTOM attachment or inline base64) including some file metadata. |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_DOWNLOADFILE) |
@WebMethod(operationName = OPERATION_DOWNLOADFILE) |
public abstract AttachmentType downloadFile( |
@WebParam(name = FileResource.XML_NAME) FileResource res) throws XServicesFault; |
/** |
* @param file |
* @return The file name of the file that has been uploaded. |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_UPLOADFILE) |
@WebMethod(operationName = OPERATION_UPLOADFILE) |
public abstract String uploadFile( |
@WebParam(name = "file") AttachmentType file) throws XServicesFault; |
/** |
* @param src |
* @param todir |
* @param plm |
* @param overwrite |
* @param encoding |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_COPY) |
@WebMethod(operationName = OPERATION_COPY) |
public abstract ReturnCode copy( |
@WebParam(name = FileSetResource.XML_NAME) @XmlElement(required=true) FileSetResource src, |
@WebParam(name = "todir") @XmlElement(required=true) String todir, |
@WebParam(name = "preservelastmodified") boolean plm, |
@WebParam(name = "overwrite") boolean overwrite, |
@WebParam(name = "encoding") String encoding) throws XServicesFault; |
/** |
* @param fromFile |
* @param tofile |
* @param overwrite |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_COPYFILE) |
@WebMethod(operationName = OPERATION_COPYFILE) |
public abstract ReturnCode copyFile( |
@WebParam(name = "fromFile") @XmlElement(required=true) String fromFile, |
@WebParam(name = "toFile") @XmlElement(required=true) String tofile, |
@WebParam(name = "overwrite") boolean overwrite) throws XServicesFault; |
/** |
* @param res |
* @param encoding |
* @return content of the resource |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_LOADRESOURCE) |
@WebMethod(operationName = OPERATION_LOADRESOURCE) |
public abstract String loadRes( |
@WebParam(name = FileResource.XML_NAME) FileResource res, |
@WebParam(name = "encoding") String encoding) throws XServicesFault; |
/** |
* @param res |
* @param encoding |
* @return content of the resource |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_LOADRESOURCEFROMARCHIVE) |
@WebMethod(operationName = OPERATION_LOADRESOURCEFROMARCHIVE) |
public abstract String loadResFromArchive( |
@WebParam(name = "archiveresource") ArchiveResource res, |
@WebParam(name = "encoding") String encoding) throws XServicesFault; |
/** |
* @param message |
* @param file |
* @param encoding |
* @param append |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_ECHOTOFILE) |
@WebMethod(operationName = OPERATION_ECHOTOFILE) |
public abstract ReturnCode echo2file( |
@WebParam(name = "message") @XmlElement(required=true) String message, |
@WebParam(name = "file") @XmlElement(required=true) String file, |
@WebParam(name = "encoding") String encoding, |
@WebParam(name = "append") boolean append) throws XServicesFault; |
/** |
* @param res |
* @param owner |
* @return |
*/ |
@WebMethod(operationName = OPERATION_CHANGEOWNER) |
public abstract ReturnCode changeOwner( |
@WebParam(name = FileSetResource.XML_NAME) FileSetResource res, |
@WebParam(name = "owner") @XmlElement(required=true) String owner); |
/** |
* @param res |
* @param group |
* @return |
*/ |
@WebMethod(operationName = OPERATION_CHANGEGROUP) |
public abstract ReturnCode changeGroup( |
@WebParam(name = FileSetResource.XML_NAME) FileSetResource res, |
@WebParam(name = "group") @XmlElement(required=true) String group); |
/** |
* @param res |
* @param perm |
* @return |
*/ |
@WebMethod(operationName = OPERATION_CHANGEMODE) |
public abstract ReturnCode changeMode( |
@WebParam(name = FileSetResource.XML_NAME) FileSetResource res, |
@WebParam(name = "permissions") @XmlElement(required=true) String perm); |
/** |
* @param res |
* @param search |
* @param replace |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_REPLACEINFILE) |
@WebMethod(operationName = OPERATION_REPLACEINFILE) |
public abstract ReturnCode replaceInFile( |
@WebParam(name = FileResource.XML_NAME) @XmlElement(required=true) FileResource res, |
@WebParam(name = "search") @XmlElement(required=true) String search, |
@WebParam(name = "replace") @XmlElement(required=true) String replace) throws XServicesFault; |
/** |
* @param res |
* @param patternList |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_REPLACEINFILE2) |
@WebMethod(operationName = OPERATION_REPLACEINFILE2) |
public abstract ReturnCode replaceInFile2( |
@WebParam(name = FileResource.XML_NAME) FileResource res, |
@WebParam(name = "patternList") List<ReplacePattern> patternList) throws XServicesFault; |
/** |
* @param res |
* @param search |
* @param replace |
* @param flags |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_REPLACEINFILEREGEX) |
@WebMethod(operationName = OPERATION_REPLACEINFILEREGEX) |
public abstract ReturnCode replaceInFileRegEx( |
@WebParam(name = FileResource.XML_NAME) FileResource res, |
@WebParam(name = "search") String search, |
@WebParam(name = "replace") String replace, |
@WebParam(name = "flags") String flags) throws XServicesFault; |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/FileServiceImpl.java |
---|
0,0 → 1,370 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.io.File; |
import java.io.FileNotFoundException; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.io.InputStream; |
import java.util.List; |
import javax.activation.DataHandler; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.ArchiveResource; |
import net.brutex.xservices.types.AttachmentType; |
import net.brutex.xservices.types.FileResource; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.ReplacePattern; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.FileService; |
import net.brutex.xservices.ws.XServicesFault; |
import org.apache.cxf.aegis.type.mtom.StreamDataSource; |
import org.apache.tools.ant.BuildException; |
import org.apache.tools.ant.taskdefs.Basename; |
import org.apache.tools.ant.taskdefs.Chmod; |
import org.apache.tools.ant.taskdefs.Copy; |
import org.apache.tools.ant.taskdefs.Echo; |
import org.apache.tools.ant.taskdefs.LoadResource; |
import org.apache.tools.ant.taskdefs.Replace; |
import org.apache.tools.ant.taskdefs.optional.ReplaceRegExp; |
import org.apache.tools.ant.taskdefs.optional.unix.Chgrp; |
import org.apache.tools.ant.taskdefs.optional.unix.Chown; |
import org.apache.tools.ant.types.FileSet; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.FileService", serviceName = "FileService") |
public class FileServiceImpl implements FileService { |
/* |
* (non-Javadoc) |
* |
* @see net.brutex.xservices.ws.impl.FileService#basename(java.lang.String, |
* java.lang.String) |
*/ |
@Override |
public String basename(String filename, String suffix) { |
final String BASENAME_VALUE = "basename.value"; |
Basename basename = new Basename(); |
RunTask runner = new RunTask(basename); |
basename.setFile(new File(filename)); |
if (suffix != null && !suffix.equals("")) { |
basename.setSuffix(suffix); |
} |
basename.setProperty(BASENAME_VALUE); |
ReturnCode r = runner.postTask(); |
return r.getProperty(BASENAME_VALUE); |
} |
public ReturnCode replaceInFile(FileResource res, String search, |
String replace) throws XServicesFault { |
ReturnCode r = null; |
Replace rep = new Replace(); |
rep.setTaskName("Replace"); |
RunTask runner = new RunTask(rep); |
rep.addConfigured(res.getAntResource(rep.getProject())); |
rep.setToken(search); |
rep.setValue(replace); |
try { |
r = runner.postTask(); |
} catch (BuildException e) { |
throw new XServicesFault(e); |
} |
return r; |
} |
public ReturnCode replaceInFile2(FileResource res, |
List<ReplacePattern> patternList) throws XServicesFault { |
ReturnCode r = null; |
for (ReplacePattern pat : patternList) { |
Replace rep = new Replace(); |
rep.setTaskName("Replace"); |
RunTask runner = new RunTask(rep); |
rep.addConfigured(res.getAntResource(rep.getProject())); |
rep.setToken(pat.search); |
rep.setValue(pat.replace); |
try { |
r = runner.postTask(); |
} catch (BuildException e) { |
throw new XServicesFault(e); |
} |
} |
return r; |
} |
public ReturnCode replaceInFileRegEx(FileResource res, String search, |
String replace, String flags) throws XServicesFault { |
ReplaceRegExp rep = new ReplaceRegExp(); |
rep.setTaskName("ReplaceRegExp"); |
RunTask runner = new RunTask(rep); |
File infile = new File(res.uri); |
rep.setFile(infile); |
rep.setMatch(search); |
rep.setReplace(replace); |
rep.setFlags(flags); |
try { |
ReturnCode r = runner.postTask(); |
return r; |
} catch (BuildException e) { |
throw new XServicesFault(e); |
} |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#base64Encode(net.brutex.xservices |
* .types.FileSetResource) |
*/ |
@Override |
public AttachmentType downloadFile(FileResource res) throws XServicesFault { |
InputStream is = null; |
try { |
is = res.getAntResource(null).getInputStream(); |
StreamDataSource ssource = new StreamDataSource( |
"application/binary", is); |
DataHandler h = new DataHandler(ssource); |
AttachmentType t = new AttachmentType(); |
t.setContent(h); |
t.setFilename(res.getAntResource(null).getName()); |
return t; |
} catch (IOException e) { |
throw new XServicesFault(e); |
} |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#base64Decode(net.brutex.xservices |
* .types.AttachmentType) |
*/ |
@Override |
public String uploadFile(AttachmentType file) throws XServicesFault { |
DataHandler h = file.getContent(); |
File f = new File(file.getFilename()); |
FileOutputStream fout; |
try { |
fout = new FileOutputStream(f); |
h.writeTo(fout); |
fout.flush(); |
fout.close(); |
} catch (FileNotFoundException e) { |
throw new XServicesFault(e); |
} catch (IOException e) { |
throw new XServicesFault(e); |
} |
return file.getFilename(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#copy(net.brutex.xservices.types |
* .FileSetResource, java.lang.String, boolean, boolean, java.lang.String) |
*/ |
@Override |
public ReturnCode copy(FileSetResource src, String todir, boolean plm, |
boolean overwrite, String encoding) throws XServicesFault { |
Copy copy = new Copy(); |
copy.setTaskName("Copy"); |
RunTask runner = new RunTask(copy); |
FileSet set = src.getAntResource(copy.getProject()); |
copy.add(set); |
File dst = new File(todir); |
if (dst.isDirectory()) { |
copy.setTodir(dst); |
} |
if (dst.isFile()) { |
copy.setTofile(dst); |
} |
copy.setOverwrite(overwrite); |
copy.setPreserveLastModified(plm); |
if (encoding != null && !encoding.equals("")) { |
copy.setOutputEncoding(encoding); |
} else { |
copy.setOutputEncoding(System.getProperty("file.encoding")); |
} |
return runner.postTask(); |
} |
@Override |
public ReturnCode copyFile(String fromFile, String tofile, boolean overwrite) |
throws XServicesFault { |
Copy copy = new Copy(); |
copy.setTaskName("Copy"); |
RunTask runner = new RunTask(copy); |
File f = new File(fromFile); |
if (!f.isFile()) |
throw new XServicesFault("File '" + fromFile + "' not found."); |
copy.setFile(new File(fromFile)); |
copy.setTofile(new File(tofile)); |
copy.setOverwrite(overwrite); |
return runner.postTask(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#loadRes(net.brutex.xservices |
* .types.FileResource, java.lang.String) |
*/ |
@Override |
public String loadRes(FileResource res, String encoding) |
throws XServicesFault { |
if (encoding == null || encoding.equals("")) { |
encoding = System.getProperty("file.encoding"); |
} |
LoadResource lr = new LoadResource(); |
lr.setTaskName("LoadResource"); |
RunTask runner = new RunTask(lr); |
lr.addConfigured(res.getAntResource(lr.getProject())); |
lr.setEncoding(encoding); |
System.out.println("Using encoding: " + encoding); |
lr.setProperty("LoadResource.out"); |
ReturnCode r = runner.postTask(); |
return r.getProperty("LoadResource.out"); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#loadResFromArchive(net.brutex |
* .xservices.types.ArchiveResource, java.lang.String) |
*/ |
@Override |
public String loadResFromArchive(ArchiveResource res, String encoding) { |
if (encoding == null || encoding.equals("")) { |
encoding = System.getProperty("file.encoding"); |
} |
LoadResource lr = new LoadResource(); |
lr.setTaskName("LoadResource"); |
RunTask runner = new RunTask(lr); |
lr.addConfigured(res.getAntResource(lr.getProject())); |
lr.setEncoding(encoding); |
System.out.println("Using encoding: " + encoding); |
lr.setProperty("LoadResource.out"); |
ReturnCode r = runner.postTask(); |
return r.getProperty("LoadResource.out"); |
} |
/* |
* (non-Javadoc) |
* |
* @see net.brutex.xservices.ws.impl.FileService#echo2file(java.lang.String, |
* java.lang.String, java.lang.String, boolean) |
*/ |
@Override |
public ReturnCode echo2file(String message, String file, String encoding, |
boolean append) throws XServicesFault { |
Echo echo = new Echo(); |
echo.setTaskName("toFile"); |
RunTask runTask = new RunTask(echo); |
echo.addText(message); |
echo.setEncoding(encoding); |
File f = new File(file); |
try { |
if (!f.canWrite()) |
throw new XServicesFault("Cannot write to file: " |
+ f.getCanonicalPath()); |
echo.setFile(f); |
echo.setAppend(append); |
ReturnCode c = runTask.postTask(); |
return c; |
} catch (BuildException e) { |
throw new XServicesFault("Error in echo2file.", e); |
} catch (IOException e) { |
throw new XServicesFault("Cannot write to file.", e); |
} |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#changeOwner(net.brutex.xservices |
* .types.FileSetResource, java.lang.String) |
*/ |
@Override |
public ReturnCode changeOwner(FileSetResource res, String owner) { |
Chown chown = new Chown(); |
chown.setTaskName("Chown"); |
RunTask runner = new RunTask(chown); |
chown.setOwner(owner); |
FileSet set = res.getAntResource(chown.getProject()); |
chown.add(set); |
chown.setMaxParallel(300); |
return runner.postTask(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#changeGroup(net.brutex.xservices |
* .types.FileSetResource, java.lang.String) |
*/ |
@Override |
public ReturnCode changeGroup(FileSetResource res, String group) { |
Chgrp chgrp = new Chgrp(); |
chgrp.setTaskName("Chgrp"); |
RunTask runner = new RunTask(chgrp); |
chgrp.setGroup(group); |
FileSet set = res.getAntResource(chgrp.getProject()); |
chgrp.add(set); |
chgrp.setMaxParallel(300); |
return runner.postTask(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#changeMode(net.brutex.xservices |
* .types.FileSetResource, java.lang.String) |
*/ |
@Override |
public ReturnCode changeMode(FileSetResource res, String perm) { |
Chmod chmod = new Chmod(); |
chmod.setTaskName("Chmod"); |
RunTask runner = new RunTask(chmod); |
FileSet set = res.getAntResource(chmod.getProject()); |
chmod.add(set); |
chmod.setMaxParallel(300); |
chmod.setPerm(perm); |
chmod.setVerbose(true); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/ExecuteServiceImpl.java |
---|
0,0 → 1,298 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.io.File; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.ExecuteService; |
import org.apache.tools.ant.taskdefs.ExecTask; |
import org.apache.tools.ant.taskdefs.optional.net.RExecTask; |
import org.apache.tools.ant.taskdefs.optional.net.TelnetTask; |
import org.apache.tools.ant.taskdefs.optional.ssh.SSHExec; |
import org.apache.tools.ant.types.Commandline; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService( |
targetNamespace=BrutexNamespaces.WS_XSERVICES, |
endpointInterface="net.brutex.xservices.ws.ExecuteService", |
serviceName="ExecuteService" |
) |
public class ExecuteServiceImpl implements ExecuteService { |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommand(java.lang.String, java.lang.String, long) |
*/ |
@Override |
@WebMethod(operationName = "runCommand") |
public ReturnCode runCommand(@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args, |
@WebParam(name = "timeout") long timeout) { |
return executeCommand(cmd, |
Commandline.translateCommandline(args), |
null, |
false, |
null, |
false, |
true, |
false, |
timeout); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandWithArgs(java.lang.String, java.lang.String[], long) |
*/ |
@Override |
@WebMethod(operationName = "runCommandWithArgs") |
public ReturnCode runCommandWithArgs(@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args, |
@WebParam(name = "timeout") long timeout) { |
return executeCommand(cmd, |
args, |
null, |
false, |
null, |
false, |
true, |
false, |
timeout); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandAsync(java.lang.String, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = "runCommandAsync") |
public ReturnCode runCommandAsync(@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args) { |
return executeCommand(cmd, |
Commandline.translateCommandline(args), |
null, |
true, |
null, |
false, |
true, |
false, |
0); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandAsyncWithArgs(java.lang.String, java.lang.String[]) |
*/ |
@Override |
@WebMethod(operationName = "runCommandAsyncWithArgs") |
public ReturnCode runCommandAsyncWithArgs(@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args) { |
return executeCommand(cmd, |
args, |
null, |
true, |
null, |
false, |
true, |
false, |
0); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSH(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, long) |
*/ |
@Override |
@WebMethod(operationName = "runCommandWithSSH") |
public ReturnCode runCommandWithSSH(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return sshExec(host.hostname, host.user, host.password, host.port, cmd, timeout); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSHKeyAuth(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, long) |
*/ |
@Override |
@WebMethod(operationName = "runCommandWithSSHKeyAuth") |
public ReturnCode runCommandWithSSHKeyAuth(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "keyfile") String keyfile, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return sshExecWithCert(host.hostname, host.user, host.password, keyfile, host.port, cmd, timeout); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#rExec(net.brutex.xservices.types.HostConnection, java.lang.String, long) |
*/ |
@Override |
@WebMethod(operationName = "rExec") |
public ReturnCode rExec(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return rexec(host.hostname, host.port, host.user, host.password, cmd, timeout); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.impl.ExecuteService#runTelnet(net.brutex.xservices.types.HostConnection, java.lang.String, java.lang.String, java.lang.String, long) |
*/ |
@Override |
@WebMethod(operationName = "telnet") |
public ReturnCode runTelnet(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "prompt") String prompt, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "expect") String expect, |
@WebParam(name = "timeout") long timeout) { |
return telnet(host.hostname, host.port, host.user, host.password, cmd, timeout, prompt, expect); |
} |
@WebMethod(exclude = true) |
private ReturnCode executeCommand(String executable, |
String[] args, |
File dir, |
boolean spawn, |
String inputstring, |
boolean newenvironment, |
boolean vmlauncher, |
boolean searchpath, |
long timeout) { |
ExecTask exe = new ExecTask(); |
RunTask runner = new RunTask(exe); |
/* |
Commandline cmdl = new Commandline(); |
cmdl.setExecutable(executable); |
cmdl.addArguments(args); |
System.out.println(cmdl.describeCommand()); |
*/ |
exe.setExecutable(executable); |
for (String s : args) { |
exe.createArg().setValue(s); |
} |
exe.setDir(dir); |
if (spawn) { |
exe.setSpawn(spawn); |
} else { |
exe.setTimeout(timeout); |
exe.setInputString(inputstring); |
exe.setOutputproperty("ExecuteService.stdout"); |
exe.setErrorProperty("ExecuteService.stderr"); |
exe.setResultProperty("ExecuteService.result"); |
} |
exe.setNewenvironment(newenvironment); |
exe.setVMLauncher(vmlauncher); |
exe.setSearchPath(searchpath); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode sshExec(String host, |
String username, |
String password, |
int port, |
String command, |
long timeout) { |
SSHExec sshexec = new SSHExec(); |
RunTask runner = new RunTask(sshexec); |
sshexec.setHost(host); |
sshexec.setUsername(username); |
sshexec.setPassword(password); |
sshexec.setPort(port); |
sshexec.setCommand(command); |
sshexec.setTrust(true); |
sshexec.setTimeout(timeout); |
sshexec.setOutputproperty("SSHExec.stdout"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode sshExecWithCert(String host, |
String username, |
String passphrase, |
String keyfile, |
int port, |
String command, |
long timeout) { |
SSHExec sshexec = new SSHExec(); |
RunTask runner = new RunTask(sshexec); |
sshexec.setHost(host); |
sshexec.setUsername(username); |
sshexec.setKeyfile(keyfile); |
sshexec.setPassphrase(passphrase); |
sshexec.setPort(port); |
sshexec.setCommand(command); |
sshexec.setTrust(true); |
sshexec.setTimeout(timeout); |
sshexec.setOutputproperty("SSHExec.stdout"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode rexec(String host, |
int port, |
String username, |
String password, |
String command, |
long timeout) { |
RExecTask rexec = new RExecTask(); |
RunTask runner = new RunTask(rexec); |
rexec.setServer(host); |
rexec.setPort(port); |
rexec.setUserid(username); |
rexec.setPassword(password); |
rexec.setCommand(command); |
rexec.setTimeout((int) Math.round(timeout)); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode telnet(String host, |
int port, |
String username, |
String password, |
String command, |
long timeout, String prompt, String expect) { |
TelnetTask rexec = new TelnetTask(); |
RunTask runner = new RunTask(rexec); |
rexec.setServer(host); |
rexec.setPort(port); |
rexec.setUserid(username); |
rexec.setPassword(password); |
rexec.setTimeout((int) Math.round(timeout)); |
rexec.createRead().addText(prompt); |
rexec.createWrite().addText(command); |
rexec.createRead().addText(expect); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/ArchiveServiceImpl.java |
---|
0,0 → 1,327 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.io.File; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.ArchiveResource; |
import net.brutex.xservices.types.CompressionType; |
import net.brutex.xservices.types.FileResource; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.ResourceInterface; |
import net.brutex.xservices.types.ResourceSetInterface; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.util.UnRarTask; |
import net.brutex.xservices.ws.ArchiveService; |
import org.apache.tools.ant.taskdefs.BUnzip2; |
import org.apache.tools.ant.taskdefs.BZip2; |
import org.apache.tools.ant.taskdefs.Expand; |
import org.apache.tools.ant.taskdefs.GUnzip; |
import org.apache.tools.ant.taskdefs.GZip; |
import org.apache.tools.ant.taskdefs.Untar; |
import org.apache.tools.ant.taskdefs.Zip; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, |
endpointInterface="net.brutex.xservices.ws.ArchiveService", |
serviceName = "ArchiveService") |
public class ArchiveServiceImpl implements ArchiveService { |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bzip2(net.brutex.xservices.types.FileResource, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2) |
public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return bzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bzip2FromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action = WS_OPERATION_BZIP2_ARCHIVE) |
public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return null;// return bzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gzip(net.brutex.xservices.types.FileResource, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP) |
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return gzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gzipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE) |
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return gzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gunzip(java.lang.String, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP) |
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return GUnzip(new FileResource(FileResource.Type.FILE, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bunzip2(java.lang.String, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = WS_OPERATION_BUNZIP2) |
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return BUnzip2(new FileResource(FileResource.Type.FILE, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gunzipFromURL(java.lang.String, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = "gunzipFromURL") |
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return GUnzip(new FileResource(FileResource.Type.URL, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bunzip2FromURL(java.lang.String, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = "bunzip2FromURL") |
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return BUnzip2(new FileResource(FileResource.Type.URL, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#zip(net.brutex.xservices.types.FileResource, java.lang.String, boolean, java.lang.String, int) |
*/ |
@Override |
@WebMethod(operationName = "zip") |
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) { |
if (level > 9) { |
level = 9; |
} |
if (level < 0) { |
level = 0; |
} |
return zip(src, new File(file), encoding, !overwrite, level); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#zipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String, boolean, java.lang.String, int) |
*/ |
@Override |
@WebMethod(operationName = "zipFromArchive") |
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean update, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) { |
return zip(src, new File(file), encoding, !update, level); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#unzip(java.lang.String, java.lang.String, boolean, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = "unzip") |
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding) { |
return unzip(new File(src), new File(dest), overwrite, encoding); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#unrar(java.lang.String, java.lang.String) |
*/ |
@Override |
@WebMethod(operationName = "unrar") |
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
return unrar(new File(src), new File(dest)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#untar(java.lang.String, java.lang.String, boolean, net.brutex.xservices.types.CompressionType) |
*/ |
@Override |
@WebMethod(operationName = "untar") |
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = "compression") CompressionType compression) { |
Untar.UntarCompressionMethod c = new Untar.UntarCompressionMethod(); |
switch (compression) { |
case GZIP: |
c.setValue("gzip"); |
break; |
case BZIP2: |
c.setValue("bzip2"); |
break; |
default: |
c.setValue("none"); |
break; |
} |
return untar(new File(src), new File(dest), overwrite, c); |
} |
@WebMethod(exclude = true) |
private ReturnCode bzip(ResourceInterface src, File dst) { |
if (dst.exists() && dst.isFile()) { |
dst.delete(); |
} |
BZip2 bzip = new BZip2(); |
bzip.setTaskName("BZip2"); |
RunTask runner = new RunTask(bzip); |
bzip.setSrcResource(src.getAntResource(bzip.getProject())); |
bzip.setDestfile(dst); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode gzip(ResourceInterface src, File dst) { |
if (dst.exists() && dst.isFile()) { |
dst.delete(); |
} |
GZip gzip = new GZip(); |
gzip.setTaskName("GZip"); |
RunTask runner = new RunTask(gzip); |
gzip.addConfigured(src.getAntResource(gzip.getProject())); |
gzip.setDestfile(dst); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode zip(ResourceInterface src, File dst, String encoding, boolean update, int compresslevel) { |
Zip zip = new Zip(); |
zip.setTaskName("Zip"); |
RunTask runner = new RunTask(zip); |
zip.add(src.getAntResource(zip.getProject())); |
zip.setDestFile(dst); |
if (encoding != null && !encoding.equals("")) { |
zip.setEncoding(encoding); |
} |
zip.setUpdate(update); |
zip.setLevel(compresslevel); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode GUnzip(ResourceInterface src, File dst) { |
GUnzip uz = new GUnzip(); |
uz.setTaskName("GUnzip"); |
RunTask runner = new RunTask(uz); |
uz.setSrcResource(src.getAntResource(uz.getProject())); |
if (dst != null) { |
uz.setDest(dst); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode BUnzip2(ResourceInterface src, File dst) { |
BUnzip2 uz = new BUnzip2(); |
uz.setTaskName("BUnzip2"); |
RunTask runner = new RunTask(uz); |
uz.setSrcResource(src.getAntResource(uz.getProject())); |
if (dst != null) { |
uz.setDest(dst); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode unzip(File src, File dest, boolean overwrite, String encoding) { |
Expand unzip = new Expand(); |
unzip.setTaskName("UnZip"); |
RunTask runner = new RunTask(unzip); |
unzip.setSrc(src); |
unzip.setDest(dest); |
unzip.setOverwrite(overwrite); |
if (encoding != null && !encoding.equals("")) { |
unzip.setEncoding(encoding); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode untar(File src, File dest, boolean overwrite, Untar.UntarCompressionMethod compression) { |
Untar unzip = new Untar(); |
unzip.setTaskName("Untar"); |
RunTask runner = new RunTask(unzip); |
unzip.setSrc(src); |
unzip.setDest(dest); |
unzip.setOverwrite(overwrite); |
unzip.setCompression(compression); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode unrar(File src, File dst) { |
UnRarTask unrar = new UnRarTask(); |
unrar.setTaskName("UnRar"); |
RunTask runner = new RunTask(unrar); |
unrar.setSrc(src); |
unrar.setDst(dst); |
return runner.postTask(); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/MiscServiceImpl.java |
---|
0,0 → 1,156 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.util.Enumeration; |
import java.util.Properties; |
import javax.jws.WebService; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.MiscService; |
import org.apache.cxf.annotations.WSDLDocumentation; |
import org.apache.cxf.annotations.WSDLDocumentationCollection; |
import org.apache.tools.ant.taskdefs.HostInfo; |
import org.apache.tools.ant.taskdefs.Sleep; |
import org.apache.tools.ant.taskdefs.email.EmailTask; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WSDLDocumentationCollection({ |
@WSDLDocumentation("My portType documentation"), |
@WSDLDocumentation(value = "My top level documentation", placement = WSDLDocumentation.Placement.TOP), |
@WSDLDocumentation(value = "My binding doc", placement = WSDLDocumentation.Placement.BINDING) }) |
@WebService( |
targetNamespace = BrutexNamespaces.WS_XSERVICES, |
endpointInterface = "net.brutex.xservices.ws.MiscService", |
serviceName = "MiscService" |
) |
public class MiscServiceImpl implements MiscService { |
@WSDLDocumentation(value = "Get information about a host.") |
public ReturnCode getHostinfo(String hostname) { |
return antGetHostinfo(hostname, null); |
} |
@WSDLDocumentation(value = "Get XService information.") |
public ReturnCode getInfo() { |
ReturnCode r = new ReturnCode(); |
r.returnCode = 0; |
// Get all system properties |
Properties props = System.getProperties(); |
// Enumerate all system properties |
Enumeration<String> e = (Enumeration<String>) props.propertyNames(); |
for (; e.hasMoreElements(); ) { |
// Get property name |
String propName = (String)e.nextElement(); |
// Get property value |
String propValue = (String)props.get(propName); |
r.stdOut = r.stdOut + propName + ": " + propValue + "\n"; |
} |
return r; |
} |
public ReturnCode sendMailSimple(HostConnection mailhost, String from, |
String tolist, String subject, String message) { |
return sendMail(from, from, tolist, "", "", subject, message, |
"text/plain", null, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, "utf-8", false, false); |
} |
public ReturnCode sendMailSimpleWithAttachment(HostConnection mailhost, |
String from, String tolist, String subject, String message, |
FileSetResource res) { |
return sendMail(from, from, tolist, "", "", subject, message, |
"text/plain", res, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, "utf-8", false, false); |
} |
public ReturnCode sendMail(HostConnection mailhost, String from, |
String tolist, String cclist, String bcclist, String subject, |
MailMimeType mimetype, String charset, String message, |
FileSetResource res, boolean ssl, boolean tls) { |
return sendMail(from, from, tolist, cclist, bcclist, subject, message, |
mimetype.value(), res, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, charset, tls, ssl); |
} |
public ReturnCode sleep(int minutes, int seconds) { |
return sleep(0, minutes, seconds, 0); |
} |
private ReturnCode antGetHostinfo(String hostname, String prefix) { |
HostInfo info = new HostInfo(); |
info.setTaskName("HostInfo"); |
RunTask runner = new RunTask(info); |
info.setHost(hostname); |
// info.setPrefix(prefix); |
return runner.postTask(); |
} |
private ReturnCode sendMail(String from, String replyto, String tolist, |
String cclist, String bcclist, String subject, String message, |
String messagemimetype, FileSetResource attachments, |
String mailhost, int mailport, String user, String password, |
String charset, boolean tls, boolean ssl) { |
EmailTask mail = new EmailTask(); |
mail.setTaskName("Mail"); |
RunTask runner = new RunTask(mail); |
mail.setFrom(from); |
mail.setReplyTo(replyto); |
mail.setToList(tolist); |
mail.setCcList(cclist); |
mail.setBccList(bcclist); |
mail.setSubject(subject); |
mail.setMessage(message); |
mail.setMessageMimeType(messagemimetype); |
if (attachments != null) { |
mail.addFileset(attachments.getAntResource(mail.getProject())); |
} |
mail.setMailhost(mailhost); |
mail.setMailport(mailport); |
mail.setUser(user); |
mail.setPassword(password); |
mail.setCharset(charset); |
mail.setSSL(ssl); |
mail.setEnableStartTLS(tls); |
return runner.postTask(); |
} |
private ReturnCode sleep(int hours, int minutes, int seconds, |
int milliseconds) { |
Sleep sleep = new Sleep(); |
sleep.setTaskName("Sleep"); |
RunTask runner = new RunTask(sleep); |
sleep.setHours(hours); |
sleep.setMinutes(minutes); |
sleep.setSeconds(seconds); |
sleep.setMilliseconds(milliseconds); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/ArchiveService.java |
---|
0,0 → 1,203 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.ArchiveResource; |
import net.brutex.xservices.types.CompressionType; |
import net.brutex.xservices.types.FileResource; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface ArchiveService { |
public static final String WS_OPERATION_BZIP2 = "bzip2"; |
public static final String WS_OPERATION_BZIP2_ARCHIVE = "bzip2FromArchive"; |
public static final String WS_OPERATION_GZIP = "gzip"; |
public static final String WS_OPERATION_GZIP_ARCHIVE = "gzipFromArchive"; |
public static final String WS_OPERATION_UNZIP = "unzip"; |
public static final String WS_OPERATION_GUNZIP = "gunzip"; |
public static final String WS_OPERATION_BUNZIP2 = "bunzip2"; |
public static final String WS_PARAM_SOURCEFILE = "source"; |
public static final String WS_PARAM_SOURCEFILE_STRING = "srcfile"; |
public static final String WS_PARAM_SOURCEURL = "srcurl"; |
public static final String WS_PARAM_SOURCEARCHIVE = "archivesource"; |
public static final String WS_PARAM_DESTFILE = "destfile"; |
public static final String WS_PARAM_DESTDIR = "destdir"; |
public static final String WS_PARAM_ENCODING = "encoding"; |
public static final String WS_PARAM_OVERWRITE = "overwrite"; |
public static final String WS_PARAM_COMPRESS = "compresslevel"; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2) |
public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action = WS_OPERATION_BZIP2_ARCHIVE) |
public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP) |
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE) |
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP) |
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_BUNZIP2) |
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "gunzipFromURL") |
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "bunzip2FromURL") |
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @param overwrite |
* @param encoding |
* @param level |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "zip") |
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = WS_PARAM_COMPRESS) int level) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @param update |
* @param encoding |
* @param level |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "zipFromArchive") |
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean update, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @param overwrite |
* @param encoding |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "unzip") |
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "unrar") |
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @param overwrite |
* @param compression |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "untar") |
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = "compression") CompressionType compression) throws XServicesFault; |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/ExecuteService.java |
---|
0,0 → 1,116 |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* @author brosenberger |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface ExecuteService { |
/** |
* @param cmd |
* @param args |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommand") |
public abstract ReturnCode runCommand( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param cmd |
* @param args |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommandWithArgs") |
public abstract ReturnCode runCommandWithArgs( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param cmd |
* @param args |
* @return |
*/ |
@WebMethod(operationName = "runCommandAsync") |
public abstract ReturnCode runCommandAsync( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args); |
/** |
* @param cmd |
* @param args |
* @return |
*/ |
@WebMethod(operationName = "runCommandAsyncWithArgs") |
public abstract ReturnCode runCommandAsyncWithArgs( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args); |
/** |
* @param host |
* @param cmd |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommandWithSSH") |
public abstract ReturnCode runCommandWithSSH( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param host |
* @param keyfile |
* @param cmd |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommandWithSSHKeyAuth") |
public abstract ReturnCode runCommandWithSSHKeyAuth( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "keyfile") String keyfile, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param host |
* @param cmd |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "rExec") |
public abstract ReturnCode rExec( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param host |
* @param prompt |
* @param cmd |
* @param expect |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "telnet") |
public abstract ReturnCode runTelnet( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "prompt") String prompt, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "expect") String expect, |
@WebParam(name = "timeout") long timeout); |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/XServicesFault.java |
---|
0,0 → 1,97 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import java.util.GregorianCalendar; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
import javax.xml.bind.annotation.XmlType; |
import javax.xml.datatype.DatatypeConfigurationException; |
import javax.xml.datatype.DatatypeFactory; |
import javax.xml.datatype.XMLGregorianCalendar; |
import javax.xml.ws.WebFault; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebFault(targetNamespace=BrutexNamespaces.WS_XSERVICES) |
public class XServicesFault extends Exception { |
/** |
* |
*/ |
private static final long serialVersionUID = -6779279189376374820L; |
public XServicesFault(String message, Exception e) { |
this(message, e.getCause()); |
} |
public XServicesFault(String string) { |
this(string, new Exception(string).getCause()); |
} |
public XServicesFault(Exception e) { |
this(e.getMessage(), e.getCause()); |
} |
public XServicesFault(String message, Throwable cause) { |
super(message, cause); |
this.faultstring=message; |
try { |
timestamp = DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()); |
} catch (DatatypeConfigurationException ex) { |
System.err.println(ex.getMessage()); |
} |
} |
/** |
* The error message. |
*/ |
@XmlElement(name="faultstring", namespace=BrutexNamespaces.WS_XSERVICES) |
public String faultstring = ""; |
/** |
* Username under which the web service has been executed. |
*/ |
@XmlElement(name="username", namespace=BrutexNamespaces.WS_XSERVICES) |
public String username = System.getProperty("user.name"); |
/** |
* Home directory of the user profile running the web service. |
*/ |
@XmlElement(name="homedir", namespace=BrutexNamespaces.WS_XSERVICES) |
public String homedir = System.getProperty("user.home"); |
/** |
* Timestamp when the fault was thrown. |
*/ |
@XmlElement(name="timstamp", namespace=BrutexNamespaces.WS_XSERVICES) |
public XMLGregorianCalendar timestamp = null; |
/** |
* Java runtime version. |
*/ |
@XmlElement(name="jvmversion") |
public String jvmruntime = System.getProperty("java.version"); |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/MiscService.java |
---|
0,0 → 1,122 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.annotations.WSDLDocumentation; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface MiscService { |
/** |
* @param hostname |
* @return |
*/ |
@WebMethod(operationName = "getHostinfo") |
public ReturnCode getHostinfo(@WebParam(name = "hostname") String hostname); |
/** |
* |
* @param mailhost |
* @param from |
* @param tolist |
* @param subject |
* @param message |
* @return |
*/ |
@WebMethod(operationName = "sendMailSimple") |
public ReturnCode sendMailSimple(@WebParam(name = "mailhost") HostConnection mailhost, |
@WebParam(name = "from") String from, |
@WebParam(name = "to") String tolist, |
@WebParam(name = "subject") String subject, |
@WebParam(name = "message") String message); |
/** |
* |
* @param mailhost |
* @param from |
* @param tolist |
* @param subject |
* @param message |
* @param res |
* @return |
*/ |
@WebMethod(operationName = "sendMailSimpleWithAttachment") |
public ReturnCode sendMailSimpleWithAttachment(@WebParam(name = "mailhost") HostConnection mailhost, |
@WebParam(name = "from") String from, |
@WebParam(name = "to") String tolist, |
@WebParam(name = "subject") String subject, |
@WebParam(name = "message") String message, |
@WebParam(name = "attachments") FileSetResource res); |
/** |
* |
* @param mailhost |
* @param from |
* @param tolist |
* @param cclist |
* @param bcclist |
* @param subject |
* @param mimetype |
* @param charset |
* @param message |
* @param res |
* @param ssl |
* @param tls |
* @return |
*/ |
@WebMethod(operationName = "sendMail") |
public ReturnCode sendMail(@WebParam(name = "mailhost") HostConnection mailhost, |
@WebParam(name = "from") String from, |
@WebParam(name = "to") String tolist, |
@WebParam(name = "cc") String cclist, |
@WebParam(name = "bcc") String bcclist, |
@WebParam(name = "subject") String subject, |
@WebParam(name = "mimetype") MailMimeType mimetype, |
@WebParam(name = "charset") String charset, |
@WebParam(name = "message") String message, |
@WebParam(name = "attachments") FileSetResource res, |
@WebParam(name = "useSSL") boolean ssl, |
@WebParam(name = "useStartTLS") boolean tls); |
/** |
* |
* @param minutes |
* @param seconds |
* @return |
*/ |
@WebMethod(operationName = "sleep") |
public ReturnCode sleep(@WebParam(name = "minutes") int minutes, |
@WebParam(name = "seconds") int seconds); |
@WebMethod(operationName = "getInfo") |
public ReturnCode getInfo(); |
} |