package org.openslx.satserver.util; import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import org.apache.commons.io.FileUtils; public class Util { /** * Check if the given string starts with any of the additionally passed strings. * Ugly boilerplate. * * @param stringToCheck a string we want to check the starting of * @param compareTo list of strings we compare stringToCheck to * @return true if stringToCheck starts with any of the strings in compareTo */ public static boolean startsWith( String stringToCheck, String... compareTo ) { if ( stringToCheck == null ) return false; for ( String check : compareTo ) { if ( stringToCheck.startsWith( check ) ) return true; } return false; } /** * Close all given Closables. Can handle null references. * * @param streams one or more closables/streams */ public static void multiClose( Closeable... streams ) { if ( streams == null ) return; for ( Closeable stream : streams ) { if ( stream != null ) { try { stream.close(); } catch ( IOException e ) { // Ignore - nothing meaningful to do } } } } public static boolean streamCopy( InputStream in, OutputStream out, long bytes ) { byte buffer[] = new byte[ 7900 ]; while ( bytes > 0 ) { try { int ret = in.read( buffer, 0, (int) ( bytes > buffer.length ? buffer.length : bytes ) ); if ( ret == -1 ) return false; bytes -= ret; out.write( buffer, 0, ret ); } catch ( IOException e ) { e.printStackTrace(); return false; } } return true; } public static String readFileToString( String file ) throws IOException { return FileUtils.readFileToString( new File( file ), StandardCharsets.UTF_8 ); } public static void writeStringToFile( File file, String string ) throws IOException { FileUtils.writeStringToFile( file, string, StandardCharsets.UTF_8 ); } private static final String[] DEFAULT_ALLOWED_DIRS = { "/tmp/", "/opt/openslx/configs/" }; public static boolean isAllowedDir( String dir ) { return startsWith( dir, DEFAULT_ALLOWED_DIRS ); } }