/** * * Copyright the original author or authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.smackx.bytestreams.socks5; import org.jivesoftware.smack.packet.EmptyResultIQ; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; import org.jivesoftware.smackx.disco.packet.DiscoverInfoBuilder; import org.jivesoftware.smackx.disco.packet.DiscoverItems; import org.jxmpp.jid.Jid; /** * A collection of utility methods to create XMPP packets. * * @author Henning Staib */ public class Socks5PacketUtils { /** * Returns a SOCKS5 Bytestream initialization request packet. The Request doesn't contain any * SOCKS5 proxies. * * @param from the initiator * @param to the target * @param sessionID the session ID * @return SOCKS5 Bytestream initialization request packet */ public static Bytestream createBytestreamInitiation(Jid from, Jid to, String sessionID) { Bytestream bytestream = new Bytestream(); bytestream.setFrom(from); bytestream.setTo(to); bytestream.setSessionID(sessionID); bytestream.setType(IQ.Type.set); return bytestream; } /** * Returns a response to a SOCKS5 Bytestream initialization request. The stanza doesn't contain * the uses-host information. * * @param from the target * @param to the initiator * @return response to a SOCKS5 Bytestream initialization request */ public static Bytestream createBytestreamResponse(Jid from, Jid to) { Bytestream streamHostInfo = new Bytestream(); streamHostInfo.setFrom(from); streamHostInfo.setTo(to); streamHostInfo.setType(IQ.Type.result); return streamHostInfo; } /** * Returns a response to an item discovery request. The stanza doesn't contain any items. * * @param from the XMPP server * @param to the XMPP client * @return response to an item discovery request */ public static DiscoverItems createDiscoverItems(Jid from, Jid to) { DiscoverItems discoverItems = new DiscoverItems(); discoverItems.setFrom(from); discoverItems.setTo(to); discoverItems.setType(IQ.Type.result); return discoverItems; } /** * Returns a response to an info discovery request. The stanza doesn't contain any infos. * * @param from the target * @param to the initiator * @return response to an info discovery request */ public static DiscoverInfoBuilder createDiscoverInfo(Jid from, Jid to) { DiscoverInfoBuilder discoverInfo = DiscoverInfo.builder("disco-1") .from(from) .to(to) .ofType(IQ.Type.result) ; return discoverInfo; } /** * Returns a response IQ for a activation request to the proxy. * * @param from JID of the proxy * @param to JID of the client who wants to activate the SOCKS5 Bytestream * @return response IQ for a activation request to the proxy */ public static IQ createActivationConfirmation(Jid from, Jid to) { IQ response = new EmptyResultIQ(); response.setFrom(from); response.setTo(to); return response; } }