aboutsummaryrefslogtreecommitdiff
path: root/juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2017-02-07 12:49:22 +0300
committerGravatar Vitaly Takmazov2017-02-07 12:49:22 +0300
commit428c748b25b156a973f508e82a1c53ab6b74bc2b (patch)
tree7316e60b944ec5a1727cf41872480bc23be26bf7 /juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java
parentb8af9d2621a1cd94bfb24ee31e5a92d9f4e56c4e (diff)
juick-xmpp: merge juick-xmpp-ft
Diffstat (limited to 'juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java')
-rw-r--r--juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java105
1 files changed, 0 insertions, 105 deletions
diff --git a/juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java b/juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java
deleted file mode 100644
index 236c4c0d..00000000
--- a/juick-xmpp-ft/src/main/java/com/juick/components/XMPPFTServer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package com.juick.components;
-
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.core.env.Environment;
-import rocks.xmpp.addr.Jid;
-import rocks.xmpp.core.XmppException;
-import rocks.xmpp.core.session.Extension;
-import rocks.xmpp.core.session.XmppSessionConfiguration;
-import rocks.xmpp.core.session.debug.LogbackDebugger;
-import rocks.xmpp.core.stanza.model.Message;
-import rocks.xmpp.extensions.component.accept.ExternalComponent;
-import rocks.xmpp.extensions.filetransfer.FileTransfer;
-import rocks.xmpp.extensions.filetransfer.FileTransferManager;
-import rocks.xmpp.extensions.oob.model.x.OobX;
-import rocks.xmpp.extensions.ping.PingManager;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-/**
- * Created by vitalyster on 11.11.2016.
- */
-public class XMPPFTServer implements AutoCloseable {
- private static final Logger logger = LoggerFactory.getLogger(XMPPFTServer.class);
-
- private ExternalComponent component;
-
- public XMPPFTServer(Environment env) {
- XmppSessionConfiguration configuration = XmppSessionConfiguration.builder()
- .debugger(LogbackDebugger.class)
- .build();
- component = ExternalComponent.create(env.getProperty("component_name", "files"),
- env.getProperty("component_password", "secret"), configuration, env.getProperty("component_host", "localhost"),
- NumberUtils.toInt(env.getProperty("component_port", "5347"), 5347));
- String tmpDir = env.getProperty("upload_tmp_dir", "/tmp");
- String juickJid = env.getProperty("xmppbot_jid", "juick@juick.com/Juick");
- PingManager pingManager = component.getManager(PingManager.class);
- pingManager.setEnabled(true);
- FileTransferManager fileTransferManager = component.getManager(FileTransferManager.class);
- fileTransferManager.addFileTransferOfferListener(e -> {
- try {
- List<String> allowedTypes = new ArrayList<String>() {{
- add("png");
- add("jpg");
- }};
- String attachmentExtension = FilenameUtils.getExtension(e.getName()).toLowerCase();
- String targetFilename = String.format("%s.%s",
- DigestUtils.md5Hex(String.format("%s-%s",
- e.getInitiator().toString(), e.getSessionId()).getBytes()), attachmentExtension);
- if (allowedTypes.contains(attachmentExtension)) {
- Path filePath = Paths.get(tmpDir, targetFilename);
- FileTransfer ft = e.accept(filePath).get();
- ft.addFileTransferStatusListener(st -> {
- logger.debug("{}: received {} of {}", e.getName(), st.getBytesTransferred(), e.getSize());
- if (ft.isDone()) {
- logger.info("transfer completed");
- Message msg = new Message();
- msg.setType(Message.Type.CHAT);
- msg.setFrom(e.getInitiator());
- msg.setTo(Jid.of(juickJid));
- msg.setBody(e.getDescription());
- try {
- String attachmentUrl = String.format("juick://%s", targetFilename);
- msg.addExtension(new OobX(new URI(attachmentUrl), "!!!!Juick!!"));
- component.sendMessage(msg);
- } catch (URISyntaxException e1) {
- logger.warn("attachment error", e1);
- }
- }
- });
- ft.transfer();
- logger.info("transfer started");
- } else {
- e.reject();
- logger.info("transfer rejected");
- }
- } catch (IOException | InterruptedException | ExecutionException e1) {
- logger.error("ft error", e1);
- }
- });
- try {
- component.connect();
- } catch (XmppException e) {
- logger.error("ft initialization error", e);
- }
- }
-
- @Override
- public void close() throws Exception {
- if (component != null)
- component.close();
-
- logger.info("ExternalComponent on xmpp-ft destroyed");
- }
-}