/* * Copyright (c) 2013 GigaSpaces Technologies Ltd. All rights reserved * * 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 beans.config; import beans.GsMailer; import utils.Utils; import java.io.File; import java.util.LinkedList; import java.util.List; /** * User: guym * Date: 12/13/12 * Time: 1:32 PM */ public class Conf { public ApplicationConfiguration application = new ApplicationConfiguration(); public SmtpConf smtp = new SmtpConf(); public Mails mails = new Mails(); public AsyncExecutionConf asyncExecution = new AsyncExecutionConf(); public ResourceConfig resources = new ResourceConfig(); // who is sending the mail? public GsMailer.Mailer mailer = new GsMailer.Mailer(); @Config( ignoreNullValues = true ) public String demoUserEmailSuffix = "_demo@gigaspaces.com"; public ServerConfig server = new ServerConfig(); public FeaturesConfig features = new FeaturesConfig(); public MailChimpDetails mailChimpDetails = new MailChimpDetails(); public SettingsConfig settings = new SettingsConfig(); @Config(ignoreNullValues = true) public boolean sendErrorEmails = false; @Config( playKey = "spring.context") public String springContext = null; public CloudifyConfiguration cloudify = new CloudifyConfiguration(); public String mixpanelApiKey = null; @Config(playKey = "application.secret") public String applicationSecret; public UiConf uiConf = new UiConf(); public static class SettingsConfig{ @Config( ignoreNullValues = true ) public boolean expireSession = false; // do not use the session expired mechanism. public InitialData initialData = new InitialData(); public boolean isRecoverExecutions = true; @Config(ignoreNullValues = true) public long stopTimeout = Utils.parseTimeToMillis( "30s" ); public Boolean globalSecurityCheck = false; // todo : switch this on once feature is completed. public TimeoutValues timeoutValues = new TimeoutValues(); public String applicationName = "Cloudify-Widget"; } // conversion widget extensions for registered users. public static class TimeoutValues{ @Config(ignoreNullValues = true) public long registered = Utils.parseTimeToMillis("7d"); @Config(ignoreNullValues = true) public long verified = Utils.parseTimeToMillis("30d"); } public static class InitialData{ @Config( ignoreNullValues = true ) public boolean load = true ; public String defaultPassword = "Initial4657"; // if we need to create users, we will use this password by default. @Config( ignoreNullValues = true ) public boolean override = false; // true iff we want to write over existing objects } public static class FeaturesConfigItem { public String users = ".*"; // all users by default @Config( ignoreNullValues = true ) public boolean on = false ; public FeaturesConfigItem setUsers(String users) { this.users = users; return this; } public FeaturesConfigItem setOn(boolean on) { this.on = on; return this; } } public static class FeaturesConfig { public FeaturesConfigItem socialLogin = new FeaturesConfigItem(); public FeaturesConfigItem signup = new FeaturesConfigItem().setOn(true); public FeaturesConfigItem autoGeneratedRecipeName = new FeaturesConfigItem(); } public static class CloudifyConfiguration{ public String version = "2.7.0-Cloudify-ga"; public long deployWatchDogProcessTimeoutMillis = Utils.parseTimeToMillis( "10mn" ); public long bootstrapCloudWatchDogProcessTimeoutMillis = Utils.parseTimeToMillis( "10mn" ); // time from "play" until we decide something is wrong and we send error public long deployTimeoutError = Utils.parseTimeToMillis("90mn"); public File deployScript=Utils.getFileByRelativePath( "/bin/deployer.sh" ); public File uninstallServiceScript = Utils.getFileByRelativePath( "/bin/uninstall_service.sh" ); public File uninstallApplicationScript = Utils.getFileByRelativePath( "/bin/uninstall_application.sh" ); public String removeOutputLines = ""; public String removeOutputString = ""; @Config(ignoreNullValues = true) public long verifyLoginUserIdTimeout = Utils.parseTimeToMillis("20s"); } public static class Mails{ public GsMailer.Mailer poolEmpty = new GsMailer.Mailer().setEmail("widget@cloudifysource.org").setName("Cloudify Widget Team"); public GsMailer.Mailer registrationCc = new GsMailer.Mailer(); public GsMailer.Mailer registrationFrom = new GsMailer.Mailer().setEmail("appcatalog@cloudifysource.org").setName("Application Catalog"); public GsMailer.Mailer logErrors = new GsMailer.Mailer(); public UpgradeLogMail changeLog = new UpgradeLogMail(); } public static class UpgradeLogMail{ public File file = Utils.getFileByRelativePath("/automatic_changelog"); public List<GsMailer.Mailer> addresses = new LinkedList<GsMailer.Mailer>(); } public static class ResourceConfig { public File recipesBaseDir = new File(new File(System.getProperty("java.io.tmpdir"), "cloudify-widget"), "recipes"); public File cloudProvidersBaseDir = new File(new File(System.getProperty("java.io.tmpdir"), "cloudify-widget"),"cloud-providers"); } public ServerConfig getServer(){ return server; } public MailChimpDetails getMailChimpDetails() { return mailChimpDetails; } public static class MailChimpDetails{ public String apiKey = null; public String listId = null; public String getApiKey() { return apiKey; } public void setApiKey(String apiKey) { this.apiKey = apiKey; } public String getListId() { return listId; } public void setListId(String listId) { this.listId = listId; } } public static class AsyncExecutionConf { public File newScriptsDir = Utils.getFileByRelativePath("node_scripts/_scripts/new"); public File executingScriptsDir = Utils.getFileByRelativePath("node_scripts/_scripts/executing"); public long statusPollingIntervalMillis = Utils.parseTimeToMillis("10s"); } }