src/main/java/com/gitblit/models/GitClientApplication.java
@@ -39,6 +39,7 @@ public String cloneUrl; public String command; public String productUrl; public String [] transports; public String[] platforms; public AccessPermission minimumPermission; public boolean isActive; @@ -60,6 +61,25 @@ return false; } public boolean supportsTransport(String transportOrUrl) { if (ArrayUtils.isEmpty(transports)) { return true; } String scheme = transportOrUrl; if (transportOrUrl.indexOf(':') > -1) { // strip scheme scheme = transportOrUrl.substring(0, transportOrUrl.indexOf(':')); } for (String transport : transports) { if (transport.equalsIgnoreCase(scheme)) { return true; } } return false; } @Override public String toString() { return StringUtils.isEmpty(title) ? name : title; src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java
@@ -228,18 +228,16 @@ final GitClientApplication clientApp = item.getModelObject(); // filter the urls for the client app List<RepositoryUrl> urls; if (clientApp.minimumPermission == null) { // client app does not specify minimum access permission urls = repositoryUrls; } else { urls = new ArrayList<RepositoryUrl>(); List<RepositoryUrl> urls = new ArrayList<RepositoryUrl>(); for (RepositoryUrl repoUrl : repositoryUrls) { if (repoUrl.permission == null) { // external permissions, assume it is satisfactory if (clientApp.minimumPermission == null || repoUrl.permission == null) { // no minimum permission or external permissions, assume it is satisfactory if (clientApp.supportsTransport(repoUrl.url)) { urls.add(repoUrl); } } else if (repoUrl.permission.atLeast(clientApp.minimumPermission)) { // repo url meets minimum permission requirement if (clientApp.supportsTransport(repoUrl.url)) { urls.add(repoUrl); } }