| | |
| | | import java.io.File; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.Locale; |
| | | import java.util.Map; |
| | | import java.util.TimeZone; |
| | | |
| | |
| | | import com.gitblit.models.ServerStatus; |
| | | import com.gitblit.models.SettingModel; |
| | | import com.gitblit.utils.StringUtils; |
| | | import com.gitblit.utils.XssFilter; |
| | | import com.google.inject.Inject; |
| | | import com.google.inject.Injector; |
| | | import com.google.inject.Singleton; |
| | | |
| | | @Singleton |
| | | public class RuntimeManager implements IRuntimeManager { |
| | | |
| | | private final Logger logger = LoggerFactory.getLogger(getClass()); |
| | | |
| | | private final IStoredSettings settings; |
| | | |
| | | private final XssFilter xssFilter; |
| | | |
| | | private final ServerStatus serverStatus; |
| | | |
| | | private TimeZone timezone; |
| | | private final ServerSettings settingsModel; |
| | | |
| | | private File baseFolder; |
| | | |
| | | private ServerSettings settingsModel; |
| | | private TimeZone timezone; |
| | | |
| | | public RuntimeManager(IStoredSettings settings) { |
| | | @Inject |
| | | private Injector injector; |
| | | |
| | | @Inject |
| | | public RuntimeManager(IStoredSettings settings, XssFilter xssFilter) { |
| | | this(settings, xssFilter, null); |
| | | } |
| | | |
| | | public RuntimeManager(IStoredSettings settings, XssFilter xssFilter, File baseFolder) { |
| | | this.settings = settings; |
| | | this.settingsModel = new ServerSettings(); |
| | | this.serverStatus = new ServerStatus(); |
| | | this.xssFilter = xssFilter; |
| | | this.baseFolder = baseFolder == null ? new File("") : baseFolder; |
| | | } |
| | | |
| | | @Override |
| | | public RuntimeManager setup() { |
| | | logger.info("Gitblit settings = " + settings.toString()); |
| | | logTimezone("JVM", TimeZone.getDefault()); |
| | | logTimezone(Constants.NAME, getTimezone()); |
| | | public RuntimeManager start() { |
| | | logger.info("Basefolder : " + baseFolder.getAbsolutePath()); |
| | | logger.info("Settings : " + settings.toString()); |
| | | logTimezone("JVM timezone: ", TimeZone.getDefault()); |
| | | logTimezone("App timezone: ", getTimezone()); |
| | | logger.info("JVM locale : " + Locale.getDefault()); |
| | | logger.info("App locale : " + (getLocale() == null ? "<client>" : getLocale())); |
| | | return this; |
| | | } |
| | | |
| | | @Override |
| | | public RuntimeManager stop() { |
| | | return this; |
| | | } |
| | | |
| | | @Override |
| | | public Injector getInjector() { |
| | | return injector; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | /** |
| | | * Determine if this Gitblit instance is actively serving git repositories |
| | | * or if it is merely a repository viewer. |
| | | * |
| | | * @return true if Gitblit is serving repositories |
| | | */ |
| | | @Override |
| | | public boolean isServingRepositories() { |
| | | return settings.getBoolean(Keys.git.enableGitServlet, true) || (settings.getInteger(Keys.git.daemonPort, 0) > 0); |
| | | } |
| | | |
| | | /** |
| | | * Returns the preferred timezone for the Gitblit instance. |
| | | * |
| | | * @return a timezone |
| | |
| | | @Override |
| | | public TimeZone getTimezone() { |
| | | if (timezone == null) { |
| | | String tzid = settings.getString("web.timezone", null); |
| | | String tzid = settings.getString(Keys.web.timezone, null); |
| | | if (StringUtils.isEmpty(tzid)) { |
| | | timezone = TimeZone.getDefault(); |
| | | return timezone; |
| | |
| | | SimpleDateFormat df = new SimpleDateFormat("z Z"); |
| | | df.setTimeZone(zone); |
| | | String offset = df.format(new Date()); |
| | | logger.info(type + " timezone is " + zone.getID() + " (" + offset + ")"); |
| | | logger.info("{}{} ({})", new Object [] { type, zone.getID(), offset }); |
| | | } |
| | | |
| | | @Override |
| | | public Locale getLocale() { |
| | | String lc = settings.getString(Keys.web.forceDefaultLocale, null); |
| | | if (!StringUtils.isEmpty(lc)) { |
| | | int underscore = lc.indexOf('_'); |
| | | if (underscore > 0) { |
| | | String lang = lc.substring(0, underscore); |
| | | String cc = lc.substring(underscore + 1); |
| | | return new Locale(lang, cc); |
| | | } else { |
| | | return new Locale(lc); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | |
| | | serverStatus.heapFree = Runtime.getRuntime().freeMemory(); |
| | | return serverStatus; |
| | | } |
| | | |
| | | /** |
| | | * Returns the XSS filter. |
| | | * |
| | | * @return the XSS filter |
| | | */ |
| | | @Override |
| | | public XssFilter getXssFilter() { |
| | | return xssFilter; |
| | | } |
| | | |
| | | } |