private Hashtable<String, String> getJarManifestAttributes(String path) { Hashtable<String, String> h = new Hashtable<String, String>(); JarInputStream jis = null; try { cp.appendln(Color.black, "Looking for " + path); InputStream is = getClass().getResourceAsStream(path); if (is == null) { if (!path.endsWith("/MIRC.jar")) { cp.appendln(Color.red, "...could not find it."); } else { cp.appendln( Color.black, "...could not find it. [OK, this is a " + programName + " installation]"); } return null; } jis = new JarInputStream(is); Manifest manifest = jis.getManifest(); h = getManifestAttributes(manifest); } catch (Exception ex) { ex.printStackTrace(); } if (jis != null) { try { jis.close(); } catch (Exception ignore) { } } return h; }
public boolean shutdown(int port, boolean ssl) { try { String protocol = "http" + (ssl ? "s" : ""); URL url = new URL(protocol, "127.0.0.1", port, "shutdown"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("servicemanager", "shutdown"); conn.connect(); StringBuffer sb = new StringBuffer(); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); int n; char[] cbuf = new char[1024]; while ((n = br.read(cbuf, 0, cbuf.length)) != -1) sb.append(cbuf, 0, n); br.close(); String message = sb.toString().replace("<br>", "\n"); if (message.contains("Goodbye")) { cp.appendln("Shutting down the server:"); String[] lines = message.split("\n"); for (String line : lines) { cp.append("..."); cp.appendln(line); } return true; } } catch (Exception ex) { } cp.appendln("Unable to shutdown CTP"); return false; }
private void fixConfigSchema() { File configFile; File ctpDir = new File(directory, "CTP"); if (ctpDir.exists()) configFile = new File(ctpDir, "config.xml"); else configFile = new File(directory, "config.xml"); if (configFile.exists()) { try { Document doc = getDocument(configFile); Element root = doc.getDocumentElement(); Element server = getFirstNamedChild(root, "Server"); moveAttributes(server, sslAttrs, "SSL"); moveAttributes(server, proxyAttrs, "ProxyServer"); moveAttributes(server, ldapAttrs, "LDAP"); if (programName.equals("ISN")) fixRSNAROOT(server); if (isMIRC(root)) fixFileServiceAnonymizerID(root); setFileText(configFile, toString(doc)); } catch (Exception ex) { cp.appendln(Color.red, "\nUnable to convert the config file schema."); cp.appendln(Color.black, ""); } } else { cp.appendln(Color.red, "\nUnable to find the config file to check the schema."); cp.appendln(Color.black, ""); } }
public void run() { runs = true; // notification about starting the input process stream.postEvent(new ServerEvent(this, stream, ServerEvent.INPUT_START)); changeState(new HeaderDetectionState(this, stream)); byte[] buffer = new byte[65535]; int offset = 0; int length = 0; while (runs && stream.running()) { try { // starting time of the transfer long transferStart = new Date().getTime(); // reading data int red = input.read(buffer, offset, buffer.length - offset); // notification about the transfer stream.postEvent( new TransferEvent( this, stream, TransferEvent.STREAM_INPUT, red, new Date().getTime() - transferStart)); if (red == -1) runs = false; length += red; int newOffset = currentState.processData(buffer, 0, length); if (newOffset < offset + length) { length = length - newOffset; System.arraycopy(buffer, newOffset, buffer, 0, length); offset = length; } else { length = 0; offset = 0; } } catch (SocketTimeoutException e) { continue; } catch (Exception e) { e.printStackTrace(); runs = false; } } try { input.close(); } catch (Exception e) { throw new RuntimeException(e); } // notification about ending the input process stream.postEvent(new ServerEvent(this, stream, ServerEvent.INPUT_STOP)); }
@SuppressWarnings("unchecked") @Override default Tuple2<Seq<T>, Seq<T>> span(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); if (isEmpty()) { return Tuple.of(Stream.empty(), Stream.empty()); } else { return (Tuple2<Seq<T>, Seq<T>>) traverse().span(predicate); } }
static <T> Stream<T> levelOrder(Tree<T> tree) { Stream<T> result = Stream.empty(); final java.util.Queue<Tree<T>> queue = new java.util.LinkedList<>(); queue.add(tree); while (!queue.isEmpty()) { final Tree<T> next = queue.remove(); result = result.prepend(next.getValue()); queue.addAll(next.getChildren().toJavaList()); } return result.reverse(); }
static <T> Stream<T> inOrder(Tree<T> tree) { if (tree.isLeaf()) { return Stream.of(tree.getValue()); } else { final List<Node<T>> children = tree.getChildren(); return children .tail() .foldLeft(Stream.<T>empty(), (acc, child) -> acc.appendAll(inOrder(child))) .prepend(tree.getValue()) .prependAll(inOrder(children.head())); } }
@Override default Seq<T> dropRight(int n) { if (n >= length()) { return Stream.empty(); } else { return traverse().dropRight(n); } }
@Override default Seq<T> takeRight(int n) { if (isEmpty()) { return Stream.empty(); } else { return traverse().takeRight(n); } }
public static void main(String[] args) throws IOException { Path path = Paths.get("../alice.txt"); String contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); Stream<String> words = Stream.of(contents.split("[\\P{L}]+")); show("words", words); Stream<String> song = Stream.of("gently", "down", "the", "stream"); show("song", song); Stream<String> silence = Stream.empty(); silence = Stream.<String>empty(); // Explicit type specification show("silence", silence); Stream<String> echos = Stream.generate(() -> "Echo"); show("echos", echos); Stream<Double> randoms = Stream.generate(Math::random); show("randoms", randoms); Stream<BigInteger> integers = Stream.iterate(BigInteger.ONE, n -> n.add(BigInteger.ONE)); show("integers", integers); Stream<String> wordsAnotherWay = Pattern.compile("[\\P{L}]+").splitAsStream(contents); show("wordsAnotherWay", wordsAnotherWay); try (Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8)) { show("lines", lines); } }
@Override default Seq<T> filter(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); if (isEmpty()) { return Stream.empty(); } else { return traverse().filter(predicate); } }
@Override default <U> Seq<T> distinctBy(Function<? super T, ? extends U> keyExtractor) { Objects.requireNonNull(keyExtractor, "keyExtractor is null"); if (isEmpty()) { return Stream.empty(); } else { return traverse().distinctBy(keyExtractor); } }
@Override default Seq<T> distinctBy(Comparator<? super T> comparator) { Objects.requireNonNull(comparator, "comparator is null"); if (isEmpty()) { return Stream.empty(); } else { return traverse().distinctBy(comparator); } }
public static <T> void show(String title, Stream<T> stream) { final int SIZE = 10; List<T> firstElements = stream.limit(SIZE + 1).collect(Collectors.toList()); System.out.print(title + ": "); if (firstElements.size() <= SIZE) System.out.println(firstElements); else { firstElements.remove(SIZE); String out = firstElements.toString(); System.out.println(out.substring(0, out.length() - 1) + ", ...]"); } }
private void updateWindowsServiceInstaller() { try { File dir = new File(directory, "CTP"); if (suppressFirstPathElement) dir = dir.getParentFile(); File windows = new File(dir, "windows"); File install = new File(windows, "install.bat"); cp.appendln(Color.black, "Windows service installer:"); cp.appendln(Color.black, "...file: " + install.getAbsolutePath()); String bat = getFileText(install); Properties props = new Properties(); String home = dir.getAbsolutePath(); cp.appendln(Color.black, "...home: " + home); home = home.replaceAll("\\\\", "\\\\\\\\"); props.put("home", home); bat = replace(bat, props); setFileText(install, bat); } catch (Exception ex) { ex.printStackTrace(); System.err.println("Unable to update the windows service install.barfile."); } }
private void setOwnership(File dir, String group, String owner) { try { Path path = dir.toPath(); UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService(); GroupPrincipal groupPrincipal = lookupService.lookupPrincipalByGroupName(group); UserPrincipal userPrincipal = lookupService.lookupPrincipalByName(owner); PosixFileAttributeView pfav = Files.getFileAttributeView(path, PosixFileAttributeView.class, LinkOption.NOFOLLOW_LINKS); pfav.setGroup(groupPrincipal); pfav.setOwner(userPrincipal); } catch (Exception ex) { cp.appendln("Unable to set the file group and owner for\n " + dir); } }
/** * Traverses the Tree in a specific order. * * @param order the tree traversal order * @return A List containing all elements of this tree, which is List if this tree is empty. * @throws java.lang.NullPointerException if order is null */ default Seq<T> traverse(Order order) { Objects.requireNonNull(order, "order is null"); if (isEmpty()) { return Stream.empty(); } else { switch (order) { case PRE_ORDER: return Traversal.preOrder(this); case IN_ORDER: return Traversal.inOrder(this); case POST_ORDER: return Traversal.postOrder(this); case LEVEL_ORDER: return Traversal.levelOrder(this); default: throw new IllegalStateException("Unknown order: " + order.name()); } } }
private void updateLinuxServiceInstaller() { try { File dir = new File(directory, "CTP"); if (suppressFirstPathElement) dir = dir.getParentFile(); Properties props = new Properties(); String ctpHome = dir.getAbsolutePath(); cp.appendln(Color.black, "...CTP_HOME: " + ctpHome); ctpHome = ctpHome.replaceAll("\\\\", "\\\\\\\\"); props.put("CTP_HOME", ctpHome); File javaHome = new File(System.getProperty("java.home")); String javaBin = (new File(javaHome, "bin")).getAbsolutePath(); cp.appendln(Color.black, "...JAVA_BIN: " + javaBin); javaBin = javaBin.replaceAll("\\\\", "\\\\\\\\"); props.put("JAVA_BIN", javaBin); File linux = new File(dir, "linux"); File install = new File(linux, "ctpService-ubuntu.sh"); cp.appendln(Color.black, "Linux service installer:"); cp.appendln(Color.black, "...file: " + install.getAbsolutePath()); String bat = getFileText(install); bat = replace(bat, props); // do the substitutions bat = bat.replace("\r", ""); setFileText(install, bat); // If this is an ISN installation, put the script in the correct place. String osName = System.getProperty("os.name").toLowerCase(); if (programName.equals("ISN") && !osName.contains("windows")) { install = new File(linux, "ctpService-red.sh"); cp.appendln(Color.black, "ISN service installer:"); cp.appendln(Color.black, "...file: " + install.getAbsolutePath()); bat = getFileText(install); bat = replace(bat, props); // do the substitutions bat = bat.replace("\r", ""); File initDir = new File("/etc/init.d"); File initFile = new File(initDir, "ctpService"); if (initDir.exists()) { setOwnership(initDir, "edge", "edge"); setFileText(initFile, bat); initFile.setReadable(true, false); // everybody can read //Java 1.6 initFile.setWritable(true); // only the owner can write //Java 1.6 initFile.setExecutable(true, false); // everybody can execute //Java 1.6 } } } catch (Exception ex) { ex.printStackTrace(); System.err.println("Unable to update the Linux service ctpService.sh file"); } }
private void adjustConfiguration(Element root, File dir) { // If this is an ISN installation and the Edge Server // keystore and truststore files do not exist, then set the configuration // to use the keystore.jks and truststore.jks files instead of the ones // in the default installation. If the Edge Server files do exist, then // delete the keystore.jks and truststore.jks files, just to avoid // confusion. if (programName.equals("ISN")) { Element server = getFirstNamedChild(root, "Server"); Element ssl = getFirstNamedChild(server, "SSL"); String rsnaroot = System.getenv("RSNA_ROOT"); rsnaroot = (rsnaroot == null) ? "/usr/local/edgeserver" : rsnaroot.trim(); String keystore = rsnaroot + "/conf/keystore.jks"; String truststore = rsnaroot + "/conf/truststore.jks"; File keystoreFile = new File(keystore); File truststoreFile = new File(truststore); cp.appendln(Color.black, "Looking for " + keystore); if (keystoreFile.exists() || truststoreFile.exists()) { cp.appendln(Color.black, "...found it [This is an EdgeServer installation]"); // Delete the default files, just to avoid confusion File ks = new File(dir, "keystore.jks"); File ts = new File(dir, "truststore.jks"); boolean ksok = ks.delete(); boolean tsok = ts.delete(); if (ksok && tsok) cp.appendln(Color.black, "...Unused default SSL files were removed"); else { if (!ksok) cp.appendln(Color.black, "...Unable to delete " + ks); if (!tsok) cp.appendln(Color.black, "...Unable to delete " + ts); } } else { cp.appendln(Color.black, "...not found [OK, this is a non-EdgeServer installation]"); ssl.setAttribute("keystore", "keystore.jks"); ssl.setAttribute("keystorePassword", "edge1234"); ssl.setAttribute("truststore", "truststore.jks"); ssl.setAttribute("truststorePassword", "edge1234"); cp.appendln( Color.black, "...SSL attributes were updated for a non-EdgeServer installation"); } } }
public Sprite(StreamLoader streamLoader, String s, int i) { Stream stream = new Stream(streamLoader.getDataForName(s + ".dat")); Stream stream_1 = new Stream(streamLoader.getDataForName("index.dat")); stream_1.currentOffset = stream.readUnsignedWord(); anInt1444 = stream_1.readUnsignedWord(); anInt1445 = stream_1.readUnsignedWord(); int j = stream_1.readUnsignedByte(); int ai[] = new int[j]; for (int k = 0; k < j - 1; k++) { ai[k + 1] = stream_1.read3Bytes(); if (ai[k + 1] == 0) ai[k + 1] = 1; } for (int l = 0; l < i; l++) { stream_1.currentOffset += 2; stream.currentOffset += stream_1.readUnsignedWord() * stream_1.readUnsignedWord(); stream_1.currentOffset++; } anInt1442 = stream_1.readUnsignedByte(); anInt1443 = stream_1.readUnsignedByte(); myWidth = stream_1.readUnsignedWord(); myHeight = stream_1.readUnsignedWord(); int i1 = stream_1.readUnsignedByte(); int j1 = myWidth * myHeight; myPixels = new int[j1]; if (i1 == 0) { for (int k1 = 0; k1 < j1; k1++) myPixels[k1] = ai[stream.readUnsignedByte()]; setTransparency(255, 0, 255); return; } if (i1 == 1) { for (int l1 = 0; l1 < myWidth; l1++) { for (int i2 = 0; i2 < myHeight; i2++) myPixels[l1 + i2 * myWidth] = ai[stream.readUnsignedByte()]; } } setTransparency(255, 0, 255); }
static <T> Stream<T> preOrder(Tree<T> tree) { return tree.getChildren() .foldLeft(Stream.of(tree.getValue()), (acc, child) -> acc.appendAll(preOrder(child))); }
static <T> Stream<T> postOrder(Tree<T> tree) { return tree.getChildren() .foldLeft(Stream.<T>empty(), (acc, child) -> acc.appendAll(postOrder(child))) .append(tree.getValue()); }
public void requestExamples() { // #ws-holder WSRequest request = ws.url("http://example.com"); // #ws-holder // #ws-complex-holder WSRequest complexRequest = request .setHeader("headerKey", "headerValue") .setRequestTimeout(1000) .setQueryParameter("paramKey", "paramValue"); // #ws-complex-holder // #ws-get CompletionStage<WSResponse> responsePromise = complexRequest.get(); // #ws-get String url = "http://example.com"; // #ws-auth ws.url(url).setAuth("user", "password", WSAuthScheme.BASIC).get(); // #ws-auth // #ws-follow-redirects ws.url(url).setFollowRedirects(true).get(); // #ws-follow-redirects // #ws-query-parameter ws.url(url).setQueryParameter("paramKey", "paramValue"); // #ws-query-parameter // #ws-header ws.url(url).setHeader("headerKey", "headerValue").get(); // #ws-header String jsonString = "{\"key1\":\"value1\"}"; // #ws-header-content-type ws.url(url).setHeader("Content-Type", "application/json").post(jsonString); // OR ws.url(url).setContentType("application/json").post(jsonString); // #ws-header-content-type // #ws-timeout ws.url(url).setRequestTimeout(1000).get(); // #ws-timeout // #ws-post-form-data ws.url(url) .setContentType("application/x-www-form-urlencoded") .post("key1=value1&key2=value2"); // #ws-post-form-data // #ws-post-json JsonNode json = Json.newObject().put("key1", "value1").put("key2", "value2"); ws.url(url).post(json); // #ws-post-json String value = IntStream.range(0, 100).boxed().map(i -> "abcdefghij").reduce("", (a, b) -> a + b); ByteString seedValue = ByteString.fromString(value); Stream<ByteString> largeSource = IntStream.range(0, 10).boxed().map(i -> seedValue); Source<ByteString, ?> largeImage = Source.from(largeSource.collect(Collectors.toList())); // #ws-stream-request CompletionStage<WSResponse> wsResponse = ws.url(url).setBody(largeImage).execute("PUT"); // #ws-stream-request }