Changeset bb7a88f


Ignore:
Timestamp:
Dec 24, 2011 12:48:30 AM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
87008f3
Parents:
8fa7205
Message:
  • Plugins:
    • Enforce min and max Jetty versions at plugin installation
    • Enforce I2P, Java, and Jetty versions at plugin startup too
Location:
apps/routerconsole/java/src/net/i2p/router/web
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java

    r8fa7205 rbb7a88f  
    1313    /** @since 0.8.11 */
    1414    public String getJettyVersion() {
    15         return Version.getImplVersion();
     15        return jettyVersion();
     16    }
     17   
     18    /** @since 0.8.13 */
     19    static String jettyVersion() {
     20        try {
     21            return Version.getImplVersion();
     22        } catch (Throwable t) {
     23            return "unknown";
     24        }
    1625    }
    1726
  • apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java

    r8fa7205 rbb7a88f  
    1818import java.util.concurrent.ConcurrentHashMap;
    1919
     20import net.i2p.CoreVersion;
    2021import net.i2p.I2PAppContext;
    2122import net.i2p.data.DataHelper;
     
    2829import net.i2p.util.Log;
    2930import net.i2p.util.Translate;
     31import net.i2p.util.VersionComparator;
    3032
    3133import org.mortbay.jetty.Server;
     
    9698            return false;
    9799        }
     100
     101        Properties props = pluginProperties(ctx, appName);
     102        String minVersion = ConfigClientsHelper.stripHTML(props, "min-i2p-version");
     103        if (minVersion != null &&
     104            (new VersionComparator()).compare(CoreVersion.VERSION, minVersion) < 0) {
     105            String foo = "Plugin " + appName + " requires I2P version " + minVersion + " or higher";
     106            log.error(foo);
     107            throw new Exception(foo);
     108        }
     109
     110        minVersion = ConfigClientsHelper.stripHTML(props, "min-java-version");
     111        if (minVersion != null &&
     112            (new VersionComparator()).compare(System.getProperty("java.version"), minVersion) < 0) {
     113            String foo = "Plugin " + appName + " requires Java version " + minVersion + " or higher";
     114            log.error(foo);
     115            throw new Exception(foo);
     116        }
     117
     118        String jVersion = LogsHelper.jettyVersion();
     119        minVersion = ConfigClientsHelper.stripHTML(props, "min-jetty-version");
     120        if (minVersion != null &&
     121            (new VersionComparator()).compare(minVersion, jVersion) > 0) {
     122            String foo = "Plugin " + appName + " requires Jetty version " + minVersion + " or higher";
     123            log.error(foo);
     124            throw new Exception(foo);
     125        }
     126
     127        String maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version");
     128        if (maxVersion != null &&
     129            (new VersionComparator()).compare(maxVersion, jVersion) < 0) {
     130            String foo = "Plugin " + appName + " requires Jetty version " + maxVersion + " or lower";
     131            log.error(foo);
     132            throw new Exception(foo);
     133        }
     134
    98135        if (log.shouldLog(Log.INFO))
    99136            log.info("Starting plugin: " + appName);
     
    114151        File clientConfig = new File(pluginDir, "clients.config");
    115152        if (clientConfig.exists()) {
    116             Properties props = new Properties();
    117             DataHelper.loadProps(props, clientConfig);
     153            Properties cprops = new Properties();
     154            DataHelper.loadProps(cprops, clientConfig);
    118155            List<ClientAppConfig> clients = ClientAppConfig.getClientApps(clientConfig);
    119156            runClientApps(ctx, pluginDir, clients, "start");
     
    124161        if (server != null) {
    125162            File consoleDir = new File(pluginDir, "console");
    126             Properties props = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath());
     163            Properties wprops = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath());
    127164            File webappDir = new File(consoleDir, "webapps");
    128165            String fileNames[] = webappDir.list(RouterConsoleRunner.WarFilenameFilter.instance());
     
    139176                            continue;
    140177                        }
    141                         String enabled = props.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED);
     178                        String enabled = wprops.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED);
    142179                        if (! "false".equals(enabled)) {
    143180                            if (log.shouldLog(Log.INFO))
     
    182219
    183220        // add summary bar link
    184         Properties props = pluginProperties(ctx, appName);
    185221        String name = ConfigClientsHelper.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(ctx));
    186222        if (name == null)
  • apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java

    r8fa7205 rbb7a88f  
    335335                    return;
    336336                }
     337                oldVersion = LogsHelper.jettyVersion();
     338                minVersion = ConfigClientsHelper.stripHTML(props, "min-jetty-version");
     339                if (minVersion != null &&
     340                    (new VersionComparator()).compare(minVersion, oldVersion) > 0) {
     341                    to.delete();
     342                    statusDone("<b>" + _("Plugin requires Jetty version {0} or higher", minVersion) + "</b>");
     343                    return;
     344                }
     345                maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version");
     346                if (maxVersion != null &&
     347                    (new VersionComparator()).compare(maxVersion, oldVersion) < 0) {
     348                    to.delete();
     349                    statusDone("<b>" + _("Plugin requires Jetty version {0} or lower", maxVersion) + "</b>");
     350                    return;
     351                }
    337352
    338353                // check if it is running first?
Note: See TracChangeset for help on using the changeset viewer.