From 243edbd14369cf8be80008056320aa809612cdc0 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 09 九月 2022 23:19:19 +0800
Subject: [PATCH] 为User-Agent添加必要的版本信息

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java |    6 ++
 src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java                                                |   15 +++++++
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java                |   22 +++++++++-
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java                       |    8 +++-
 src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java                                       |   10 +++-
 src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java                                             |   13 ++++++
 src/main/resources/application-dev.yml                                                                |    6 ---
 src/main/resources/all-application.yml                                                                |    6 ---
 src/main/resources/application-docker.yml                                                             |    7 ---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java        |    9 +++-
 pom.xml                                                                                               |    6 ++-
 src/main/resources/banner.txt                                                                         |    2 -
 12 files changed, 76 insertions(+), 34 deletions(-)

diff --git a/pom.xml b/pom.xml
index 71dd948..25bdb81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -263,14 +263,16 @@
 				</configuration>
 			</plugin>
 
-	<!--		<plugin>
+			<plugin>
 				<groupId>pl.project13.maven</groupId>
 				<artifactId>git-commit-id-plugin</artifactId>
 				<version>3.0.1</version>
 				<configuration>
 					<offline>true</offline>
+					<failOnNoGitDirectory>false</failOnNoGitDirectory>
+					<dateFormat>yyyyMMdd</dateFormat>
 				</configuration>
-			</plugin>-->
+			</plugin>
 
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index 21002c4..af3340d 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -3,6 +3,12 @@
 import java.util.logging.LogManager;
 
 import com.genersoft.iot.vmp.conf.druid.EnableDruidSupport;
+import com.genersoft.iot.vmp.storager.impl.RedisCatchStorageImpl;
+import com.genersoft.iot.vmp.utils.GitUtil;
+import com.genersoft.iot.vmp.utils.SpringBeanFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.ServletComponentScan;
@@ -17,11 +23,18 @@
 @EnableScheduling
 @EnableDruidSupport
 public class VManageBootstrap extends LogManager {
+
+	private final static Logger logger = LoggerFactory.getLogger(VManageBootstrap.class);
+
 	private static String[] args;
 	private static ConfigurableApplicationContext context;
 	public static void main(String[] args) {
 		VManageBootstrap.args = args;
 		VManageBootstrap.context = SpringApplication.run(VManageBootstrap.class, args);
+		GitUtil gitUtil1 = SpringBeanFactory.getBean("gitUtil");
+		logger.info("鏋勫缓鐗堟湰锛� {}", gitUtil1.getBuildVersion());
+		logger.info("鏋勫缓鏃堕棿锛� {}", gitUtil1.getBuildDate());
+		logger.info("GIT鏈�鍚庢彁浜ゆ椂闂达細 {}", gitUtil1.getCommitTime());
 	}
 	// 椤圭洰閲嶅惎
 	public static void restart() {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
index 2f3be35..6ee3cce 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
@@ -4,6 +4,7 @@
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.utils.GitUtil;
 import gov.nist.javax.sip.message.MessageFactoryImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -33,6 +34,9 @@
 	
 	@Autowired
 	private SipFactory sipFactory;
+
+	@Autowired
+	private GitUtil gitUtil;
 
 	@Autowired
 	private IRedisCatchStorage redisCatchStorage;
@@ -72,8 +76,7 @@
 		ExpiresHeader expires = sipFactory.createHeaderFactory().createExpiresHeader(isRegister ? platform.getExpires() : 0);
 		request.addHeader(expires);
 
-		UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
-		request.addHeader(userAgentHeader);
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
 
 		return request;
 	}
@@ -183,6 +186,8 @@
 		request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
 				toHeader, viaHeaders, maxForwards);
 
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
+
 		ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
 		request.setContent(content, contentTypeHeader);
 		return request;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
index 807afb4..21ab374 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
@@ -13,6 +13,7 @@
 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.utils.GitUtil;
 import gov.nist.javax.sip.SipProviderImpl;
 import gov.nist.javax.sip.SipStackImpl;
 import gov.nist.javax.sip.stack.SIPDialog;
