Skip to content
This repository has been archived by the owner on Aug 12, 2024. It is now read-only.

Commit

Permalink
Shamrock: support requestUploadGroupPic
Browse files Browse the repository at this point in the history
Signed-off-by: 白池 <[email protected]>
  • Loading branch information
whitechi73 committed Feb 24, 2024
1 parent 68ea62e commit 7203131
Show file tree
Hide file tree
Showing 23 changed files with 627 additions and 313 deletions.
21 changes: 20 additions & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -199,17 +199,36 @@

-keep class com.arthenica.ffmpegkit.NativeLoader { *; }

-keep class moe.fuqiuluo.** { *; }
-keep class moe.fuqiuluo.shamrock.app.** { *; }
-keep class moe.fuqiuluo.shamrock.ui.** { *; }
-keep class moe.fuqiuluo.shamrock.MainActivity { *; }
-keep class moe.fuqiuluo.shamrock.MainActivityKt { *; }
-keep class moe.fuqiuluo.shamrock.Manifest { *; }

-keep class moe.fuqiuluo.shamrock.xposed.** { *; }
-keep class moe.fuqiuluo.shamrock.helper.** { *; }

# tencent interfaces rules
-keep class com.tencent.** { *; }
-keep class com.qq.** { *; }
-keep class com.google.gson.** { *; }
-keep class de.** { *; }
-keep class epic.** { *; }
-keep class friendlist.** { *; }
-keep class KQQ.** { *; }
-keep class mqq.** { *; }
-keep class msf.** { *; }
-keep class oicq.** { *; }
-keep class QQService.** { *; }
-keep class SummaryCard.** { *; }
-keep class tencent.** { *; }
-keep class VIP.** { *; }

-keepclassmembers class * {
native <methods>;
}
-keep class io.netty.** { *; }

-keepclasseswithmembernames class * {
native <methods>;
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ data class NotOnlineImage(
@ProtoNumber(7) val picMd5: ByteArray? = null,
@ProtoNumber(8) val picHeight: UInt? = null,
@ProtoNumber(9) val picWidth: UInt? = null,
@ProtoNumber(10) val resId: ByteArray? = null,
@ProtoNumber(10) val resId: ByteArray? = null, // md5 + ".jpg"
@ProtoNumber(11) val flag: ByteArray? = null,
@ProtoNumber(12) val thumbUrl: String? = null,
@ProtoNumber(13) val original: UInt? = null,
Expand Down
63 changes: 63 additions & 0 deletions protobuf/src/main/java/protobuf/oidb/cmd0x388/Cmd0x388Req.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package protobuf.oidb.cmd0x388

import com.google.protobuf.Internal.EMPTY_BYTE_ARRAY
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import moe.fuqiuluo.symbols.Protobuf

@Serializable
data class Cmd0x388ReqBody(
@ProtoNumber(1) var netType: Int = 0,
@ProtoNumber(2) var subCmd: Int = 0,
@ProtoNumber(3) var msgTryUpImg: ArrayList<TryUpImgReq>? = null,
// @ProtoNumber(4) var rpt_msg_getimg_url_req: ArrayList<GetImgUrlReq>? = null,
@ProtoNumber(5) var msgTryUpPttReq: ArrayList<TryUpPttReq>? = null,
// @ProtoNumber(6) var msgGetPttUrlReq: ArrayList<GetPttUrlReq>? = null,
@ProtoNumber(7) var commandId: Int = 0,
// @ProtoNumber(8) var rpt_msg_del_img_req: ArrayList<DelImgReq>? = null,
@ProtoNumber(1001) var extension: ByteArray = EMPTY_BYTE_ARRAY,
): Protobuf<Cmd0x388ReqBody>

@Serializable
data class TryUpImgReq(
@ProtoNumber(1) var groupCode: Long = 0,
@ProtoNumber(2) var srcUin: Long = 0,
@ProtoNumber(3) var fileId: Long? = null,
@ProtoNumber(4) var fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) var fileSize: Long = 0,
@ProtoNumber(6) var fileName: String = "",
@ProtoNumber(7) var srcTerm: Int = 0,
@ProtoNumber(8) var platformType: Int = 0,
@ProtoNumber(9) var buType: Int = 0,
@ProtoNumber(10) var picWidth: Int = 0,
@ProtoNumber(11) var picHeight: Int = 0,
@ProtoNumber(12) var picType: Int = 0,
@ProtoNumber(13) var buildVer: String = "",
@ProtoNumber(14) var innerIp: Int = 0,
@ProtoNumber(15) var appPicType: Int = 0,
@ProtoNumber(16) var originalPic: Int = 0,
@ProtoNumber(17) var fileIndex: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(18) var dstUin: Long = 0,
@ProtoNumber(19) var srvUpload: Int? = null,
@ProtoNumber(20) var transferUrl: ByteArray = EMPTY_BYTE_ARRAY,
)

@Serializable
data class TryUpPttReq(
@ProtoNumber(1) var groupCode: Long = 0,
@ProtoNumber(2) var srcUin: Long = 0,
@ProtoNumber(3) var fileId: Long = 0,
@ProtoNumber(4) var fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) var fileSize: Long = 0,
@ProtoNumber(6) var fileName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) var srcTerm: Int = 0,
@ProtoNumber(8) var platformType: Int = 0,
@ProtoNumber(9) var buType: Int = 0,
@ProtoNumber(10) var buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) var innerIp: Int = 0,
@ProtoNumber(12) var voiceLength: Int = 0,
@ProtoNumber(13) var newUpChan: Boolean = false,
@ProtoNumber(14) var codec: Int = 0,
@ProtoNumber(15) var voiceType: Int = 0,
@ProtoNumber(16) var buId: Int = 0,
)
78 changes: 78 additions & 0 deletions protobuf/src/main/java/protobuf/oidb/cmd0x388/Cmd0x388Rsp.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
@file:OptIn(ExperimentalSerializationApi::class)

