mirror of https://github.com/sipwise/jitsi.git
parent
766d4bbb8f
commit
88bf145942
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,62 @@
|
||||
package net.java.sip.communicator.impl.protocol.icq;
|
||||
|
||||
import java.util.*;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
|
||||
public class OperationSetInstantMessageTransformIcqImpl
|
||||
implements OperationSetInstantMessageTransform
|
||||
{
|
||||
public final Map<Integer, Vector<TransformLayer>> transformLayers =
|
||||
new Hashtable<Integer, Vector<TransformLayer>>();
|
||||
|
||||
private final int defaultPriority = 1;
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
this.addTransformLayer(defaultPriority, transformLayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(int priority, TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
if (!transformLayers.containsKey(defaultPriority))
|
||||
transformLayers.put(defaultPriority,
|
||||
new Vector<TransformLayer>());
|
||||
|
||||
transformLayers.get(defaultPriority).add(transformLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsLayer(TransformLayer layer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
if (entry.getValue().contains(layer))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
entry.getValue().remove(transformLayer);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
package net.java.sip.communicator.impl.protocol.jabber;
|
||||
|
||||
import java.util.*;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
|
||||
public class OperationSetInstantMessageTransformJabberImpl
|
||||
implements OperationSetInstantMessageTransform
|
||||
{
|
||||
public final Map<Integer, Vector<TransformLayer>> transformLayers =
|
||||
new Hashtable<Integer, Vector<TransformLayer>>();
|
||||
|
||||
private final int defaultPriority = 1;
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
this.addTransformLayer(defaultPriority, transformLayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(int priority, TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
if (!transformLayers.containsKey(defaultPriority))
|
||||
transformLayers.put(defaultPriority,
|
||||
new Vector<TransformLayer>());
|
||||
|
||||
transformLayers.get(defaultPriority).add(transformLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsLayer(TransformLayer layer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
if (entry.getValue().contains(layer))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
entry.getValue().remove(transformLayer);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
package net.java.sip.communicator.impl.protocol.msn;
|
||||
|
||||
import java.util.*;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
|
||||
public class OperationSetInstantMessageTransformMsnImpl
|
||||
implements OperationSetInstantMessageTransform
|
||||
{
|
||||
public final Map<Integer, Vector<TransformLayer>> transformLayers =
|
||||
new Hashtable<Integer, Vector<TransformLayer>>();
|
||||
|
||||
private final int defaultPriority = 1;
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
this.addTransformLayer(defaultPriority, transformLayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(int priority, TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
if (!transformLayers.containsKey(defaultPriority))
|
||||
transformLayers.put(defaultPriority,
|
||||
new Vector<TransformLayer>());
|
||||
|
||||
transformLayers.get(defaultPriority).add(transformLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsLayer(TransformLayer layer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
if (entry.getValue().contains(layer))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
entry.getValue().remove(transformLayer);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
package net.java.sip.communicator.impl.protocol.yahoo;
|
||||
|
||||
import java.util.*;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
|
||||
public class OperationSetInstantMessageTransformYahooImpl
|
||||
implements OperationSetInstantMessageTransform
|
||||
{
|
||||
public final Map<Integer, Vector<TransformLayer>> transformLayers =
|
||||
new Hashtable<Integer, Vector<TransformLayer>>();
|
||||
|
||||
private final int defaultPriority = 1;
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
this.addTransformLayer(defaultPriority, transformLayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTransformLayer(int priority, TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
if (!transformLayers.containsKey(defaultPriority))
|
||||
transformLayers.put(defaultPriority,
|
||||
new Vector<TransformLayer>());
|
||||
|
||||
transformLayers.get(defaultPriority).add(transformLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsLayer(TransformLayer layer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
if (entry.getValue().contains(layer))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTransformLayer(TransformLayer transformLayer)
|
||||
{
|
||||
synchronized (transformLayers)
|
||||
{
|
||||
for (Map.Entry<Integer, Vector<TransformLayer>> entry : transformLayers
|
||||
.entrySet())
|
||||
{
|
||||
entry.getValue().remove(transformLayer);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,159 @@
|
||||
package net.java.sip.communicator.plugin.otr;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import net.java.sip.communicator.service.gui.*;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
import net.java.sip.communicator.service.resources.*;
|
||||
import net.java.sip.communicator.util.*;
|
||||
|
||||
import org.osgi.framework.*;
|
||||
|
||||
public class OtrActivator
|
||||
implements BundleActivator, ServiceListener
|
||||
{
|
||||
|
||||
private BundleContext bundleContext = null;
|
||||
|
||||
private OtrTransformLayer transformLayer = new OtrTransformLayer();
|
||||
|
||||
private static Logger logger = Logger.getLogger(OtrActivator.class);
|
||||
|
||||
@Override
|
||||
public void start(BundleContext bc) throws Exception
|
||||
{
|
||||
this.bundleContext = bc;
|
||||
bc.addServiceListener(this);
|
||||
|
||||
ServiceReference[] protocolProviderRefs = null;
|
||||
try
|
||||
{
|
||||
protocolProviderRefs =
|
||||
bc.getServiceReferences(
|
||||
ProtocolProviderService.class.getName(), null);
|
||||
}
|
||||
catch (InvalidSyntaxException ex)
|
||||
{
|
||||
logger.error("Error while retrieving service refs", ex);
|
||||
return;
|
||||
}
|
||||
|
||||
if (protocolProviderRefs != null)
|
||||
{
|
||||
logger.debug("Found " + protocolProviderRefs.length
|
||||
+ " already installed providers.");
|
||||
for (int i = 0; i < protocolProviderRefs.length; i++)
|
||||
{
|
||||
ProtocolProviderService provider =
|
||||
(ProtocolProviderService) bc
|
||||
.getService(protocolProviderRefs[i]);
|
||||
|
||||
this.handleProviderAdded(provider);
|
||||
}
|
||||
}
|
||||
|
||||
Hashtable<String, String> containerFilter =
|
||||
new Hashtable<String, String>();
|
||||
containerFilter.put(Container.CONTAINER_ID,
|
||||
Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU.getID());
|
||||
|
||||
bundleContext.registerService(PluginComponent.class.getName(),
|
||||
new OtrMenu(ResourceManagementServiceUtils
|
||||
.getService(bc)), containerFilter);
|
||||
}
|
||||
|
||||
private void handleProviderAdded(ProtocolProviderService provider)
|
||||
{
|
||||
OperationSetInstantMessageTransform opSetMessageTransform =
|
||||
(OperationSetInstantMessageTransform) provider
|
||||
.getOperationSet(OperationSetInstantMessageTransform.class);
|
||||
|
||||
if (opSetMessageTransform != null)
|
||||
{
|
||||
opSetMessageTransform.addTransformLayer(transformLayer);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.trace("Service did not have a transform op. set.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop(BundleContext bc) throws Exception
|
||||
{
|
||||
// start listening for newly register or removed protocol providers
|
||||
bc.removeServiceListener(this);
|
||||
|
||||
ServiceReference[] protocolProviderRefs = null;
|
||||
try
|
||||
{
|
||||
protocolProviderRefs =
|
||||
bc.getServiceReferences(
|
||||
ProtocolProviderService.class.getName(), null);
|
||||
}
|
||||
catch (InvalidSyntaxException ex)
|
||||
{
|
||||
// this shouldn't happen since we're providing no parameter string
|
||||
// but let's log just in case.
|
||||
logger.error("Error while retrieving service refs", ex);
|
||||
return;
|
||||
}
|
||||
|
||||
// in case we found any
|
||||
if (protocolProviderRefs != null)
|
||||
{
|
||||
for (int i = 0; i < protocolProviderRefs.length; i++)
|
||||
{
|
||||
ProtocolProviderService provider =
|
||||
(ProtocolProviderService) bc
|
||||
.getService(protocolProviderRefs[i]);
|
||||
|
||||
this.handleProviderRemoved(provider);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleProviderRemoved(ProtocolProviderService provider)
|
||||
{
|
||||
// check whether the provider has a basic im operation set
|
||||
OperationSetInstantMessageTransform opSetMessageTransform =
|
||||
(OperationSetInstantMessageTransform) provider
|
||||
.getOperationSet(OperationSetInstantMessageTransform.class);
|
||||
|
||||
if (opSetMessageTransform != null)
|
||||
{
|
||||
opSetMessageTransform.removeTransformLayer(transformLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serviceChanged(ServiceEvent serviceEvent)
|
||||
{
|
||||
Object sService =
|
||||
bundleContext.getService(serviceEvent.getServiceReference());
|
||||
|
||||
logger.trace("Received a service event for: "
|
||||
+ sService.getClass().getName());
|
||||
|
||||
// we don't care if the source service is not a protocol provider
|
||||
if (!(sService instanceof ProtocolProviderService))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
logger.debug("Service is a protocol provider.");
|
||||
if (serviceEvent.getType() == ServiceEvent.REGISTERED)
|
||||
{
|
||||
logger.debug("Handling registration of a new Protocol Provider.");
|
||||
|
||||
this.handleProviderAdded((ProtocolProviderService) sService);
|
||||
}
|
||||
else if (serviceEvent.getType() == ServiceEvent.UNREGISTERING)
|
||||
{
|
||||
this.handleProviderRemoved((ProtocolProviderService) sService);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,93 @@
|
||||
package net.java.sip.communicator.plugin.otr;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import net.java.sip.communicator.service.contactlist.*;
|
||||
import net.java.sip.communicator.service.gui.*;
|
||||
import net.java.sip.communicator.service.resources.*;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class OtrMenu
|
||||
extends JMenu
|
||||
implements PluginComponent, ActionListener
|
||||
{
|
||||
private static final String imageID = "plugin.otr.DECRYPTED_ICON";
|
||||
|
||||
private ResourceManagementService resourceService;
|
||||
|
||||
public OtrMenu(ResourceManagementService resourceService)
|
||||
{
|
||||
super("Encryption");
|
||||
this.setToolTipText("Options for OTR Encryption");
|
||||
|
||||
if (resourceService != null)
|
||||
this.setIcon(resourceService.getImage(imageID));
|
||||
|
||||
// TODO Internationalize Strings...
|
||||
JMenuItem mitmStartOtr = new JMenuItem("Start Private Conversation");
|
||||
JMenuItem mitmEndOtr = new JMenuItem("End Private Conversation");
|
||||
JMenuItem mitmRefreshOtr =
|
||||
new JMenuItem("Refresh Private Conversation");
|
||||
JMenuItem mitmAuthenticateBuddy = new JMenuItem("Authenticate Buddy");
|
||||
JMenuItem mitmWhatsThis = new JMenuItem("What's this?");
|
||||
|
||||
// Shown if we don't have an OTR session.
|
||||
this.add(mitmStartOtr);
|
||||
// Shown if we have an OTR session.
|
||||
this.add(mitmEndOtr);
|
||||
this.add(mitmRefreshOtr);
|
||||
this.add(mitmAuthenticateBuddy);
|
||||
this.add(mitmWhatsThis);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getConstraints()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public Component getComponent()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container getContainer()
|
||||
{
|
||||
return Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPositionIndex()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNativeComponent()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
private MetaContact metaContact;
|
||||
|
||||
@Override
|
||||
public void setCurrentContact(MetaContact metaContact)
|
||||
{
|
||||
this.metaContact = metaContact;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCurrentContactGroup(MetaContactGroup metaGroup)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,201 @@
|
||||
package net.java.sip.communicator.plugin.otr;
|
||||
|
||||
import java.security.*;
|
||||
import java.util.*;
|
||||
|
||||
import net.java.otr4j.*;
|
||||
import net.java.otr4j.message.MessageConstants;
|
||||
import net.java.sip.communicator.service.protocol.*;
|
||||
import net.java.sip.communicator.service.protocol.event.*;
|
||||
import net.java.sip.communicator.util.*;
|
||||
|
||||
public class OtrTransformLayer
|
||||
implements TransformLayer
|
||||
{
|
||||
private static Logger logger = Logger.getLogger(TransformLayer.class);
|
||||
|
||||
private UserState us = new UserState(new OTR4jListener()
|
||||
{
|
||||
@Override
|
||||
public void showWarning(String warn)
|
||||
{
|
||||
logger.warn(warn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(String err)
|
||||
{
|
||||
logger.error(err);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void injectMessage(String messageText, String account,
|
||||
String user, String protocol)
|
||||
{
|
||||
Contact contact = getContact(account, user, protocol);
|
||||
OperationSetBasicInstantMessaging imOpSet =
|
||||
(OperationSetBasicInstantMessaging) contact
|
||||
.getProtocolProvider().getOperationSet(
|
||||
OperationSetBasicInstantMessaging.class);
|
||||
|
||||
Message message = imOpSet.createMessage(messageText);
|
||||
imOpSet.sendInstantMessage(contact, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPolicy(ConnContext arg0)
|
||||
{
|
||||
return PolicyConstants.ALLOW_V2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyPair getKeyPair(String arg0, String arg1)
|
||||
throws NoSuchAlgorithmException
|
||||
{
|
||||
try
|
||||
{
|
||||
return CryptoUtils.generateDsaKeyPair();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
private List<Contact> contacts = new Vector<Contact>();
|
||||
|
||||
private Contact getContact(String account, String user, String protocol)
|
||||
{
|
||||
for (Contact c : contacts)
|
||||
{
|
||||
String cuser = c.getAddress();
|
||||
ProtocolProviderService cprotoProvider = c.getProtocolProvider();
|
||||
String caccount = cprotoProvider.getAccountID().toString();
|
||||
String cprotocol = cprotoProvider.getProtocolName();
|
||||
|
||||
if (user.equals(cuser) && account.equals(caccount)
|
||||
&& protocol.equals(cprotocol))
|
||||
return c;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void addContact(Contact contact)
|
||||
{
|
||||
if (contact == null)
|
||||
return;
|
||||
|
||||
String user = contact.getAddress();
|
||||
ProtocolProviderService protoProvider = contact.getProtocolProvider();
|
||||
String account = protoProvider.getAccountID().toString();
|
||||
String protocol = protoProvider.getProtocolName();
|
||||
|
||||
for (Contact c : contacts)
|
||||
{
|
||||
String cuser = c.getAddress();
|
||||
ProtocolProviderService cprotoProvider = c.getProtocolProvider();
|
||||
String caccount = cprotoProvider.getAccountID().toString();
|
||||
String cprotocol = cprotoProvider.getProtocolName();
|
||||
|
||||
if (user.equals(cuser) && account.equals(caccount)
|
||||
&& protocol.equals(cprotocol))
|
||||
return;
|
||||
}
|
||||
|
||||
contacts.add(contact);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageDeliveredEvent messageDelivered(MessageDeliveredEvent evt)
|
||||
{
|
||||
if (evt.getSourceMessage().getContent().contains(MessageConstants.BASE_HEAD))
|
||||
return null;
|
||||
else
|
||||
return evt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageDeliveryFailedEvent messageDeliveryFailed(
|
||||
MessageDeliveryFailedEvent evt)
|
||||
{
|
||||
return evt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageDeliveredEvent messageDeliveryPending(
|
||||
MessageDeliveredEvent evt)
|
||||
{
|
||||
Contact contact = evt.getDestinationContact();
|
||||
addContact(contact);
|
||||
String user = contact.getAddress();
|
||||
|
||||
ProtocolProviderService protoProvider = contact.getProtocolProvider();
|
||||
String account = protoProvider.getAccountID().toString();
|
||||
String protocol = protoProvider.getProtocolName();
|
||||
|
||||
Message msg = evt.getSourceMessage();
|
||||
String msgContent = msg.getContent();
|
||||
|
||||
OperationSetBasicInstantMessaging imOpSet =
|
||||
(OperationSetBasicInstantMessaging) contact.getProtocolProvider()
|
||||
.getOperationSet(OperationSetBasicInstantMessaging.class);
|
||||
|
||||
String processedMessageContent =
|
||||
us.handleSendingMessage(user, account, protocol, msgContent);
|
||||
|
||||
if (processedMessageContent == null
|
||||
|| processedMessageContent.length() < 1)
|
||||
return null;
|
||||
|
||||
if (processedMessageContent.equals(msgContent))
|
||||
return evt;
|
||||
|
||||
Message processedMessage =
|
||||
imOpSet.createMessage(processedMessageContent);
|
||||
|
||||
MessageDeliveredEvent processedEvent =
|
||||
new MessageDeliveredEvent(processedMessage, contact, evt
|
||||
.getTimestamp());
|
||||
|
||||
return processedEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageReceivedEvent messageReceived(MessageReceivedEvent evt)
|
||||
{
|
||||
Contact contact = evt.getSourceContact();
|
||||
addContact(contact);
|
||||
String user = contact.getAddress();
|
||||
|
||||
ProtocolProviderService protoProvider = contact.getProtocolProvider();
|
||||
String account = protoProvider.getAccountID().toString();
|
||||
String protocol = protoProvider.getProtocolName();
|
||||
|
||||
Message msg = evt.getSourceMessage();
|
||||
String msgContent = msg.getContent();
|
||||
|
||||
OperationSetBasicInstantMessaging imOpSet =
|
||||
(OperationSetBasicInstantMessaging) contact.getProtocolProvider()
|
||||
.getOperationSet(OperationSetBasicInstantMessaging.class);
|
||||
|
||||
String processedMessageContent =
|
||||
us.handleReceivingMessage(user, account, protocol, msgContent);
|
||||
|
||||
if (processedMessageContent == null
|
||||
|| processedMessageContent.length() < 1)
|
||||
return null;
|
||||
|
||||
if (processedMessageContent.equals(msgContent))
|
||||
return evt;
|
||||
|
||||
Message processedMessage =
|
||||
imOpSet.createMessage(processedMessageContent);
|
||||
|
||||
MessageReceivedEvent processedEvent =
|
||||
new MessageReceivedEvent(processedMessage, contact, evt
|
||||
.getTimestamp());
|
||||
|
||||
return processedEvent;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
Bundle-Activator: net.java.sip.communicator.plugin.otr.OtrActivator
|
||||
Bundle-Name: OTR (Off-the-Record) Messaging
|
||||
Bundle-Description: Support for secure, Off The Record messaging in SIP Communicator
|
||||
Bundle-Vendor: sip-communicator.org
|
||||
Bundle-Version: 0.0.1
|
||||
System-Bundle: yes
|
||||
Import-Package: org.osgi.framework,
|
||||
net.java.sip.communicator.util,
|
||||
net.java.sip.communicator.service.gui,
|
||||
net.java.sip.communicator.service.protocol,
|
||||
net.java.sip.communicator.service.protocol.event,
|
||||
net.java.sip.communicator.service.contactlist,
|
||||
net.java.sip.communicator.service.resources,
|
||||
javax.swing,
|
||||
javax.crypto,
|
||||
javax.crypto.interfaces,
|
||||
javax.crypto.spec,
|
||||
org.bouncycastle.crypto,
|
||||
org.bouncycastle.crypto.generators,
|
||||
org.bouncycastle.crypto.params,
|
||||
org.bouncycastle.crypto.signers,
|
||||
org.bouncycastle.crypto.engines,
|
||||
org.bouncycastle.crypto.modes,
|
||||
org.bouncycastle.util,
|
||||
org.bouncycastle.util.encoders
|
||||
Loading…
Reference in new issue