Search in sources :

Example 1 with SMGPServerChildEndpointEntity

use of com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity in project SMSGate by Lihuanghe.

the class SMGPSessionLoginManager method doLoginSuccess.

@Override
protected void doLoginSuccess(ChannelHandlerContext ctx, EndpointEntity entity, Object message) {
    // 发送bind请求
    SMGPServerChildEndpointEntity smgpentity = (SMGPServerChildEndpointEntity) entity;
    SMGPLoginMessage req = (SMGPLoginMessage) message;
    SMGPLoginRespMessage resp = new SMGPLoginRespMessage();
    resp.setSequenceNo(req.getSequenceNo());
    resp.setStatus(0);
    resp.setVersion(smgpentity.getClientVersion());
    resp.setServerAuth(DigestUtils.md5(Bytes.concat(Ints.toByteArray((int) resp.getStatus()), req.getClientAuth(), smgpentity.getPassword().getBytes(smgpentity.getChartset()))));
    ctx.channel().writeAndFlush(resp);
}
Also used : SMGPLoginRespMessage(com.zx.sms.codec.smgp.msg.SMGPLoginRespMessage) SMGPLoginMessage(com.zx.sms.codec.smgp.msg.SMGPLoginMessage) SMGPServerChildEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity)

Example 2 with SMGPServerChildEndpointEntity

use of com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity in project SMSGate by Lihuanghe.

the class SMGPSessionLoginManager method validClientMsg.

@Override
protected int validClientMsg(EndpointEntity entity, Object msg) {
    SMGPServerChildEndpointEntity smgpentity = (SMGPServerChildEndpointEntity) entity;
    SMGPLoginMessage message = (SMGPLoginMessage) msg;
    return validClientMsg(message, smgpentity);
}
Also used : SMGPLoginMessage(com.zx.sms.codec.smgp.msg.SMGPLoginMessage) SMGPServerChildEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity)

Example 3 with SMGPServerChildEndpointEntity

use of com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity in project SMSGate by Lihuanghe.

the class SMGPSessionLoginManager method changeProtoVersion.

@Override
protected void changeProtoVersion(ChannelHandlerContext ctx, EndpointEntity entity, Object msg) throws Exception {
    SMGPLoginMessage message = (SMGPLoginMessage) msg;
    final short clientVersion = message.getVersion();
    short aim_ver = clientVersion;
    if (entity != null) {
        SMGPServerChildEndpointEntity childentity = (SMGPServerChildEndpointEntity) entity;
        // 以服务端配置的版本为准
        aim_ver = childentity.getClientVersion();
        // 发送ConnectRequest里的Version跟配置的不同
        if (aim_ver != clientVersion) {
            logger.warn("receive version code {} ,expected version is {} .I would use version {}", clientVersion, aim_ver, aim_ver);
        }
    }
    // 默认的是3.0的协议,如果不是则要更换解析器版本
    if ((byte) 0x30 != aim_ver) {
        // 以配置的协议版本为准
        // 更换协议解析器
        logger.info("changeCodec to version:{}", aim_ver);
        ctx.pipeline().replace(GlobalConstance.codecName, GlobalConstance.codecName, new SMGPMessageCodec(aim_ver));
    }
}
Also used : SMGPMessageCodec(com.zx.sms.codec.smgp.codec.SMGPMessageCodec) SMGPLoginMessage(com.zx.sms.codec.smgp.msg.SMGPLoginMessage) SMGPServerChildEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity)

Aggregations

SMGPLoginMessage (com.zx.sms.codec.smgp.msg.SMGPLoginMessage)3 SMGPServerChildEndpointEntity (com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity)3 SMGPMessageCodec (com.zx.sms.codec.smgp.codec.SMGPMessageCodec)1 SMGPLoginRespMessage (com.zx.sms.codec.smgp.msg.SMGPLoginRespMessage)1