package protobuf.oidb.cmd0x388

import com.google.protobuf.Internal.EMPTY_BYTE_ARRAY
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import moe.fuqiuluo.symbols.Protobuf

@Serializable
data class Cmd0x388RspBody(
@ProtoNumber(1) var clientIp: UInt = 0u,
@ProtoNumber(2) var subCmd: UInt = 0u,
@ProtoNumber(3) var msgTryUpImgRsp: ArrayList<TryUpImgRsp>? = null,
@ProtoNumber(5) var msgTryUpPttRsp: ArrayList<TryUpPttRsp>? = null,
): Protobuf<Cmd0x388RspBody>

@Serializable
data class TryUpPttRsp(
@ProtoNumber(1) var fileId: Long = 0,
@ProtoNumber(2) var result: Int = 0,
@ProtoNumber(3) var failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) var fileExit: Boolean = false,
@ProtoNumber(5) var upIp: List<Int>? = null,
@ProtoNumber(6) var upPort: List<Int>? = null,
@ProtoNumber(7) var upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) var fileid: Long = 0,
@ProtoNumber(9) var upOffset: Long = 0,
@ProtoNumber(10) var blockSize: Long = 0,
@ProtoNumber(11) var fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) var channelType: Int = 0,
@ProtoNumber(26) var msgUpIp6: ArrayList<IPv6Info>? = null,
@ProtoNumber(27) var clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
): Protobuf<TryUpPttRsp>

@Serializable
data class TryUpImgRsp(
@ProtoNumber(1) var extFileId: ULong = 0u, // 没有实际作用
@ProtoNumber(2) var result: UInt = 0u,
@ProtoNumber(3) var faiMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) var fileExist: Boolean = false,
@ProtoNumber(5) var msgImgInfo: ImgInfo? = null, // 里面只是一堆垃圾
@ProtoNumber(6) var upIp: ArrayList<Long>? = null,
@ProtoNumber(7) var upPort: ArrayList<Int>? = null,
@ProtoNumber(8) var ukey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(9) var fileId: Long = 0,
@ProtoNumber(10) var upOffset: ULong = 0u,
@ProtoNumber(11) var blockSize: Long = 0,
@ProtoNumber(12) var bool_new_big_chan: Boolean = false,
@ProtoNumber(26) var rpt_msg_up_ip6: ArrayList<IPv6Info>? = null,
@ProtoNumber(27) var client_ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(1001) var msg_info4busi: TryUpInfo4Busi? = null,
)

@Serializable
data class TryUpInfo4Busi(
@ProtoNumber(1) var down_domain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) var thumb_down_url: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) var original_down_url: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) var big_down_url: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) var file_resid: ByteArray = EMPTY_BYTE_ARRAY,
)

@Serializable
data class IPv6Info(
@ProtoNumber(1) var ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) var port: UInt = 0u,
)

@Serializable
data class ImgInfo(
@ProtoNumber(1) var file_md5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) var file_type: UInt = 0u,
@ProtoNumber(3) var file_size: ULong = 0u,
@ProtoNumber(4) var file_width: UInt = 0u,
@ProtoNumber(5) var file_height: UInt = 0u,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.tencent.mobileqq.data;

import java.util.HashMap;
import java.util.Map;

