in server/src/main/java/jetbrains/buildServer/torrent/web/TorrentSettingsAdminPage.java [36:74]
public TorrentSettingsAdminPage(@NotNull PagePlaces pagePlaces,
@NotNull WebControllerManager controllerManager,
@NotNull PluginDescriptor descriptor,
@NotNull SecurityContext securityContext,
@NotNull AuthorizationInterceptor authInterceptor,
@NotNull TorrentTrackerManager torrentTrackerManager,
@NotNull TorrentConfigurator torrentConfigurator,
@NotNull ServerTorrentsDirectorySeeder torrentSeeder) {
super(pagePlaces, TAB_ID, descriptor.getPluginResourcesPath("torrentSettings.jsp"), "Torrent Settings");
myTorrentTrackerManager = torrentTrackerManager;
myTorrentConfigurator = torrentConfigurator;
mySecurityContext = securityContext;
myTorrentSeeder = torrentSeeder;
final String pagePath = "/admin/torrentSettings.html";
authInterceptor.addPathBasedPermissionsChecker(pagePath, (holder, request) -> {
if (!holder.isPermissionGrantedGlobally(Permission.CHANGE_SERVER_SETTINGS)) {
throw new AccessDeniedException(holder, "You do not have enough permissions to access the torrent settings page");
}
});
register();
controllerManager.registerController(pagePath, new BaseController() {
@Override
protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception {
if (request.getParameter("save") != null) {
boolean seedingEnabled = request.getParameter("seedingEnabled") != null;
boolean downloadEnabled = request.getParameter("downloadEnabled") != null;
boolean agentSeedingEnabled = request.getParameter("agentSeedingEnabled") != null;
boolean agentDownloadEnabled = request.getParameter("agentDownloadEnabled") != null;
myTorrentConfigurator.setSeedingEnabled(seedingEnabled);
myTorrentConfigurator.setDownloadEnabled(downloadEnabled);
myTorrentConfigurator.setAgentDownloadEnabled(agentDownloadEnabled);
myTorrentConfigurator.setAgentSeedingEnabled(agentSeedingEnabled);
myTorrentConfigurator.persistConfiguration();
}
return new ModelAndView(new RedirectView(request.getContextPath() + "/admin/admin.html?item=" + TAB_ID));
}
});
}