Search in sources :

Example 1 with UserTO

use of org.syncany.config.to.UserTO in project syncany by syncany.

the class WebServer method initServer.

private void initServer(DaemonConfigTO daemonConfigTO) throws Exception {
    WebServerTO webServerConfig = daemonConfigTO.getWebServer();
    // Bind address and port
    String bindAddress = webServerConfig.getBindAddress();
    int bindPort = webServerConfig.getBindPort();
    // Users (incl. CLI user!)
    List<UserTO> users = readWebServerUsers(daemonConfigTO);
    IdentityManager identityManager = new MapIdentityManager(users);
    // (Re-)generate keypair/certificate (if requested)
    boolean certificateAutoGenerate = webServerConfig.isCertificateAutoGenerate();
    String certificateCommonName = webServerConfig.getCertificateCommonName();
    if (certificateAutoGenerate && certificateCommonNameChanged(certificateCommonName)) {
        generateNewKeyPairAndCertificate(certificateCommonName);
    }
    // Set up the handlers for WebSocket, REST and the web interface
    HttpHandler pathHttpHandler = path().addPrefixPath(API_ENDPOINT_WS_XML, websocket(new InternalWebSocketHandler(this, certificateCommonName, RequestFormatType.XML))).addPrefixPath(API_ENDPOINT_WS_JSON, websocket(new InternalWebSocketHandler(this, certificateCommonName, RequestFormatType.JSON))).addPrefixPath(API_ENDPOINT_REST_XML, new InternalRestHandler(this, RequestFormatType.XML)).addPrefixPath(API_ENDPOINT_REST_JSON, new InternalRestHandler(this, RequestFormatType.JSON)).addPrefixPath("/", new InternalWebInterfaceHandler());
    // Add some security spices
    HttpHandler securityPathHttpHandler = addSecurity(pathHttpHandler, identityManager);
    SSLContext sslContext = UserConfig.createUserSSLContext();
    // And go for it!
    webServer = Undertow.builder().addHttpsListener(bindPort, bindAddress, sslContext).setHandler(securityPathHttpHandler).build();
    logger.log(Level.INFO, "Initialized web server.");
}
Also used : WebServerTO(org.syncany.config.to.WebServerTO) HttpHandler(io.undertow.server.HttpHandler) IdentityManager(io.undertow.security.idm.IdentityManager) InternalWebSocketHandler(org.syncany.operations.daemon.handlers.InternalWebSocketHandler) SSLContext(javax.net.ssl.SSLContext) InternalRestHandler(org.syncany.operations.daemon.handlers.InternalRestHandler) UserTO(org.syncany.config.to.UserTO) InternalWebInterfaceHandler(org.syncany.operations.daemon.handlers.InternalWebInterfaceHandler)

Example 2 with UserTO

use of org.syncany.config.to.UserTO 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);
    }
}
Also used : UserTO(org.syncany.config.to.UserTO) PortTO(org.syncany.config.to.PortTO) File(java.io.File) IOException(java.io.IOException) ConfigException(org.syncany.config.ConfigException)

Example 3 with UserTO

use of org.syncany.config.to.UserTO in project syncany by syncany.

the class DaemonConfigHelper method createAndWriteDaemonConfig.

public static DaemonConfigTO createAndWriteDaemonConfig(File configFile, List<FolderTO> folders) throws ConfigException {
    UserTO defaultUserTO = new UserTO();
    defaultUserTO.setUsername(UserConfig.USER_ADMIN);
    defaultUserTO.setPassword(CipherUtil.createRandomAlphabeticString(12));
    ArrayList<UserTO> users = new ArrayList<>();
    users.add(defaultUserTO);
    DaemonConfigTO defaultDaemonConfigTO = new DaemonConfigTO();
    defaultDaemonConfigTO.setFolders(new ArrayList<>(folders));
    defaultDaemonConfigTO.setUsers(users);
    defaultDaemonConfigTO.save(configFile);
    return defaultDaemonConfigTO;
}
Also used : UserTO(org.syncany.config.to.UserTO) ArrayList(java.util.ArrayList) DaemonConfigTO(org.syncany.config.to.DaemonConfigTO)

Example 4 with UserTO

use of org.syncany.config.to.UserTO 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;
}
Also used : UserTO(org.syncany.config.to.UserTO) PortTO(org.syncany.config.to.PortTO)

Aggregations

UserTO (org.syncany.config.to.UserTO)4 PortTO (org.syncany.config.to.PortTO)2 IdentityManager (io.undertow.security.idm.IdentityManager)1 HttpHandler (io.undertow.server.HttpHandler)1 File (java.io.File)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 SSLContext (javax.net.ssl.SSLContext)1 ConfigException (org.syncany.config.ConfigException)1 DaemonConfigTO (org.syncany.config.to.DaemonConfigTO)1 WebServerTO (org.syncany.config.to.WebServerTO)1 InternalRestHandler (org.syncany.operations.daemon.handlers.InternalRestHandler)1 InternalWebInterfaceHandler (org.syncany.operations.daemon.handlers.InternalWebInterfaceHandler)1 InternalWebSocketHandler (org.syncany.operations.daemon.handlers.InternalWebSocketHandler)1