Распаковка из зип-архива @param message @return
(Message message)
| 605 | * @return |
| 606 | */ |
| 607 | public static void unpack(Message message) throws IOException { |
| 608 | String filename = message.getMessageName().toLowerCase(); |
| 609 | if (filename.matches("^[a-f0-9]{8}\\.pkt$")) { |
| 610 | File out = createInboundFile(message.isSecure()); |
| 611 | FileOutputStream fos = new FileOutputStream(out); |
| 612 | int len = 0; |
| 613 | do { |
| 614 | byte[] buf = new byte[1024]; |
| 615 | len = message.getInputStream().read(buf); |
| 616 | if (len > 0) { |
| 617 | fos.write(buf, 0, len); |
| 618 | } |
| 619 | } while (len > 0); |
| 620 | fos.close(); |
| 621 | } else if (filename |
| 622 | .matches("^\\w{8}\\.(mo|tu|we|th|fr|sa|su)[0-9a-z]$")) { |
| 623 | unpackBundle(message); |
| 624 | } else if (message.isSecure()) { |
| 625 | File f = guessFilename(filename, false); |
| 626 | if (f != null) { |
| 627 | FileOutputStream fos = new FileOutputStream(f); |
| 628 | int len = 0; |
| 629 | do { |
| 630 | byte[] buf = new byte[1024]; |
| 631 | len = message.getInputStream().read(buf); |
| 632 | if (len > 0) { |
| 633 | fos.write(buf, 0, len); |
| 634 | } |
| 635 | } while (len > 0); |
| 636 | fos.close(); |
| 637 | logger.l3("File saved " + f.getAbsolutePath() + " (" |
| 638 | + f.length() + ")"); |
| 639 | } |
| 640 | } else { |
| 641 | logger.l2("File rejected via unsecure " + filename); |
| 642 | } |
| 643 | } |
| 644 | |
| 645 | protected static void unpackBundle(Message message) throws IOException { |
| 646 | logger.l4("Unpacking " + message.getMessageName()); |
no test coverage detected