cai.client.sso_server package

SSO Server SDK.

This module is used to get server list and choose the best one.

Copyright

Copyright (C) 2021-2021 cscs181:License: AGPL-3.0 or later. See LICENSE for detail.

async cai.client.sso_server.get_sso_list() cai.client.sso_server.jce.SsoServerResponse

Do sso server list request and return the response.

注解

Source: com.tencent.mobileqq.msf.core.a.f.run

返回

Sso server list response

返回类型

SsoServerResponse

引发

SsoServerException – Get sso server list failed.

async cai.client.sso_server.quality_test(servers: Iterable[cai.client.sso_server.jce.SsoServer], threshold: float = 500.0) List[Tuple[cai.client.sso_server.jce.SsoServer, float]]

Test given servers’ quality by tcp latency.

参数
  • servers (Iterable[SsoServer]) – Server list to test.

  • threshold (float, optional) – Latency more than threshold will not be returned. Defaults to 500.0.

返回

List of server and latency in tuple.

返回类型

List[Tuple[SsoServer, float]]

async cai.client.sso_server.get_sso_server(cache: bool = True, cache_server_list: bool = True, exclude: Optional[Container[str]] = None) cai.client.sso_server.jce.SsoServer

Get the best sso server

参数
  • cache (bool, optional) – Using cache server or not. Defaults to True.

  • cache_server_list (bool, optional) – Using cache server list or not. Defaults to True.

  • exclude (List[str], optional) – List of servers’ ip want to be excluded

返回

The best server with smallest latency.

返回类型

SsoServer

Submodules

cai.client.sso_server.jce module

SSO Server Packet Builder.

This module is used to build sso server packets.

Copyright

Copyright (C) 2021-2021 cscs181:License: AGPL-3.0 or later. See LICENSE for detail.

class cai.client.sso_server.jce.SsoServerRequest(*, uin: jce.types.INT64 = 0, timeout: jce.types.INT64 = 0, c: jce.types.BYTE = b'\x01', imsi: jce.types.STRING = '46000', is_wifi: jce.types.INT32 = 100, app_id: jce.types.INT64, imei: jce.types.STRING, cell_id: jce.types.INT64 = 0, i: jce.types.INT64 = 0, j: jce.types.INT64 = 0, k: jce.types.BYTE = b'\x00', l: jce.types.BYTE = b'\x00', m: jce.types.INT64 = 0)

基类:jce.types.JceStruct

Sso Server List Request.

注解

Source: com.tencent.msf.service.protocol.serverconfig.d

uin: jce.types.INT64

User QQ or 0, renamed from a.

Type

INT64

timeout: jce.types.INT64

may be timeout (s), default is 60, renamed from b.

Type

INT64

c: jce.types.BYTE

always 1.

Type

BYTE

imsi: jce.types.STRING

imsi string, renamed from d.

null->``””`` or imsi.substring(0, 5).

Type

STRING

is_wifi: jce.types.INT32

is_wifi, renamed from e.

NetConnInfoCenter.isWifiConn: true->100, false->1.

Type

INT32

app_id: jce.types.INT64

app_id, renamed from f.

same to cai.settings.protocol.ApkInfo.app_id.

Type

INT64

imei: jce.types.STRING

imei, renamed from g.

same to cai.settings.device.DeviceInfo.imei.

Type

STRING

cell_id: jce.types.INT64

cell_id, renamed from h.

cell location get from CdmaCellLocation.getBaseStationId.

Type

INT64

i: jce.types.INT64

unknown.

Type

INT64

j: jce.types.INT64

unknown.

Type

INT64

k: jce.types.BYTE

unknown boolean, true->1, false->0.

Type

BYTE

l: jce.types.BYTE

active net ip family.

get from NetConnInfoCenter.getActiveNetIpFamily.

Type

BYTE

m: jce.types.INT64

unknown.

Type

INT64

class cai.client.sso_server.jce.SsoServer(*, host: jce.types.STRING, port: jce.types.INT32, protocol: jce.types.BYTE, city: jce.types.STRING, country: jce.types.STRING)

基类:jce.types.JceStruct

Sso Server Info.

注解

Source: com.tencent.msf.service.protocol.serverconfig.i

host: jce.types.STRING

server host, renamed from a.

Type

STRING

port: jce.types.INT32

server port, renamed from b.

Type

INT32

protocol: jce.types.BYTE

protocol, renamed from e.

0, 1: socket; 2, 3: http.

Type

BYTE

city: jce.types.STRING

city, renamed from h.

Type

STRING

country: jce.types.STRING

country, renamed from i.

Type

STRING

class cai.client.sso_server.jce.SsoServerResponse(*, socket_v4_mobile: jce.types.LIST[cai.client.sso_server.jce.SsoServer], socket_v4_wifi: jce.types.LIST[cai.client.sso_server.jce.SsoServer], http_v4_mobile: jce.types.LIST[cai.client.sso_server.jce.SsoServer], http_v4_wifi: jce.types.LIST[cai.client.sso_server.jce.SsoServer], speed_info: jce.types.BYTES, socket_v6: jce.types.LIST[cai.client.sso_server.jce.SsoServer], http_v6: jce.types.LIST[cai.client.sso_server.jce.SsoServer], udp_v6: jce.types.LIST[cai.client.sso_server.jce.SsoServer], nettype: jce.types.BYTE = b'\x00', delay_threshold: jce.types.INT32 = 0, policy_id: jce.types.STRING = '')

基类:jce.types.JceStruct

Sso Server List Response.

注解

Source: com.tencent.msf.service.protocol.serverconfig.e

socket_v4_mobile: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: socket ipv4 mobile server, renamed from b.

socket_v4_wifi: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: socket ipv4 wifi server, renamed from c.

http_v4_mobile: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: http ipv4 mobile server, renamed from l.

http_v4_wifi: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: http ipv4 wifi server, renamed from m.

speed_info: jce.types.BYTES

vCesuInfo, renamed from n.

bytes from RequestPacketVersion3 (QualityTest)

Type

BYTES

socket_v6: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: socket ipv6 server, renamed from o.

used when (wifi and nettype & 1 == 1) or (mobile and nettype & 2 == 2)

http_v6: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: http ipv6 server, renamed from p.

used when (wifi and nettype & 1 == 1) or (mobile and nettype & 2 == 2)

udp_v6: jce.types.LIST[cai.client.sso_server.jce.SsoServer]

LIST of SsoServer: quic ipv6 server, renamed from q.

used when (wifi and nettype & 1 == 1) or (mobile and nettype & 2 == 2)

nettype: jce.types.BYTE

nettype, renamed from r.

Type

BYTE

delay_threshold: jce.types.INT32

delay threshold, renamed from s.

Type

INT32

policy_id: jce.types.STRING

policy id, renamed from t.

Type

STRING