Search in sources :

Example 1 with SMGPLoginMessage

use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage in project SMSGate by Lihuanghe.

the class SMGPSessionLoginManager method doLogin.

@Override
protected void doLogin(Channel ch) {
    // 发送bind请求
    SMGPEndpointEntity cliententity = (SMGPEndpointEntity) entity;
    // TODO 发送连接请求 ,创建密码
    SMGPLoginMessage req = new SMGPLoginMessage();
    req.setClientId(cliententity.getClientID());
    String timestamp = DateFormatUtils.format(CachedMillisecondClock.INS.now(), "MMddHHmmss");
    req.setTimestamp(Long.parseLong(timestamp));
    byte[] userBytes = cliententity.getClientID().getBytes(cliententity.getChartset());
    byte[] passwdBytes = cliententity.getPassword().getBytes(cliententity.getChartset());
    byte[] timestampBytes = timestamp.getBytes(cliententity.getChartset());
    req.setClientAuth(DigestUtils.md5(Bytes.concat(userBytes, new byte[7], passwdBytes, timestampBytes)));
    req.setVersion(cliententity.getClientVersion());
    byte loginMode = (byte) (cliententity.getChannelType() == ChannelType.DUPLEX ? 2 : (cliententity.getChannelType() == ChannelType.UP ? 1 : 0));
    req.setLoginMode(loginMode);
    ch.writeAndFlush(req);
    logger.info("session Start :Send SMGPLoginMessage seq :{}", req.getSequenceNo());
}
Also used : SMGPLoginMessage(com.zx.sms.codec.smgp.msg.SMGPLoginMessage) SMGPEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPEndpointEntity)

Example 2 with SMGPLoginMessage

use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage 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 3 with SMGPLoginMessage

use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage 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 4 with SMGPLoginMessage

use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage in project SMSGate by Lihuanghe.

the class SMGPMessageCodec method fromBytes.

private SMGPBaseMessage fromBytes(byte[] bytes) throws Exception {
    if (bytes == null) {
        return null;
    }
    if (bytes.length < SMGPBaseMessage.SZ_HEADER) {
        return null;
    }
    int commandLength = ByteUtil.byte2int(bytes, 0);
    assert bytes.length == commandLength;
    int commandId = ByteUtil.byte2int(bytes, 4);
    SMGPBaseMessage baseMsg = null;
    switch(commandId) {
        case SMGPConstants.SMGP_LOGIN:
            baseMsg = new SMGPLoginMessage();
            break;
        case SMGPConstants.SMGP_LOGIN_RESP:
            baseMsg = new SMGPLoginRespMessage();
            break;
        case SMGPConstants.SMGP_SUBMIT:
            baseMsg = new SMGPSubmitMessage();
            break;
        case SMGPConstants.SMGP_SUBMIT_RESP:
            baseMsg = new SMGPSubmitRespMessage();
            break;
        case SMGPConstants.SMGP_DELIVER:
            baseMsg = new SMGPDeliverMessage();
            break;
        case SMGPConstants.SMGP_DELIVER_RESP:
            baseMsg = new SMGPDeliverRespMessage();
            break;
        case SMGPConstants.SMGP_ACTIVE_TEST:
            baseMsg = new SMGPActiveTestMessage();
            break;
        case SMGPConstants.SMGP_ACTIVE_TEST_RESP:
            baseMsg = new SMGPActiveTestRespMessage();
            break;
        case SMGPConstants.SMGP_EXIT_TEST:
            baseMsg = new SMGPExitMessage();
            break;
        case SMGPConstants.SMGP_EXIT_RESP:
            baseMsg = new SMGPExitRespMessage();
            break;
        default:
            baseMsg = new SMGPUnknownMessage(commandId);
            break;
    }
    baseMsg.fromBytes(bytes, version);
    return baseMsg;
}
Also used : SMGPDeliverMessage(com.zx.sms.codec.smgp.msg.SMGPDeliverMessage) SMGPExitMessage(com.zx.sms.codec.smgp.msg.SMGPExitMessage) SMGPBaseMessage(com.zx.sms.codec.smgp.msg.SMGPBaseMessage) SMGPDeliverRespMessage(com.zx.sms.codec.smgp.msg.SMGPDeliverRespMessage) SMGPLoginMessage(com.zx.sms.codec.smgp.msg.SMGPLoginMessage) SMGPActiveTestRespMessage(com.zx.sms.codec.smgp.msg.SMGPActiveTestRespMessage) SMGPUnknownMessage(com.zx.sms.codec.smgp.msg.SMGPUnknownMessage) SMGPExitRespMessage(com.zx.sms.codec.smgp.msg.SMGPExitRespMessage) SMGPLoginRespMessage(com.zx.sms.codec.smgp.msg.SMGPLoginRespMessage) SMGPSubmitRespMessage(com.zx.sms.codec.smgp.msg.SMGPSubmitRespMessage) SMGPActiveTestMessage(com.zx.sms.codec.smgp.msg.SMGPActiveTestMessage) SMGPSubmitMessage(com.zx.sms.codec.smgp.msg.SMGPSubmitMessage)