@@ -36,6 +37,9 @@
 	
 	@Autowired
 	private SipFactory sipFactory;
+
+	@Autowired
+	private GitUtil gitUtil;
 
 	@Autowired
 	private IRedisCatchStorage redisCatchStorage;
@@ -76,6 +80,9 @@
 
 		request = sipFactory.createMessageFactory().createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
 				toHeader, viaHeaders, maxForwards);
+
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
+
 		ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
 		request.setContent(content, contentTypeHeader);
 		return request;
@@ -106,7 +113,9 @@
 		//ceq
 		CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE);
 		request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
-		
+
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
+
 		Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
 		// Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
 		request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
@@ -146,6 +155,9 @@
 		Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
 		// Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
 		request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
+
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
+
 		// Subject
 		SubjectHeader subjectHeader = sipFactory.createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
 		request.addHeader(subjectHeader);
@@ -179,6 +191,8 @@
 		CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE);
 		CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(callId);
 		request = sipFactory.createMessageFactory().createRequest(requestLine, Request.BYE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
+
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
 
 		Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
 
@@ -230,6 +244,9 @@
 
 		ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
 		request.setContent(content, contentTypeHeader);
+
+		request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
+
 		return request;
 	}
 
@@ -264,8 +281,7 @@
 		Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory()
 				.createSipURI(sipConfig.getId(), sipConfig.getIp() + ":" + sipConfig.getPort()));
 		infoRequest.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
-		UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
-		infoRequest.addHeader(userAgentHeader);
+		infoRequest.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
 
 		ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application",
 				"MANSRTSP");
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index a80745d..2d305c0 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -21,6 +21,7 @@
 import com.genersoft.iot.vmp.service.bean.SSRCInfo;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.utils.GitUtil;
 import gov.nist.javax.sip.SipProviderImpl;
 import gov.nist.javax.sip.SipStackImpl;
 import gov.nist.javax.sip.message.MessageFactoryImpl;
@@ -59,6 +60,9 @@
 
 	@Autowired
 	private SipFactory sipFactory;
+
+	@Autowired
+	private GitUtil gitUtil;
 
 	@Autowired
 	@Qualifier(value="tcpSipProvider")
@@ -727,7 +731,7 @@
 			// 澧炲姞Contact header
 			Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
 			byeRequest.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
-			UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
+			UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory, gitUtil);
 			byeRequest.addHeader(userAgentHeader);
 			ClientTransaction clientTransaction = null;
 			if("TCP".equals(protocol)) {
@@ -1618,7 +1622,7 @@
 		if (request.getHeader(UserAgentHeader.NAME) == null) {
 			UserAgentHeader userAgentHeader = null;
 			try {
-				userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
+				userAgentHeader = SipUtils.createUserAgentHeader(sipFactory, gitUtil);
 			} catch (ParseException e) {
 				logger.error("娣诲姞UserAgentHeader澶辫触", e);
 			}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
index 923d79f..a2bc6e1 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
@@ -5,6 +5,7 @@
 import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
 import com.genersoft.iot.vmp.gb28181.transmit.event.response.SIPResponseProcessorAbstract;
 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
+import com.genersoft.iot.vmp.utils.GitUtil;
 import gov.nist.javax.sip.ResponseEventExt;
 import gov.nist.javax.sip.stack.SIPDialog;
 import org.slf4j.Logger;
@@ -47,6 +48,9 @@
 
 	@Autowired
 	private SipFactory sipFactory;
+
+	@Autowired
+	private GitUtil gitUtil;
 
 	@Override
 	public void afterPropertiesSet() throws Exception {
@@ -98,7 +102,7 @@
 				}
 				requestURI.setPort(event.getRemotePort());
 				reqAck.setRequestURI(requestURI);
-				UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
+				UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory, gitUtil);
 				reqAck.addHeader(userAgentHeader);
 				Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
 				reqAck.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
index 47bf38d..cf64a86 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -1,5 +1,6 @@
 package com.genersoft.iot.vmp.gb28181.utils;
 
+import com.genersoft.iot.vmp.utils.GitUtil;
 import gov.nist.javax.sip.address.AddressImpl;
 import gov.nist.javax.sip.address.SipUri;
 import gov.nist.javax.sip.header.Subject;
@@ -49,10 +50,13 @@
         return "z9hG4bK" + System.currentTimeMillis();
     }
 