public class MessageForPic extends MessageRecord {
public String SpeedInfo;
public String actMsgContentValue;
public String action;
public String bigMsgUrl;
public String bigThumbMsgUrl;
public int busiType;
public int fileSizeFlag;
public long groupFileID;
public long height;
public int imageType;
public boolean isInMixedMsg;
public boolean isMixed;
public boolean isRead;
public boolean isShareAppActionMsg;
public String localUUID;
public int mCurrlength;
public int mDownloadLength;
public long mPresendTransferedSize;
public int mShowLength;
public String md5;
//@RecordForTest
// public msg_ctrl$MsgCtrl msgCtrl;
public int msgVia;
public int ntChatType;
public String ntPeerUid;
public String path;
//public PicMessageExtraData picExtraData;
public int picExtraFlag;
public Object picExtraObject;
public int previewed;
public String rawMsgUrl;
/// public ReportInfo reportInfo;
//public MsgRecordParams rootMsgRecordParams;
public String serverStoreSource;
public long shareAppID;
public long size;
public long subTypeId;
public int thumbHeight;
public String thumbMsgUrl;
public int thumbWidth;
//public ThumbWidthHeightDP thumbWidthHeightDP;
public int type;
public String uuid;
public long width;
public boolean isDownStatusReady = false;
public int subMsgId = 0;
public int isReport = 0;
public int subVersion = 5;
public int preDownState = -1;
public int preDownNetworkType = -1;
public long DSKey = 0;
public int mNotPredownloadReason = 0;
public int subThumbWidth = -1;
public int subThumbHeight = -1;
public int aiofileType = -1;
public int subMsgType = -1;
public boolean bEnableEnc = false;
public int thumbSize = -1;
public boolean isBlessPic = false;
public boolean sync2Story = false;
public boolean isQzonePic = false;
public boolean isStoryPhoto = false;
public long replyRealSourceMsgId = -1;

public String toLogString() {
return "path:" + this.path + ",uuid:" + this.uuid + ",md5:" + this.md5 + ",size:" + this.size + ",groupFileID:" + this.groupFileID;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.tencent.mobileqq.transfile;

public class BaseTransProcessor {
import com.tencent.mobileqq.utils.httputils.IHttpCommunicatorListener;

public class BaseTransProcessor implements IHttpCommunicatorListener {
public FileMsg file;

public long getFileStatus() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.tencent.mobileqq.transfile;

public class BaseUploadProcessor extends BaseTransProcessor {

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.tencent.mobileqq.transfile;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;

public class FileMsg {
public static final int STATUS_FILE_EXPIRED = 5002;
public static final int STATUS_FILE_TRANSFERING = 5000;
Expand Down Expand Up @@ -107,4 +111,58 @@ public class FileMsg {
public static final int UIN_BUDDY = 0;
public static final int UIN_DISCUSS = 2;
public static final int UIN_TROOP = 1;

public String domain;
public String downDomain;
public long endTime;
public int errorCode;
public String errorMessage;
public File file;
public long fileID;
public String fileKey;
public String fileMd5;
public String filePath;
public long fileSize;
public int fileType;
public String fileUrl;
public String forwardTaskKey;
public String friendUin;
public int isRead;
public boolean isStreamMode;
public int lastStatus;
public byte[] localFileMd5;
public String logTag;
public long mSecMsgId;
public long mSubMsgId;
public String mUin;
public String msgImageData;
public String msgTime;
public String orgiDownUrl;
public String peerUin;
public int picScale;
public long picThumbSize;
public BaseTransProcessor processor;
public boolean processorDoReportSelf;
public int pttSlicePos;
public String pttSliceText;
public OutputStream revStream;
public String selfUin;
public InputStream sendStream;
public String serverPath;
public long startTime;
public int status;
public long stepUrlCost;
public String suffixType;
public String thumbDownUrl;
public String thumbPath;
public String thumbUrl;
public String tmpFilePath;
public byte[] transferData;
public long transferedSize;
public String uKey;
public int uinType;
public long uniseq;
public String[] urls;
public byte[] userInfo;
public String uuidPath;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package com.tencent.mobileqq.transfile;

public class GroupPicUploadProcessor {
import com.tencent.mobileqq.utils.httputils.IHttpCommunicatorListener;

public class GroupPicUploadProcessor extends BaseUploadProcessor {
}
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,8 @@ public void setIsFlashPic(Boolean bool) {
this.isFlashPic = bool;
}

public void setStoreID(int i2) {
}
public void setMd5HexStr(String str) {
this.md5HexStr = str;
}
Expand Down
Loading

0 comments on commit 7203131

Please sign in to comment.