Example 5 with SMGPLoginMessage

use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage in project SMSGate by Lihuanghe.

the class SMGPSessionLoginManager method queryEndpointEntityByMsg.

@Override
protected EndpointEntity queryEndpointEntityByMsg(Object msg) {
    if (msg instanceof SMGPLoginMessage) {
        SMGPLoginMessage message = (SMGPLoginMessage) msg;
        String username = message.getClientId();
        byte loginMode = message.getLoginMode();
        if (entity instanceof SMGPServerEndpointEntity) {
            SMGPServerEndpointEntity serverEntity = (SMGPServerEndpointEntity) entity;
            if (loginMode == 0) {
                EndpointEntity end = serverEntity.getChild(username.trim(), ChannelType.DOWN);
                return end;
            } else if (loginMode == 1) {
                EndpointEntity end = serverEntity.getChild(username.trim(), ChannelType.UP);
                return end;
            } else if (loginMode == 2) {
                EndpointEntity end = serverEntity.getChild(username.trim(), ChannelType.DUPLEX);
                return end;
            }
        }
    }
    return null;
}
Also used : SMGPServerEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPServerEndpointEntity) SMGPLoginMessage(com.zx.sms.codec.smgp.msg.SMGPLoginMessage) EndpointEntity(com.zx.sms.connect.manager.EndpointEntity) CMPPServerChildEndpointEntity(com.zx.sms.connect.manager.cmpp.CMPPServerChildEndpointEntity) SMGPServerChildEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity) SMGPServerEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPServerEndpointEntity) SMGPEndpointEntity(com.zx.sms.connect.manager.smgp.SMGPEndpointEntity)

Aggregations

SMGPLoginMessage (com.zx.sms.codec.smgp.msg.SMGPLoginMessage)7 SMGPServerChildEndpointEntity (com.zx.sms.connect.manager.smgp.SMGPServerChildEndpointEntity)4 SMGPLoginRespMessage (com.zx.sms.codec.smgp.msg.SMGPLoginRespMessage)3 SMGPEndpointEntity (com.zx.sms.connect.manager.smgp.SMGPEndpointEntity)2 SMGPMessageCodec (com.zx.sms.codec.smgp.codec.SMGPMessageCodec)1 SMGPActiveTestMessage (com.zx.sms.codec.smgp.msg.SMGPActiveTestMessage)1 SMGPActiveTestRespMessage (com.zx.sms.codec.smgp.msg.SMGPActiveTestRespMessage)1 SMGPBaseMessage (com.zx.sms.codec.smgp.msg.SMGPBaseMessage)1 SMGPDeliverMessage (com.zx.sms.codec.smgp.msg.SMGPDeliverMessage)1 SMGPDeliverRespMessage (com.zx.sms.codec.smgp.msg.SMGPDeliverRespMessage)1 SMGPExitMessage (com.zx.sms.codec.smgp.msg.SMGPExitMessage)1 SMGPExitRespMessage (com.zx.sms.codec.smgp.msg.SMGPExitRespMessage)1 SMGPSubmitMessage (com.zx.sms.codec.smgp.msg.SMGPSubmitMessage)1 SMGPSubmitRespMessage (com.zx.sms.codec.smgp.msg.SMGPSubmitRespMessage)1 SMGPUnknownMessage (com.zx.sms.codec.smgp.msg.SMGPUnknownMessage)1 EndpointEntity (com.zx.sms.connect.manager.EndpointEntity)1 CMPPServerChildEndpointEntity (com.zx.sms.connect.manager.cmpp.CMPPServerChildEndpointEntity)1 SMGPServerEndpointEntity (com.zx.sms.connect.manager.smgp.SMGPServerEndpointEntity)1 ChannelFuture (io.netty.channel.ChannelFuture)1 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)1