| | |
| | | } |
| | | |
| | | /** |
| | | * Returns the active settings. |
| | | * |
| | | * @return the active settings |
| | | */ |
| | | public static IStoredSettings getSettings() { |
| | | return self().settings; |
| | | } |
| | | |
| | | /** |
| | | * Returns the user-defined blob encodings. |
| | | * |
| | | * @return an array of encodings, may be empty |
| | |
| | | } |
| | | |
| | | /** |
| | | * Returns true if the username represents an internal account |
| | | * |
| | | * @param username |
| | | * @return true if the specified username represents an internal account |
| | | */ |
| | | protected boolean isInternalAccount(String username) { |
| | | return !StringUtils.isEmpty(username) |
| | | && (username.equalsIgnoreCase(Constants.FEDERATION_USER) |
| | | || username.equalsIgnoreCase(UserModel.ANONYMOUS.username)); |
| | | } |
| | | |
| | | /** |
| | | * Authenticate a user based on a username and password. |
| | | * |
| | | * @see IUserService.authenticate(String, char[]) |
| | |
| | | if (principal != null) { |
| | | String username = principal.getName(); |
| | | if (!StringUtils.isEmpty(username)) { |
| | | boolean internalAccount = isInternalAccount(username); |
| | | UserModel user = getUserModel(username); |
| | | if (user != null) { |
| | | // existing user |
| | |
| | | user.username, httpRequest.getRemoteAddr())); |
| | | return user; |
| | | } else if (settings.getBoolean(Keys.realm.container.autoCreateAccounts, false) |
| | | && !username.equalsIgnoreCase(Constants.FEDERATION_USER)) { |
| | | && !internalAccount) { |
| | | // auto-create user from an authenticated container principal |
| | | user = new UserModel(username.toLowerCase()); |
| | | user.displayName = username; |
| | |
| | | logger.debug(MessageFormat.format("{0} authenticated and created by servlet container principal from {1}", |
| | | user.username, httpRequest.getRemoteAddr())); |
| | | return user; |
| | | } else { |
| | | } else if (!internalAccount) { |
| | | logger.warn(MessageFormat.format("Failed to find UserModel for {0}, attempted servlet container authentication from {1}", |
| | | principal.getName(), httpRequest.getRemoteAddr())); |
| | | } |
| | |
| | | return count; |
| | | } |
| | | |
| | | private void reloadProjectMarkdown(ProjectModel project) { |
| | | // project markdown |
| | | File pmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : project.name) + "/project.mkd"); |
| | | if (pmkd.exists()) { |
| | | Date lm = new Date(pmkd.lastModified()); |
| | | if (!projectMarkdownCache.hasCurrent(project.name, lm)) { |
| | | String mkd = com.gitblit.utils.FileUtils.readContent(pmkd, "\n"); |
| | | projectMarkdownCache.updateObject(project.name, lm, mkd); |
| | | } |
| | | project.projectMarkdown = projectMarkdownCache.getObject(project.name); |
| | | } |
| | | |
| | | // project repositories markdown |
| | | File rmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : project.name) + "/repositories.mkd"); |
| | | if (rmkd.exists()) { |
| | | Date lm = new Date(rmkd.lastModified()); |
| | | if (!projectRepositoriesMarkdownCache.hasCurrent(project.name, lm)) { |
| | | String mkd = com.gitblit.utils.FileUtils.readContent(rmkd, "\n"); |
| | | projectRepositoriesMarkdownCache.updateObject(project.name, lm, mkd); |
| | | } |
| | | project.repositoriesMarkdown = projectRepositoriesMarkdownCache.getObject(project.name); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns the map of project config. This map is cached and reloaded if |
| | |
| | | project.title = projectConfigs.getString("project", name, "title"); |
| | | project.description = projectConfigs.getString("project", name, "description"); |
| | | |
| | | // project markdown |
| | | File pmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : name) + "/project.mkd"); |
| | | if (pmkd.exists()) { |
| | | Date lm = new Date(pmkd.lastModified()); |
| | | if (!projectMarkdownCache.hasCurrent(name, lm)) { |
| | | String mkd = com.gitblit.utils.FileUtils.readContent(pmkd, "\n"); |
| | | projectMarkdownCache.updateObject(name, lm, mkd); |
| | | } |
| | | project.projectMarkdown = projectMarkdownCache.getObject(name); |
| | | } |
| | | |
| | | // project repositories markdown |
| | | File rmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : name) + "/repositories.mkd"); |
| | | if (rmkd.exists()) { |
| | | Date lm = new Date(rmkd.lastModified()); |
| | | if (!projectRepositoriesMarkdownCache.hasCurrent(name, lm)) { |
| | | String mkd = com.gitblit.utils.FileUtils.readContent(rmkd, "\n"); |
| | | projectRepositoriesMarkdownCache.updateObject(name, lm, mkd); |
| | | } |
| | | project.repositoriesMarkdown = projectRepositoriesMarkdownCache.getObject(name); |
| | | } |
| | | reloadProjectMarkdown(project); |
| | | |
| | | configs.put(name.toLowerCase(), project); |
| | | } |
| | |
| | | // no repositories == no project |
| | | return null; |
| | | } |
| | | |
| | | reloadProjectMarkdown(project); |
| | | return project; |
| | | } |
| | | |
| | |
| | | String cloneUrl = sb.toString(); |
| | | |
| | | // Retrieve all available repositories |
| | | UserModel user = new UserModel(Constants.FEDERATION_USER); |
| | | user.canAdmin = true; |
| | | UserModel user = getFederationUser(); |
| | | List<RepositoryModel> list = getRepositoryModels(user); |
| | | |
| | | // create the [cloneurl, repositoryModel] map |