plc-controller/UploadFiles.java
2025-08-07 15:52:03 +02:00

136 lines
5.4 KiB
Java

package handleSsh;
import com.jcraft.jsch.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
public class UploadFiles {
// READ
// files to upload should always be in "flowserver" directory !!! (it can be "something-flowserver" as well)
// RENAME IT if it is not
// Change BASIC_PATH to your needs!!!
private static final String BASIC_PATH= "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/";
private static final String[] filesToUpload =
{
BASIC_PATH + "flow/cloudmqttconnect.js",
// BASIC_PATH + "flow/cloudmqttconnect.js",
BASIC_PATH + "flow/cmd_manager.js",
// BASIC_PATH + "flow/code.js",
// BASIC_PATH + "flow/comment.js",
// BASIC_PATH + "flow/count.js",
// BASIC_PATH + "flow/db_connector.js",
BASIC_PATH + "flow/db_init.js",
// BASIC_PATH + "flow/debug.js",
// BASIC_PATH + "flow/designer.json",
// BASIC_PATH + "flow/dido_controller.js",
// BASIC_PATH + "flow/httprequest.js",
// BASIC_PATH + "flow/httpresponse.js",
// BASIC_PATH + "flow/httproute.js",
// BASIC_PATH + "flow/infosender.js",
// BASIC_PATH + "flow/modbus_reader.js",
// BASIC_PATH + "flow/monitorconsumption.js",
// BASIC_PATH + "flow/monitordisk.js",
// BASIC_PATH + "flow/monitormemory.js",
// BASIC_PATH + "flow/nodesdb_changecheck.js",
// BASIC_PATH + "flow/show_dbdata.js",
// BASIC_PATH + "flow/slack_filter.js",
// BASIC_PATH + "flow/thermometer.js",
// BASIC_PATH + "flow/trigger.js",
// BASIC_PATH + "flow/virtualwirein.js",
// BASIC_PATH + "flow/virtualwireout.js",
// BASIC_PATH + "flow/wsmqttpublish.js",
//
// BASIC_PATH + "config",
// BASIC_PATH + "addSwitch.py",
// BASIC_PATH + "cloud_topic.py",
// BASIC_PATH + "createNodeDbOriginal.js",
// BASIC_PATH + "createNode.py",
//
// BASIC_PATH + "flow/helper/DataToTbHandler.js",
// BASIC_PATH + "flow/helper/db_helper.js",
// BASIC_PATH + "flow/helper/ErrorToServiceHandler.js",
// BASIC_PATH + "flow/helper/logger.js",
// BASIC_PATH + "flow/helper/md5.js",
// BASIC_PATH + "flow/helper/notification_reporter.js",
// BASIC_PATH + "flow/helper/register.js",
// BASIC_PATH + "flow/helper/serialport_helper.js",
// BASIC_PATH + "flow/helper/suncalc.js",
BASIC_PATH + "flow/helper/utils.js",
//
// BASIC_PATH + "databases/notifications.table",
// BASIC_PATH + "databases/total_energy.js",
// BASIC_PATH + "databases/tbdata.nosql",
// BASIC_PATH + "databases/modbus_config.js",
// BASIC_PATH + "databases/accelerometer_db.js",
};
private static String buildDestinationDirectory(String fileToUpload) {
int index = fileToUpload.indexOf("flowserver/");
return fileToUpload.substring(index + 10);
}
private static ArrayList<Server> allServers;
public static void main(String[] args) throws JSchException {
allServers = new BuildServerArray().getAllServers();
for (Server server : allServers) {
System.out.println("Connecting to server: " + server);
copyFileToServer(server);
}
}
private static void copyFileToServer(Server server) throws JSchException {
JSch jsch = new JSch();
jsch.setKnownHosts("/home/rasta5man/.ssh/known_hosts");
jsch.addIdentity( "/home/rasta5man/.ssh/oms_key" );
Session session = null;
ChannelSftp sftpChannel = null;
try {
session = jsch.getSession(server.getUsername(), server.getHost(), server.getPort());
session.setPassword(server.getPassword());
//session.setConfig("StrictHostKeyChecking", "no"); // Avoids checking for new host keys (not recommended for production)
session.connect();
sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
for (String fileToUpload : filesToUpload) {
System.out.println("Uploading " + fileToUpload + " to " + server);
String directoryToUpload = "";
if(server.getUsername().equals("root")) // je to LM
{
directoryToUpload = "/root/flowserver" + buildDestinationDirectory(fileToUpload);
}
else
{
directoryToUpload = "/home/unipi/flowserver" + buildDestinationDirectory(fileToUpload);
// directoryToUpload = "/etc" + buildDestinationDirectory(fileToUpload);
// directoryToUpload = "/lib/systemd/system" + buildDestinationDirectory(fileToUpload);
// System.out.println(directoryToUpload + fileToUpload);
}
sftpChannel.put(fileToUpload, directoryToUpload);
}
} catch (JSchException | SftpException e) {
System.err.println("Error connecting to " + server.getUsername() + ": " + e.getMessage());
} finally {
if (sftpChannel != null) {
sftpChannel.disconnect();
}
if (session != null) {
session.disconnect();
}
}
}
}