-    public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory) throws PeerUnavailableException, ParseException {
+    public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory, GitUtil gitUtil) throws PeerUnavailableException, ParseException {
         List<String> agentParam = new ArrayList<>();
-        agentParam.add("WVP PRO");
-        // TODO 娣诲姞鐗堟湰淇℃伅浠ュ強鏃ユ湡
+        agentParam.add("WVP-Pro v");
+        if (gitUtil != null && gitUtil.getCommitTime() != null) {
+            agentParam.add(gitUtil.getBuildVersion() + ".");
+            agentParam.add(gitUtil.getCommitTime());
+        }
         return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);
     }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
index 60ee987..d6dc943 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
@@ -19,8 +19,15 @@
     private String gitUrl;
     @Value("${git.build.time:null}")
     private String buildDate;
+
+    @Value("${git.build.version:null}")
+    private String buildVersion;
+
     @Value("${git.commit.id.abbrev:null}")
     private String commitIdShort;
+
+    @Value("${git.commit.time:null}")
+    private String commitTime;
 
     public String getGitCommitId() {
         return gitCommitId;
@@ -41,4 +48,12 @@
     public String getCommitIdShort() {
         return commitIdShort;
     }
+
+    public String getBuildVersion() {
+        return buildVersion;
+    }
+
+    public String getCommitTime() {
+        return commitTime;
+    }
 }
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
index 222c076..3569de2 100644
--- a/src/main/resources/all-application.yml
+++ b/src/main/resources/all-application.yml
@@ -195,9 +195,3 @@
         enabled: false
     swagger-ui:
         enabled: false
-
-# 鐗堟湰淇℃伅锛� 涓嶉渶淇敼
-version:
-    version: "@project.version@"
-    description: "@project.description@"
-    artifact-id: "@project.artifactId@"
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 833bb30..7d1e116 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -84,9 +84,3 @@
 # [鍙�塢 鏃ュ織閰嶇疆, 涓�鑸笉闇�瑕佹敼
 logging:
     config: classpath:logback-spring-local.xml
-
-# 鐗堟湰淇℃伅锛� 涓嶉渶淇敼
-version:
-    version: "@project.version@"
-    description: "@project.description@"
-    artifact-id: "@project.artifactId@"
diff --git a/src/main/resources/application-docker.yml b/src/main/resources/application-docker.yml
index 06b7810..a722435 100644
--- a/src/main/resources/application-docker.yml
+++ b/src/main/resources/application-docker.yml
@@ -78,10 +78,3 @@
     # 鎺ㄦ祦鐩存挱鏄惁褰曞埗
     record-push-live: true
     auto-apply-play: true
-
-
-# 鐗堟湰淇℃伅锛� 涓嶉渶淇敼
-version:
-    version: "@project.version@"
-    description: "@project.description@"
-    artifact-id: "@project.artifactId@"
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
index 0c7250d..7a75e1c 100644
--- a/src/main/resources/banner.txt
+++ b/src/main/resources/banner.txt
@@ -5,5 +5,3 @@
   \ \  \|\__\_\  \ \    / /   \ \  \___\|____________|\ \  \___|\ \  \\  \\ \  \\\  \ 
    \ \____________\ \__/ /     \ \__\                  \ \__\    \ \__\\ _\\ \_______\
     \|____________|\|__|/       \|__|                   \|__|     \|__|\|__|\|_______|
-
-鐗堟湰锛�${version.version}
\ No newline at end of file

--
Gitblit v1.8.0