正在查看: 95爱播免登录版 v3.1.9 应用的 PacketParserUtils.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 95爱播免登录版 v3.1.9 应用的 PacketParserUtils.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.jivesoftware.smack.util;
import com.meizu.cloud.pushsdk.constants.PushConstants;
import com.mobile.auth.gatewayauth.Constant;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.packet.Authentication;
import org.jivesoftware.smack.packet.Bind;
import org.jivesoftware.smack.packet.DefaultPacketExtension;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.PrivacyItem;
import org.jivesoftware.smack.packet.Registration;
import org.jivesoftware.smack.packet.RosterPacket;
import org.jivesoftware.smack.packet.StreamError;
import org.jivesoftware.smack.packet.XMPPError;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.provider.PacketExtensionProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.jivesoftware.smack.sasl.SASLMechanism;
import org.jivesoftware.smackx.FormField;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
public class PacketParserUtils {
private static final String PROPERTIES_NAMESPACE = "http://www.jivesoftware.com/xmlns/xmpp/properties";
public static class UnparsedResultIQ extends IQ {
private final String str;
public UnparsedResultIQ(String str) {
this.str = str;
}
@Override
public String getChildElementXML() {
return this.str;
}
}
private static Object decode(Class<?> cls, String str) throws Exception {
if (cls.getName().equals("java.lang.String")) {
return str;
}
if (cls.getName().equals(FormField.TYPE_BOOLEAN)) {
return Boolean.valueOf(str);
}
if (cls.getName().equals("int")) {
return Integer.valueOf(str);
}
if (cls.getName().equals("long")) {
return Long.valueOf(str);
}
if (cls.getName().equals("float")) {
return Float.valueOf(str);
}
if (cls.getName().equals("double")) {
return Double.valueOf(str);
}
if (cls.getName().equals("java.lang.Class")) {
return Class.forName(str);
}
return null;
}
private static String getLanguageAttribute(XmlPullParser xmlPullParser) {
for (int i2 = 0; i2 < xmlPullParser.getAttributeCount(); i2++) {
String attributeName = xmlPullParser.getAttributeName(i2);
if ("xml:lang".equals(attributeName) || ("lang".equals(attributeName) && "xml".equals(xmlPullParser.getAttributePrefix(i2)))) {
return xmlPullParser.getAttributeValue(i2);
}
}
return null;
}
private static Authentication parseAuthentication(XmlPullParser xmlPullParser) throws Exception {
Authentication authentication = new Authentication();
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getName().equals("username")) {
authentication.setUsername(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("password")) {
authentication.setPassword(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("digest")) {
authentication.setDigest(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("resource")) {
authentication.setResource(xmlPullParser.nextText());
}
} else if (next == 3 && xmlPullParser.getName().equals("query")) {
z = true;
}
}
return authentication;
}
public static Collection<String> parseCompressionMethods(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
ArrayList arrayList = new ArrayList();
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getName().equals(PushConstants.MZ_PUSH_MESSAGE_METHOD)) {
arrayList.add(xmlPullParser.nextText());
}
} else if (next == 3 && xmlPullParser.getName().equals("compression")) {
z = true;
}
}
return arrayList;
}
private static String parseContent(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
StringBuffer stringBuffer = new StringBuffer();
int depth = xmlPullParser.getDepth();
while (true) {
if (xmlPullParser.next() == 3 && xmlPullParser.getDepth() == depth) {
return stringBuffer.toString();
}
stringBuffer.append(xmlPullParser.getText());
}
}
public static XMPPError parseError(XmlPullParser xmlPullParser) throws Exception {
ArrayList arrayList = new ArrayList();
boolean z = false;
String str = "-1";
String str2 = null;
for (int i2 = 0; i2 < xmlPullParser.getAttributeCount(); i2++) {
if (xmlPullParser.getAttributeName(i2).equals("code")) {
str = xmlPullParser.getAttributeValue("", "code");
}
if (xmlPullParser.getAttributeName(i2).equals("type")) {
str2 = xmlPullParser.getAttributeValue("", "type");
}
}
String str3 = null;
String str4 = null;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getName().equals("text")) {
str4 = xmlPullParser.nextText();
} else {
String name = xmlPullParser.getName();
String namespace = xmlPullParser.getNamespace();
if ("urn:ietf:params:xml:ns:xmpp-stanzas".equals(namespace)) {
str3 = name;
} else {
arrayList.add(parsePacketExtension(name, namespace, xmlPullParser));
}
}
} else if (next == 3 && xmlPullParser.getName().equals("error")) {
z = true;
}
}
XMPPError.Type type = XMPPError.Type.CANCEL;
if (str2 != null) {
try {
type = XMPPError.Type.valueOf(str2.toUpperCase());
} catch (IllegalArgumentException e2) {
e2.printStackTrace();
}
}
return new XMPPError(Integer.parseInt(str), type, str3, str4, arrayList);
}
public static IQ parseIQ(XmlPullParser xmlPullParser, Connection connection) throws Exception {
String attributeValue = xmlPullParser.getAttributeValue("", "id");
String attributeValue2 = xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_TO);
String attributeValue3 = xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM);
IQ.Type fromString = IQ.Type.fromString(xmlPullParser.getAttributeValue("", "type"));
boolean z = false;
IQ iq = null;
XMPPError xMPPError = null;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
String name = xmlPullParser.getName();
String namespace = xmlPullParser.getNamespace();
if (name.equals("error")) {
xMPPError = parseError(xmlPullParser);
} else if (name.equals("query") && namespace.equals("jabber:iq:auth")) {
iq = parseAuthentication(xmlPullParser);
} else if (name.equals("query") && namespace.equals("jabber:iq:roster")) {
iq = parseRoster(xmlPullParser);
} else if (name.equals("query") && namespace.equals("jabber:iq:register")) {
iq = parseRegistration(xmlPullParser);
} else if (name.equals("bind") && namespace.equals("urn:ietf:params:xml:ns:xmpp-bind")) {
iq = parseResourceBinding(xmlPullParser);
} else {
Object iQProvider = ProviderManager.getInstance().getIQProvider(name, namespace);
if (iQProvider != null) {
if (iQProvider instanceof IQProvider) {
iq = ((IQProvider) iQProvider).parseIQ(xmlPullParser);
} else if (iQProvider instanceof Class) {
iq = (IQ) parseWithIntrospection(name, (Class) iQProvider, xmlPullParser);
}
} else if (IQ.Type.RESULT == fromString) {
iq = new UnparsedResultIQ(parseContent(xmlPullParser));
}
}
} else if (next == 3 && xmlPullParser.getName().equals("iq")) {
z = true;
}
}
if (iq == null) {
if (IQ.Type.GET == fromString || IQ.Type.SET == fromString) {
IQ iq2 = new IQ() {
@Override
public String getChildElementXML() {
return null;
}
};
iq2.setPacketID(attributeValue);
iq2.setTo(attributeValue3);
iq2.setFrom(attributeValue2);
iq2.setType(IQ.Type.ERROR);
iq2.setError(new XMPPError(XMPPError.Condition.feature_not_implemented));
connection.sendPacket(iq2);
return null;
}
iq = new IQ() {
@Override
public String getChildElementXML() {
return null;
}
};
}
iq.setPacketID(attributeValue);
iq.setTo(attributeValue2);
iq.setFrom(attributeValue3);
iq.setType(fromString);
iq.setError(xMPPError);
return iq;
}
public static Collection<String> parseMechanisms(XmlPullParser xmlPullParser) throws Exception {
ArrayList arrayList = new ArrayList();
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getName().equals("mechanism")) {
arrayList.add(xmlPullParser.nextText());
}
} else if (next == 3 && xmlPullParser.getName().equals("mechanisms")) {
z = true;
}
}
return arrayList;
}
public static Packet parseMessage(XmlPullParser xmlPullParser) throws Exception {
Message message = new Message();
String attributeValue = xmlPullParser.getAttributeValue("", "id");
if (attributeValue == null) {
attributeValue = Packet.ID_NOT_AVAILABLE;
}
message.setPacketID(attributeValue);
message.setTo(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_TO));
message.setFrom(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM));
message.setType(Message.Type.fromString(xmlPullParser.getAttributeValue("", "type")));
String languageAttribute = getLanguageAttribute(xmlPullParser);
if (languageAttribute == null || "".equals(languageAttribute.trim())) {
languageAttribute = Packet.getDefaultLanguage();
} else {
message.setLanguage(languageAttribute);
}
boolean z = false;
String str = null;
Map<String, Object> map = null;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
String name = xmlPullParser.getName();
String namespace = xmlPullParser.getNamespace();
if (name.equals("subject")) {
String languageAttribute2 = getLanguageAttribute(xmlPullParser);
if (languageAttribute2 == null) {
languageAttribute2 = languageAttribute;
}
String parseContent = parseContent(xmlPullParser);
if (message.getSubject(languageAttribute2) == null) {
message.addSubject(languageAttribute2, parseContent);
}
} else if (name.equals("body")) {
String languageAttribute3 = getLanguageAttribute(xmlPullParser);
if (languageAttribute3 == null) {
languageAttribute3 = languageAttribute;
}
String parseContent2 = parseContent(xmlPullParser);
if (message.getBody(languageAttribute3) == null) {
message.addBody(languageAttribute3, parseContent2);
}
} else if (name.equals("thread")) {
if (str == null) {
str = xmlPullParser.nextText();
}
} else if (name.equals("error")) {
message.setError(parseError(xmlPullParser));
} else if (name.equals("properties") && namespace.equals(PROPERTIES_NAMESPACE)) {
map = parseProperties(xmlPullParser);
} else {
message.addExtension(parsePacketExtension(name, namespace, xmlPullParser));
}
} else if (next == 3 && xmlPullParser.getName().equals("message")) {
z = true;
}
}
message.setThread(str);
if (map != null) {
for (String str2 : map.keySet()) {
message.setProperty(str2, map.get(str2));
}
}
return message;
}
public static PacketExtension parsePacketExtension(String str, String str2, XmlPullParser xmlPullParser) throws Exception {
Object extensionProvider = ProviderManager.getInstance().getExtensionProvider(str, str2);
if (extensionProvider != null) {
if (extensionProvider instanceof PacketExtensionProvider) {
return ((PacketExtensionProvider) extensionProvider).parseExtension(xmlPullParser);
}
if (extensionProvider instanceof Class) {
return (PacketExtension) parseWithIntrospection(str, (Class) extensionProvider, xmlPullParser);
}
}
DefaultPacketExtension defaultPacketExtension = new DefaultPacketExtension(str, str2);
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
String name = xmlPullParser.getName();
if (xmlPullParser.isEmptyElementTag()) {
defaultPacketExtension.setValue(name, "");
} else if (xmlPullParser.next() == 4) {
defaultPacketExtension.setValue(name, xmlPullParser.getText());
}
} else if (next == 3 && xmlPullParser.getName().equals(str)) {
z = true;
}
}
return defaultPacketExtension;
}
public static Presence parsePresence(XmlPullParser xmlPullParser) throws Exception {
Presence.Type type = Presence.Type.available;
String attributeValue = xmlPullParser.getAttributeValue("", "type");
if (attributeValue != null && !attributeValue.equals("")) {
try {
type = Presence.Type.valueOf(attributeValue);
} catch (IllegalArgumentException unused) {
System.err.println("Found invalid presence type " + attributeValue);
}
}
Presence presence = new Presence(type);
presence.setTo(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_TO));
presence.setFrom(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM));
String attributeValue2 = xmlPullParser.getAttributeValue("", "id");
presence.setPacketID(attributeValue2 == null ? Packet.ID_NOT_AVAILABLE : attributeValue2);
String languageAttribute = getLanguageAttribute(xmlPullParser);
if (languageAttribute != null && !"".equals(languageAttribute.trim())) {
presence.setLanguage(languageAttribute);
}
if (attributeValue2 == null) {
attributeValue2 = Packet.ID_NOT_AVAILABLE;
}
presence.setPacketID(attributeValue2);
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
String name = xmlPullParser.getName();
String namespace = xmlPullParser.getNamespace();
if (name.equals("status")) {
presence.setStatus(xmlPullParser.nextText());
} else if (name.equals("priority")) {
try {
presence.setPriority(Integer.parseInt(xmlPullParser.nextText()));
} catch (NumberFormatException unused2) {
} catch (IllegalArgumentException unused3) {
presence.setPriority(0);
}
} else if (name.equals("show")) {
String nextText = xmlPullParser.nextText();
try {
presence.setMode(Presence.Mode.valueOf(nextText));
} catch (IllegalArgumentException unused4) {
System.err.println("Found invalid presence mode " + nextText);
}
} else if (name.equals("error")) {
presence.setError(parseError(xmlPullParser));
} else if (name.equals("properties") && namespace.equals(PROPERTIES_NAMESPACE)) {
Map<String, Object> parseProperties = parseProperties(xmlPullParser);
for (String str : parseProperties.keySet()) {
presence.setProperty(str, parseProperties.get(str));
}
} else {
try {
presence.addExtension(parsePacketExtension(name, namespace, xmlPullParser));
} catch (Exception unused5) {
System.err.println("Failed to parse extension packet in Presence packet.");
}
}
} else if (next == 3 && xmlPullParser.getName().equals("presence")) {
z = true;
}
}
return presence;
}
public static Map<String, Object> parseProperties(XmlPullParser xmlPullParser) throws Exception {
String str;
HashMap hashMap = new HashMap();
while (true) {
int next = xmlPullParser.next();
if (next == 2 && xmlPullParser.getName().equals("property")) {
boolean z = false;
String str2 = null;
String str3 = null;
String str4 = null;
String str5 = null;
while (!z) {
int next2 = xmlPullParser.next();
if (next2 == 2) {
String name = xmlPullParser.getName();
if (name.equals(Constant.PROTOCOL_WEBVIEW_NAME)) {
str4 = xmlPullParser.nextText();
} else if (name.equals("value")) {
str2 = xmlPullParser.getAttributeValue("", "type");
str3 = xmlPullParser.nextText();
}
} else if (next2 == 3 && xmlPullParser.getName().equals("property")) {
if ("integer".equals(str2)) {
str = Integer.valueOf(str3);
} else if ("long".equals(str2)) {
str = Long.valueOf(str3);
} else if ("float".equals(str2)) {
str = Float.valueOf(str3);
} else if ("double".equals(str2)) {
str = Double.valueOf(str3);
} else if (FormField.TYPE_BOOLEAN.equals(str2)) {
str = Boolean.valueOf(str3);
} else {
if ("string".equals(str2)) {
str5 = str3;
} else if ("java-object".equals(str2)) {
try {
str = new ObjectInputStream(new ByteArrayInputStream(StringUtils.decodeBase64(str3))).readObject();
} catch (Exception e2) {
e2.printStackTrace();
}
}
if (str4 != null && str5 != null) {
hashMap.put(str4, str5);
}
z = true;
}
str5 = str;
if (str4 != null) {
hashMap.put(str4, str5);
}
z = true;
}
}
} else if (next == 3 && xmlPullParser.getName().equals("properties")) {
return hashMap;
}
}
}
private static Registration parseRegistration(XmlPullParser xmlPullParser) throws Exception {
Registration registration = new Registration();
HashMap hashMap = null;
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getNamespace().equals("jabber:iq:register")) {
String name = xmlPullParser.getName();
if (hashMap == null) {
hashMap = new HashMap();
}
String text = xmlPullParser.next() == 4 ? xmlPullParser.getText() : "";
if (name.equals("instructions")) {
registration.setInstructions(text);
} else {
hashMap.put(name, text);
}
} else {
registration.addExtension(parsePacketExtension(xmlPullParser.getName(), xmlPullParser.getNamespace(), xmlPullParser));
}
} else if (next == 3 && xmlPullParser.getName().equals("query")) {
z = true;
}
}
registration.setAttributes(hashMap);
return registration;
}
private static Bind parseResourceBinding(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
Bind bind = new Bind();
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getName().equals("resource")) {
bind.setResource(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("jid")) {
bind.setJid(xmlPullParser.nextText());
}
} else if (next == 3 && xmlPullParser.getName().equals("bind")) {
z = true;
}
}
return bind;
}
private static RosterPacket parseRoster(XmlPullParser xmlPullParser) throws Exception {
String nextText;
RosterPacket rosterPacket = new RosterPacket();
boolean z = false;
RosterPacket.Item item = null;
while (!z) {
if (xmlPullParser.getEventType() == 2 && xmlPullParser.getName().equals("query")) {
rosterPacket.setVersion(xmlPullParser.getAttributeValue(null, "ver"));
}
int next = xmlPullParser.next();
if (next == 2) {
if (xmlPullParser.getName().equals("item")) {
RosterPacket.Item item2 = new RosterPacket.Item(xmlPullParser.getAttributeValue("", "jid"), xmlPullParser.getAttributeValue("", Constant.PROTOCOL_WEBVIEW_NAME));
item2.setItemStatus(RosterPacket.ItemStatus.fromString(xmlPullParser.getAttributeValue("", "ask")));
String attributeValue = xmlPullParser.getAttributeValue("", "subscription");
if (attributeValue == null) {
attributeValue = PrivacyItem.PrivacyRule.SUBSCRIPTION_NONE;
}
item2.setItemType(RosterPacket.ItemType.valueOf(attributeValue));
item = item2;
}
if (xmlPullParser.getName().equals("group") && item != null && (nextText = xmlPullParser.nextText()) != null && nextText.trim().length() > 0) {
item.addGroupName(nextText);
}
} else if (next == 3) {
if (xmlPullParser.getName().equals("item")) {
rosterPacket.addRosterItem(item);
}
if (xmlPullParser.getName().equals("query")) {
z = true;
}
}
}
return rosterPacket;
}
public static SASLMechanism.Failure parseSASLFailure(XmlPullParser xmlPullParser) throws Exception {
String str = null;
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
if (!xmlPullParser.getName().equals("failure")) {
str = xmlPullParser.getName();
}
} else if (next == 3 && xmlPullParser.getName().equals("failure")) {
z = true;
}
}
return new SASLMechanism.Failure(str);
}
public static StreamError parseStreamError(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
StreamError streamError = null;
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
streamError = new StreamError(xmlPullParser.getName());
} else if (next == 3 && xmlPullParser.getName().equals("error")) {
z = true;
}
}
return streamError;
}
public static Object parseWithIntrospection(String str, Class<?> cls, XmlPullParser xmlPullParser) throws Exception {
Object newInstance = cls.newInstance();
boolean z = false;
while (!z) {
int next = xmlPullParser.next();
if (next == 2) {
String name = xmlPullParser.getName();
String nextText = xmlPullParser.nextText();
Class<?> returnType = newInstance.getClass().getMethod("get" + Character.toUpperCase(name.charAt(0)) + name.substring(1), new Class[0]).getReturnType();
Object decode = decode(returnType, nextText);
newInstance.getClass().getMethod("set" + Character.toUpperCase(name.charAt(0)) + name.substring(1), returnType).invoke(newInstance, decode);
} else if (next == 3 && xmlPullParser.getName().equals(str)) {
z = true;
}
}
return newInstance;
}
}