summaryrefslogtreecommitdiffstats
path: root/petascope/src/petascope/wcst/transaction/ServiceFirewall.java
diff options
context:
space:
mode:
Diffstat (limited to 'petascope/src/petascope/wcst/transaction/ServiceFirewall.java')
-rw-r--r--petascope/src/petascope/wcst/transaction/ServiceFirewall.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/petascope/src/petascope/wcst/transaction/ServiceFirewall.java b/petascope/src/petascope/wcst/transaction/ServiceFirewall.java
new file mode 100644
index 0000000..28f6dc0
--- /dev/null
+++ b/petascope/src/petascope/wcst/transaction/ServiceFirewall.java
@@ -0,0 +1,52 @@
+/*
+ * This file is part of PetaScope.
+ *
+ * PetaScope is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * PetaScope is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with PetaScope. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * For more information please see <http://www.PetaScope.org>
+ * or contact Peter Baumann via <baumann@rasdaman.com>.
+ *
+ * Copyright 2009 Jacobs University Bremen, Peter Baumann.
+ */
+package petascope.wcst.transaction;
+
+/** Firewall class for WCS-T. It's job is to detect malitious queries and reject them.
+ * Currently, it only checks that queries do not occur too often.
+ *
+ * @author Andrei Aiordachioaie
+ */
+public class ServiceFirewall {
+
+ private static long lastQueryTime = 0;
+ /* Queries should not occur more often than this period (in seconds) */
+ private static final double MIN_QUERY_PERIOD = 10;
+
+ /** Do we reject a certain query through the firewall?
+ *
+ * @param query Query string
+ * @return boolean
+ */
+ public static boolean reject(String query) {
+ boolean result = true;
+
+ /* Check query period */
+ long currentTime = System.currentTimeMillis();
+ if (((currentTime - lastQueryTime) / 1000) >= MIN_QUERY_PERIOD) {
+ result = false;
+ }
+ lastQueryTime = currentTime;
+
+ return result;
+ }
+}