import mir.media.MediaExc;
import mir.media.MediaFailure;
import mir.util.StreamCopier;
-import mir.util.ExecFunctions;
+import mir.util.ShellRoutines;
import mir.config.MirPropertiesConfiguration;
import java.io.*;
*/
public void readInfo() throws IOException {
checkFile();
- String infoString = ExecFunctions.execIntoString
+ String infoString = ShellRoutines.execIntoString
(getImageMagickPath() +
"identify " + "-format \"%w %h %m %n \" " +
file.getAbsolutePath()); // extra space, for multiframe (animations)
Float.toString(aScalingFactor * 100) + "% " +
result.file.getAbsolutePath();
logger.debug("ImageFile.scale:command:" + command);
- ExecFunctions.simpleExec(command);
+ ShellRoutines.simpleExec(command);
result.readInfo();
return result;
}
scaledImage.file.getAbsolutePath() + frame + " " +
anImageType + ":" + temp.getAbsolutePath();
logger.debug("writeScaledData command:" + command);
- ExecFunctions.simpleExec(command);
+ ShellRoutines.simpleExec(command);
// copy temp file into stream
StreamCopier.copy(new FileInputStream(temp), aStream);
temp.delete();
+++ /dev/null
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your version.
- */
-package mir.util;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Execute system commands. Warning: the current implementation is
- * unix specific.
- */
-public class ExecFunctions {
- /**
- * Executes a full command (including arguments) in a subshell
- * and returns the output of the command in a string. Output is
- * redirected into a temporary fil which is then read into the string
- */
- public static String execIntoString(String command) throws IOException {
- return new String(execIntoByteArray(command));
- }
-
- /**
- * Executes a full command (including arguments) in a subshell
- * and returns the output of the command in an array of
- * bytes. Output is redirected into a temporary file which is then
- * read into an array of bytes
- */
- public static byte[] execIntoByteArray(String command) throws IOException {
- File commandOutput = File.createTempFile("mircmd", "");
- int exitStatus;
- try {
- // WARNING: unix specific
- exitStatus = Runtime.getRuntime().exec(new String[]{
- "/bin/sh", "-c",
- command + " " +
- ">" + commandOutput.getAbsolutePath()
- }).waitFor();
- }
- catch (InterruptedException e) {
- throw new IOException(e.toString());
- }
- if (exitStatus != 0) {
- throw new IOException("command exit satus:" + exitStatus);
- }
- byte[] result = FileRoutines.readFileIntoByteArray
- (commandOutput.getAbsolutePath());
- commandOutput.delete();
- return result;
- }
-
- /**
- * Executes a full command (including arguments) in a subshell.
- * Standard input and output go to /dev/null
- */
- public static void simpleExec(String command)
- throws IOException {
- int exitStatus;
- try {
- // WARNING: unix specific
- exitStatus = Runtime.getRuntime().exec(new String[]{
- "/bin/sh", "-c",
- command + " " + ">/dev/null 2>/dev/null"
- }).waitFor();
- }
- catch (InterruptedException e) {
- throw new IOException(e.toString());
- }
- if (exitStatus != 0) {
- throw new IOException("command exit satus:" + exitStatus);
- }
- }
-
-}
}
public Object perform(List aParameters) throws GeneratorExc, GeneratorFailure {
- try {
- if (aParameters.size()<2 || aParameters.size()>3)
- throw new GeneratorExc("dateFormatFunction <date> <format> [<timezone>]: 2 or 3 parameters expected");
-
- if (!(aParameters.get(0) instanceof Date) ||
- !(aParameters.get(1) instanceof String) ||
- ( aParameters.size()>2 &&
- !(aParameters.get(2) instanceof String)))
- throw new GeneratorExc("dateFormatFunction <date> <format> [<timezone>]: type mismatch");
+ if (aParameters.size()<2 || aParameters.size()>3) {
+ throw new GeneratorExc("dateFormatFunction <date> <format> [<timezone>]: 2 or 3 parameters expected");
+ }
+ if (!(aParameters.get(0) instanceof Date) || !(aParameters.get(1) instanceof String) ||
+ (aParameters.size() > 2 && !(aParameters.get(2) instanceof String))) {
+ throw new GeneratorExc("dateFormatFunction <date> <format> [<timezone>]: type mismatch");
+ }
- Date date = (Date) aParameters.get(0);
- SimpleDateFormat dateFormat = new SimpleDateFormat( (String) (aParameters.get(1)));
+ Date date = (Date) aParameters.get(0);
+ SimpleDateFormat dateFormat = new SimpleDateFormat( (String) (aParameters.get(1)));
- String timezoneString = "";
- if (aParameters.size()>2) {
- timezoneString = (String) aParameters.get(2);
- }
- else {
- timezoneString = defaultTimezone;
- }
+ String timezoneString = defaultTimezone;
+ if (aParameters.size()>2) {
+ timezoneString = (String) aParameters.get(2);
+ }
- TimeZone timezone = null;
- try {
- timezone = TimeZone.getTimeZone(timezoneString);
- }
- catch (Throwable t) {
- }
+ TimeZone timezone = TimeZone.getTimeZone(timezoneString);
- if (timezone == null)
- timezone = TimeZone.getDefault();
+ if (timezone == null) {
+ timezone = TimeZone.getDefault();
+ }
- dateFormat.setTimeZone(timezone);
+ dateFormat.setTimeZone(timezone);
- return dateFormat.format(date);
- }
- catch (GeneratorExc e) {
- throw e;
- }
- catch (Throwable t) {
- throw new GeneratorFailure("encodeURIGeneratorFunction: " + t.getMessage(), t);
- }
+ return dateFormat.format(date);
}
}
client.setTimeout(5000);
}
-
public InputStream getUrl(String anUrl) throws UtilExc {
try {
method = new GetMethod(anUrl);
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with the com.oreilly.servlet library, any library
- * licensed under the Apache Software License, The Sun (tm) Java Advanced
- * Imaging library (JAI), The Sun JIMI library (or with modified versions of
- * the above that use the same license as the above), and distribute linked
- * combinations including the two. You must obey the GNU General Public
- * License in all respects for all of the code used other than the above
- * mentioned libraries. If you modify this file, you may extend this exception
- * to your version of the file, but you are not obligated to do so. If you do
- * not wish to do so, delete this exception statement from your version.
- */
-
-package mir.util;
-
-import java.net.InetAddress;
-import java.util.List;
-
-public class InternetFunctions {
- private InternetFunctions() {
- }
-
- public static boolean isIpAddressInNetwork(String anIpAddress, String aNetwork) throws Exception {
- long ipAddress = parseHostNameOrIPAddress(anIpAddress);
- long network = 0;
- long netMask = (1L<<32)-1;
- List networkParts = StringRoutines.separateString(aNetwork, "/");
-
- network = parseHostNameOrIPAddress((String) networkParts.get(0));
- if (networkParts.size()>=2) {
- netMask=parseNetmask((String) networkParts.get(1));
- }
-
- return (ipAddress & netMask ) == (network & netMask);
- }
-
- public static long parseHostNameOrIPAddress(String aHostName) throws Exception {
- InetAddress addr = InetAddress.getByName(aHostName.trim());
- return
- ((((long) addr.getAddress()[0])&255) << 24) +
- ((((long) addr.getAddress()[1])&255) << 16) +
- ((((long) addr.getAddress()[2])&255) << 8) +
- ((((long) addr.getAddress()[3])&255));
- }
-
- public static long parseIPAddress(String anIpAddress) throws Exception {
- int[] parts = {0,0,0,0};
- int i;
- List stringParts = StringRoutines.splitString(anIpAddress, ".");
-
- if (stringParts.size()!=4)
- throw new Exception("Not a valid IP Address: " + anIpAddress);
-
- try {
- for (i=0; i<4; i++) {
- parts[i] = Integer.parseInt(((String) stringParts.get(i)).trim());
- }
- }
- catch (Throwable t) {
- throw new Exception("Not a valid IP Address: " + anIpAddress);
- }
- for (i=0; i<4; i++) {
- if (parts[i]<0 || parts[i]>255)
- throw new Exception("Not a valid IP Address: " + anIpAddress);
- }
-
- return parts[0]<<24 | parts[1]<<16 | parts[2]<<8 | parts[3];
- }
-
- public static long parseNetmask(String anIpAddress) throws Exception {
- try {
- return parseIPAddress(anIpAddress);
- }
- catch (Throwable t) {
- }
-
- try {
- int size = Integer.parseInt(anIpAddress);
-
- if (size<=32)
- return ((1L<<size)-1)<<(32-size);
- }
- catch (Throwable t) {
- }
-
- return (1L<<32)-1;
- }
-
-}
\ No newline at end of file
+/*\r
+ * Copyright (C) 2005 The Mir-coders group\r
+ *\r
+ * This file is part of Mir.\r
+ *\r
+ * Mir is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Mir is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Mir; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+ *\r
+ * In addition, as a special exception, The Mir-coders gives permission to link\r
+ * the code of this program with any library licensed under the Apache Software License,\r
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library\r
+ * (or with modified versions of the above that use the same license as the above),\r
+ * and distribute linked combinations including the two. You must obey the\r
+ * GNU General Public License in all respects for all of the code used other than\r
+ * the above mentioned libraries. If you modify this file, you may extend this\r
+ * exception to your version of the file, but you are not obligated to do so.\r
+ * If you do not wish to do so, delete this exception statement from your version.\r
+ */\r
+package mir.util;\r
+\r
+/**\r
+ * @deprecated Use mir.util.InternetRoutines instead\r
+ */\r
+public class InternetFunctions extends InternetRoutines {\r
+}\r
--- /dev/null
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with the com.oreilly.servlet library, any library
+ * licensed under the Apache Software License, The Sun (tm) Java Advanced
+ * Imaging library (JAI), The Sun JIMI library (or with modified versions of
+ * the above that use the same license as the above), and distribute linked
+ * combinations including the two. You must obey the GNU General Public
+ * License in all respects for all of the code used other than the above
+ * mentioned libraries. If you modify this file, you may extend this exception
+ * to your version of the file, but you are not obligated to do so. If you do
+ * not wish to do so, delete this exception statement from your version.
+ */
+
+package mir.util;
+
+import java.net.InetAddress;
+import java.util.List;
+
+public class InternetRoutines {
+ protected InternetRoutines() {
+ }
+
+ public static boolean isIpAddressInNetwork(String anIpAddress, String aNetwork) throws Exception {
+ long ipAddress = parseHostNameOrIPAddress(anIpAddress);
+ long network = 0;
+ long netMask = (1L<<32)-1;
+ List networkParts = StringRoutines.separateString(aNetwork, "/");
+
+ network = parseHostNameOrIPAddress((String) networkParts.get(0));
+ if (networkParts.size()>=2) {
+ netMask=parseNetmask((String) networkParts.get(1));
+ }
+
+ return (ipAddress & netMask ) == (network & netMask);
+ }
+
+ public static long parseHostNameOrIPAddress(String aHostName) throws Exception {
+ InetAddress addr = InetAddress.getByName(aHostName.trim());
+ return
+ ((((long) addr.getAddress()[0])&255) << 24) +
+ ((((long) addr.getAddress()[1])&255) << 16) +
+ ((((long) addr.getAddress()[2])&255) << 8) +
+ ((((long) addr.getAddress()[3])&255));
+ }
+
+ public static long parseIPAddress(String anIpAddress) throws Exception {
+ int[] parts = {0,0,0,0};
+ int i;
+ List stringParts = StringRoutines.splitString(anIpAddress, ".");
+
+ if (stringParts.size()!=4)
+ throw new Exception("Not a valid IP Address: " + anIpAddress);
+
+ try {
+ for (i=0; i<4; i++) {
+ parts[i] = Integer.parseInt(((String) stringParts.get(i)).trim());
+ }
+ }
+ catch (Throwable t) {
+ throw new Exception("Not a valid IP Address: " + anIpAddress);
+ }
+ for (i=0; i<4; i++) {
+ if (parts[i]<0 || parts[i]>255)
+ throw new Exception("Not a valid IP Address: " + anIpAddress);
+ }
+
+ return parts[0]<<24 | parts[1]<<16 | parts[2]<<8 | parts[3];
+ }
+
+ public static long parseNetmask(String anIpAddress) throws Exception {
+ try {
+ return parseIPAddress(anIpAddress);
+ }
+ catch (Throwable t) {
+ }
+
+ try {
+ int size = Integer.parseInt(anIpAddress);
+
+ if (size<=32)
+ return ((1L<<size)-1)<<(32-size);
+ }
+ catch (Throwable t) {
+ }
+
+ return (1L<<32)-1;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+package mir.util;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Execute system commands. Warning: the current implementation is
+ * unix specific.
+ */
+public class ShellRoutines {
+ protected ShellRoutines() {
+ }
+
+ /**
+ * Executes a full command (including arguments) in a subshell
+ * and returns the output of the command in a string. Output is
+ * redirected into a temporary fil which is then read into the string
+ */
+ public static String execIntoString(String command) throws IOException {
+ return new String(execIntoByteArray(command));
+ }
+
+ /**
+ * Executes a full command (including arguments) in a subshell
+ * and returns the output of the command in an array of
+ * bytes. Output is redirected into a temporary file which is then
+ * read into an array of bytes
+ */
+ public static byte[] execIntoByteArray(String command) throws IOException {
+ File commandOutput = File.createTempFile("mircmd", "");
+ int exitStatus;
+ try {
+ // WARNING: unix specific
+ exitStatus = Runtime.getRuntime().exec(new String[]{
+ "/bin/sh", "-c",
+ command + " " +
+ ">" + commandOutput.getAbsolutePath()
+ }).waitFor();
+ }
+ catch (InterruptedException e) {
+ throw new IOException(e.toString());
+ }
+ if (exitStatus != 0) {
+ throw new IOException("command exit satus:" + exitStatus);
+ }
+ byte[] result = FileRoutines.readFileIntoByteArray
+ (commandOutput.getAbsolutePath());
+ commandOutput.delete();
+ return result;
+ }
+
+ /**
+ * Executes a full command (including arguments) in a subshell.
+ * Standard input and output go to /dev/null
+ */
+ public static void simpleExec(String command)
+ throws IOException {
+ int exitStatus;
+ try {
+ // WARNING: unix specific
+ exitStatus = Runtime.getRuntime().exec(new String[]{
+ "/bin/sh", "-c",
+ command + " " + ">/dev/null 2>/dev/null"
+ }).waitFor();
+ }
+ catch (InterruptedException e) {
+ throw new IOException(e.toString());
+ }
+ if (exitStatus != 0) {
+ throw new IOException("command exit satus:" + exitStatus);
+ }
+ }
+
+}
import mir.entity.Entity;
import mir.session.Request;
-import mir.util.InternetFunctions;
+import mir.util.InternetRoutines;
/**
* A basic ip filter type. Supports x.x.x.x, x.x.x.x/x and x.x.x.x/x.x.x.x expressions.
*/
public boolean validate(String anExpression) {
try {
- InternetFunctions.isIpAddressInNetwork("1.1.1.1", anExpression);
+ InternetRoutines.isIpAddressInNetwork("1.1.1.1", anExpression);
return true;
}
catch (Throwable t) {
public FilterInstance constructFilterInstance(final String anExpression) throws AbuseExc {
try {
- InternetFunctions.isIpAddressInNetwork("1.1.1.1", anExpression);
+ InternetRoutines.isIpAddressInNetwork("1.1.1.1", anExpression);
}
catch (Throwable t) {
throw new AbuseExc("Invalid expression: " + anExpression);
return new FilterInstance() {
public boolean test(Entity anEntity, Request aRequest) {
try {
- return InternetFunctions.isIpAddressInNetwork(aRequest.getHeader("ip"), anExpression);
+ return InternetRoutines.isIpAddressInNetwork(aRequest.getHeader("ip"), anExpression);
}
catch (Exception e) {
return false;