mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: Fix #199
This commit is contained in:
parent
64b7b00253
commit
c39c2a172f
10
qqinterface/src/main/java/KQQ/BatchResponse.java
Normal file
10
qqinterface/src/main/java/KQQ/BatchResponse.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package KQQ;
|
||||||
|
|
||||||
|
import com.qq.jce.JceStruct;
|
||||||
|
|
||||||
|
public final class BatchResponse extends JceStruct {
|
||||||
|
public byte[] buffer;
|
||||||
|
public int result;
|
||||||
|
public int seq;
|
||||||
|
public int type;
|
||||||
|
}
|
9
qqinterface/src/main/java/KQQ/RespBatchProcess.java
Normal file
9
qqinterface/src/main/java/KQQ/RespBatchProcess.java
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package KQQ;
|
||||||
|
|
||||||
|
import com.qq.jce.JceStruct;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public final class RespBatchProcess extends JceStruct {
|
||||||
|
public ArrayList<BatchResponse> batch_response_list;
|
||||||
|
}
|
@ -0,0 +1,97 @@
|
|||||||
|
package com.tencent.mobileqq.troop.api;
|
||||||
|
|
||||||
|
import com.tencent.mobileqq.qroute.QRouteApi;
|
||||||
|
|
||||||
|
public interface ITroopHandlerNameApi extends QRouteApi {
|
||||||
|
String getTroopAddFriendHandlerName();
|
||||||
|
|
||||||
|
String getTroopAioNotifyHandlerName();
|
||||||
|
|
||||||
|
String getTroopAnnouncementHandlerName();
|
||||||
|
|
||||||
|
String getTroopAnonymousHandlerName();
|
||||||
|
|
||||||
|
String getTroopAppHandlerName();
|
||||||
|
|
||||||
|
String getTroopAssociationHandlerName();
|
||||||
|
|
||||||
|
String getTroopAvatarHandlerName();
|
||||||
|
|
||||||
|
String getTroopBatchInfoHandlerName();
|
||||||
|
|
||||||
|
String getTroopClockInHandlerName();
|
||||||
|
|
||||||
|
String getTroopCommonlyUsedHandlerName();
|
||||||
|
|
||||||
|
String getTroopConfigHandlerName();
|
||||||
|
|
||||||
|
String getTroopEssenceHandlerName();
|
||||||
|
|
||||||
|
String getTroopFansHandlerName();
|
||||||
|
|
||||||
|
String getTroopFeeHandlerName();
|
||||||
|
|
||||||
|
String getTroopGagHandlerName();
|
||||||
|
|
||||||
|
String getTroopGameHandlerName();
|
||||||
|
|
||||||
|
String getTroopHomeworkHandlerName();
|
||||||
|
|
||||||
|
String getTroopHonorHandlerName();
|
||||||
|
|
||||||
|
String getTroopInfoExtHandlerName();
|
||||||
|
|
||||||
|
String getTroopInfoHandlerName();
|
||||||
|
|
||||||
|
String getTroopListHandlerName();
|
||||||
|
|
||||||
|
String getTroopLuckyCharacterHandlerName();
|
||||||
|
|
||||||
|
String getTroopManagerBizHandlerName();
|
||||||
|
|
||||||
|
String getTroopMemberCardHandlerName();
|
||||||
|
|
||||||
|
String getTroopMemberInfoHandlerName();
|
||||||
|
|
||||||
|
String getTroopMemberLevelHandlerName();
|
||||||
|
|
||||||
|
String getTroopMemberListHandlerName();
|
||||||
|
|
||||||
|
String getTroopMemberMngHandlerName();
|
||||||
|
|
||||||
|
String getTroopMessageHandlerName();
|
||||||
|
|
||||||
|
String getTroopMngHandlerName();
|
||||||
|
|
||||||
|
String getTroopModifyHandlerName();
|
||||||
|
|
||||||
|
String getTroopNavigateMessageHandlerName();
|
||||||
|
|
||||||
|
String getTroopNotificationHandlerName();
|
||||||
|
|
||||||
|
String getTroopOnlineMemberHandlerName();
|
||||||
|
|
||||||
|
String getTroopOnlinePushHandlerName();
|
||||||
|
|
||||||
|
String getTroopPhotoHandlerName();
|
||||||
|
|
||||||
|
String getTroopPushHandlerName();
|
||||||
|
|
||||||
|
String getTroopRecommendHandlerName();
|
||||||
|
|
||||||
|
String getTroopRedDotHandlerName();
|
||||||
|
|
||||||
|
String getTroopRoamSettingHandlerName();
|
||||||
|
|
||||||
|
String getTroopRobotHandlerName();
|
||||||
|
|
||||||
|
String getTroopSettingHandlerName();
|
||||||
|
|
||||||
|
String getTroopShowExternalHandlerName();
|
||||||
|
|
||||||
|
String getTroopSurveyHandlerName();
|
||||||
|
|
||||||
|
String getTroopTokenHandlerName();
|
||||||
|
|
||||||
|
String getTroopTrpcHandlerName();
|
||||||
|
}
|
@ -0,0 +1,109 @@
|
|||||||
|
package tencent.im.oidb.cmd0x787;
|
||||||
|
|
||||||
|
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||||
|
import com.tencent.mobileqq.pb.MessageMicro;
|
||||||
|
import com.tencent.mobileqq.pb.PBBytesField;
|
||||||
|
import com.tencent.mobileqq.pb.PBField;
|
||||||
|
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||||
|
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||||
|
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||||
|
|
||||||
|
public class oidb_0x787 {
|
||||||
|
public static final class RspBody extends MessageMicro<RspBody> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__;
|
||||||
|
public final PBBytesField bytes_admin_name;
|
||||||
|
public final PBBytesField bytes_owner_name;
|
||||||
|
public final PBRepeatMessageField<LevelName> rpt_msg_level_name_new;
|
||||||
|
public final PBUInt32Field uint32_level_name_seq;
|
||||||
|
public final PBUInt32Field uint32_office_mode;
|
||||||
|
public final PBUInt32Field uint32_seq;
|
||||||
|
public final PBUInt32Field uint32_user_show_flag_new;
|
||||||
|
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||||
|
public final PBRepeatMessageField<MemberLevelInfo> rpt_msg_member_level_info = PBField.initRepeatMessage(MemberLevelInfo.class);
|
||||||
|
public final PBRepeatMessageField<LevelName> rpt_msg_level_name = PBField.initRepeatMessage(LevelName.class);
|
||||||
|
public final PBUInt64Field uint64_end_uin = PBField.initUInt64(0);
|
||||||
|
public final PBUInt64Field uint64_data_time = PBField.initUInt64(0);
|
||||||
|
public final PBUInt32Field uint32_user_show_flag = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_sys_show_flag = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_time_to_update = PBField.initUInt32(0);
|
||||||
|
|
||||||
|
static {
|
||||||
|
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||||
|
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 26, 32, 40, 48, 56, 64, 74, 82, 88, 96, 104, 112, 122}, new String[]{"uint64_group_code", "rpt_msg_member_level_info", "rpt_msg_level_name", "uint64_end_uin", "uint64_data_time", "uint32_user_show_flag", "uint32_sys_show_flag", "uint32_time_to_update", "bytes_owner_name", "bytes_admin_name", "uint32_seq", "uint32_office_mode", "uint32_level_name_seq", "uint32_user_show_flag_new", "rpt_msg_level_name_new"}, new Object[]{0L, null, null, 0L, 0L, 0, 0, 0, byteStringMicro, byteStringMicro, 0, 0, 0, 0, null}, RspBody.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RspBody() {
|
||||||
|
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||||
|
this.bytes_owner_name = PBField.initBytes(byteStringMicro);
|
||||||
|
this.bytes_admin_name = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_office_mode = PBField.initUInt32(0);
|
||||||
|
this.uint32_level_name_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_user_show_flag_new = PBField.initUInt32(0);
|
||||||
|
this.rpt_msg_level_name_new = PBField.initRepeatMessage(LevelName.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class LevelName extends MessageMicro<LevelName> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18}, new String[]{"uint32_level", "str_name"}, new Object[]{0, ByteStringMicro.EMPTY}, LevelName.class);
|
||||||
|
public final PBUInt32Field uint32_level = PBField.initUInt32(0);
|
||||||
|
public final PBBytesField str_name = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class MemberLevelInfo extends MessageMicro<MemberLevelInfo> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__;
|
||||||
|
public final PBBytesField bytes_email;
|
||||||
|
public final PBBytesField bytes_group_honor;
|
||||||
|
public final PBBytesField bytes_job;
|
||||||
|
public final PBBytesField bytes_msg_need_field;
|
||||||
|
public final PBBytesField bytes_nick_name;
|
||||||
|
public final PBBytesField bytes_phone;
|
||||||
|
public final PBBytesField bytes_remark;
|
||||||
|
public final PBBytesField bytes_special_title;
|
||||||
|
public final PBBytesField str_name;
|
||||||
|
public final PBUInt32Field uint32_cmduin_flagex3_grocery;
|
||||||
|
public final PBUInt32Field uint32_gender;
|
||||||
|
public final PBUInt32Field uint32_glamour_level;
|
||||||
|
public final PBUInt32Field uint32_global_group_level;
|
||||||
|
public final PBUInt32Field uint32_global_group_point;
|
||||||
|
public final PBUInt32Field uint32_membership;
|
||||||
|
public final PBUInt32Field uint32_rich_card_name_ver;
|
||||||
|
public final PBUInt32Field uint32_ringtone_id;
|
||||||
|
public final PBUInt32Field uint32_special_title_expire_time;
|
||||||
|
public final PBUInt32Field uint32_title_id;
|
||||||
|
public final PBUInt32Field uint32_torchbearer_flag;
|
||||||
|
public final PBUInt64Field uint64_uin = PBField.initUInt64(0);
|
||||||
|
public final PBUInt32Field uint32_point = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_active_day = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_level = PBField.initUInt32(0);
|
||||||
|
|
||||||
|
static {
|
||||||
|
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||||
|
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 32, 42, 50, 58, 64, 74, 82, 90, 96, 106, 112, 120, 128, 136, 144, 152, 160, 170, 176, 186, 192}, new String[]{"uint64_uin", "uint32_point", "uint32_active_day", "uint32_level", "str_name", "bytes_nick_name", "bytes_special_title", "uint32_special_title_expire_time", "bytes_phone", "bytes_email", "bytes_remark", "uint32_gender", "bytes_job", "uint32_glamour_level", "uint32_torchbearer_flag", "uint32_global_group_level", "uint32_title_id", "uint32_global_group_point", "uint32_rich_card_name_ver", "uint32_ringtone_id", "bytes_group_honor", "uint32_membership", "bytes_msg_need_field", "uint32_cmduin_flagex3_grocery"}, new Object[]{0L, 0, 0, 0, byteStringMicro, byteStringMicro, byteStringMicro, 0, byteStringMicro, byteStringMicro, byteStringMicro, 0, byteStringMicro, 0, 0, 0, 0, 0, 0, 0, byteStringMicro, 0, byteStringMicro, 0}, MemberLevelInfo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemberLevelInfo() {
|
||||||
|
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||||
|
this.str_name = PBField.initBytes(byteStringMicro);
|
||||||
|
this.bytes_nick_name = PBField.initBytes(byteStringMicro);
|
||||||
|
this.bytes_special_title = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_special_title_expire_time = PBField.initUInt32(0);
|
||||||
|
this.bytes_phone = PBField.initBytes(byteStringMicro);
|
||||||
|
this.bytes_email = PBField.initBytes(byteStringMicro);
|
||||||
|
this.bytes_remark = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_gender = PBField.initUInt32(0);
|
||||||
|
this.bytes_job = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_glamour_level = PBField.initUInt32(0);
|
||||||
|
this.uint32_torchbearer_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_global_group_level = PBField.initUInt32(0);
|
||||||
|
this.uint32_title_id = PBField.initUInt32(0);
|
||||||
|
this.uint32_global_group_point = PBField.initUInt32(0);
|
||||||
|
this.uint32_rich_card_name_ver = PBField.initUInt32(0);
|
||||||
|
this.uint32_ringtone_id = PBField.initUInt32(0);
|
||||||
|
this.bytes_group_honor = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_membership = PBField.initUInt32(0);
|
||||||
|
this.bytes_msg_need_field = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_cmduin_flagex3_grocery = PBField.initUInt32(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,269 @@
|
|||||||
|
package tencent.im.oidb.cmd0x88d;
|
||||||
|
|
||||||
|
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||||
|
import com.tencent.mobileqq.pb.MessageMicro;
|
||||||
|
import com.tencent.mobileqq.pb.PBBytesField;
|
||||||
|
import com.tencent.mobileqq.pb.PBField;
|
||||||
|
import com.tencent.mobileqq.pb.PBInt64Field;
|
||||||
|
import com.tencent.mobileqq.pb.PBRepeatField;
|
||||||
|
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||||
|
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||||
|
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||||
|
|
||||||
|
public class oidb_0x88d {
|
||||||
|
public static class RspBody extends MessageMicro<RspBody> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 18}, new String[]{"stzrspgroupinfo", "str_errorinfo"}, new Object[]{null, ByteStringMicro.EMPTY}, RspBody.class);
|
||||||
|
public final PBRepeatMessageField<RspGroupInfo> stzrspgroupinfo = PBField.initRepeatMessage(RspGroupInfo.class);
|
||||||
|
public final PBBytesField str_errorinfo = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class RspGroupInfo extends MessageMicro<RspGroupInfo> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 26}, new String[]{"uint64_group_code", "uint32_result", "stgroupinfo"}, new Object[]{0L, 0, null}, RspGroupInfo.class);
|
||||||
|
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||||
|
public final PBUInt32Field uint32_result = PBField.initUInt32(0);
|
||||||
|
public GroupInfo stgroupinfo = new GroupInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class GroupGeoInfo extends MessageMicro<GroupGeoInfo> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 32, 40, 50, 56}, new String[]{"uint64_owneruin", "uint32_settime", "uint32_cityid", "int64_longitude", "int64_latitude", "bytes_geocontent", "uint64_poi_id"}, new Object[]{0L, 0, 0, 0L, 0L, ByteStringMicro.EMPTY, 0L}, GroupGeoInfo.class);
|
||||||
|
public final PBUInt64Field uint64_owneruin = PBField.initUInt64(0);
|
||||||
|
public final PBUInt32Field uint32_settime = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_cityid = PBField.initUInt32(0);
|
||||||
|
public final PBInt64Field int64_longitude = PBField.initInt64(0);
|
||||||
|
public final PBInt64Field int64_latitude = PBField.initInt64(0);
|
||||||
|
public final PBBytesField bytes_geocontent = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||||
|
public final PBUInt64Field uint64_poi_id = PBField.initUInt64(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class GroupHeadPortrait extends MessageMicro<GroupHeadPortrait> {
|
||||||
|
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 24, 32, 42}, new String[]{"uint32_pic_cnt", "rpt_msg_info", "uint32_default_id", "uint32_verifying_pic_cnt", "rpt_msg_verifyingpic_info"}, new Object[]{0, null, 0, 0, null}, GroupHeadPortrait.class);
|
||||||
|
public final PBUInt32Field uint32_pic_cnt = PBField.initUInt32(0);
|
||||||
|
// public final PBRepeatMessageField<oidb_0x88d$GroupHeadPortraitInfo> rpt_msg_info = PBField.initRepeatMessage(oidb_0x88d$GroupHeadPortraitInfo.class);
|
||||||
|
public final PBUInt32Field uint32_default_id = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_verifying_pic_cnt = PBField.initUInt32(0);
|
||||||
|
//public final PBRepeatMessageField<oidb_0x88d$GroupHeadPortraitInfo> rpt_msg_verifyingpic_info = PBField.initRepeatMessage(oidb_0x88d$GroupHeadPortraitInfo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class GroupInfo extends MessageMicro<GroupInfo> {
|
||||||
|
//static final MessageMicro.FieldMap __fieldMap__;
|
||||||
|
public final PBBytesField bytes_cmduin_group_remark_name;
|
||||||
|
public final PBBytesField bytes_group_school_info;
|
||||||
|
public final PBBytesField bytes_join_group_auth;
|
||||||
|
public GroupGeoInfo group_geo_info;
|
||||||
|
public GroupHeadPortrait msg_head_portrait;
|
||||||
|
//public final PBRepeatMessageField<oidb_0x88d$TagRecord> rpt_tag_record;
|
||||||
|
//public oidb_0x88d$GroupCardPrefix st_group_card_prefix;
|
||||||
|
//public oidb_0x88d$GroupExInfoOnly st_group_ex_info;
|
||||||
|
// public oidb_0xef0$GroupInfoExt st_group_info_ext;
|
||||||
|
public final PBBytesField string_certification_text;
|
||||||
|
public final PBBytesField string_group_aio_skin_url;
|
||||||
|
public final PBBytesField string_group_answer;
|
||||||
|
public final PBBytesField string_group_board_skin_url;
|
||||||
|
public final PBBytesField string_group_class_text;
|
||||||
|
public final PBBytesField string_group_cover_skin_url;
|
||||||
|
public final PBBytesField string_group_finger_memo;
|
||||||
|
public final PBBytesField string_group_memo;
|
||||||
|
public final PBBytesField string_group_name;
|
||||||
|
public final PBBytesField string_group_question;
|
||||||
|
public final PBBytesField string_group_rich_finger_memo;
|
||||||
|
public final PBBytesField string_long_group_name;
|
||||||
|
public final PBBytesField string_poid_info;
|
||||||
|
public final PBUInt32Field uint32_active_member_num;
|
||||||
|
public final PBUInt32Field uint32_app_privilege_flag;
|
||||||
|
public final PBUInt32Field uint32_appeal_deadline;
|
||||||
|
public final PBUInt32Field uint32_auto_agree_join_group_user_num_for_conf_group;
|
||||||
|
public final PBUInt32Field uint32_auto_agree_join_group_user_num_for_normal_group;
|
||||||
|
public final PBUInt32Field uint32_certification_type;
|
||||||
|
public final PBUInt32Field uint32_cmduin_flag_ex;
|
||||||
|
public final PBUInt32Field uint32_cmduin_flag_ex2;
|
||||||
|
public final PBUInt32Field uint32_cmduin_flag_ex3_grocery;
|
||||||
|
public final PBUInt32Field uint32_cmduin_history_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_cmduin_join_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_cmduin_join_real_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_cmduin_join_time;
|
||||||
|
public final PBUInt32Field uint32_cmduin_last_msg_time;
|
||||||
|
public final PBUInt32Field uint32_cmduin_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_cmduin_new_mobile_flag;
|
||||||
|
public final PBUInt32Field uint32_cmduin_privilege;
|
||||||
|
public final PBUInt32Field uint32_cmduin_read_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_cmduin_ringtone_id;
|
||||||
|
public final PBUInt32Field uint32_cmduin_uin_flag;
|
||||||
|
public final PBUInt32Field uint32_conf_max_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_conf_to_group_time;
|
||||||
|
public final PBUInt32Field uint32_create_source_flag;
|
||||||
|
public final PBUInt32Field uint32_group_admin_max_num;
|
||||||
|
public final PBUInt32Field uint32_group_aio_skin_timestamp;
|
||||||
|
public final PBRepeatField<Integer> uint32_group_alliance_code;
|
||||||
|
public final PBUInt32Field uint32_group_board_skin_timestamp;
|
||||||
|
public final PBUInt32Field uint32_group_cover_skin_timestamp;
|
||||||
|
public final PBUInt32Field uint32_group_cur_msg_seq;
|
||||||
|
public final PBUInt32Field uint32_group_extra_adm_num;
|
||||||
|
public final PBUInt32Field uint32_group_flagext3;
|
||||||
|
public final PBUInt32Field uint32_group_flagext4;
|
||||||
|
public final PBUInt32Field uint32_group_freeze_reason;
|
||||||
|
public final PBUInt32Field uint32_group_grade;
|
||||||
|
public final PBUInt32Field uint32_group_info_ext_seq;
|
||||||
|
public final PBUInt32Field uint32_group_last_msg_time;
|
||||||
|
public final PBUInt32Field uint32_group_open_appid;
|
||||||
|
public final PBUInt32Field uint32_group_sec_level;
|
||||||
|
public final PBUInt32Field uint32_group_sec_level_info;
|
||||||
|
public final PBUInt32Field uint32_group_type_flag;
|
||||||
|
public final PBUInt32Field uint32_group_visitor_cur_num;
|
||||||
|
public final PBUInt32Field uint32_group_visitor_max_num;
|
||||||
|
public final PBUInt32Field uint32_head_portrait_seq;
|
||||||
|
public final PBUInt32Field uint32_hl_guild_appid;
|
||||||
|
public final PBUInt32Field uint32_hl_guild_orgid;
|
||||||
|
public final PBUInt32Field uint32_hl_guild_sub_type;
|
||||||
|
public final PBUInt32Field uint32_important_msg_latest_seq;
|
||||||
|
public final PBUInt32Field uint32_is_allow_conf_group_member_at_all;
|
||||||
|
public final PBUInt32Field uint32_is_allow_conf_group_member_modify_group_name;
|
||||||
|
public final PBUInt32Field uint32_is_allow_conf_group_member_nick;
|
||||||
|
public final PBUInt32Field uint32_is_allow_hl_guild_binary;
|
||||||
|
public final PBUInt32Field uint32_is_allow_recall_msg;
|
||||||
|
public final PBUInt32Field uint32_is_conf_group;
|
||||||
|
public final PBUInt32Field uint32_is_group_freeze;
|
||||||
|
public final PBUInt32Field uint32_is_modify_conf_group_face;
|
||||||
|
public final PBUInt32Field uint32_is_modify_conf_group_name;
|
||||||
|
public final PBUInt32Field uint32_level_name_seq;
|
||||||
|
public final PBUInt32Field uint32_member_list_change_seq;
|
||||||
|
public final PBUInt32Field uint32_membercard_seq;
|
||||||
|
public final PBUInt32Field uint32_msg_limit_frequency;
|
||||||
|
public final PBUInt32Field uint32_no_code_finger_open_flag;
|
||||||
|
public final PBUInt32Field uint32_no_finger_open_flag;
|
||||||
|
public final PBUInt32Field uint32_password_redbag_time;
|
||||||
|
public final PBUInt32Field uint32_shutup_timestamp_me;
|
||||||
|
public final PBUInt32Field uint32_team_seq;
|
||||||
|
public final PBUInt64Field uint64_alliance_id;
|
||||||
|
public final PBUInt64Field uint64_conf_uin;
|
||||||
|
public final PBUInt64Field uint64_group_uin;
|
||||||
|
public final PBUInt64Field uint64_history_msg_begin_time;
|
||||||
|
public final PBUInt64Field uint64_invite_no_auth_num_limit;
|
||||||
|
public final PBUInt64Field uint64_parent_id;
|
||||||
|
public final PBUInt64Field uint64_root_id;
|
||||||
|
public final PBUInt64Field uint64_shutup_timestamp;
|
||||||
|
public final PBUInt64Field uint64_subscription_uin;
|
||||||
|
public final PBUInt64Field uint64_group_owner = PBField.initUInt64(0);
|
||||||
|
public final PBUInt32Field uint32_group_create_time = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_flag = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_flag_ext = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_member_max_num = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_member_num = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_option = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_class_ext = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_special_class = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_level = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_face = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_default_page = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_info_seq = PBField.initUInt32(0);
|
||||||
|
public final PBUInt32Field uint32_group_roaming_time = PBField.initUInt32(0);
|
||||||
|
|
||||||
|
static {
|
||||||
|
//ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||||
|
//__fieldMap__ = MessageMicro.initFieldMap(
|
||||||
|
// new int[]{8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 122, 130, 138, 146, 152, 160, 168, 176, 184, 194, 202, 208, 216, 224, 232, 240, 248, 258, 266, 272,
|
||||||
|
// FilterEnum.MIC_PTU_BAIXI, FilterEnum.MIC_PTU_YOUJIALI, 296, 304, 314, 322, MapItemKt.ITEM_AVATAR_MIN_WIDTH, 338, 344, g.CTRL_INDEX, 360, 368, 376, MsgConstant.KRMFILETHUMBSIZE384, QFSBottomDynamicGuideEvent.DYNAMIC_GUIDE_BUTTON_TYPE, 400, 408, 416, 424, 432, 440, TroopInfo.PAY_PRIVILEGE_ALL, 458, 464, e.CTRL_INDEX, 480, P2VGlobalConfig.WATER_MARKER_WIDTH, w.CTRL_INDEX, 504, 512, TVKPlayerWrapperMsg.PLAYER_INFO_CGI_REQUEST, 528, 536, 544, 552, PlayerResources.ViewId.GET_MORE_TOGGLE_AREA, PlayerResources.ViewId.EXTENDED_VIEW_BTN_NORMAL_BUTTON, PlayerResources.ViewId.CANVAS_VIDEO_TOTAL_TRAFFIC_TEXT, 584, d.CTRL_INDEX, 600, 608, 616, 624, 632, 640, 648, 656, LpReportInfoConfig.ACTION_VIDEO_EDITOR, 672, 680, 688, 696, 704, 714, 720, 728, b.CTRL_INDEX, 746, com.tencent.luggage.wxa.sa.e.N, 760, 768, 776, 784, l.CTRL_INDEX, 800, SharedExtProcessor.CONFIG_ID, 816, BusinessInfoCheckUpdateItem.UIAPPID_XINGQU_BULUO, 832, h.CTRL_INDEX, TVKCodecUtils.HD_WIDTH, 856, 864, 874, 882}, new String[]{
|
||||||
|
//
|
||||||
|
// "uint64_group_owner", "uint32_group_create_time", "uint32_group_flag", "uint32_group_flag_ext", "uint32_group_member_max_num", "uint32_group_member_num", "uint32_group_option", "uint32_group_class_ext", "uint32_group_special_class", "uint32_group_level", "uint32_group_face", "uint32_group_default_page", "uint32_group_info_seq", "uint32_group_roaming_time", "string_group_name", "string_group_memo", "string_group_finger_memo", "string_group_class_text", "uint32_group_alliance_code", "uint32_group_extra_adm_num", "uint64_group_uin", "uint32_group_cur_msg_seq", "uint32_group_last_msg_time", "string_group_question", "string_group_answer", "uint32_group_visitor_max_num", "uint32_group_visitor_cur_num", "uint32_level_name_seq", "uint32_group_admin_max_num", "uint32_group_aio_skin_timestamp", "uint32_group_board_skin_timestamp", "string_group_aio_skin_url", "string_group_board_skin_url", "uint32_group_cover_skin_timestamp", "string_group_cover_skin_url", "uint32_group_grade", "uint32_active_member_num", "uint32_certification_type", "string_certification_text", "string_group_rich_finger_memo", "rpt_tag_record", "group_geo_info", "uint32_head_portrait_seq", "msg_head_portrait", "uint64_shutup_timestamp", "uint32_shutup_timestamp_me", "uint32_create_source_flag", "uint32_cmduin_msg_seq", "uint32_cmduin_join_time", "uint32_cmduin_uin_flag", "uint32_cmduin_flag_ex", "uint32_cmduin_new_mobile_flag", "uint32_cmduin_read_msg_seq", "uint32_cmduin_last_msg_time", "uint32_group_type_flag", "uint32_app_privilege_flag", "st_group_ex_info", "uint32_group_sec_level", "uint32_group_sec_level_info", "uint32_cmduin_privilege", "string_poid_info", "uint32_cmduin_flag_ex2", "uint64_conf_uin", "uint32_conf_max_msg_seq", "uint32_conf_to_group_time", "uint32_password_redbag_time", "uint64_subscription_uin", "uint32_member_list_change_seq", "uint32_membercard_seq", "uint64_root_id", "uint64_parent_id", "uint32_team_seq", "uint64_history_msg_begin_time", "uint64_invite_no_auth_num_limit", "uint32_cmduin_history_msg_seq", "uint32_cmduin_join_msg_seq", "uint32_group_flagext3", "uint32_group_open_appid", "uint32_is_conf_group", "uint32_is_modify_conf_group_face", "uint32_is_modify_conf_group_name", "uint32_no_finger_open_flag", "uint32_no_code_finger_open_flag", "uint32_auto_agree_join_group_user_num_for_normal_group", "uint32_auto_agree_join_group_user_num_for_conf_group", "uint32_is_allow_conf_group_member_nick", "uint32_is_allow_conf_group_member_at_all", "uint32_is_allow_conf_group_member_modify_group_name", "string_long_group_name", "uint32_cmduin_join_real_msg_seq", "uint32_is_group_freeze", "uint32_msg_limit_frequency", "bytes_join_group_auth", "uint32_hl_guild_appid", "uint32_hl_guild_sub_type", "uint32_hl_guild_orgid", "uint32_is_allow_hl_guild_binary", "uint32_cmduin_ringtone_id", "uint32_group_flagext4", "uint32_group_freeze_reason", "uint32_is_allow_recall_msg", "uint32_important_msg_latest_seq", "bytes_group_school_info", "uint32_appeal_deadline", "st_group_card_prefix", "uint64_alliance_id", "uint32_cmduin_flag_ex3_grocery", "uint32_group_info_ext_seq", "st_group_info_ext", "bytes_cmduin_group_remark_name"}, new Object[]{0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, 0, 0, 0L, 0, 0, byteStringMicro, byteStringMicro, 0, 0, 0, 0, 0, 0, byteStringMicro, byteStringMicro, 0, byteStringMicro, 0, 0, 0, byteStringMicro, byteStringMicro, null, null, 0, null, 0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, null, 0, 0, 0, byteStringMicro, 0, 0L, 0, 0, 0, 0L, 0, 0, 0L, 0L, 0, 0L, 0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, byteStringMicro, 0, 0, 0, byteStringMicro, 0, 0, 0, 0, 0, 0, 0, 0, 0, byteStringMicro, 0, null, 0L, 0, 0, null, byteStringMicro}, oidb_0x88d$GroupInfo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupInfo() {
|
||||||
|
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||||
|
this.string_group_name = PBField.initBytes(byteStringMicro);
|
||||||
|
this.string_group_memo = PBField.initBytes(byteStringMicro);
|
||||||
|
this.string_group_finger_memo = PBField.initBytes(byteStringMicro);
|
||||||
|
this.string_group_class_text = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_group_alliance_code = PBField.initRepeat(PBUInt32Field.__repeatHelper__);
|
||||||
|
this.uint32_group_extra_adm_num = PBField.initUInt32(0);
|
||||||
|
this.uint64_group_uin = PBField.initUInt64(0L);
|
||||||
|
this.uint32_group_cur_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_last_msg_time = PBField.initUInt32(0);
|
||||||
|
this.string_group_question = PBField.initBytes(byteStringMicro);
|
||||||
|
this.string_group_answer = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_group_visitor_max_num = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_visitor_cur_num = PBField.initUInt32(0);
|
||||||
|
this.uint32_level_name_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_admin_max_num = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_aio_skin_timestamp = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_board_skin_timestamp = PBField.initUInt32(0);
|
||||||
|
this.string_group_aio_skin_url = PBField.initBytes(byteStringMicro);
|
||||||
|
this.string_group_board_skin_url = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_group_cover_skin_timestamp = PBField.initUInt32(0);
|
||||||
|
this.string_group_cover_skin_url = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_group_grade = PBField.initUInt32(0);
|
||||||
|
this.uint32_active_member_num = PBField.initUInt32(0);
|
||||||
|
this.uint32_certification_type = PBField.initUInt32(0);
|
||||||
|
this.string_certification_text = PBField.initBytes(byteStringMicro);
|
||||||
|
this.string_group_rich_finger_memo = PBField.initBytes(byteStringMicro);
|
||||||
|
// this.rpt_tag_record = PBField.initRepeatMessage(oidb_0x88d$TagRecord.class);
|
||||||
|
this.group_geo_info = new GroupGeoInfo();
|
||||||
|
this.uint32_head_portrait_seq = PBField.initUInt32(0);
|
||||||
|
this.msg_head_portrait = new GroupHeadPortrait();
|
||||||
|
this.uint64_shutup_timestamp = PBField.initUInt64(0L);
|
||||||
|
this.uint32_shutup_timestamp_me = PBField.initUInt32(0);
|
||||||
|
this.uint32_create_source_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_join_time = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_uin_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_flag_ex = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_new_mobile_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_read_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_last_msg_time = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_type_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_app_privilege_flag = PBField.initUInt32(0);
|
||||||
|
// this.st_group_ex_info = new oidb_0x88d$GroupExInfoOnly();
|
||||||
|
this.uint32_group_sec_level = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_sec_level_info = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_privilege = PBField.initUInt32(0);
|
||||||
|
this.string_poid_info = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_cmduin_flag_ex2 = PBField.initUInt32(0);
|
||||||
|
this.uint64_conf_uin = PBField.initUInt64(0L);
|
||||||
|
this.uint32_conf_max_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_conf_to_group_time = PBField.initUInt32(0);
|
||||||
|
this.uint32_password_redbag_time = PBField.initUInt32(0);
|
||||||
|
this.uint64_subscription_uin = PBField.initUInt64(0L);
|
||||||
|
this.uint32_member_list_change_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_membercard_seq = PBField.initUInt32(0);
|
||||||
|
this.uint64_root_id = PBField.initUInt64(0L);
|
||||||
|
this.uint64_parent_id = PBField.initUInt64(0L);
|
||||||
|
this.uint32_team_seq = PBField.initUInt32(0);
|
||||||
|
this.uint64_history_msg_begin_time = PBField.initUInt64(0L);
|
||||||
|
this.uint64_invite_no_auth_num_limit = PBField.initUInt64(0L);
|
||||||
|
this.uint32_cmduin_history_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_join_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_flagext3 = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_open_appid = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_conf_group = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_modify_conf_group_face = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_modify_conf_group_name = PBField.initUInt32(0);
|
||||||
|
this.uint32_no_finger_open_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_no_code_finger_open_flag = PBField.initUInt32(0);
|
||||||
|
this.uint32_auto_agree_join_group_user_num_for_normal_group = PBField.initUInt32(0);
|
||||||
|
this.uint32_auto_agree_join_group_user_num_for_conf_group = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_allow_conf_group_member_nick = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_allow_conf_group_member_at_all = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_allow_conf_group_member_modify_group_name = PBField.initUInt32(0);
|
||||||
|
this.string_long_group_name = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_cmduin_join_real_msg_seq = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_group_freeze = PBField.initUInt32(0);
|
||||||
|
this.uint32_msg_limit_frequency = PBField.initUInt32(0);
|
||||||
|
this.bytes_join_group_auth = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_hl_guild_appid = PBField.initUInt32(0);
|
||||||
|
this.uint32_hl_guild_sub_type = PBField.initUInt32(0);
|
||||||
|
this.uint32_hl_guild_orgid = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_allow_hl_guild_binary = PBField.initUInt32(0);
|
||||||
|
this.uint32_cmduin_ringtone_id = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_flagext4 = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_freeze_reason = PBField.initUInt32(0);
|
||||||
|
this.uint32_is_allow_recall_msg = PBField.initUInt32(0);
|
||||||
|
this.uint32_important_msg_latest_seq = PBField.initUInt32(0);
|
||||||
|
this.bytes_group_school_info = PBField.initBytes(byteStringMicro);
|
||||||
|
this.uint32_appeal_deadline = PBField.initUInt32(0);
|
||||||
|
// this.st_group_card_prefix = new oidb_0x88d$GroupCardPrefix();
|
||||||
|
this.uint64_alliance_id = PBField.initUInt64(0L);
|
||||||
|
this.uint32_cmduin_flag_ex3_grocery = PBField.initUInt32(0);
|
||||||
|
this.uint32_group_info_ext_seq = PBField.initUInt32(0);
|
||||||
|
// this.st_group_info_ext = new oidb_0xef0$GroupInfoExt();
|
||||||
|
this.bytes_cmduin_group_remark_name = PBField.initBytes(byteStringMicro);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -138,12 +138,6 @@ char * __cdecl my_strstr(const char *lhs, const char *rhs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int fake_memcmp(const void* __lhs, const void* __rhs, size_t __n) {
|
int fake_memcmp(const void* __lhs, const void* __rhs, size_t __n) {
|
||||||
//if (my_strstr((const char*) __rhs, "lsposed")) {
|
|
||||||
//return -1;
|
|
||||||
//}
|
|
||||||
//if (my_strstr((const char*) __rhs, "xposed")) {
|
|
||||||
// return -1;
|
|
||||||
//}
|
|
||||||
if (my_strstr((const char*) __rhs, "shamrock")) {
|
if (my_strstr((const char*) __rhs, "shamrock")) {
|
||||||
if (backup_memcmp(__lhs, __rhs, __n) == 0) {
|
if (backup_memcmp(__lhs, __rhs, __n) == 0) {
|
||||||
// 底层广播判断
|
// 底层广播判断
|
||||||
@ -151,13 +145,7 @@ int fake_memcmp(const void* __lhs, const void* __rhs, size_t __n) {
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (my_strstr((const char*) __rhs, "riru")) {
|
//if (my_strstr((const char*) __rhs, "riru") && my_strstr((const char*) __lhs, "riru")) {
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
//if (my_strstr((const char*) __rhs, "zygisk")) {
|
|
||||||
// return -1;
|
|
||||||
//}
|
|
||||||
//if (my_strstr((const char*) __rhs, "magisk")) {
|
|
||||||
// return -1;
|
// return -1;
|
||||||
//}
|
//}
|
||||||
return backup_memcmp(__lhs, __rhs, __n);
|
return backup_memcmp(__lhs, __rhs, __n);
|
||||||
|
@ -121,6 +121,24 @@ internal abstract class BaseSvc {
|
|||||||
app.sendToService(toServiceMsg)
|
app.sendToService(toServiceMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected suspend fun sendAW(toServiceMsg: ToServiceMsg, timeout: Long = 5000L): ByteArray? {
|
||||||
|
val seq = MsfCore.getNextSeq()
|
||||||
|
return withTimeoutOrNull<ByteArray?>(timeout) {
|
||||||
|
suspendCancellableCoroutine { continuation ->
|
||||||
|
GlobalScope.launch(Dispatchers.Default) {
|
||||||
|
DynamicReceiver.register(IPCRequest(toServiceMsg.serviceCmd, seq) {
|
||||||
|
val buffer = it.getByteArrayExtra("buffer")!!
|
||||||
|
continuation.resume(buffer)
|
||||||
|
})
|
||||||
|
toServiceMsg.addAttribute("shamrock_seq", seq)
|
||||||
|
send(toServiceMsg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.also {
|
||||||
|
if (it == null) DynamicReceiver.unregister(seq)
|
||||||
|
}?.copyOf()
|
||||||
|
}
|
||||||
|
|
||||||
protected fun sendExtra(cmd: String, builder: (Bundle) -> Unit) {
|
protected fun sendExtra(cmd: String, builder: (Bundle) -> Unit) {
|
||||||
val toServiceMsg = createToServiceMsg(cmd)
|
val toServiceMsg = createToServiceMsg(cmd)
|
||||||
builder(toServiceMsg.extraData)
|
builder(toServiceMsg.extraData)
|
||||||
|
@ -2,7 +2,7 @@ package moe.fuqiuluo.qqinterface.servlet
|
|||||||
|
|
||||||
import com.tencent.mobileqq.pb.ByteStringMicro
|
import com.tencent.mobileqq.pb.ByteStringMicro
|
||||||
import moe.fuqiuluo.proto.protobufOf
|
import moe.fuqiuluo.proto.protobufOf
|
||||||
import moe.fuqiuluo.qqinterface.servlet.entries.*
|
import moe.fuqiuluo.qqinterface.servlet.structures.*
|
||||||
import moe.fuqiuluo.qqinterface.servlet.transfile.RichProtoSvc
|
import moe.fuqiuluo.qqinterface.servlet.transfile.RichProtoSvc
|
||||||
import moe.fuqiuluo.shamrock.helper.Level
|
import moe.fuqiuluo.shamrock.helper.Level
|
||||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
package moe.fuqiuluo.qqinterface.servlet
|
package moe.fuqiuluo.qqinterface.servlet
|
||||||
|
|
||||||
|
import KQQ.RespBatchProcess
|
||||||
import androidx.core.text.HtmlCompat
|
import androidx.core.text.HtmlCompat
|
||||||
|
import com.qq.jce.wup.UniPacket
|
||||||
import com.tencent.common.app.AppInterface
|
import com.tencent.common.app.AppInterface
|
||||||
import com.tencent.mobileqq.app.BusinessHandlerFactory
|
import com.tencent.mobileqq.app.BusinessHandlerFactory
|
||||||
import com.tencent.mobileqq.app.QQAppInterface
|
import com.tencent.mobileqq.app.QQAppInterface
|
||||||
@ -12,6 +14,7 @@ import com.tencent.mobileqq.pb.ByteStringMicro
|
|||||||
import com.tencent.mobileqq.troop.api.ITroopInfoService
|
import com.tencent.mobileqq.troop.api.ITroopInfoService
|
||||||
import com.tencent.mobileqq.troop.api.ITroopMemberInfoService
|
import com.tencent.mobileqq.troop.api.ITroopMemberInfoService
|
||||||
import com.tencent.protofile.join_group_link.join_group_link
|
import com.tencent.protofile.join_group_link.join_group_link
|
||||||
|
import com.tencent.qphone.base.remote.FromServiceMsg
|
||||||
import com.tencent.qphone.base.remote.ToServiceMsg
|
import com.tencent.qphone.base.remote.ToServiceMsg
|
||||||
import com.tencent.qqnt.kernel.nativeinterface.MemberInfo
|
import com.tencent.qqnt.kernel.nativeinterface.MemberInfo
|
||||||
import com.tencent.qqnt.kernel.nativeinterface.MsgConstant
|
import com.tencent.qqnt.kernel.nativeinterface.MsgConstant
|
||||||
@ -49,8 +52,9 @@ import moe.fuqiuluo.proto.asUtf8String
|
|||||||
import moe.fuqiuluo.proto.protobufOf
|
import moe.fuqiuluo.proto.protobufOf
|
||||||
import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getLongUin
|
import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getLongUin
|
||||||
import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getUin
|
import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getUin
|
||||||
import moe.fuqiuluo.qqinterface.servlet.entries.GroupAtAllRemainInfo
|
import moe.fuqiuluo.qqinterface.servlet.structures.GroupAtAllRemainInfo
|
||||||
import moe.fuqiuluo.qqinterface.servlet.entries.ProhibitedMemberInfo
|
import moe.fuqiuluo.qqinterface.servlet.structures.NotJoinedGroupInfo
|
||||||
|
import moe.fuqiuluo.qqinterface.servlet.structures.ProhibitedMemberInfo
|
||||||
import moe.fuqiuluo.shamrock.helper.Level
|
import moe.fuqiuluo.shamrock.helper.Level
|
||||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||||
import moe.fuqiuluo.shamrock.helper.MessageHelper
|
import moe.fuqiuluo.shamrock.helper.MessageHelper
|
||||||
@ -75,6 +79,7 @@ import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher
|
|||||||
import moe.fuqiuluo.shamrock.xposed.helper.NTServiceFetcher
|
import moe.fuqiuluo.shamrock.xposed.helper.NTServiceFetcher
|
||||||
import mqq.app.MobileQQ
|
import mqq.app.MobileQQ
|
||||||
import tencent.im.group.group_member_info
|
import tencent.im.group.group_member_info
|
||||||
|
import tencent.im.oidb.cmd0x88d.oidb_0x88d
|
||||||
import tencent.im.oidb.cmd0x899.oidb_0x899
|
import tencent.im.oidb.cmd0x899.oidb_0x899
|
||||||
import tencent.im.oidb.cmd0x89a.oidb_0x89a
|
import tencent.im.oidb.cmd0x89a.oidb_0x89a
|
||||||
import tencent.im.oidb.cmd0x8a0.oidb_0x8a0
|
import tencent.im.oidb.cmd0x8a0.oidb_0x8a0
|
||||||
@ -87,10 +92,11 @@ import java.lang.reflect.Method
|
|||||||
import java.lang.reflect.Modifier
|
import java.lang.reflect.Modifier
|
||||||
import java.nio.ByteBuffer
|
import java.nio.ByteBuffer
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import tencent.mobileim.structmsg.`structmsg$ReqSystemMsgNew` as ReqSystemMsgNew
|
|
||||||
import tencent.mobileim.structmsg.`structmsg$FlagInfo` as FlagInfo
|
import tencent.mobileim.structmsg.`structmsg$FlagInfo` as FlagInfo
|
||||||
|
import tencent.mobileim.structmsg.`structmsg$ReqSystemMsgNew` as ReqSystemMsgNew
|
||||||
import tencent.mobileim.structmsg.`structmsg$RspSystemMsgNew` as RspSystemMsgNew
|
import tencent.mobileim.structmsg.`structmsg$RspSystemMsgNew` as RspSystemMsgNew
|
||||||
import tencent.mobileim.structmsg.`structmsg$StructMsg` as StructMsg
|
import tencent.mobileim.structmsg.`structmsg$StructMsg` as StructMsg
|
||||||
|
|
||||||
internal object GroupSvc: BaseSvc() {
|
internal object GroupSvc: BaseSvc() {
|
||||||
private val RefreshTroopMemberInfoLock by lazy {
|
private val RefreshTroopMemberInfoLock by lazy {
|
||||||
Mutex()
|
Mutex()
|
||||||
@ -188,6 +194,36 @@ internal object GroupSvc: BaseSvc() {
|
|||||||
return Result.success(troopList)
|
return Result.success(troopList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun getNotJoinedGroupInfo(groupId: Long): Result<NotJoinedGroupInfo> {
|
||||||
|
return withTimeoutOrNull(5000) timeout@{
|
||||||
|
val toServiceMsg = createToServiceMsg("ProfileService.ReqBatchProcess")
|
||||||
|
toServiceMsg.extraData.putLong("troop_code", groupId)
|
||||||
|
toServiceMsg.extraData.putBoolean("is_admin", false)
|
||||||
|
toServiceMsg.extraData.putInt("from", 0)
|
||||||
|
val buffer = sendAW(toServiceMsg)
|
||||||
|
val uniPacket = UniPacket(true)
|
||||||
|
uniPacket.encodeName = "utf-8"
|
||||||
|
uniPacket.decode(buffer)
|
||||||
|
val respBatchProcess = uniPacket.getByClass("RespBatchProcess", RespBatchProcess())
|
||||||
|
val batchRespInfo = oidb_0x88d.RspBody().mergeFrom(oidb_sso.OIDBSSOPkg()
|
||||||
|
.mergeFrom(respBatchProcess.batch_response_list.first().buffer)
|
||||||
|
.bytes_bodybuffer.get().toByteArray()).stzrspgroupinfo.get().firstOrNull()
|
||||||
|
?: return@timeout Result.failure(Exception("获取群信息失败"))
|
||||||
|
val info = batchRespInfo.stgroupinfo
|
||||||
|
Result.success(NotJoinedGroupInfo(
|
||||||
|
groupId = batchRespInfo.uint64_group_code.get(),
|
||||||
|
maxMember = info.uint32_group_member_max_num.get(),
|
||||||
|
memberCount = info.uint32_group_member_num.get(),
|
||||||
|
groupName = info.string_group_name.get().toStringUtf8(),
|
||||||
|
groupDesc = info.string_group_finger_memo.get().toStringUtf8(),
|
||||||
|
owner = info.uint64_group_owner.get(),
|
||||||
|
createTime = info.uint32_group_create_time.get().toLong(),
|
||||||
|
groupFlag = info.uint32_group_flag.get(),
|
||||||
|
groupFlagExt = info.uint32_group_flag_ext.get()
|
||||||
|
))
|
||||||
|
} ?: Result.failure(Exception("获取群信息超时"))
|
||||||
|
}
|
||||||
|
|
||||||
suspend fun getGroupInfo(groupId: String, refresh: Boolean): Result<TroopInfo> {
|
suspend fun getGroupInfo(groupId: String, refresh: Boolean): Result<TroopInfo> {
|
||||||
val service = app
|
val service = app
|
||||||
.getRuntimeService(ITroopInfoService::class.java, "all")
|
.getRuntimeService(ITroopInfoService::class.java, "all")
|
||||||
@ -655,7 +691,7 @@ internal object GroupSvc: BaseSvc() {
|
|||||||
|
|
||||||
private suspend fun requestGroupInfo(dataService: ITroopInfoService, uin: Long): Result<TroopInfo> {
|
private suspend fun requestGroupInfo(dataService: ITroopInfoService, uin: Long): Result<TroopInfo> {
|
||||||
val strUin = uin.toString()
|
val strUin = uin.toString()
|
||||||
val info = withTimeoutOrNull(5000) {
|
val info = withTimeoutOrNull(1000) {
|
||||||
var troopInfo: TroopInfo?
|
var troopInfo: TroopInfo?
|
||||||
do {
|
do {
|
||||||
troopInfo = dataService.getTroopInfo(strUin)
|
troopInfo = dataService.getTroopInfo(strUin)
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package moe.fuqiuluo.qqinterface.servlet.entries
|
|
||||||
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
internal data class ProhibitedMemberInfo(
|
|
||||||
@SerialName("user_id") val memberUin: Long,
|
|
||||||
@SerialName("time") val shutuptimestap: Int
|
|
||||||
)
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
internal data class GroupAtAllRemainInfo(
|
|
||||||
@SerialName("can_at_all") val canAtAll: Boolean,
|
|
||||||
@SerialName("remain_at_all_count_for_group") val remainAtAllCountForGroup: Int,
|
|
||||||
@SerialName("remain_at_all_count_for_uin") val remainAtAllCountForUin: Int
|
|
||||||
)
|
|
@ -1,4 +1,4 @@
|
|||||||
package moe.fuqiuluo.qqinterface.servlet.entries
|
package moe.fuqiuluo.qqinterface.servlet.structures
|
||||||
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
@ -0,0 +1,30 @@
|
|||||||
|
package moe.fuqiuluo.qqinterface.servlet.structures
|
||||||
|
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
internal data class ProhibitedMemberInfo(
|
||||||
|
@SerialName("user_id") val memberUin: Long,
|
||||||
|
@SerialName("time") val shutuptimestap: Int
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
internal data class GroupAtAllRemainInfo(
|
||||||
|
@SerialName("can_at_all") val canAtAll: Boolean,
|
||||||
|
@SerialName("remain_at_all_count_for_group") val remainAtAllCountForGroup: Int,
|
||||||
|
@SerialName("remain_at_all_count_for_uin") val remainAtAllCountForUin: Int
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
internal data class NotJoinedGroupInfo(
|
||||||
|
@SerialName("group_id") val groupId: Long,
|
||||||
|
@SerialName("max_member_cnt") val maxMember: Int,
|
||||||
|
@SerialName("member_count") val memberCount: Int,
|
||||||
|
@SerialName("group_name") val groupName: String,
|
||||||
|
@SerialName("group_desc") val groupDesc: String,
|
||||||
|
@SerialName("owner") val owner: Long,
|
||||||
|
@SerialName("create_time") val createTime: Long,
|
||||||
|
@SerialName("group_flag") val groupFlag: Int,
|
||||||
|
@SerialName("group_flag_ext") val groupFlagExt: Int,
|
||||||
|
)
|
@ -26,7 +26,7 @@ internal object ActionManager {
|
|||||||
GetModelShowList, GetOnlineClients, GetStrangerInfo, IsBlackListUin, GetHttpCookies, GetFriendSystemMsg,
|
GetModelShowList, GetOnlineClients, GetStrangerInfo, IsBlackListUin, GetHttpCookies, GetFriendSystemMsg,
|
||||||
|
|
||||||
// GroupInfo
|
// GroupInfo
|
||||||
GetTroopList, GetTroopInfo, GetTroopList, GetTroopMemberInfo, GetTroopMemberList,
|
GetTroopList, GetTroopInfo, GetTroopList, GetTroopMemberInfo, GetTroopMemberList, GetNotJoinedGroupInfo,
|
||||||
|
|
||||||
// GroupActions
|
// GroupActions
|
||||||
ModifyTroopName, LeaveTroop, KickTroopMember, BanTroopMember, SetGroupWholeBan, SetGroupAdmin,
|
ModifyTroopName, LeaveTroop, KickTroopMember, BanTroopMember, SetGroupWholeBan, SetGroupAdmin,
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package moe.fuqiuluo.shamrock.remote.action.handlers
|
||||||
|
|
||||||
|
import kotlinx.serialization.json.JsonElement
|
||||||
|
import moe.fuqiuluo.qqinterface.servlet.GroupSvc
|
||||||
|
import moe.fuqiuluo.shamrock.remote.action.ActionSession
|
||||||
|
import moe.fuqiuluo.shamrock.remote.action.IActionHandler
|
||||||
|
import moe.fuqiuluo.shamrock.tools.EmptyJsonString
|
||||||
|
|
||||||
|
internal object GetNotJoinedGroupInfo: IActionHandler() {
|
||||||
|
override suspend fun internalHandle(session: ActionSession): String {
|
||||||
|
val groupId = session.getString("group_id")
|
||||||
|
return invoke(groupId, session.echo)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend operator fun invoke(groupId: String, echo: JsonElement = EmptyJsonString): String {
|
||||||
|
GroupSvc.getNotJoinedGroupInfo(groupId = groupId.toLong()).onSuccess {
|
||||||
|
return ok(it, echo = echo)
|
||||||
|
}.exceptionOrNull()?.let {
|
||||||
|
return error(it.message ?: "无法获取群信息", echo = echo)
|
||||||
|
}
|
||||||
|
return logic("Unable to obtain group information", echo)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun path(): String = "get_not_joined_group_info"
|
||||||
|
}
|
@ -14,6 +14,11 @@ import moe.fuqiuluo.shamrock.tools.fetchOrThrow
|
|||||||
import moe.fuqiuluo.shamrock.tools.getOrPost
|
import moe.fuqiuluo.shamrock.tools.getOrPost
|
||||||
|
|
||||||
fun Routing.troopAction() {
|
fun Routing.troopAction() {
|
||||||
|
getOrPost("/get_not_joined_group_info") {
|
||||||
|
val groupId = fetchOrThrow("group_id")
|
||||||
|
call.respondText(GetNotJoinedGroupInfo(groupId), ContentType.Application.Json)
|
||||||
|
}
|
||||||
|
|
||||||
getOrPost("/get_prohibited_member_list") {
|
getOrPost("/get_prohibited_member_list") {
|
||||||
val groupId = fetchOrThrow("group_id").toLong()
|
val groupId = fetchOrThrow("group_id").toLong()
|
||||||
call.respondText(GetProhibitedMemberList(groupId), ContentType.Application.Json)
|
call.respondText(GetProhibitedMemberList(groupId), ContentType.Application.Json)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user