use of org.syncany.config.to.PortTO in project syncany by syncany.
the class DaemonOperation method loadOrCreateConfig.
// Config related functions. Used on starting and reloading.
private void loadOrCreateConfig() {
try {
File daemonConfigFile = new File(UserConfig.getUserConfigDir(), UserConfig.DAEMON_FILE);
File daemonConfigFileExample = new File(UserConfig.getUserConfigDir(), UserConfig.DAEMON_EXAMPLE_FILE);
if (daemonConfigFile.exists()) {
logger.log(Level.INFO, "Loading daemon config file from " + daemonConfigFile + " ...");
daemonConfig = DaemonConfigTO.load(daemonConfigFile);
} else {
logger.log(Level.INFO, "Daemon config file does not exist.");
logger.log(Level.INFO, "- Writing example config file to " + daemonConfigFileExample + " ...");
DaemonConfigHelper.createAndWriteExampleDaemonConfig(daemonConfigFileExample);
logger.log(Level.INFO, "- Creating at " + daemonConfigFile + " ...");
daemonConfig = DaemonConfigHelper.createAndWriteDefaultDaemonConfig(daemonConfigFile);
}
// Add user and password for access from the CLI
if (daemonConfig.getPortTO() == null && portTO == null) {
// Access info has not been created yet, generate new user-password pair
String accessToken = CipherUtil.createRandomAlphabeticString(20);
UserTO cliUser = new UserTO();
cliUser.setUsername(UserConfig.USER_CLI);
cliUser.setPassword(accessToken);
portTO = new PortTO();
portTO.setPort(daemonConfig.getWebServer().getBindPort());
portTO.setUser(cliUser);
daemonConfig.setPortTO(portTO);
} else if (daemonConfig.getPortTO() == null) {
// Access info is not included in the daemon config, but exists. Happens when reloading.
// We reload the information about the port, but keep the access token the same.
portTO.setPort(daemonConfig.getWebServer().getBindPort());
daemonConfig.setPortTO(portTO);
}
} catch (Exception e) {
logger.log(Level.WARNING, "Cannot (re-)load config. Exception thrown.", e);
}
}
use of org.syncany.config.to.PortTO in project syncany by syncany.
the class CommandLineClient method sendToRest.
private int sendToRest(Command command, String commandName, String[] commandArgs, File portFile) {
try {
// Read port config (for daemon) from port file
PortTO portConfig = readPortConfig(portFile);
// Create authentication details
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope(SERVER_HOSTNAME, portConfig.getPort()), new UsernamePasswordCredentials(portConfig.getUser().getUsername(), portConfig.getUser().getPassword()));
// Allow all hostnames in CN; this is okay as long as hostname is localhost/127.0.0.1!
// See: https://github.com/syncany/syncany/pull/196#issuecomment-52197017
X509HostnameVerifier hostnameVerifier = new AllowAllHostnameVerifier();
// Fetch the SSL context (using the user key/trust store)
SSLContext sslContext = UserConfig.createUserSSLContext();
// Create client with authentication details
CloseableHttpClient client = HttpClients.custom().setSslcontext(sslContext).setHostnameVerifier(hostnameVerifier).setDefaultCredentialsProvider(credentialsProvider).build();
// Build and send request, print response
Request request = buildFolderRequestFromCommand(command, commandName, commandArgs, config.getLocalDir().getAbsolutePath());
String serverUri = SERVER_SCHEMA + SERVER_HOSTNAME + ":" + portConfig.getPort() + SERVER_REST_API;
String xmlMessageString = XmlMessageFactory.toXml(request);
StringEntity xmlMessageEntity = new StringEntity(xmlMessageString);
HttpPost httpPost = new HttpPost(serverUri);
httpPost.setEntity(xmlMessageEntity);
logger.log(Level.INFO, "Sending HTTP Request to: " + serverUri);
logger.log(Level.FINE, httpPost.toString());
logger.log(Level.FINE, xmlMessageString);
HttpResponse httpResponse = client.execute(httpPost);
int exitCode = handleRestResponse(command, httpResponse);
return exitCode;
} catch (Exception e) {
logger.log(Level.SEVERE, "Command " + command.toString() + " FAILED. ", e);
return showErrorAndExit(e.getMessage());
}
}
use of org.syncany.config.to.PortTO in project syncany by syncany.
the class TestDaemonUtil method createPortTO.
public static PortTO createPortTO(int port) {
String accessToken = CipherUtil.createRandomAlphabeticString(20);
UserTO cliUser = new UserTO();
cliUser.setUsername("CLI");
cliUser.setPassword(accessToken);
PortTO portTO = new PortTO();
portTO.setPort(port);
portTO.setUser(cliUser);
return portTO;
}
Aggregations