mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 18:46:28 +01:00 
			
		
		
		
	(refs #279)Fix webhook URL to use the configured base URL.
This commit is contained in:
		| @@ -111,12 +111,6 @@ abstract class ControllerBase extends ScalatraFilter | ||||
|       } | ||||
|     } | ||||
|  | ||||
|   protected def baseUrl = loadSystemSettings().baseUrl.getOrElse { | ||||
|     defining(request.getRequestURL.toString){ url => | ||||
|       url.substring(0, url.length - (request.getRequestURI.length - request.getContextPath.length)) | ||||
|     } | ||||
|   }.replaceFirst("/$", "") | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -3,9 +3,16 @@ package service | ||||
| import util.Directory._ | ||||
| import util.ControlUtil._ | ||||
| import SystemSettingsService._ | ||||
| import javax.servlet.http.HttpServletRequest | ||||
|  | ||||
| trait SystemSettingsService { | ||||
|  | ||||
|   def baseUrl(implicit request: HttpServletRequest): String = loadSystemSettings().baseUrl.getOrElse { | ||||
|     defining(request.getRequestURL.toString){ url => | ||||
|       url.substring(0, url.length - (request.getRequestURI.length - request.getContextPath.length)) | ||||
|     } | ||||
|   }.replaceFirst("/$", "") | ||||
|  | ||||
|   def saveSystemSettings(settings: SystemSettings): Unit = { | ||||
|     defining(new java.util.Properties()){ props => | ||||
|       settings.baseUrl.foreach(props.setProperty(BaseURL, _)) | ||||
|   | ||||
| @@ -50,7 +50,7 @@ class GitRepositoryServlet extends GitServlet { | ||||
|    | ||||
| } | ||||
|  | ||||
| class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest] { | ||||
| class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest] with SystemSettingsService { | ||||
|    | ||||
|   private val logger = LoggerFactory.getLogger(classOf[GitBucketReceivePackFactory]) | ||||
|  | ||||
| @@ -64,13 +64,11 @@ class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest] | ||||
|     defining(request.paths){ paths => | ||||
|       val owner      = paths(1) | ||||
|       val repository = paths(2).replaceFirst("\\.git$", "") | ||||
|       val baseURL    = request.getRequestURL.toString.replaceFirst("/git/.*", "") | ||||
|  | ||||
|       logger.debug("repository:" + owner + "/" + repository) | ||||
|       logger.debug("baseURL:" + baseURL) | ||||
|  | ||||
|       if(!repository.endsWith(".wiki")){ | ||||
|         receivePack.setPostReceiveHook(new CommitLogHook(owner, repository, pusher, baseURL)) | ||||
|         receivePack.setPostReceiveHook(new CommitLogHook(owner, repository, pusher, baseUrl(request))) | ||||
|       } | ||||
|       receivePack | ||||
|     } | ||||
| @@ -79,7 +77,7 @@ class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest] | ||||
|  | ||||
| import scala.collection.JavaConverters._ | ||||
|  | ||||
| class CommitLogHook(owner: String, repository: String, pusher: String, baseURL: String) extends PostReceiveHook | ||||
| class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl: String) extends PostReceiveHook | ||||
|   with RepositoryService with AccountService with IssuesService with ActivityService with PullRequestService with WebHookService { | ||||
|    | ||||
|   private val logger = LoggerFactory.getLogger(classOf[CommitLogHook]) | ||||
| @@ -148,7 +146,7 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseURL: | ||||
|             case webHookURLs if(webHookURLs.nonEmpty) => | ||||
|               for(pusherAccount <- getAccountByUserName(pusher); | ||||
|                   ownerAccount   <- getAccountByUserName(owner); | ||||
|                   repositoryInfo <- getRepository(owner, repository, baseURL)){ | ||||
|                   repositoryInfo <- getRepository(owner, repository, baseUrl)){ | ||||
|                 callWebHook(owner, repository, webHookURLs, | ||||
|                   WebHookPayload(git, pusherAccount, command.getRefName, repositoryInfo, newCommits, ownerAccount)) | ||||
|               } | ||||
| @@ -181,7 +179,7 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseURL: | ||||
|    */ | ||||
|   private def updatePullRequests(branch: String) = | ||||
|     getPullRequestsByRequest(owner, repository, branch, false).foreach { pullreq => | ||||
|       if(getRepository(pullreq.userName, pullreq.repositoryName, baseURL).isDefined){ | ||||
|       if(getRepository(pullreq.userName, pullreq.repositoryName, baseUrl).isDefined){ | ||||
|         using(Git.open(Directory.getRepositoryDir(pullreq.userName, pullreq.repositoryName))){ git => | ||||
|           git.fetch | ||||
|             .setRemote(Directory.getRepositoryDir(owner, repository).toURI.toString) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user