public void invokeHudson() { invokeHudson(false); }
public Future<PluginInstallationJob> install(AvailablePluginInfo plugin) { for (AvailablePluginInfo dep : getNeededDependencies(plugin)) { install(dep); } return submitInstallationJob(plugin); }
public HttpResponse doFinish() { return initialSetup.doFinish(); }
InitialSetup initSetup = new InitialSetup(home, servletContext); if (initSetup.needsInitSetup()) { logger.info("\n\n\n================>\n\nInitial setup required. Please go to the Hudson Dashboard and complete the setup.\n\n<================\n\n\n"); if (HudsonSecurityEntitiesHolder.getHudsonSecurityManager().isUseSecurity() && !securityLoadFailed) { controller.install(new InitialSetupLogin(initSetup)); } else { controller.install(initSetup); initSetup.invokeHudson();
Future<PluginInstallationJob> newJob = install(plugin); installJob = newJob.get(); return new ErrorHttpResponse("Plugin " + pluginName + " could not be installed. " + installJob.getErrorMsg()); return new ErrorHttpResponse("Plugin " + pluginName + " could not be installed. " + ex.getLocalizedMessage()); reCheck(); return HttpResponses.ok();
public HttpResponse doProxyConfigure( @QueryParameter("proxy.server") String server, @QueryParameter("proxy.port") String port, @QueryParameter("proxy.noProxyFor") String noProxyFor, @QueryParameter("proxy.userName") String userName, @QueryParameter("proxy.password") String password, @QueryParameter("proxy.authNeeded") String authNeeded) throws IOException { if (!hudsonSecurityManager.hasPermission(Permission.HUDSON_ADMINISTER)) { return HttpResponses.forbidden(); } try { boolean proxySet = setProxy(server, port, noProxyFor, userName, password, authNeeded); if (proxySet) { proxyConfig.save(); } // Try opening a URL and see if the proxy works fine proxyConfig.openUrl(new URL("http://www.google.com")); } catch (IOException ex) { return new ErrorHttpResponse(ex.getLocalizedMessage()); } return HttpResponses.ok(); }
public InitialSetup(File homeDir, ServletContext context) throws MalformedURLException, IOException { hudsonHomeDir = homeDir; pluginsDir = new File(homeDir, "plugins"); servletContext = context; hudsonSecurityManager = HudsonSecurityEntitiesHolder.getHudsonSecurityManager(); proxyConfig = new ProxyConfiguration(homeDir); updateSiteManager = new UpdateSiteManager("default", hudsonHomeDir, proxyConfig); installedPluginManager = new InstalledPluginManager(pluginsDir); initSetupFile = new XmlFile(new File(homeDir, "initSetup.xml")); refreshUpdateCenterMetadataCache(); check(); // This is only created once during startup, so is effectively a singleton INSTANCE = this; }
private static ClassLoader[] getLoaders() { ClassLoader[] loaders = new ClassLoader[2]; loaders[0] = ThreadLocalUtils.class.getClassLoader(); loaders[1] = InitialSetup.getHudsonContextClassLoader(); return loaders; }
public List<AvailablePluginInfo> getUpdatablePlugins() { List<AvailablePluginInfo> updatablePlugins = new ArrayList<AvailablePluginInfo>(); Set<String> installedPluginNames = installedPluginManager.getInstalledPluginNames(); Set<String> availablePluginNames = updateSiteManager.getAvailablePluginNames(); for (String pluginName : availablePluginNames) { AvailablePluginInfo availablePlugin = updateSiteManager.getAvailablePlugin(pluginName); if (installedPluginNames.contains(pluginName)) { InstalledPluginInfo installedPlugin = installedPluginManager.getInstalledPlugin(pluginName); if (!availablePlugin.isObsolete() && isNewerThan(availablePlugin.getVersion(), installedPlugin.getVersion())) { updatablePlugins.add(availablePlugin); } } } return updatablePlugins; }
void reCheck() { installedObsoletePlugins.clear(); installedRecommendedPlugins.clear(); installableRecommendedPlugins.clear(); updatableRecommendedPlugins.clear(); installedFeaturedPlugins.clear(); installableFeaturedPlugins.clear(); updatableFeaturedPlugins.clear(); installableCompatibilityPlugins.clear(); installedCompatibilityPlugins.clear(); updatableCompatibilityPlugins.clear(); installedPluginManager.loadInstalledPlugins(); check(); }
public HttpResponse doContinue() { if (!hudsonSecurityManager.hasPermission(Permission.HUDSON_ADMINISTER)) { return HttpResponses.forbidden(); } initialSetup.getServletContext().setAttribute("app", initialSetup); return HttpResponses.ok(); } public boolean needsAdminLogin() {
public void invokeHudson(boolean restart) { final WebAppController controller = WebAppController.get(); if (initialClassLoader == null) { initialClassLoader = getClass().getClassLoader(); } Class hudsonIsLoadingClass; try { outerClassLoader = new OuterClassLoader(initialClassLoader); hudsonIsLoadingClass = outerClassLoader.loadClass("hudson.util.HudsonIsLoading"); HudsonIsLoading hudsonIsLoading = (HudsonIsLoading) hudsonIsLoadingClass.newInstance(); Class runnableClass = outerClassLoader.loadClass("org.eclipse.hudson.init.InitialRunnable"); Constructor ctor = runnableClass.getDeclaredConstructors()[0]; ctor.setAccessible(true); InitialRunnable initialRunnable = (InitialRunnable) ctor.newInstance(controller, logger, hudsonHomeDir, servletContext, restart); controller.install(hudsonIsLoading); initThread = new Thread(initialRunnable, "hudson initialization thread " + (++highInitThreadNumber)); initThread.setContextClassLoader(outerClassLoader); initThread.start(); } catch (Exception ex) { logger.error("Hudson failed to load!!!", ex); } /** * Above replaces these lines controller.install(new HudsonIsLoading()); * * new Thread("hudson initialization thread") { }.start(); */ }
public HttpResponse doDisablePlugin(@QueryParameter String pluginName) { if (!hudsonSecurityManager.hasPermission(Permission.HUDSON_ADMINISTER)) { return HttpResponses.forbidden(); } InstalledPluginInfo plugin = installedPluginManager.getInstalledPlugin(pluginName); try { plugin.setEnable(false); } catch (Exception ex) { return new ErrorHttpResponse("Plugin " + pluginName + " could not be disabled. " + ex.getLocalizedMessage()); } return HttpResponses.ok(); }
public HttpResponse doFinish() { try { initSetupFile.write("Hudson 3.3 Initial Setup Done"); } catch (IOException ex) { logger.error(ex.getLocalizedMessage()); } installerService.shutdownNow(); invokeHudson(); return HttpResponses.ok(); }
public void contextDestroyed(ServletContextEvent event) { Hudson instance = Hudson.getInstance(); if (instance != null) { instance.cleanUp(); } ClassLoader loader = InitialSetup.getHudsonContextClassLoader(); try { Finalizer.cleanupThreads(loader); } catch (Throwable t) { logger.error("Finalizer cleanup unsuccessful", t); } try { TrackedDaemonExecutor.shutdownAll(loader); } catch (Throwable t) { logger.error("Executor shutdown unsuccessful", t); } ThreadLocalUtils.removeThreadLocals(); // Logger is in the system classloader, so if we don't do this // the whole web app will never be undepoyed. java.util.logging.Logger.getLogger("hudson").removeHandler(handler); } }
if (availablePlugin.getType().equals(UpdateSiteManager.COMPATIBILITY)) { if (isNewerThan(availablePlugin.getVersion(), installedPlugin.getVersion())) { if (isNewerThan(availablePlugin.getVersion(), installedPlugin.getVersion())) { if (isNewerThan(availablePlugin.getVersion(), installedPlugin.getVersion())) {