正在查看: 95爱播免登录版 v3.1.9 应用的 IBBTransferNegotiator.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 95爱播免登录版 v3.1.9 应用的 IBBTransferNegotiator.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.jivesoftware.smackx.filetransfer;
import java.io.InputStream;
import java.io.OutputStream;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.FromContainsFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager;
import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamRequest;
import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession;
import org.jivesoftware.smackx.bytestreams.ibb.packet.Open;
import org.jivesoftware.smackx.packet.StreamInitiation;
public class IBBTransferNegotiator extends StreamNegotiator {
private Connection connection;
private InBandBytestreamManager manager;
private static class ByteStreamRequest extends InBandBytestreamRequest {
ByteStreamRequest(InBandBytestreamManager inBandBytestreamManager, Open open, ByteStreamRequest byteStreamRequest) {
this(inBandBytestreamManager, open);
}
private ByteStreamRequest(InBandBytestreamManager inBandBytestreamManager, Open open) {
super(inBandBytestreamManager, open);
}
}
private static class IBBOpenSidFilter extends PacketTypeFilter {
private String sessionID;
public IBBOpenSidFilter(String str) {
super(Open.class);
if (str == null) {
throw new IllegalArgumentException("StreamID cannot be null");
}
this.sessionID = str;
}
public boolean accept(Packet packet) {
if (super.accept(packet)) {
Open open = (Open) packet;
if (this.sessionID.equals(open.getSessionID()) && IQ.Type.SET.equals(open.getType())) {
return true;
}
}
return false;
}
}
protected IBBTransferNegotiator(Connection connection) {
this.connection = connection;
this.manager = InBandBytestreamManager.getByteStreamManager(connection);
}
@Override
public void cleanup() {
}
@Override
public InputStream createIncomingStream(StreamInitiation streamInitiation) throws XMPPException {
this.manager.ignoreBytestreamRequestOnce(streamInitiation.getSessionID());
return negotiateIncomingStream(initiateIncomingStream(this.connection, streamInitiation));
}
@Override
public OutputStream createOutgoingStream(String str, String str2, String str3) throws XMPPException {
InBandBytestreamSession establishSession = this.manager.establishSession(str3, str);
establishSession.setCloseBothStreamsEnabled(true);
return establishSession.getOutputStream();
}
@Override
public PacketFilter getInitiationPacketFilter(String str, String str2) {
this.manager.ignoreBytestreamRequestOnce(str2);
return new AndFilter(new PacketFilter[]{new FromContainsFilter(str), new IBBOpenSidFilter(str2)});
}
@Override
public String[] getNamespaces() {
return new String[]{"http://jabber.org/protocol/ibb"};
}
@Override
InputStream negotiateIncomingStream(Packet packet) throws XMPPException {
InBandBytestreamSession accept = new ByteStreamRequest(this.manager, (Open) packet, null).accept();
accept.setCloseBothStreamsEnabled(true);
return accept.getInputStream();
}
}