[accumulo] 01/02: ACCUMULO-4731 Improved handling of key load failure (#315)
This is an automated email from the ASF dual-hosted git repository. kturner pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git commit 518c1093de504de77e237b8fdaca28067ce17174 Author: Nick Felts <31989480+pirc...@users.noreply.github.com> AuthorDate: Fri Jan 19 19:09:50 2018 -0500 ACCUMULO-4731 Improved handling of key load failure (#315) CachingHDFSSecretKeyEncryptionStrategy will now throw an exception of a key encryption key cannot be loaded from file. The key encryption key file size is checked to verify the key length is correct. Sample key encryption key files were added for a unit test. --- .../CachingHDFSSecretKeyEncryptionStrategy.java| 29 +++-- .../crypto/SecretKeyEncryptionStrategy.java| 4 +- .../accumulo/core/security/crypto/CryptoTest.java | 73 +- 3 files changed, 99 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java b/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java index 1fa659a..58f1010 100644 --- a/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java +++ b/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java @@ -18,6 +18,7 @@ package org.apache.accumulo.core.security.crypto; import java.io.DataInputStream; import java.io.DataOutputStream; +import java.io.EOFException; import java.io.IOException; import java.security.InvalidKeyException; import java.security.Key; @@ -45,13 +46,13 @@ public class CachingHDFSSecretKeyEncryptionStrategy implements SecretKeyEncrypti private SecretKeyCache secretKeyCache = new SecretKeyCache(); @Override - public CryptoModuleParameters encryptSecretKey(CryptoModuleParameters context) { + public CryptoModuleParameters encryptSecretKey(CryptoModuleParameters context) throws IOException { try { secretKeyCache.ensureSecretKeyCacheInitialized(context); doKeyEncryptionOperation(Cipher.WRAP_MODE, context); } catch (IOException e) { log.error("{}", e.getMessage(), e); - throw new RuntimeException(e); + throw new IOException(e); } return context; } @@ -128,11 +129,14 @@ public class CachingHDFSSecretKeyEncryptionStrategy implements SecretKeyEncrypti pathToKeyName = Property.CRYPTO_DEFAULT_KEY_STRATEGY_KEY_LOCATION.getDefaultValue(); } - // TODO ACCUMULO-2530 Ensure volumes a properly supported + // TODO ACCUMULO-2530 Ensure volumes are properly supported Path pathToKey = new Path(pathToKeyName); FileSystem fs = FileSystem.get(CachedConfiguration.getInstance()); DataInputStream in = null; + boolean invalidFile = false; + int keyEncryptionKeyLength = 0; + try { if (!fs.exists(pathToKey)) { initializeKeyEncryptionKey(fs, pathToKey, context); @@ -140,14 +144,29 @@ public class CachingHDFSSecretKeyEncryptionStrategy implements SecretKeyEncrypti in = fs.open(pathToKey); -int keyEncryptionKeyLength = in.readInt(); +keyEncryptionKeyLength = in.readInt(); +// If the file length does not correctly relate to the expected key size, there is an inconsistency and +// we have no way of knowing the correct key length. +// The keyEncryptionKeyLength+4 accounts for the integer read from the file. +if (fs.getFileStatus(pathToKey).getLen() != keyEncryptionKeyLength + 4) { + invalidFile = true; + // Passing this exception forward so we can provide the more useful error message + throw new IOException(); +} keyEncryptionKey = new byte[keyEncryptionKeyLength]; in.readFully(keyEncryptionKey); initialized = true; + } catch (EOFException e) { +throw new IOException("Could not initialize key encryption cache, malformed key encryption key file", e); } catch (IOException e) { -log.error("Could not initialize key encryption cache", e); +if (invalidFile) { + throw new IOException("Could not initialize key encryption cache, malformed key encryption key file. Expected key of lengh " + keyEncryptionKeyLength + + " but file contained " + (fs.getFileStatus(pathToKey).getLen() - 4) + "bytes for key encryption key."); +} else { + throw new IOException("Could not initialize key encryption cache, unable to access or find key encryption key file", e); +} } finally { IOUtils.closeQuietly(in); } diff --git a/core/src/main/java/org/apache/accumulo/core/security/crypto/SecretKeyEncryptionStrategy.java b/core/src/main/java/org/apache/accumulo/core/security/crypto/SecretKeyEncryptionStrategy.java index 7d3c333..8dfdee1 100644 ---
[accumulo] 02/02: ACCUMULO-4731 minor cleanup of unit test
This is an automated email from the ASF dual-hosted git repository. kturner pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git commit 591c3a0dc9d3ba0eb12cba2328e8e5badc6c7f60 Author: Keith TurnerAuthorDate: Fri Jan 19 19:06:14 2018 -0500 ACCUMULO-4731 minor cleanup of unit test --- .../CachingHDFSSecretKeyEncryptionStrategy.java| 2 +- .../accumulo/core/security/crypto/CryptoTest.java | 28 +- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java b/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java index 58f1010..b301988 100644 --- a/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java +++ b/core/src/main/java/org/apache/accumulo/core/security/crypto/CachingHDFSSecretKeyEncryptionStrategy.java @@ -150,7 +150,7 @@ public class CachingHDFSSecretKeyEncryptionStrategy implements SecretKeyEncrypti // The keyEncryptionKeyLength+4 accounts for the integer read from the file. if (fs.getFileStatus(pathToKey).getLen() != keyEncryptionKeyLength + 4) { invalidFile = true; - // Passing this exception forward so we can provide the more useful error message + // Passing this exception forward so we can provide the more useful error message throw new IOException(); } keyEncryptionKey = new byte[keyEncryptionKeyLength]; diff --git a/core/src/test/java/org/apache/accumulo/core/security/crypto/CryptoTest.java b/core/src/test/java/org/apache/accumulo/core/security/crypto/CryptoTest.java index d4bf4ae..8609183 100644 --- a/core/src/test/java/org/apache/accumulo/core/security/crypto/CryptoTest.java +++ b/core/src/test/java/org/apache/accumulo/core/security/crypto/CryptoTest.java @@ -32,7 +32,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.file.Files; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; @@ -54,7 +53,6 @@ import org.apache.accumulo.core.conf.ConfigurationCopy; import org.apache.accumulo.core.conf.DefaultConfiguration; import org.apache.accumulo.core.conf.Property; import org.apache.hadoop.conf.Configuration; -import org.junit.AfterClass; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -68,8 +66,8 @@ public class CryptoTest { public static final String CRYPTO_ON_CONF = "crypto-on-accumulo-site.xml"; public static final String CRYPTO_OFF_CONF = "crypto-off-accumulo-site.xml"; public static final String CRYPTO_ON_KEK_OFF_CONF = "crypto-on-no-key-encryption-accumulo-site.xml"; - - //Used for kek file testing + + // Used for kek file testing private static File kekWorks; private static File kekTooLong; private static File kekTooShort; @@ -407,19 +405,12 @@ public class CryptoTest { testKekFile(kekTooShort); } - @AfterClass - public static void removeAllTestKekFiles() throws IOException { - Files.deleteIfExists(kekWorks.toPath()); -Files.deleteIfExists(kekTooShort.toPath()); -Files.deleteIfExists(kekTooLong.toPath()); - } - // Used to check reading of KEK files @SuppressWarnings("deprecation") private void testKekFile(File testFile) throws IOException { - assertTrue(testFile.exists()); - assertFalse(testFile.isDirectory()); - +assertTrue(testFile.exists()); +assertFalse(testFile.isDirectory()); + AccumuloConfiguration conf = setAndGetAccumuloConfig(CRYPTO_ON_CONF); CryptoModuleParameters params = CryptoModuleFactory.createParamsObjectFromAccumuloConfiguration(conf); // TODO ACCUMULO-2530 this will need to be fixed when CachingHDFSSecretKeyEncryptionStrategy is fixed @@ -433,7 +424,10 @@ public class CryptoTest { private File createKekFile(String filename, Integer size) throws IOException { File dir = new File(System.getProperty("user.dir") + "/target/cryptoTest"); -boolean unused = dir.mkdirs(); // if the directories don't already exist, it'll return 1. If they do, 0. Both cases can be fine. +// must do something with return value to avoid findbugs +boolean foilFindbugs = dir.mkdirs(); // if the directories don't already exist, it'll return 1. If they do, 0. Both cases can be fine. +// must do something with java var to avoid java warning +foilFindbugs = !foilFindbugs; File testFile = File.createTempFile(filename, ".kek", dir); DataOutputStream os = new DataOutputStream(new FileOutputStream(testFile)); @@ -445,9 +439,9 @@ public class CryptoTest { os.write(key); os.flush(); os.close(); - + return testFile; - + } public void
[accumulo] branch master updated (f6c1662 -> 591c3a0)
This is an automated email from the ASF dual-hosted git repository. kturner pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git. from f6c1662 Merge branch '1.8' new 518c109 ACCUMULO-4731 Improved handling of key load failure (#315) new 591c3a0 ACCUMULO-4731 minor cleanup of unit test The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../CachingHDFSSecretKeyEncryptionStrategy.java| 29 -- .../crypto/SecretKeyEncryptionStrategy.java| 4 +- .../accumulo/core/security/crypto/CryptoTest.java | 67 +- 3 files changed, 93 insertions(+), 7 deletions(-) -- To stop receiving notification emails like this one, please contact ['"commits@accumulo.apache.org"'].
[accumulo] branch master updated (e05c475 -> f6c1662)
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git. from e05c475 Merge branch '1.8' add 3a9efa0 ACCUMULO-4587 Upgrade Monitor jquery to 3.2.1 add a13a6ad Merge branch '1.7' into 1.8 new f6c1662 Merge branch '1.8' The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: -- To stop receiving notification emails like this one, please contact ['"commits@accumulo.apache.org"'].
[accumulo] 01/01: Merge branch '1.8'
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git commit f6c16626ebb3724824ca5be65b0d0ac5b0e60173 Merge: e05c475 a13a6ad Author: Mike MillerAuthorDate: Fri Jan 19 15:22:08 2018 -0500 Merge branch '1.8' -- To stop receiving notification emails like this one, please contact "commits@accumulo.apache.org" .
[accumulo] branch 1.8 updated (62f8883 -> a13a6ad)
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a change to branch 1.8 in repository https://gitbox.apache.org/repos/asf/accumulo.git. from 62f8883 Merge branch '1.7' into 1.8 add 3a9efa0 ACCUMULO-4587 Upgrade Monitor jquery to 3.2.1 new a13a6ad Merge branch '1.7' into 1.8 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../monitor/src/main/resources/web/flot/jquery.js | 14887 +++ 1 file changed, 8412 insertions(+), 6475 deletions(-) -- To stop receiving notification emails like this one, please contact ['"commits@accumulo.apache.org"'].
[accumulo] 01/01: Merge branch '1.7' into 1.8
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a commit to branch 1.8 in repository https://gitbox.apache.org/repos/asf/accumulo.git commit a13a6adc3ce97317645edf7233c72478b3bd9823 Merge: 62f8883 3a9efa0 Author: Mike MillerAuthorDate: Fri Jan 19 15:02:16 2018 -0500 Merge branch '1.7' into 1.8 .../monitor/src/main/resources/web/flot/jquery.js | 14887 +++ 1 file changed, 8412 insertions(+), 6475 deletions(-) -- To stop receiving notification emails like this one, please contact "commits@accumulo.apache.org" .
[accumulo] branch master updated (28b53e0 -> e05c475)
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git. from 28b53e0 ACCUMULO-4611 Remove commons-config from API add da10af8 ACCUMULO-4741 Remove minified files in Monitor add 62f8883 Merge branch '1.7' into 1.8 new e05c475 Merge branch '1.8' The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: -- To stop receiving notification emails like this one, please contact ['"commits@accumulo.apache.org"'].
[accumulo] 01/01: Merge branch '1.8'
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/accumulo.git commit e05c475b5d1d7ca970398435fa597096a730ff83 Merge: 28b53e0 62f8883 Author: Mike MillerAuthorDate: Fri Jan 19 13:55:24 2018 -0500 Merge branch '1.8' -- To stop receiving notification emails like this one, please contact "commits@accumulo.apache.org" .
[accumulo] branch 1.8 updated (9ac92c7 -> 62f8883)
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a change to branch 1.8 in repository https://gitbox.apache.org/repos/asf/accumulo.git. from 9ac92c7 ACCUMULO-4611 Deprecate public API with commons config add da10af8 ACCUMULO-4741 Remove minified files in Monitor new 62f8883 Merge branch '1.7' into 1.8 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../accumulo/monitor/servlets/BasicServlet.java| 2 +- .../src/main/resources/web/flot/excanvas.min.js| 1 - .../resources/web/flot/jquery.colorhelpers.min.js | 1 - .../web/flot/jquery.flot.crosshair.min.js | 1 - .../web/flot/jquery.flot.fillbetween.min.js| 1 - .../resources/web/flot/jquery.flot.image.min.js| 1 - .../src/main/resources/web/flot/jquery.flot.min.js | 6 -- .../resources/web/flot/jquery.flot.navigate.min.js | 1 - .../main/resources/web/flot/jquery.flot.pie.min.js | 1 - .../resources/web/flot/jquery.flot.resize.min.js | 1 - .../web/flot/jquery.flot.selection.min.js | 1 - .../resources/web/flot/jquery.flot.stack.min.js| 1 - .../resources/web/flot/jquery.flot.symbol.min.js | 1 - .../web/flot/jquery.flot.threshold.min.js | 1 - .../src/main/resources/web/flot/jquery.min.js | 23 -- 15 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 server/monitor/src/main/resources/web/flot/excanvas.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.colorhelpers.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.crosshair.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.fillbetween.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.image.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.navigate.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.pie.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.resize.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.selection.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.stack.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.symbol.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.flot.threshold.min.js delete mode 100644 server/monitor/src/main/resources/web/flot/jquery.min.js -- To stop receiving notification emails like this one, please contact ['"commits@accumulo.apache.org"'].
[accumulo] 01/01: Merge branch '1.7' into 1.8
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a commit to branch 1.8 in repository https://gitbox.apache.org/repos/asf/accumulo.git commit 62f88836cb97ebcf4edcbd6ce01633ef4107b887 Merge: 9ac92c7 da10af8 Author: Mike MillerAuthorDate: Fri Jan 19 13:29:58 2018 -0500 Merge branch '1.7' into 1.8 .../accumulo/monitor/servlets/BasicServlet.java| 2 +- .../src/main/resources/web/flot/excanvas.min.js| 1 - .../resources/web/flot/jquery.colorhelpers.min.js | 1 - .../web/flot/jquery.flot.crosshair.min.js | 1 - .../web/flot/jquery.flot.fillbetween.min.js| 1 - .../resources/web/flot/jquery.flot.image.min.js| 1 - .../src/main/resources/web/flot/jquery.flot.min.js | 6 -- .../resources/web/flot/jquery.flot.navigate.min.js | 1 - .../main/resources/web/flot/jquery.flot.pie.min.js | 1 - .../resources/web/flot/jquery.flot.resize.min.js | 1 - .../web/flot/jquery.flot.selection.min.js | 1 - .../resources/web/flot/jquery.flot.stack.min.js| 1 - .../resources/web/flot/jquery.flot.symbol.min.js | 1 - .../web/flot/jquery.flot.threshold.min.js | 1 - .../src/main/resources/web/flot/jquery.min.js | 23 -- 15 files changed, 1 insertion(+), 42 deletions(-) -- To stop receiving notification emails like this one, please contact "commits@accumulo.apache.org" .
[accumulo] branch 1.7 updated: ACCUMULO-4741 Remove minified files in Monitor
This is an automated email from the ASF dual-hosted git repository. mmiller pushed a commit to branch 1.7 in repository https://gitbox.apache.org/repos/asf/accumulo.git The following commit(s) were added to refs/heads/1.7 by this push: new da10af8 ACCUMULO-4741 Remove minified files in Monitor da10af8 is described below commit da10af8d0c9da5e40b61a17976b29f826a818c27 Author: Mike MillerAuthorDate: Fri Jan 19 13:11:10 2018 -0500 ACCUMULO-4741 Remove minified files in Monitor --- .../accumulo/monitor/servlets/BasicServlet.java| 2 +- .../src/main/resources/web/flot/excanvas.min.js| 1 - .../resources/web/flot/jquery.colorhelpers.min.js | 1 - .../web/flot/jquery.flot.crosshair.min.js | 1 - .../web/flot/jquery.flot.fillbetween.min.js| 1 - .../resources/web/flot/jquery.flot.image.min.js| 1 - .../src/main/resources/web/flot/jquery.flot.min.js | 6 -- .../resources/web/flot/jquery.flot.navigate.min.js | 1 - .../main/resources/web/flot/jquery.flot.pie.min.js | 1 - .../resources/web/flot/jquery.flot.resize.min.js | 1 - .../web/flot/jquery.flot.selection.min.js | 1 - .../resources/web/flot/jquery.flot.stack.min.js| 1 - .../resources/web/flot/jquery.flot.symbol.min.js | 1 - .../web/flot/jquery.flot.threshold.min.js | 1 - .../src/main/resources/web/flot/jquery.min.js | 23 -- 15 files changed, 1 insertion(+), 42 deletions(-) diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java index 8168ce7..e517b44 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java @@ -137,7 +137,7 @@ abstract public class BasicServlet extends HttpServlet { sb.append("\n"); sb.append("\n"); -sb.append("\n"); +sb.append("\n"); sb.append("\n"); sb.append("\n"); diff --git a/server/monitor/src/main/resources/web/flot/excanvas.min.js b/server/monitor/src/main/resources/web/flot/excanvas.min.js deleted file mode 100644 index 988f934..000 --- a/server/monitor/src/main/resources/web/flot/excanvas.min.js +++ /dev/null @@ -1 +0,0 @@ -if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"").replace(/"/g,"")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vm [...] diff --git a/server/monitor/src/main/resources/web/flot/jquery.colorhelpers.min.js b/server/monitor/src/main/resources/web/flot/jquery.colorhelpers.min.js deleted file mode 100644 index 7082b11..000 --- a/server/monitor/src/main/resources/web/flot/jquery.colorhelpers.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){b.color={};b.color.make=function(f,e,c,d){var h={};h.r=f||0;h.g=e||0;h.b=c||0;h.a=d!=null?d:1;h.add=function(k,j){for(var g=0;g =1){return"rgb("+[h.r,h.g,h.b].join(",")+")"}else{return"rgba("+[h.r,h.g,h.b,h.a].join(",")+")"}};h.normalize=function(){function g(j,k,i){return k i?i:k)}h.r=g(0,parseInt [...] diff --git a/server/monitor/src/main/resources/web/flot/jquery.flot.crosshair.min.js b/server/monitor/src/main/resources/web/flot/jquery.flot.crosshair.min.js deleted file mode 100644 index bdd6da4..000 --- a/server/monitor/src/main/resources/web/flot/jquery.flot.crosshair.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){var a={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function c(h){var j={x:-1,y:-1,locked:false};h.setCrosshair=function e(l){if(!l){j.x=-1}else{var k=h.p2c(l);j.x=Math.max(0,Math.min(k.left,h.width()));j.y=Math.max(0,Math.min(k.top,h.height()))}h.triggerRedrawOverlay()};h.clearCrosshair=h.setCrosshair;h.lockCrosshair=function f(k){if(k){h.setCrosshair(k)}j.locked=true};h.unlockCrosshair=function g(){j.locked=false};function d(k){if(j.locked){return}if(j. [...] diff --git a/server/monitor/src/main/resources/web/flot/jquery.flot.fillbetween.min.js b/server/monitor/src/main/resources/web/flot/jquery.flot.fillbetween.min.js deleted file mode 100644 index 6ebcdcc..000 --- a/server/monitor/src/main/resources/web/flot/jquery.flot.fillbetween.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){var a={series:{fillBetween:null}};function c(f){function d(j,h){var g;for(g=0;g