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());
}
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);
}
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);
}
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;
}
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;
}
Aggregations