/** * Parse additional header from a formatted string */ public static NetconfHelloMessageAdditionalHeader fromString(String additionalHeader) { String additionalHeaderTrimmed = additionalHeader.trim(); Matcher matcher = PATTERN.matcher(additionalHeaderTrimmed); Matcher matcher2 = CUSTOM_HEADER_PATTERN.matcher(additionalHeaderTrimmed); Preconditions.checkArgument(matcher.matches(), "Additional header in wrong format %s, expected %s", additionalHeaderTrimmed, PATTERN); String username = matcher.group("username"); String address = matcher.group("address"); String port = matcher.group("port"); String transport = matcher.group("transport"); String sessionIdentifier = "client"; if (matcher2.matches()) { sessionIdentifier = matcher2.group("sessionIdentifier"); } return new NetconfHelloMessageAdditionalHeader(username, address, port, transport, sessionIdentifier); }
@Override protected NetconfServerSession getSession( NetconfServerSessionListener sessionListener, Channel channel, NetconfHelloMessage message) { Optional<NetconfHelloMessageAdditionalHeader> additionalHeader = message .getAdditionalHeader(); NetconfHelloMessageAdditionalHeader parsedHeader; if (additionalHeader.isPresent()) { parsedHeader = additionalHeader.get(); } else { parsedHeader = new NetconfHelloMessageAdditionalHeader(UNKNOWN, getHostName(channel.localAddress()).getValue(), getHostName(channel.localAddress()).getKey(), "tcp", "client"); } LOG.debug("Additional header from hello parsed as {} from {}", parsedHeader, additionalHeader); return new NetconfServerSession(sessionListener, channel, getSessionPreferences().getSessionId(), parsedHeader); }