├── .maven.xml ├── .travis.yml ├── Dockerfile ├── LICENSE ├── README.md ├── config.yml ├── docker-build.sh ├── docker-compose-with-marathon.yml ├── docker-compose-with-no-marathon.yml ├── dump.sql ├── payloads ├── andro.json ├── arachni.json ├── bandit.json ├── brakeman.json ├── bundle-audit.json ├── dawn-scanner.json ├── exakat.json ├── find-sec-bugs.json ├── nmap.json ├── nsp.json ├── retire.json ├── truffle-hog.json ├── wpscan.json └── xanitizer.json ├── pom.xml └── src ├── main └── java │ └── com │ └── olacabs │ └── jackhammer │ ├── application │ ├── DBFactory.java │ ├── JackhammerBinder.java │ └── JackhammerService.java │ ├── common │ ├── Constants.java │ ├── CustomErrorCodes.java │ ├── EmailTemplate.java │ ├── ExceptionMessages.java │ ├── HttpKeys.java │ ├── HttpResponseCodes.java │ ├── HttpResponseMessages.java │ └── ScanMailTemplate.java │ ├── configuration │ ├── ClientConfiguration.java │ ├── FileConfiguration.java │ ├── GitConfiguration.java │ ├── JackhammerConfiguration.java │ ├── JwtConfiguration.java │ ├── MarathonConfiguration.java │ ├── S3Configuration.java │ ├── ScanMangerConfiguration.java │ ├── ThreadPoolConfiguration.java │ ├── ToolManagerConfiguration.java │ └── WebSocketsConfiguration.java │ ├── controllers │ ├── ActionsController.java │ ├── AnalyticsController.java │ ├── ApplicationsController.java │ ├── BaseController.java │ ├── CommentsController.java │ ├── DashboardsController.java │ ├── DefaultRolesController.java │ ├── FiltersController.java │ ├── FindingsController.java │ ├── GitController.java │ ├── GroupsController.java │ ├── HardcodeSecretsController.java │ ├── JchTasksController.java │ ├── JiraDetailsController.java │ ├── LanguagesController.java │ ├── PermissionsController.java │ ├── ReposController.java │ ├── ResetPasswordController.java │ ├── RolesController.java │ ├── SMTPDetailsController.java │ ├── ScanTypesController.java │ ├── ScansController.java │ ├── ScheduleTypesController.java │ ├── SeverityLevelsController.java │ ├── TagsController.java │ ├── TasksController.java │ ├── ToolsController.java │ ├── UploadsController.java │ ├── UserAccountsController.java │ └── UsersController.java │ ├── db │ ├── ActionDAO.java │ ├── AnalyticsDAO.java │ ├── ApplicationDAO.java │ ├── BranchDAO.java │ ├── CommentDAO.java │ ├── CrudDAO.java │ ├── DashboardDAO.java │ ├── DefaultRoleDAO.java │ ├── FilterDAO.java │ ├── FindingDAO.java │ ├── FindingTagDAO.java │ ├── GitDAO.java │ ├── GroupDAO.java │ ├── GroupDAOJdbi.java │ ├── GroupRoleDAO.java │ ├── GroupUserDAO.java │ ├── HardcodeSecretDAO.java │ ├── JiraDetailDAO.java │ ├── JwtTokenDAO.java │ ├── LanguageDAO.java │ ├── OwnerTypeDAO.java │ ├── PermissionDAO.java │ ├── PermissionRoleDAO.java │ ├── RepoDAO.java │ ├── RoleDAO.java │ ├── RoleDAOJdbi.java │ ├── RoleTaskDAO.java │ ├── RoleUserDAO.java │ ├── SMTPDetailDAO.java │ ├── ScanDAO.java │ ├── ScanToolDAO.java │ ├── ScanTypeDAO.java │ ├── ScheduleTypeDAO.java │ ├── SeverityLevelDAO.java │ ├── TagDAO.java │ ├── TagDAOJdbi.java │ ├── TaskDAO.java │ ├── ToolDAO.java │ ├── ToolInstanceDAO.java │ ├── UploadDAO.java │ ├── UserDAO.java │ └── UserDAOJdbi.java │ ├── enums │ ├── Handler.java │ └── Severities.java │ ├── exceptions │ ├── AbstractException.java │ ├── DBConfigIntializationRequired.java │ ├── DataServiceNotFoundException.java │ ├── GitCloneException.java │ ├── HandlerNotFoundException.java │ ├── InternalException.java │ ├── InvalidApplicationUrlException.java │ ├── InvalidHostException.java │ ├── InvalidSmtpHost.java │ ├── InvalidTokenException.java │ ├── InvalidcredentialException.java │ ├── MarathonNotRunning.java │ ├── OperationFailedException.java │ ├── TempDirCreationException.java │ ├── UserNotFoundException.java │ ├── ValidationFailedException.java │ ├── WritingFileException.java │ └── handlers │ │ ├── AbstractExceptionHandler.java │ │ └── ExceptionHandler.java │ ├── filters │ ├── AuthenticationFilter.java │ ├── AuthorizationFilter.java │ └── CORSFilter.java │ ├── git │ └── manager │ │ ├── GitPooler.java │ │ └── ReposPuller.java │ ├── handler │ ├── AbstractHandler.java │ ├── ActionsHandler.java │ ├── AnalyticsHandler.java │ ├── ApplicationsHandler.java │ ├── ChangePasswordHandler.java │ ├── CommentsHandler.java │ ├── DashboardsHandler.java │ ├── DefaultRolesHandler.java │ ├── FiltersHandler.java │ ├── FindingsHandler.java │ ├── GitHandler.java │ ├── GroupsHandler.java │ ├── HardcodeSecretHandler.java │ ├── JiraDetailsHandler.java │ ├── LanguagesHandler.java │ ├── PermissionsHandler.java │ ├── ReposHandler.java │ ├── ResetPasswordHandler.java │ ├── RolesHandler.java │ ├── SMTPDetailsHandler.java │ ├── ScanTypesHandler.java │ ├── ScansHandler.java │ ├── ScheduleTypesHandler.java │ ├── SeverityLevelsHandler.java │ ├── TagsHandler.java │ ├── TasksHandler.java │ ├── ToolsHandler.java │ ├── UploadsHandler.java │ ├── UserAccountsHandler.java │ ├── UsersHandler.java │ └── factories │ │ └── HandlerFactory.java │ ├── models │ ├── AbstractModel.java │ ├── AbstractResponse.java │ ├── Action.java │ ├── Analytics.java │ ├── Application.java │ ├── Branch.java │ ├── Command.java │ ├── Comment.java │ ├── Container.java │ ├── Dashboard.java │ ├── DefaultRole.java │ ├── Docker.java │ ├── ErrorResponseModel.java │ ├── ExecutiveDashboard.java │ ├── Filter.java │ ├── Finding.java │ ├── FindingTag.java │ ├── Git.java │ ├── GitGroup.java │ ├── GitHubGroup.java │ ├── GitHubProject.java │ ├── GitLabGroup.java │ ├── GitLabProject.java │ ├── GitNamespace.java │ ├── GitOwner.java │ ├── GitPermission.java │ ├── GitProject.java │ ├── Group.java │ ├── GroupRole.java │ ├── GroupUser.java │ ├── HardcodeSecret.java │ ├── HealthCheck.java │ ├── JiraDetail.java │ ├── JiraField.java │ ├── JiraIssue.java │ ├── JiraIssueType.java │ ├── JiraProject.java │ ├── JwtToken.java │ ├── Language.java │ ├── MarathonModel.java │ ├── MobileScanRequest.java │ ├── NotificationMails.java │ ├── OwnerType.java │ ├── PagedResponse.java │ ├── Permission.java │ ├── PermissionRole.java │ ├── PortMapping.java │ ├── Repo.java │ ├── RepoToolResult.java │ ├── Role.java │ ├── RoleTask.java │ ├── RoleUser.java │ ├── SMTPDetail.java │ ├── Scan.java │ ├── ScanTool.java │ ├── ScanType.java │ ├── ScanTypeCount.java │ ├── ScheduleType.java │ ├── SeverityCount.java │ ├── SeverityCountChart.java │ ├── SeverityLevel.java │ ├── SuccessResponseModel.java │ ├── Tag.java │ ├── Task.java │ ├── Tool.java │ ├── ToolInstance.java │ ├── ToolManifest.java │ ├── TopVulnerabilityRepo.java │ ├── TopVulnerableApplication.java │ ├── TopVulnerableRepo.java │ ├── TopVulnerableType.java │ ├── Upload.java │ ├── User.java │ ├── UserResponse.java │ ├── VulnerabilityTrend.java │ ├── VulnerableType.java │ └── mapper │ │ ├── ActionMapper.java │ │ ├── ApplicationMapper.java │ │ ├── BranchMapper.java │ │ ├── CommentMapper.java │ │ ├── DefaultRoleMapper.java │ │ ├── FindingMapper.java │ │ ├── FindingTagMapper.java │ │ ├── GitMapper.java │ │ ├── GroupMapper.java │ │ ├── GroupRoleMapper.java │ │ ├── GroupUserMapper.java │ │ ├── HardcodeSecretMapper.java │ │ ├── JiraDetailMapper.java │ │ ├── JwtTokenMapper.java │ │ ├── LanguageMapper.java │ │ ├── OwnerTypeMapper.java │ │ ├── PermissionMapper.java │ │ ├── RepoMapper.java │ │ ├── RepoToolResultMapper.java │ │ ├── RoleMapper.java │ │ ├── RolePermissionMapper.java │ │ ├── RoleTaskMapper.java │ │ ├── RoleUserMapper.java │ │ ├── SMTPDetailMapper.java │ │ ├── ScanMapper.java │ │ ├── ScanToolMapper.java │ │ ├── ScanTypeMapper.java │ │ ├── ScheduleTypeMapper.java │ │ ├── SeverityCountChartMapper.java │ │ ├── SeverityLevelMapper.java │ │ ├── TagMapper.java │ │ ├── TaskMapper.java │ │ ├── ToolInstanceMapper.java │ │ ├── ToolMapper.java │ │ ├── TopVulnerabilityApplicationMapper.java │ │ ├── TopVulnerabilityRepoMapper.java │ │ ├── TopVulnerableTypeMapper.java │ │ ├── UploadMapper.java │ │ ├── UserMapper.java │ │ ├── VulnerabilityTrendMapper.java │ │ └── VulnerableTypeMapper.java │ ├── response │ └── builder │ │ ├── AbstractResponseBuilder.java │ │ ├── ActionResponseBuilder.java │ │ ├── AnalyticsResponseBuilder.java │ │ ├── ApplicationResponseBuilder.java │ │ ├── ChangePasswordResponseBuilder.java │ │ ├── CommentResponseBuilder.java │ │ ├── DashboardResponseBuilder.java │ │ ├── DefaultRoleResponseBuilder.java │ │ ├── FindingResponseBuilder.java │ │ ├── GitResponseBuilder.java │ │ ├── GroupResponseBuilder.java │ │ ├── HardcodeSecretResponseBuilder.java │ │ ├── JiraDetailResponseBuilder.java │ │ ├── LanguageResponseBuilder.java │ │ ├── PermissionResponseBuilder.java │ │ ├── RepoResponseBuilder.java │ │ ├── ResetPasswordResponseBuilder.java │ │ ├── RoleResponseBuilder.java │ │ ├── SMTPDetailResponseBuilder.java │ │ ├── ScanResponseBuilder.java │ │ ├── ScanTypeResponseBuilder.java │ │ ├── ScheduleTypeResponseBuilder.java │ │ ├── SeverityLevelResponseBuilder.java │ │ ├── TagResponseBuilder.java │ │ ├── TaskResponseBuilder.java │ │ ├── ToolResponseBuilder.java │ │ ├── UploadResponseBuilder.java │ │ ├── UserResponseBuilder.java │ │ └── factories │ │ └── ResponseBuilderFactory.java │ ├── scan │ └── manager │ │ ├── ScanPicker.java │ │ ├── ScanPooler.java │ │ ├── ScheduledScanPicker.java │ │ ├── ScheduledScanPooler.java │ │ ├── WpScanSchedulerPicker.java │ │ └── WpScanSchedulerPooler.java │ ├── security │ ├── AES.java │ └── JwtSecurity.java │ ├── service │ ├── AbstractDataService.java │ ├── ActionDataService.java │ ├── AnalyticsDataService.java │ ├── ApplicationDataService.java │ ├── ChangePasswordDataService.java │ ├── CommentDataService.java │ ├── DashboardDataService.java │ ├── DefaultRoleDataService.java │ ├── FilterDataService.java │ ├── FindingDataService.java │ ├── GitDataService.java │ ├── GroupDataService.java │ ├── HardcodeSecretDataService.java │ ├── JiraDetailDataService.java │ ├── JwtDataService.java │ ├── LanguageDataService.java │ ├── PermissionDataService.java │ ├── RepoDataService.java │ ├── ResetPasswordDataService.java │ ├── RoleDataService.java │ ├── SMTPDetailDataService.java │ ├── ScanDataService.java │ ├── ScanTypeDataService.java │ ├── ScheduleTypeDataService.java │ ├── SeverityLevelDataService.java │ ├── TagDataService.java │ ├── TaskDataService.java │ ├── ToolDataService.java │ ├── UploadDataService.java │ ├── UserDataService.java │ └── factories │ │ └── DataServiceBuilderFactory.java │ ├── tool │ └── interfaces │ │ ├── container │ │ └── manager │ │ │ ├── ActiveToolInstanceHealthCheck.java │ │ │ ├── ActiveToolInstanceManager.java │ │ │ ├── AutoScalingManager.java │ │ │ ├── AutoScalingTool.java │ │ │ ├── DockerContainer.java │ │ │ ├── DockerHealthCheck.java │ │ │ ├── HangedToolInstanceCheck.java │ │ │ ├── HangedToolInstanceManager.java │ │ │ └── MarathonClientManager.java │ │ ├── request │ │ ├── ScanRequest.java │ │ └── ScanRequestEncoder.java │ │ ├── response │ │ ├── ScanResponse.java │ │ ├── ScanResponseDecoder.java │ │ └── ToolResponse.java │ │ └── sdk │ │ └── bridge │ │ └── SdkCommunicator.java │ ├── utilities │ ├── DockerUtil.java │ ├── EmailOperations.java │ ├── FileOperations.java │ ├── GitUtil.java │ ├── JiraClient.java │ ├── ScanUtil.java │ └── ToolUtil.java │ └── validations │ ├── AbstractValidator.java │ ├── ChangePasswordValidator.java │ ├── DefaultRoleValidator.java │ ├── GitValidator.java │ ├── GroupValidator.java │ ├── HardcodeSecretValidator.java │ ├── JiraDetailValidator.java │ ├── PermissionValidator.java │ ├── RepoValidator.java │ ├── ResetPasswordValidator.java │ ├── RoleValidator.java │ ├── SMTPDetailValidator.java │ ├── ScanTypeValidator.java │ ├── ScanValidator.java │ ├── SchedulTypeValidator.java │ ├── SeverityLevelValidator.java │ ├── ToolValidator.java │ ├── UserValidator.java │ └── factories │ └── ValidatorBuilderFactory.java └── test └── java └── com └── olacabs └── jackhammer └── AppTest.java /.maven.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | ossrh 7 | ${env.SONATYPE_USERNAME} 8 | ${env.SONATYPE_PASSWORD} 9 | 10 | 11 | 12 | 13 | 14 | ossrh 15 | 16 | true 17 | 18 | 19 | ${env.GPG_EXECUTABLE} 20 | ${env.GPG_PASSPHRASE} 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | install: mvn clean install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V 3 | jdk: 4 | - openjdk8 5 | branches: 6 | only: 7 | - jch-v2 8 | deploy: 9 | provider: script 10 | script: "cp .maven.xml $HOME/.m2/settings.xml && mvn deploy" 11 | skip_cleanup: true 12 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | RUN rm -rf /var/lib/apt/lists/* && apt-get clean && apt-get update \ 4 | && apt-get install -y --no-install-recommends curl ca-certificates \ 5 | && apt-get install -y --no-install-recommends git \ 6 | && apt-get install -y --no-install-recommends openjdk-8-jdk \ 7 | && apt-get install -y --no-install-recommends maven \ 8 | && rm -rf /var/lib/apt/lists/* 9 | 10 | #RUN apt-get update 11 | #RUN apt-get install -y openjdk-8-jdk 12 | 13 | #RUN apt-get -y update 14 | #RUN apt-get install -y maven 15 | RUN apt-get update -qq && apt-get install -qqy \ 16 | apt-transport-https \ 17 | ca-certificates \ 18 | curl \ 19 | lxc \ 20 | iptables 21 | RUN curl -sSL https://get.docker.com/ | sh 22 | RUN mkdir -p /home/src/jch_server 23 | ENV WORKSPACE /home/src/jch_server 24 | WORKDIR $WORKSPACE 25 | COPY . /home/src/jch_server/ 26 | RUN mvn clean install 27 | EXPOSE 8080 28 | CMD java -jar -Xms500m -Xmx2920m $WORKSPACE/target/jch-server.jar server config.yml 29 | -------------------------------------------------------------------------------- /config.yml: -------------------------------------------------------------------------------- 1 | server: 2 | type: simple 3 | applicationContextPath: / 4 | connector: 5 | type: http 6 | port: 8080 7 | swagger: 8 | resourcePackage: com.olacabs.jackhammer.controllers 9 | database: 10 | driverClass: com.mysql.jdbc.Driver 11 | user: jch 12 | password: jch 13 | url: jdbc:mysql://mysqldb:3306/jackhammer 14 | logging: 15 | level: INFO 16 | jwtConfiguration: 17 | tokenExpirationTime: 60 # Number of minutes 18 | refreshTokenExpTime: 60 # Minutes 19 | tokenSigningKey: fgcahblofbemojbccicfnnggf 20 | tokenIssuer: jackhammer 21 | scanManagerConfiguration: 22 | threadPoolSize: 5 # 5 threads 23 | initialDelay: 60 # 30 seconds delay on startup 24 | period: 60 #seconds 25 | alertMails: 26 | wpScanAlerts: true 27 | webScanAlerts: false 28 | staticCodeScanAlerts: false 29 | hardcodeSecretScanAlerts: false 30 | networkScanAlerts: false 31 | mobileScanAlerts: false 32 | toolManagerConfiguration: 33 | threadPoolSize: 5 # 5 threads 34 | initialDelay: 60 # 30 seconds delay on startup 35 | period: 60 #seconds 36 | enableAutoScaling: true 37 | gitConfiguration: 38 | threadPoolSize: 5 # 5 threads 39 | initialDelay: 0 # 0 days delay on startup 40 | period: 1 #one day 41 | internalUrl: 42 | externalUrl: 43 | marathonConfiguration: 44 | endpoint: http://marathon:8080 45 | jchAppId: orc/jch-auth 46 | fileConfiguration: 47 | targetDirectory: uploads 48 | toolsDir: tools 49 | fileLimitSize: 1 50 | s3Configuration: 51 | accessKey: 52 | secretKey: 53 | bucketName: 54 | region: 55 | clientConfiguration: 56 | clientUrl: http://localhost:3004 57 | -------------------------------------------------------------------------------- /docker-build.sh: -------------------------------------------------------------------------------- 1 | if [ $# -eq 0 ]; then 2 | echo "Building project with out marathon configuraiton..." 3 | docker-compose -f docker-compose-with-no-marathon.yml build 4 | docker-compose -f docker-compose-with-no-marathon.yml up -d 5 | else 6 | echo "Building project with marathon configuraiton..." 7 | docker-compose -f docker-compose-with-marathon.yml build 8 | docker-compose -f docker-compose-with-marathon.yml up -d 9 | fi 10 | -------------------------------------------------------------------------------- /docker-compose-with-no-marathon.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | volumes: 3 | # We'll define a volume that will store the data from the mysql databases: 4 | mysql-data: 5 | driver: local 6 | services: 7 | mysqldb: 8 | image: mysql/mysql-server:5.7 9 | container_name: jackhammer-db 10 | environment: 11 | MYSQL_ROOT_PASSWORD: root 12 | MYSQL_USER: jch 13 | MYSQL_PASSWORD: jch 14 | MYSQL_DATABASE: jackhammer 15 | ports: 16 | - "3306:3306" 17 | networks: 18 | - jch_net 19 | volumes: 20 | - mysql-data:/var/lib/mysql 21 | - ./dump.sql:/docker-entrypoint-initdb.d/dump.sql 22 | restart: always 23 | jch-server: 24 | build: . 25 | ports: 26 | - "8081:8080" 27 | depends_on: 28 | - mysqldb 29 | links: 30 | - mysqldb 31 | networks: 32 | - jch_net 33 | environment: 34 | ENABLED_MARATHON: 'false' 35 | volumes: 36 | - /var/run/docker.sock:/var/run/docker.sock 37 | jch-client: 38 | image: jackhammer/jackhammer-client 39 | ports: 40 | - "5005:8080" 41 | links: 42 | - jch-server:jch-server 43 | depends_on: 44 | - jch-server 45 | networks: 46 | - jch_net 47 | networks: 48 | jch_net: 49 | driver: bridge 50 | ipam: 51 | driver: default 52 | config: 53 | - 54 | subnet: 172.16.121.0/24 55 | -------------------------------------------------------------------------------- /payloads/andro.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/andro", 3 | "cpus": 1, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/andro-scan-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { 14 | "containerPort": 8080, 15 | "hostPort": 0, 16 | "protocol": "tcp" 17 | } 18 | ] 19 | } 20 | }, 21 | "mem": 4096, 22 | "healthChecks": [ 23 | { 24 | "protocol": "COMMAND", 25 | "command": { 26 | "value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck" 27 | }, 28 | "gracePeriodSeconds": 300, 29 | "intervalSeconds": 60, 30 | "timeoutSeconds": 20, 31 | "maxConsecutiveFailures": 3, 32 | "ignoreHttp1xx": false 33 | } 34 | ], 35 | "env": { 36 | "SUPPORTED_PLATFORM": "Mobile", 37 | "MAX_ALLOWED_SCANS": "5", 38 | "S3_ACCESS_KEY": "S3_ACCESS_KEY", 39 | "S3_SECRET_KEY": "S3_SECRET_KEY", 40 | "S3_BUCKET": "your-s3-bucket", 41 | "S3_REGION": "bucket-region", 42 | "localSetup": "true" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /payloads/arachni.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/arachni", 3 | "cpus": 4.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/arachni-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 6144, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Web", 29 | "MAX_ALLOWED_SCANS": "4", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/bandit.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/bandit", 3 | "cpus": 4.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/bandit-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 4096, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Python", 29 | "MAX_ALLOWED_SCANS": "4", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/brakeman.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/brakeman", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/brakeman-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Ruby", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/bundle-audit.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/bundle-audit", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/bundle-audit-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Ruby", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "OsType": "windows", 31 | "localSetup": "true", 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /payloads/dawn-scanner.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/dawn-scanner", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/dawn-scanner-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Ruby", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/exakat.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/exakat", 3 | "cpus": 1.0, 4 | "instances": 1, 5 | "initialInstances": 1, 6 | "minInstances": 0, 7 | "maxInstances": 2, 8 | "container": { 9 | "type": "DOCKER", 10 | "docker": { 11 | "image": "jackhammer/exakat-provider", 12 | "network": "BRIDGE", 13 | "portMappings": [ 14 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 15 | ] 16 | } 17 | }, 18 | "mem": 4096, 19 | "healthChecks": [{ 20 | "protocol": "COMMAND", 21 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 22 | "gracePeriodSeconds": 300, 23 | "intervalSeconds": 60, 24 | "timeoutSeconds": 20, 25 | "maxConsecutiveFailures": 3, 26 | "ignoreHttp1xx": false 27 | }], 28 | "env": { 29 | "SUPPORTED_PLATFORM": "PHP", 30 | "MAX_ALLOWED_SCANS": "3", 31 | "localSetup": true 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /payloads/find-sec-bugs.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/findsecbugs", 3 | "cpus": 2.0, 4 | "initialInstances": 2, 5 | "minInstances": 1, 6 | "maxInstances": 3, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/findsecbug-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 4096, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Java", 29 | "MAX_ALLOWED_SCANS": "1", 30 | "localSetup": "true" 31 | "MAX_HEAP_SIZE": 3000 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /payloads/nmap.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/nmap", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/nmap-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Network", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/nsp.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/nsp", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/nsp-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "JavaScript", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/retire.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/retire", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/retirejs-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "JavaScript", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/truffle-hog.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/truffle-hog", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/truffle-hog-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [{ 13 | "containerPort": 8080, 14 | "hostPort": 0, 15 | "protocol": "tcp" 16 | }] 17 | } 18 | }, 19 | "mem": 4064, 20 | "healthChecks": [{ 21 | "protocol": "COMMAND", 22 | "command": { 23 | "value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck" 24 | }, 25 | "gracePeriodSeconds": 300, 26 | "intervalSeconds": 60, 27 | "timeoutSeconds": 20, 28 | "maxConsecutiveFailures": 3, 29 | "ignoreHttp1xx": false 30 | }], 31 | "env": { 32 | "SUPPORTED_PLATFORM": "Hardcoded Secret", 33 | "MAX_ALLOWED_SCANS": "3", 34 | "localSetup": "true" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /payloads/wpscan.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/wpscan", 3 | "cpus": 1.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "jackhammer/wp-scan-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 2048, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Wordpress", 29 | "MAX_ALLOWED_SCANS": "5", 30 | "localSetup": "true" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /payloads/xanitizer.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "jackhammer/xanitizer", 3 | "cpus": 4.0, 4 | "initialInstances": 1, 5 | "minInstances": 0, 6 | "maxInstances": 2, 7 | "container": { 8 | "type": "DOCKER", 9 | "docker": { 10 | "image": "localhost:5000/xanitizer-provider", 11 | "network": "BRIDGE", 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0,"protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "mem": 4096, 18 | "healthChecks": [{ 19 | "protocol": "COMMAND", 20 | "command": {"value": "curl -f -X GET http://127.0.0.1:8080/admin/healthcheck"}, 21 | "gracePeriodSeconds": 300, 22 | "intervalSeconds": 60, 23 | "timeoutSeconds": 20, 24 | "maxConsecutiveFailures": 3, 25 | "ignoreHttp1xx": false 26 | }], 27 | "env": { 28 | "SUPPORTED_PLATFORM": "Java", 29 | "MAX_ALLOWED_SCANS": "3", 30 | "localSetup": true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/application/DBFactory.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.application; 2 | 3 | import org.skife.jdbi.v2.DBI; 4 | 5 | import com.olacabs.jackhammer.exceptions.DBConfigIntializationRequired; 6 | 7 | public class DBFactory { 8 | private static DBI dbi; 9 | protected DBFactory(DBI dbi) { 10 | DBFactory.dbi = dbi; 11 | } 12 | public static DBI getDBI(){ 13 | if(null != dbi){ 14 | return dbi; 15 | } 16 | throw new DBConfigIntializationRequired(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/common/HttpKeys.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.common; 2 | 3 | public class HttpKeys { 4 | public static final String ACCESS_TOKEN = "accessToken"; 5 | public static final String AUTHORIZATION = "Authorization"; 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/common/HttpResponseCodes.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.common; 2 | 3 | public class HttpResponseCodes { 4 | 5 | public static final int BAD_REQUEST = 400; 6 | public static final int FORBIDDEN = 403; 7 | public static final int UNAUTHORIZED = 401; 8 | public static final int FAILED = 424; 9 | public static final int INTERNAL_ERROR = 500; 10 | public static int HTTP_RESPONSE_SUCCESS = 200; 11 | public static int HTTP_RESPONSE_LOCKED = 423; 12 | public static int HTTP_CONTINUE = 100; 13 | public static int REDIRECT = 302; 14 | public static int ACCEPTED = 202; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/common/HttpResponseMessages.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.common; 2 | 3 | public class HttpResponseMessages { 4 | public static final String FORBIDDEN = "Access Denied"; 5 | public static final String LOCKED = "Resource Access locked"; 6 | public static final String UNAUTHORIZED = "The Credential provided is not valid or expired"; 7 | public static final String FAILED = "Request failed please retry"; 8 | public static String HTTP_RESPONSE_SUCCESS = "The Request is completed Successfully"; 9 | public static String HTTP_RESPONSE_REDIRECT = "The Request is completed Successfully but server requires the client redirect"; 10 | public static String QUERY_FAILED = "The requested data is not available"; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/ClientConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class ClientConfiguration { 8 | @NotNull 9 | @JsonProperty 10 | private String clientUrl; 11 | 12 | 13 | public String getClientUrl() { 14 | return clientUrl; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/FileConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class FileConfiguration { 8 | 9 | @NotNull 10 | @JsonProperty 11 | private String targetDirectory; 12 | 13 | @NotNull 14 | @JsonProperty 15 | float fileLimitSize; 16 | 17 | @NotNull 18 | @JsonProperty 19 | String toolsDir; 20 | 21 | public String getTargetDirectory() { 22 | return targetDirectory; 23 | } 24 | public float getFileLimitSize() { return fileLimitSize;} 25 | public String getToolsDir() { return toolsDir;} 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/GitConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class GitConfiguration extends ThreadPoolConfiguration { 8 | @NotNull 9 | @JsonProperty 10 | private String internalUrl; 11 | 12 | @NotNull 13 | @JsonProperty 14 | private String externalUrl; 15 | 16 | public String getExternalUrl() { 17 | return externalUrl; 18 | } 19 | 20 | public String getInternalUrl() { 21 | return internalUrl; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/JwtConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import javax.validation.constraints.NotNull; 4 | 5 | import com.fasterxml.jackson.annotation.JsonProperty; 6 | 7 | public class JwtConfiguration { 8 | 9 | @NotNull 10 | @JsonProperty 11 | private Integer tokenExpirationTime; 12 | 13 | @NotNull 14 | @JsonProperty 15 | private String tokenSigningKey; 16 | 17 | @NotNull 18 | @JsonProperty 19 | private Integer refreshTokenExpTime; 20 | 21 | @NotNull 22 | @JsonProperty 23 | private String tokenIssuer; 24 | 25 | 26 | 27 | public Integer getRefreshTokenExpTime() { 28 | return refreshTokenExpTime; 29 | } 30 | 31 | public Integer getTokenExpirationTime() { 32 | return tokenExpirationTime; 33 | } 34 | 35 | public String getTokenSigningKey() { 36 | return tokenSigningKey; 37 | } 38 | 39 | public String getTokenIssuer() { 40 | return tokenIssuer; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/MarathonConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class MarathonConfiguration { 8 | 9 | @NotNull 10 | @JsonProperty 11 | private String endpoint; 12 | 13 | @NotNull 14 | @JsonProperty 15 | private String jchAppId; 16 | 17 | public String getEndpoint() { 18 | return endpoint; 19 | } 20 | public String getJchAppId() {return jchAppId; } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/S3Configuration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class S3Configuration { 8 | 9 | @NotNull 10 | @JsonProperty 11 | private String accessKey; 12 | 13 | @NotNull 14 | @JsonProperty 15 | private String secretKey; 16 | 17 | @NotNull 18 | @JsonProperty 19 | private String bucketName; 20 | 21 | @NotNull 22 | @JsonProperty 23 | private String region; 24 | 25 | 26 | public String getAccessKey() { 27 | return accessKey; 28 | } 29 | 30 | public String getSecretKey() { 31 | return secretKey; 32 | } 33 | 34 | public String getBucketName() { 35 | return bucketName; 36 | } 37 | 38 | public String getRegion() { 39 | return region; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/ScanMangerConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class ScanMangerConfiguration extends ThreadPoolConfiguration { 8 | 9 | @NotNull 10 | @JsonProperty 11 | private String alertMails; 12 | 13 | @NotNull 14 | @JsonProperty 15 | private Boolean wpScanAlerts; 16 | 17 | @NotNull 18 | @JsonProperty 19 | private Boolean webScanAlerts; 20 | 21 | @NotNull 22 | @JsonProperty 23 | private Boolean staticCodeScanAlerts; 24 | 25 | 26 | @NotNull 27 | @JsonProperty 28 | private Boolean hardcodeSecretScanAlerts; 29 | 30 | @NotNull 31 | @JsonProperty 32 | private Boolean mobileScanAlerts; 33 | 34 | 35 | @NotNull 36 | @JsonProperty 37 | private Boolean networkScanAlerts; 38 | 39 | public String getAlertMails() { 40 | return alertMails; 41 | } 42 | 43 | public Boolean getStaticCodeScanAlerts() { 44 | return staticCodeScanAlerts; 45 | } 46 | 47 | public Boolean getHardcodeSecretScanAlerts() { 48 | return hardcodeSecretScanAlerts; 49 | } 50 | 51 | public Boolean getNetworkScanAlerts() { 52 | return networkScanAlerts; 53 | } 54 | 55 | public Boolean getMobileScanAlerts() { 56 | return mobileScanAlerts; 57 | } 58 | 59 | public Boolean getWebScanAlerts() { 60 | return webScanAlerts; 61 | } 62 | 63 | public Boolean getWpScanAlerts() { 64 | return wpScanAlerts; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/ThreadPoolConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class ThreadPoolConfiguration { 8 | 9 | @NotNull 10 | @JsonProperty 11 | private Integer threadPoolSize; 12 | 13 | @NotNull 14 | @JsonProperty 15 | private Integer initialDelay; 16 | 17 | @NotNull 18 | @JsonProperty 19 | private Integer period; 20 | 21 | public Integer getThreadPoolSize() { 22 | return threadPoolSize; 23 | } 24 | 25 | public Integer getInitialDelay() { 26 | return initialDelay; 27 | } 28 | 29 | public Integer getPeriod() { 30 | return period; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/ToolManagerConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | public class ToolManagerConfiguration extends ThreadPoolConfiguration { 8 | @NotNull 9 | @JsonProperty 10 | private Boolean enableAutoScaling; 11 | 12 | public Boolean getEnableAutoScaling() { 13 | return enableAutoScaling; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/configuration/WebSocketsConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.configuration; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.Injector; 5 | 6 | import javax.websocket.server.ServerEndpointConfig.Configurator; 7 | 8 | 9 | public class WebSocketsConfiguration extends Configurator { 10 | 11 | @Inject 12 | private static Injector injector; 13 | 14 | @Override 15 | public T getEndpointInstance(Class endpointClass) throws InstantiationException { 16 | return injector.getInstance(endpointClass); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/controllers/AnalyticsController.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.controllers; 2 | 3 | import com.olacabs.jackhammer.common.HttpKeys; 4 | import com.olacabs.jackhammer.enums.Handler; 5 | import com.olacabs.jackhammer.models.Analytics; 6 | import lombok.extern.slf4j.Slf4j; 7 | 8 | import javax.validation.Valid; 9 | import javax.ws.rs.*; 10 | import javax.ws.rs.core.MediaType; 11 | import javax.ws.rs.core.Response; 12 | 13 | @Path("/api/v1/app/analytics") 14 | @Consumes(MediaType.APPLICATION_JSON) 15 | @Produces(MediaType.APPLICATION_JSON) 16 | @Slf4j 17 | public class AnalyticsController extends BaseController { 18 | 19 | @POST 20 | @Path("/view") 21 | public Response getAll(@Valid Analytics analytics,@HeaderParam(HttpKeys.AUTHORIZATION) String userToken) { 22 | try { 23 | analytics.setUserToken(userToken); 24 | return this.getHandlerFactory().getHandler(Handler.ANALYTICS_SERVICE).getAllRecords(analytics); 25 | } catch (Exception e){ 26 | log.error("Error while getting analytics =>" , e); 27 | return this.getExceptionHandler().handle(e); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/controllers/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.controllers; 2 | 3 | import javax.ws.rs.Consumes; 4 | import javax.ws.rs.Produces; 5 | import javax.ws.rs.core.MediaType; 6 | 7 | 8 | import com.google.inject.Inject; 9 | 10 | import com.olacabs.jackhammer.exceptions.handlers.ExceptionHandler; 11 | import com.olacabs.jackhammer.handler.factories.HandlerFactory; 12 | 13 | import lombok.Data; 14 | import lombok.extern.slf4j.Slf4j; 15 | 16 | @Data 17 | @Produces(MediaType.APPLICATION_JSON) 18 | @Consumes(MediaType.APPLICATION_JSON) 19 | @Slf4j 20 | public abstract class BaseController { 21 | 22 | @Inject 23 | private HandlerFactory handlerFactory; 24 | 25 | @Inject 26 | private ExceptionHandler exceptionHandler; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/controllers/FiltersController.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.controllers; 2 | 3 | 4 | import com.olacabs.jackhammer.common.HttpKeys; 5 | import com.olacabs.jackhammer.enums.Handler; 6 | import com.olacabs.jackhammer.models.Filter; 7 | import com.olacabs.jackhammer.models.Finding; 8 | import com.wordnik.swagger.annotations.Api; 9 | import lombok.extern.slf4j.Slf4j; 10 | 11 | import javax.validation.Valid; 12 | import javax.ws.rs.*; 13 | import javax.ws.rs.core.MediaType; 14 | import javax.ws.rs.core.Response; 15 | 16 | @Api 17 | @Path("/api/v1/app/filters") 18 | @Produces(MediaType.APPLICATION_JSON) 19 | @Consumes(MediaType.APPLICATION_JSON) 20 | @Slf4j 21 | public class FiltersController extends BaseController { 22 | 23 | @POST 24 | @Path("/list") 25 | public Response getAll(@Valid Filter filter,@HeaderParam(HttpKeys.AUTHORIZATION) String userToken) { 26 | try { 27 | filter.setUserToken(userToken); 28 | return this.getHandlerFactory().getHandler(Handler.FILTER_SERVICE).getAllRecords(filter); 29 | } catch (Exception e) { 30 | log.error("Error while getting filter results =>", e); 31 | return this.getExceptionHandler().handle(e); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/ActionDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.Action; 4 | import com.olacabs.jackhammer.models.mapper.ActionMapper; 5 | import org.skife.jdbi.v2.sqlobject.*; 6 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 7 | 8 | import java.util.List; 9 | 10 | @RegisterMapper(ActionMapper.class) 11 | public interface ActionDAO extends CrudDAO { 12 | @SqlQuery("select * from actions") 13 | List getAll(); 14 | 15 | @SqlQuery("select * from actions where id=:id") 16 | Action get(@Bind("id") long id); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/BranchDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.Branch; 4 | import com.olacabs.jackhammer.models.mapper.BranchMapper; 5 | import org.skife.jdbi.v2.sqlobject.*; 6 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 7 | 8 | import java.util.List; 9 | 10 | @RegisterMapper(BranchMapper.class) 11 | public interface BranchDAO extends CrudDAO { 12 | 13 | @SqlUpdate("insert into branches(name,repoId) " + 14 | "values(:name,:userId,:groupId,:repoId,:branchId,:scanType)") 15 | @GetGeneratedKeys 16 | int insert(@BindBean Branch branch); 17 | 18 | @SqlQuery("select * from branches") 19 | List getAll(); 20 | 21 | @SqlQuery("select * from branches where id=:id") 22 | Branch get(@Bind("id") long id); 23 | 24 | @SqlUpdate("delete from branches where id=:id") 25 | void delete(@Bind("id") long id); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/CrudDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.AbstractModel; 4 | 5 | public interface CrudDAO { 6 | 7 | T get(long id); 8 | 9 | T save(T instance); 10 | 11 | void delete(long id); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/DefaultRoleDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.DefaultRole; 4 | import com.olacabs.jackhammer.models.mapper.DefaultRoleMapper; 5 | import org.skife.jdbi.v2.sqlobject.BindBean; 6 | import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | 12 | @RegisterMapper(DefaultRoleMapper.class) 13 | public interface DefaultRoleDAO extends CrudDAO { 14 | 15 | @SqlUpdate("insert into defaultRole(roleId) " + 16 | "values(:roleId)") 17 | @GetGeneratedKeys 18 | int insert(@BindBean DefaultRole defaultRole); 19 | 20 | @SqlQuery("select * from defaultRole limit 1") 21 | DefaultRole get(); 22 | 23 | @SqlUpdate("update defaultRole set roleId=:roleId") 24 | void update(@BindBean DefaultRole defaultRole); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/FindingTagDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.FindingTag; 4 | import com.olacabs.jackhammer.models.mapper.FindingTagMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | import java.util.List; 12 | 13 | 14 | @RegisterMapper(FindingTagMapper.class) 15 | public interface FindingTagDAO { 16 | 17 | @SqlUpdate("insert into findingsTags (findingId, tagId) values (:ft.findingId, :ft.tagId)") 18 | long insert(@BindBean("ft") FindingTag findingTag); 19 | 20 | @SqlQuery("select * from findingsTags where findingId=:findingId and isDeleted=false") 21 | List findByFindingId(@Bind("findingId") long findingId); 22 | 23 | @SqlUpdate("update findingsTags set isDeleted=true where findingId = :ft.findingId and tagId = :ft.tagId") 24 | void delete(@BindBean("ft") FindingTag findingTag); 25 | 26 | @SqlUpdate("update findingsTags set isDeleted=true where findingId= :findingId") 27 | void deleteByFindingId(@Bind("findingId") long findingId); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/GitDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.Git; 4 | import com.olacabs.jackhammer.models.mapper.GitMapper; 5 | import org.skife.jdbi.v2.sqlobject.*; 6 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 7 | 8 | 9 | @RegisterMapper(GitMapper.class) 10 | public interface GitDAO extends CrudDAO { 11 | 12 | @SqlUpdate("insert into git(userName,gitEndPoint,apiAccessToken,gitType,organizationName) " + 13 | "values(:userName,:gitEndPoint,:apiAccessToken,:gitType,:organizationName)") 14 | @GetGeneratedKeys 15 | int insert(@BindBean Git git); 16 | 17 | @SqlQuery("select * from git limit 1") 18 | Git get(); 19 | 20 | @SqlUpdate("update git set gitType=:gitType,organizationName=:organizationName," + 21 | "userName=:userName,gitEndPoint=:gitEndPoint,apiAccessToken=:apiAccessToken") 22 | void update(@BindBean Git git); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/GroupRoleDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.GroupRole; 4 | import com.olacabs.jackhammer.models.mapper.GroupRoleMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | 10 | import java.util.List; 11 | 12 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 13 | 14 | @RegisterMapper(GroupRoleMapper.class) 15 | public interface GroupRoleDAO { 16 | 17 | @SqlUpdate("insert into groupsRoles (groupId, roleId) values (:rp.groupId, :rp.roleId)") 18 | long insert(@BindBean("rp") GroupRole groupRole); 19 | 20 | @SqlQuery("select * from groupsRoles where groupId=:groupId and isDeleted=true") 21 | List findByGroupId(@Bind("groupId") long groupId); 22 | 23 | @SqlUpdate("update groupsRoles set isDeleted=true where roleId = :g.roleId and groupId = :g.groupId") 24 | void delete(@BindBean("g") GroupRole groupRole); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/GroupUserDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.GroupUser; 4 | import com.olacabs.jackhammer.models.mapper.GroupUserMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | import java.util.List; 12 | 13 | 14 | @RegisterMapper(GroupUserMapper.class) 15 | public interface GroupUserDAO { 16 | 17 | @SqlUpdate("insert into groupsUsers (groupId, userId) values (:gu.groupId, :gu.userId)") 18 | long insert(@BindBean("gu") GroupUser groupUser); 19 | 20 | @SqlQuery("select * from groupsUsers where userId=:userId and isDeleted=false") 21 | List findByUserId(@Bind("userId") long userId); 22 | 23 | @SqlUpdate("update groupsUsers set isDeleted=true where groupId = :gu.groupId and userId = :gu.userId") 24 | void delete(@BindBean("gu") GroupUser groupUser); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/HardcodeSecretDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.HardcodeSecret; 4 | import com.olacabs.jackhammer.models.mapper.HardcodeSecretMapper; 5 | import org.skife.jdbi.v2.sqlobject.BindBean; 6 | import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | 12 | @RegisterMapper(HardcodeSecretMapper.class) 13 | public interface HardcodeSecretDAO extends CrudDAO { 14 | 15 | @SqlUpdate("insert into hardcodeSecrets(commitsDepth,commitsStartDate,regex) " + 16 | "values(:commitsDepth,:commitsStartDate,:regex)") 17 | @GetGeneratedKeys 18 | int insert(@BindBean HardcodeSecret hardcodeSecret); 19 | 20 | @SqlQuery("select * from hardcodeSecrets limit 1") 21 | HardcodeSecret get(); 22 | 23 | @SqlUpdate("update hardcodeSecrets set commitsDepth=:commitsDepth,commitsStartDate=:commitsStartDate,regex=:regex") 24 | void update(@BindBean HardcodeSecret hardcodeSecret); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/JiraDetailDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.JiraDetail; 4 | 5 | import com.olacabs.jackhammer.models.mapper.JiraDetailMapper; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys; 8 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 9 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 10 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 11 | 12 | @RegisterMapper(JiraDetailMapper.class) 13 | public interface JiraDetailDAO extends CrudDAO { 14 | 15 | @SqlUpdate("insert into jira(host,userName,password,defaultProject) " + 16 | "values(:host,:userName,:password,:defaultProject)") 17 | @GetGeneratedKeys 18 | int insert(@BindBean JiraDetail jiraDetail); 19 | 20 | @SqlQuery("select * from jira limit 1") 21 | JiraDetail get(); 22 | 23 | @SqlUpdate("update jira set host=:host,userName=:userName," + 24 | "password=:password,defaultProject=:defaultProject") 25 | void update(@BindBean JiraDetail jiraDetail); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/JwtTokenDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.JwtToken; 4 | 5 | import com.olacabs.jackhammer.models.mapper.JwtTokenMapper; 6 | import org.skife.jdbi.v2.sqlobject.*; 7 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 8 | 9 | 10 | @RegisterMapper(JwtTokenMapper.class) 11 | public interface JwtTokenDAO extends CrudDAO { 12 | 13 | @SqlUpdate("insert into jwtTokens (id,tokenValidFrom,tokenValidUntil,userId,createdAt,updatedAt,deleted,version) " + 14 | "values (:id, :tokenValidFrom,:tokenValidUntil,:userId,:createdAt,:updatedAt,:deleted,:version)") 15 | @GetGeneratedKeys 16 | int insert(@BindBean JwtToken jwtToken); 17 | 18 | @SqlQuery("select * from jwttokens where id=:id") 19 | JwtToken get(@Bind("id") long id); 20 | 21 | @SqlUpdate("update jwtTokens set deleted=true where userId=:userId") 22 | void delete(@Bind("userId") long userId); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/OwnerTypeDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.OwnerType; 4 | import com.olacabs.jackhammer.models.mapper.OwnerTypeMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 7 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 8 | 9 | import java.util.List; 10 | 11 | @RegisterMapper(OwnerTypeMapper.class) 12 | public interface OwnerTypeDAO extends CrudDAO { 13 | @SqlQuery("select * from ownerTypes") 14 | List getAll(); 15 | 16 | @SqlQuery("select * from ownerTypes where id=:id") 17 | OwnerType get(@Bind("id") long id); 18 | 19 | 20 | @SqlQuery("select * from ownerTypes where name=:name") 21 | OwnerType getByName(@Bind("name") String name); 22 | 23 | @SqlQuery("select * from ownerTypes where isDefault=true") 24 | OwnerType getDefaultOwnerType(); 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/PermissionRoleDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.PermissionRole; 4 | import com.olacabs.jackhammer.models.mapper.RolePermissionMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | import java.util.List; 12 | 13 | 14 | @RegisterMapper(RolePermissionMapper.class) 15 | public interface PermissionRoleDAO { 16 | 17 | @SqlUpdate("insert into permissionsRoles (roleId, permissionId) values (:rp.roleId, :rp.permissionId)") 18 | long insert(@BindBean("rp") PermissionRole rolePermission); 19 | 20 | @SqlQuery("select * from permissionsRoles where roleId=:roleId") 21 | List findByRoleId(@Bind("roleId") long roleId); 22 | 23 | @SqlUpdate("delete from permissionsRoles where roleId = :rp.roleId and permissionId = :rp.permissionId") 24 | void delete(@BindBean("rp") PermissionRole rolePermission); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/RoleTaskDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.RoleTask; 4 | import com.olacabs.jackhammer.models.mapper.RoleTaskMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | import java.util.List; 12 | 13 | @RegisterMapper(RoleTaskMapper.class) 14 | public interface RoleTaskDAO { 15 | @SqlQuery("select * from rolesTasks where roleId=:roleId and isDeleted=false") 16 | List findByRoleId(@Bind("roleId") long roleId); 17 | 18 | @SqlUpdate("insert into rolesTasks(roleId,taskId) values(:rt.roleId,:rt.taskId)") 19 | void insert(@BindBean("rt") RoleTask roleTask); 20 | 21 | @SqlUpdate("update rolesTasks set isDeleted=true where roleId = :rt.roleId and taskId = :rt.taskId") 22 | void delete(@BindBean("rt") RoleTask roleTask); 23 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/RoleUserDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.RoleUser; 4 | import com.olacabs.jackhammer.models.mapper.RoleUserMapper; 5 | import org.skife.jdbi.v2.sqlobject.Bind; 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 9 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 10 | 11 | import java.util.List; 12 | 13 | @RegisterMapper(RoleUserMapper.class) 14 | public interface RoleUserDAO { 15 | 16 | @SqlUpdate("insert into rolesUsers(roleId,userId) values(:roleId,:userId)") 17 | int insert(@BindBean RoleUser roleUser); 18 | 19 | @SqlQuery("select * from rolesUsers where userId=:userId and isDeleted=false") 20 | List findByUserId(@Bind("userId") long userId); 21 | 22 | @SqlUpdate("update rolesUsers set isDeleted=true where roleId = :ru.roleId and userId = :ru.userId") 23 | void delete(@BindBean("ru") RoleUser roleUser); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/SMTPDetailDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.SMTPDetail; 4 | import com.olacabs.jackhammer.models.mapper.SMTPDetailMapper; 5 | 6 | import org.skife.jdbi.v2.sqlobject.BindBean; 7 | import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys; 8 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 9 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 10 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 11 | 12 | 13 | @RegisterMapper(SMTPDetailMapper.class) 14 | public interface SMTPDetailDAO extends CrudDAO { 15 | 16 | @SqlUpdate("insert into smtp(applicationUrl,smtpHost,smtpUserName,smtpPassword,smtpPort) " + 17 | "values(:applicationUrl,:smtpHost,:smtpUserName,:smtpPassword,:smtpPort)") 18 | @GetGeneratedKeys 19 | int insert(@BindBean SMTPDetail smtpDetail); 20 | 21 | @SqlQuery("select * from smtp limit 1") 22 | SMTPDetail get(); 23 | 24 | @SqlUpdate("update smtp set applicationUrl=:applicationUrl,smtpHost=:smtpHost," + 25 | "smtpUserName=:smtpUserName,smtpPassword=:smtpPassword,smtpPort=:smtpPort") 26 | void update(@BindBean SMTPDetail smtpDetail); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/ScheduleTypeDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.ScheduleType; 4 | import com.olacabs.jackhammer.models.mapper.ScheduleTypeMapper; 5 | import org.skife.jdbi.v2.sqlobject.*; 6 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 7 | 8 | import java.util.List; 9 | 10 | 11 | @RegisterMapper(ScheduleTypeMapper.class) 12 | public interface ScheduleTypeDAO extends CrudDAO { 13 | 14 | @SqlUpdate("insert into scheduleTypes(id,name,days) " + 15 | "values(:id, :name,:days)") 16 | @GetGeneratedKeys 17 | int insert(@BindBean ScheduleType scheduleType); 18 | 19 | @SqlQuery("select * from scheduleTypes") 20 | List getAll(); 21 | 22 | @SqlQuery("select * from scheduleTypes where name=:name") 23 | ScheduleType findScheduleByName(@Bind("name") String name); 24 | 25 | @SqlUpdate("delete from scheduleTypes where id=:id") 26 | void update(@BindBean ScheduleType scheduleType); 27 | 28 | @SqlUpdate("delete from scheduleTypes where id=:id") 29 | void delete(@Bind("id") long id); 30 | 31 | @SqlQuery("select * from scheduleTypes where id=:id") 32 | ScheduleType get(@Bind("id") long id); 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/SeverityLevelDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.SeverityLevel; 4 | import com.olacabs.jackhammer.models.mapper.SeverityLevelMapper; 5 | import org.skife.jdbi.v2.sqlobject.BindBean; 6 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 7 | import org.skife.jdbi.v2.sqlobject.SqlUpdate; 8 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 9 | 10 | import java.util.List; 11 | 12 | 13 | @RegisterMapper(SeverityLevelMapper.class) 14 | public interface SeverityLevelDAO extends CrudDAO { 15 | 16 | @SqlQuery("select * from severityLevels limit 1") 17 | SeverityLevel get(); 18 | 19 | 20 | @SqlQuery("select * from severityLevels") 21 | List getAll(); 22 | 23 | @SqlUpdate("update severityLevels set enabled=:enabled where id=:id") 24 | void updateSeverityStatus(@BindBean SeverityLevel severityLevel); 25 | 26 | @SqlUpdate("update severityLevels set threshHoldCount=:threshHoldCount,mailIds=:mailIds where name=:name") 27 | void updateSeverityMailConfig(@BindBean SeverityLevel severityLevel); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/TagDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.Tag; 4 | import com.olacabs.jackhammer.models.mapper.TagMapper; 5 | import org.skife.jdbi.v2.sqlobject.*; 6 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 7 | import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator; 8 | 9 | import java.util.List; 10 | 11 | @UseStringTemplate3StatementLocator 12 | @RegisterMapper(TagMapper.class) 13 | public interface TagDAO extends CrudDAO { 14 | 15 | @SqlUpdate("insert into tags(name,userId) " + 16 | "values(:name,:userId)") 17 | @GetGeneratedKeys 18 | int insert(@BindBean Tag tag); 19 | 20 | @SqlQuery("select * from tags order by createdAt") 21 | List getAll(); 22 | 23 | @SqlQuery("select * from tags order by createdAt") 24 | List getFindingTags(); 25 | 26 | @SqlQuery("select * from tags where id=:id") 27 | Tag get(@Bind("id") long id); 28 | 29 | @SqlQuery("select * from tags where name=:name") 30 | Tag findTagByName(@Bind("name") String name); 31 | 32 | @SqlUpdate("update roles set name=:name where id=:id ") 33 | void update(@BindBean Tag tag); 34 | 35 | @SqlUpdate("update tags set isDeleted=true where id=:id") 36 | void delete(@Bind("id") long id); 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/TagDAOJdbi.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | public class TagDAOJdbi { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/TaskDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.Task; 4 | import com.olacabs.jackhammer.models.mapper.TaskMapper; 5 | import org.apache.commons.lang3.StringUtils; 6 | import org.skife.jdbi.v2.sqlobject.Bind; 7 | import org.skife.jdbi.v2.sqlobject.SqlQuery; 8 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 9 | 10 | import java.util.List; 11 | import java.util.Set; 12 | 13 | @RegisterMapper(TaskMapper.class) 14 | public interface TaskDAO extends CrudDAO { 15 | @SqlQuery("select * from tasks where actionId=:actionId and parentId is null and hideFromUi=false order by id") 16 | List getParentTasks(@Bind("actionId") long actionId); 17 | 18 | @SqlQuery("select * from tasks where actionId=:actionId and parentId is null") 19 | List getRolesPageParentTasks(@Bind("actionId") long actionId); 20 | 21 | @SqlQuery("select * from tasks where parentId=:parentId") 22 | List getChildTasks(@Bind("parentId") long parentId); 23 | 24 | @SqlQuery("select * from tasks where id=:parentId") 25 | Task getParentTask(@Bind("parentId") long parentId); 26 | 27 | @SqlQuery("select * from tasks where id=:id") 28 | Task getTask(@Bind("id") long id); 29 | 30 | @SqlQuery("select * from tasks") 31 | List getAll(); 32 | 33 | @SqlQuery("select * from tasks where accessToAll=true") 34 | List defaultTasks(); 35 | 36 | @SqlQuery("select * from tasks where ownerTypeId=:ownerTypeId and name like concat('%', :name,'%')") 37 | Task getCurrentTask(@Bind("name") String name,@Bind("ownerTypeId") long ownerTypeId); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/db/UploadDAO.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.db; 2 | 3 | import com.olacabs.jackhammer.models.Finding; 4 | import com.olacabs.jackhammer.models.Upload; 5 | import com.olacabs.jackhammer.models.mapper.UploadMapper; 6 | import org.skife.jdbi.v2.sqlobject.*; 7 | import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; 8 | 9 | import java.util.List; 10 | 11 | @RegisterMapper(UploadMapper.class) 12 | public interface UploadDAO extends CrudDAO { 13 | 14 | @SqlUpdate("insert into uploads(name,userId,findingId) " + 15 | "values(:name,:userId,:findingId)") 16 | int insert(@BindBean Upload upload); 17 | 18 | @SqlQuery("select * from uploads where id=:id") 19 | Upload get(@Bind("id") long id); 20 | 21 | @SqlQuery("select * from uploads where findingId=:findingId and isDeleted=false") 22 | List getAll(@BindBean Upload upload); 23 | 24 | @SqlUpdate("update uploads set id=:id where id=:id") 25 | void update(@BindBean Finding finding); 26 | 27 | 28 | @SqlUpdate("update uploads set isDeleted=true where findingId=:findingId") 29 | void deleteFindingUploads(@Bind("findingId") long findingId); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/enums/Handler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.enums; 2 | 3 | public enum Handler { 4 | USER_ACCOUNT_SERVICE, 5 | CHANGE_PASSWORD_SERVICE, 6 | RESET_PASSWORD_SERVICE, 7 | USER_SERVICE, 8 | GROUP_SERVICE, 9 | JWT_SERVICE, 10 | ROLE_SERVICE, 11 | PERMISSION_SERVICE, 12 | REPO_SERVICE, 13 | SCAN_SERVICE, 14 | FINDING_SERVICE, 15 | SCHEDULE_TYPE_SERVICE, 16 | LANGUAGE_SERVICE, 17 | TOOL_SERVICE, 18 | COMMENT_SERVICE, 19 | TAG_SERVICE, 20 | UPLOAD_SERVICE, 21 | SCAN_TYPE_SERVICE, 22 | FILTER_SERVICE, 23 | ACTION_SERVICE, 24 | TASK_SERVICE, 25 | GIT_SERVICE, 26 | SMTP_SERVICE, 27 | JIRA_SERVICE, 28 | DEFAULT_ROLE_SERVICE, 29 | SEVERITY_LEVEL_SERVICE, 30 | HARD_CODE_SECRET_SERVICE, 31 | DASHBOARD_SERVICE, 32 | APPLICATION_SERVICE, 33 | ANALYTICS_SERVICE 34 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/enums/Severities.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.enums; 2 | 3 | public enum Severities { 4 | CRITICAL, 5 | HIGH, 6 | MEDIUM, 7 | LOW, 8 | INFO 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/AbstractException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import lombok.Data; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | public class AbstractException extends Exception { 11 | private CustomErrorCodes code; 12 | public AbstractException(String message, Throwable t,CustomErrorCodes code) { 13 | super(message,t); 14 | this.code = code; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/DBConfigIntializationRequired.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | public class DBConfigIntializationRequired extends RuntimeException { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/DataServiceNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class DataServiceNotFoundException extends AbstractException { 6 | public DataServiceNotFoundException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/GitCloneException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class GitCloneException extends AbstractException { 6 | 7 | public GitCloneException(String message, Throwable t, CustomErrorCodes code) { 8 | super(message, t, code); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/HandlerNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class HandlerNotFoundException extends AbstractException { 6 | 7 | public HandlerNotFoundException(String message, Throwable t, CustomErrorCodes code) { 8 | super(message, t, code); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/InternalException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class InternalException extends AbstractException { 6 | 7 | public InternalException(String message, Throwable t, CustomErrorCodes code) { 8 | super(message, t, code); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/InvalidApplicationUrlException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class InvalidApplicationUrlException extends AbstractException { 6 | public InvalidApplicationUrlException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/InvalidHostException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class InvalidHostException extends AbstractException { 6 | public InvalidHostException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/InvalidSmtpHost.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class InvalidSmtpHost extends AbstractException { 6 | public InvalidSmtpHost(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/InvalidTokenException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class InvalidTokenException extends AbstractException { 6 | 7 | public InvalidTokenException(String message, Throwable t, CustomErrorCodes code) { 8 | super(message, t, code); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/InvalidcredentialException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class InvalidcredentialException extends AbstractException { 6 | public InvalidcredentialException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/MarathonNotRunning.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class MarathonNotRunning extends AbstractException { 6 | public MarathonNotRunning(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/OperationFailedException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class OperationFailedException extends AbstractException { 6 | 7 | public OperationFailedException(String message, Throwable t, CustomErrorCodes code) { 8 | super(message, t, code); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/TempDirCreationException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class TempDirCreationException extends AbstractException { 6 | public TempDirCreationException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/UserNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class UserNotFoundException extends AbstractException { 6 | public UserNotFoundException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/ValidationFailedException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class ValidationFailedException extends AbstractException { 6 | 7 | public ValidationFailedException(String message, Throwable t, CustomErrorCodes code) { 8 | super(message, t, code); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/WritingFileException.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | 5 | public class WritingFileException extends AbstractException { 6 | public WritingFileException(String message, Throwable t, CustomErrorCodes code) { 7 | super(message, t, code); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/handlers/AbstractExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions.handlers; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.AbstractException; 5 | import com.olacabs.jackhammer.models.ErrorResponseModel; 6 | import lombok.extern.slf4j.Slf4j; 7 | 8 | import javax.ws.rs.core.Response; 9 | @Slf4j 10 | public class AbstractExceptionHandler { 11 | public Response handle(AbstractException exception) { 12 | ErrorResponseModel model = new ErrorResponseModel(); 13 | model.setErrorCode(exception.getCode()); 14 | model.setMessage(exception.getCode().name()); 15 | log.error("Unknown error...", exception); 16 | return Response.status(CustomErrorCodes.INTERNAL_ERROR.getValue()).entity(model).build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/exceptions/handlers/ExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.exceptions.handlers; 2 | 3 | import javax.ws.rs.core.Response; 4 | 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import com.olacabs.jackhammer.models.ErrorResponseModel; 8 | import com.olacabs.jackhammer.common.CustomErrorCodes; 9 | import com.olacabs.jackhammer.common.ExceptionMessages; 10 | 11 | @Slf4j 12 | public class ExceptionHandler { 13 | 14 | public Response handle(Throwable exception) { 15 | ErrorResponseModel model = new ErrorResponseModel(); 16 | model.setErrorCode(CustomErrorCodes.SERVICE_INTERNAL_EXCEPTION); 17 | model.setMessage(ExceptionMessages.INTERNAL_ERROR); 18 | log.error("Unknown error...", exception); 19 | return Response.status(CustomErrorCodes.INTERNAL_ERROR.getValue()).entity(model).build(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/git/manager/GitPooler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.git.manager; 2 | 3 | import com.google.inject.Inject; 4 | 5 | import io.dropwizard.lifecycle.Managed; 6 | 7 | import lombok.extern.slf4j.Slf4j; 8 | 9 | import java.util.concurrent.ScheduledThreadPoolExecutor; 10 | import java.util.concurrent.TimeUnit; 11 | 12 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 13 | 14 | @Slf4j 15 | public class GitPooler implements Managed { 16 | 17 | @Inject 18 | JackhammerConfiguration jackhammerConfiguration; 19 | 20 | @Inject 21 | ReposPuller reposPuller; 22 | 23 | public void start() throws Exception { 24 | 25 | //setting thread pool 26 | int threadPoolSize = jackhammerConfiguration.getGitConfiguration().getThreadPoolSize(); 27 | int initialDelay = jackhammerConfiguration.getGitConfiguration().getInitialDelay(); 28 | int period = jackhammerConfiguration.getGitConfiguration().getPeriod(); 29 | ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadPoolSize); 30 | executor.scheduleAtFixedRate(reposPuller, initialDelay, period, TimeUnit.MINUTES); 31 | } 32 | 33 | public void stop() throws Exception { 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/git/manager/ReposPuller.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.git.manager; 2 | 3 | import com.google.inject.Inject; 4 | import com.olacabs.jackhammer.utilities.GitUtil; 5 | import lombok.AllArgsConstructor; 6 | import lombok.NoArgsConstructor; 7 | import lombok.extern.slf4j.Slf4j; 8 | 9 | 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @Slf4j 13 | public class ReposPuller implements Runnable { 14 | 15 | 16 | @Inject 17 | GitUtil gitUtil; 18 | 19 | public void run() { 20 | log.info("repos puller getting started.."); 21 | gitUtil.pullGitRepos(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/handler/ActionsHandler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.handler; 2 | 3 | import com.olacabs.jackhammer.enums.Handler; 4 | import com.olacabs.jackhammer.exceptions.AbstractException; 5 | import com.olacabs.jackhammer.exceptions.HandlerNotFoundException; 6 | import com.olacabs.jackhammer.models.Action; 7 | import com.olacabs.jackhammer.models.User; 8 | import lombok.extern.slf4j.Slf4j; 9 | 10 | import javax.ws.rs.core.Response; 11 | 12 | @Slf4j 13 | public class ActionsHandler extends AbstractHandler { 14 | public Response getAllRecords(Action action) throws HandlerNotFoundException { 15 | try { 16 | User user = currentUser(action.getUserToken()); 17 | action.setUser(user); 18 | paginationRecords = dataServiceBuilderFactory.getService(Handler.ACTION_SERVICE).getAllRecords(action); 19 | return responseBuilderFactory.getResponseBuilder(Handler.ACTION_SERVICE).buildFetchAllRecordsResponse(paginationRecords); 20 | } catch(AbstractException e){ 21 | log.error("Exception while fetching roles"); 22 | return responseBuilderFactory.getResponseBuilder(Handler.ACTION_SERVICE).buildErrorResponse(e); 23 | } 24 | } 25 | 26 | public Response createRecord(Action model) throws HandlerNotFoundException { 27 | return null; 28 | } 29 | 30 | public Response getRecord(long id) throws HandlerNotFoundException { 31 | return null; 32 | } 33 | 34 | public Response updateRecord(Action model) throws HandlerNotFoundException { 35 | return null; 36 | } 37 | 38 | public Response deleteRecord(long id) throws HandlerNotFoundException { 39 | return null; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/handler/TasksHandler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.handler; 2 | 3 | import com.olacabs.jackhammer.enums.Handler; 4 | import com.olacabs.jackhammer.exceptions.AbstractException; 5 | import com.olacabs.jackhammer.exceptions.HandlerNotFoundException; 6 | import com.olacabs.jackhammer.models.Task; 7 | import com.olacabs.jackhammer.models.User; 8 | import lombok.extern.slf4j.Slf4j; 9 | 10 | import javax.ws.rs.core.Response; 11 | 12 | @Slf4j 13 | public class TasksHandler extends AbstractHandler { 14 | public Response getAllRecords(Task task) throws HandlerNotFoundException { 15 | try { 16 | User user = currentUser(task.getUserToken()); 17 | task.setUser(user); 18 | paginationRecords = dataServiceBuilderFactory.getService(Handler.TASK_SERVICE).getAllRecords(task); 19 | return responseBuilderFactory.getResponseBuilder(Handler.TASK_SERVICE).buildFetchAllRecordsResponse(paginationRecords); 20 | } catch(AbstractException e){ 21 | log.error("Exception while fetching roles"); 22 | return responseBuilderFactory.getResponseBuilder(Handler.TASK_SERVICE).buildErrorResponse(e); 23 | } 24 | } 25 | 26 | public Response createRecord(Task model) throws HandlerNotFoundException { 27 | return null; 28 | } 29 | 30 | public Response getRecord(long id) throws HandlerNotFoundException { 31 | return null; 32 | } 33 | 34 | public Response updateRecord(Task model) throws HandlerNotFoundException { 35 | return null; 36 | } 37 | 38 | public Response deleteRecord(long id) throws HandlerNotFoundException { 39 | return null; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/AbstractModel.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.fasterxml.jackson.annotation.JsonInclude.Include; 5 | 6 | import java.io.Serializable; 7 | import java.sql.Timestamp; 8 | 9 | 10 | import lombok.Getter; 11 | import lombok.Setter; 12 | 13 | @Getter 14 | @Setter 15 | @JsonInclude(value=Include.NON_NULL) 16 | public class AbstractModel implements Serializable { 17 | 18 | protected long id; 19 | protected String name; 20 | protected Timestamp createdAt; 21 | protected Timestamp updatedAt; 22 | 23 | private String userToken; 24 | 25 | //pagination fields 26 | private long totalSize; 27 | private long offset; 28 | private long limit; 29 | private long taskId; 30 | private long ownerTypeId; 31 | private long scanTypeId; 32 | private String orderBy; 33 | private String sortDirection; 34 | private String searchTerm; 35 | private Boolean createAllowed = false; 36 | private Boolean readAllowed = false; 37 | private Boolean updateAllowed = false; 38 | private Boolean deleteAllowed = false; 39 | private User user; 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/AbstractResponse.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.common.HttpResponseCodes; 5 | 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | @Getter 10 | @Setter 11 | public class AbstractResponse { 12 | 13 | private String message; 14 | private int successCode; 15 | private int errorCode; 16 | 17 | public void setErrorCode(CustomErrorCodes code) { 18 | this.errorCode = code.getValue(); 19 | } 20 | 21 | public void setSuccessCode(int code) { 22 | this.successCode = code; 23 | } 24 | 25 | public void setMessage(String message) { 26 | this.message = message; 27 | } 28 | 29 | public int getErrorCode(){ 30 | return errorCode; 31 | } 32 | public int getSuccessCode(){ 33 | return errorCode; 34 | } 35 | 36 | public String getMessage(){ 37 | return message; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Action.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.ArrayList; 9 | import java.util.HashSet; 10 | import java.util.List; 11 | import java.util.Set; 12 | 13 | @Setter 14 | @Getter 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class Action extends AbstractModel { 18 | private String iconClass; 19 | private List tasks; 20 | private Boolean isScanTypeModule; 21 | private Boolean rolesPage; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Analytics.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | @Getter 12 | @Setter 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class Analytics extends AbstractModel { 16 | SeverityCount severityCount; 17 | private long runningScans; 18 | private long queuedScans; 19 | private long totalScans; 20 | private long completedScans; 21 | private long newFindings; 22 | private long userId; 23 | private List repoList = new ArrayList(); 24 | private List topVulnerableTypes = new ArrayList(); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Application.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class Application extends SeverityCount { 13 | private long id; 14 | private String name; 15 | private Group repoGroup; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Branch.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Setter 11 | @Getter 12 | public class Branch extends AbstractModel { 13 | private long repoId; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Command.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | import mesosphere.marathon.client.utils.ModelUtils; 8 | 9 | @Getter 10 | @Setter 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class Command { 14 | private String value; 15 | 16 | @Override 17 | public String toString() { 18 | return ModelUtils.toString(this); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Comment.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class Comment extends AbstractModel { 13 | long findingId; 14 | long userId; 15 | String userName; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Container.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | import mesosphere.marathon.client.model.v2.Volume; 8 | import mesosphere.marathon.client.utils.ModelUtils; 9 | import java.util.List; 10 | 11 | @Getter 12 | @Setter 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class Container { 16 | private Docker docker; 17 | private String type; 18 | private List volumes; 19 | @Override 20 | public String toString() { 21 | return ModelUtils.toString(this); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Dashboard.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @Getter 13 | @Setter 14 | public class Dashboard extends AbstractModel { 15 | private SeverityCount severityCount; 16 | private VulnerabilityTrend vulnerabilityTrend; 17 | private List topVulnerableTypes; 18 | private List topVulnerableRepos; 19 | private Boolean isExecutiveDashboard; 20 | private long userId; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/DefaultRole.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class DefaultRole extends AbstractModel { 13 | private long roleId; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Docker.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | import mesosphere.marathon.client.utils.ModelUtils; 8 | 9 | import java.util.List; 10 | 11 | @Getter 12 | @Setter 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class Docker { 16 | private List portMappings; 17 | private String image; 18 | private String network; 19 | @Override 20 | public String toString() { 21 | return ModelUtils.toString(this); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ErrorResponseModel.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.ToString; 4 | 5 | @ToString 6 | public class ErrorResponseModel extends AbstractResponse { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ExecutiveDashboard.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | import java.util.List; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | @Setter 15 | public class ExecutiveDashboard { 16 | private SeverityCount severityCount; 17 | private ScanTypeCount scanTypeCount; 18 | private List groups; 19 | private List criticalVulnerabilityTrend; 20 | private List highVulnerabilityTrend; 21 | private VulnerabilityTrend bugsClosingTrend; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Filter.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.sql.Date; 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | @Setter 15 | @Getter 16 | public class Filter extends AbstractModel { 17 | 18 | //dropdown values 19 | private List tags; 20 | private List groups; 21 | private List repos; 22 | private List tools; 23 | private List vulnerableTypes; 24 | private String tool; 25 | 26 | //selected values 27 | private List tagIds = new ArrayList(); 28 | private List groupIds = new ArrayList(); 29 | private List repoIds = new ArrayList(); 30 | private List toolNames = new ArrayList(); 31 | private List vulnerabilities = new ArrayList(); 32 | private String status; 33 | private String severity; 34 | private long aging; 35 | private Date fromDate; 36 | private Date toDate; 37 | 38 | //other fields 39 | private long userId; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/FindingTag.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class FindingTag { 13 | long findingId; 14 | long tagId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Git.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class Git extends AbstractModel { 13 | private String gitType; 14 | private String userName; 15 | private String gitEndPoint; 16 | private String apiAccessToken; 17 | private String organizationName; 18 | } 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GitGroup.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | 11 | @Getter 12 | @Setter 13 | public class GitGroup extends AbstractModel { 14 | @JsonIgnore 15 | private String visibility_level; 16 | @JsonIgnore 17 | private boolean lfs_enabled; 18 | @JsonIgnore 19 | private String avatar_url; 20 | @JsonIgnore 21 | private boolean request_access_enabled; 22 | @JsonIgnore 23 | private String path; 24 | @JsonIgnore 25 | private String description; 26 | 27 | private String web_url; 28 | List gitProjects = new ArrayList(); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GitHubGroup.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class GitHubGroup { 15 | private String id; 16 | private String description; 17 | private String name; 18 | private String members_url; 19 | private String privacy; 20 | private String permission; 21 | private String slug; 22 | private String repositories_url; 23 | private String url; 24 | private String node_id; 25 | private String html_url; 26 | List gitHubProjects; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GitLabGroup.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | 11 | @Getter 12 | @Setter 13 | public class GitLabGroup extends AbstractModel { 14 | @JsonIgnore 15 | private String visibility_level; 16 | @JsonIgnore 17 | private boolean lfs_enabled; 18 | @JsonIgnore 19 | private String avatar_url; 20 | @JsonIgnore 21 | private boolean request_access_enabled; 22 | @JsonIgnore 23 | private String path; 24 | @JsonIgnore 25 | private String description; 26 | 27 | private String web_url; 28 | List gitLabProjects = new ArrayList(); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GitNamespace.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | import java.util.Map; 10 | 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | @Getter 14 | @Setter 15 | public class GitNamespace extends AbstractModel { 16 | @JsonIgnore 17 | private String path; 18 | @JsonIgnore 19 | private String kind; 20 | @JsonIgnore 21 | private String fullPath; 22 | @JsonIgnore 23 | private String owner_id; 24 | @JsonIgnore 25 | private String created_at; 26 | @JsonIgnore 27 | private String updated_at; 28 | @JsonIgnore 29 | private String description; 30 | @JsonIgnore 31 | private boolean share_with_group_lock; 32 | @JsonIgnore 33 | private long visibility_level; 34 | @JsonIgnore 35 | private boolean request_access_enabled; 36 | @JsonIgnore 37 | private String deleted_at; 38 | @JsonIgnore 39 | private boolean lfs_enabled; 40 | @JsonIgnore 41 | private Map avatar; 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GitOwner.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class GitOwner { 13 | private String received_events_url; 14 | private String organizations_url; 15 | private String avatar_url; 16 | private String gravatar_id; 17 | private String gists_url; 18 | private String starred_url; 19 | private String site_admin; 20 | private String type; 21 | private String url; 22 | private String node_id; 23 | private String id; 24 | private String html_url; 25 | private String following_url; 26 | private String events_url; 27 | private String login; 28 | private String subscriptions_url; 29 | private String repos_url; 30 | private String followers_url; 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GitPermission.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @Setter 12 | @Getter 13 | public class GitPermission { 14 | private String admin; 15 | private String pull; 16 | private String push; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Group.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | import com.google.common.collect.Lists; 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @Setter 11 | @Getter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class Group extends AbstractModel { 15 | private SeverityCount severityCount; 16 | private Boolean isDefault; 17 | private List roles = Lists.newArrayList(); 18 | private List roleIds = Lists.newArrayList(); 19 | 20 | public void addRole(Role p) { 21 | if (!roles.contains(p)) roles.add(p); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GroupRole.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Setter 9 | @Getter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class GroupRole { 13 | private Long groupId; 14 | private Long roleId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/GroupUser.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class GroupUser { 13 | private Long groupId; 14 | private Long userId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/HardcodeSecret.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.sql.Date; 9 | 10 | @Getter 11 | @Setter 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class HardcodeSecret extends AbstractModel { 15 | private long commitsDepth; 16 | private Date commitsStartDate; 17 | private String regex; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/HealthCheck.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | import mesosphere.marathon.client.utils.ModelUtils; 8 | 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @Getter 12 | @Setter 13 | public class HealthCheck { 14 | 15 | private Command command; 16 | private Integer gracePeriodSeconds; 17 | private Integer intervalSeconds; 18 | private Integer maxConsecutiveFailures; 19 | private Integer portIndex; 20 | private Integer timeoutSeconds; 21 | private boolean ignoreHttp1xx; 22 | private String path; 23 | private String protocol; 24 | 25 | @Override 26 | public String toString() { 27 | return ModelUtils.toString(this); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/JiraDetail.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @Setter 10 | @Getter 11 | @NoArgsConstructor 12 | public class JiraDetail extends AbstractModel { 13 | private String host; 14 | private String userName; 15 | private String password; 16 | private String defaultProject; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/JiraField.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Setter 11 | @Getter 12 | public class JiraField { 13 | private String summary; 14 | private JiraProject project; 15 | private JiraIssueType issuetype; 16 | private String description; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/JiraIssue.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class JiraIssue { 13 | private JiraField fields; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/JiraIssueType.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Setter 11 | @Getter 12 | public class JiraIssueType { 13 | private String name; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/JiraProject.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Setter 11 | @Getter 12 | public class JiraProject { 13 | private String key; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/JwtToken.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Date; 9 | 10 | @Getter 11 | @Setter 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class JwtToken extends AbstractModel { 15 | 16 | private Date tokenValidFrom; 17 | private Date tokenValidUntil; 18 | private String token; 19 | private Long userId; 20 | private boolean Deleted; 21 | private Long version; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Language.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class Language extends AbstractModel { 13 | private String fileExtension; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/MarathonModel.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import mesosphere.marathon.client.model.v2.App; 9 | 10 | import java.util.List; 11 | 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | @Getter 15 | @Setter 16 | public class MarathonModel extends App { 17 | private List healthChecks; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/MobileScanRequest.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.io.File; 7 | 8 | @Getter 9 | @Setter 10 | public class MobileScanRequest extends File { 11 | private String scanId; 12 | public MobileScanRequest(String pathname) { 13 | super(pathname); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/NotificationMails.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class NotificationMails { 13 | private long count; 14 | private String mails; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/OwnerType.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class OwnerType extends AbstractModel { 13 | private Boolean isDefault; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/PagedResponse.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class PagedResponse { 15 | private List items; 16 | private long total; 17 | private T item; 18 | private OwnerType ownerType; 19 | private ScanType scanType; 20 | private Boolean createAllowed = false; 21 | private Boolean readAllowed = false; 22 | private Boolean updateAllowed = false; 23 | private Boolean deleteAllowed = false; 24 | private Boolean readFindingsAllowed = false; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Permission.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | public class Permission extends AbstractModel { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/PermissionRole.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Setter 9 | @Getter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class PermissionRole { 13 | private Long roleId; 14 | private Long permissionId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/PortMapping.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | import mesosphere.marathon.client.utils.ModelUtils; 8 | 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @Setter 12 | @Getter 13 | public class PortMapping { 14 | private String protocol; 15 | private Integer hostPort; 16 | private Integer containerPort; 17 | 18 | @Override 19 | public String toString() { 20 | return ModelUtils.toString(this); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Repo.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | import java.util.List; 8 | 9 | @AllArgsConstructor 10 | @NoArgsConstructor 11 | @Getter 12 | @Setter 13 | public class Repo extends AbstractModel { 14 | private String target; 15 | private long groupId; 16 | private long userId; 17 | private long branchId; 18 | private long ownerTypeId; 19 | private long scanTypeId; 20 | private Group group; 21 | private List groupIds; 22 | private SeverityCount severityCount; 23 | private VulnerabilityTrend vulnerabilityTrend; 24 | private List repoToolResults; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/RepoToolResult.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class RepoToolResult { 13 | private String toolName; 14 | private long count; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Role.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.google.common.collect.Lists; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | import java.util.List; 11 | 12 | 13 | @Getter 14 | @Setter 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | @JsonInclude(JsonInclude.Include.NON_NULL) 18 | public class Role extends AbstractModel { 19 | 20 | private List tasks = Lists.newArrayList(); 21 | 22 | private List taskIds = Lists.newArrayList(); 23 | 24 | 25 | //permissions are deprecated 26 | private List permissions = Lists.newArrayList(); 27 | 28 | private List permissionIds = Lists.newArrayList(); 29 | 30 | public void addTask(Task t) { 31 | if (!tasks.contains(t)) tasks.add(t); 32 | } 33 | 34 | public void addPermission(Permission p) { 35 | if (!permissions.contains(p)) permissions.add(p); 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/RoleTask.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Setter 9 | @Getter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class RoleTask { 13 | private long roleId; 14 | private long taskId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/RoleUser.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Setter 9 | @Getter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class RoleUser { 13 | private Long roleId; 14 | private Long userId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/SMTPDetail.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class SMTPDetail extends AbstractModel { 13 | private String applicationUrl; 14 | private String smtpHost; 15 | private String smtpUserName; 16 | private String smtpPassword; 17 | private int smtpPort; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ScanTool.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class ScanTool extends AbstractModel { 13 | private Long scanId; 14 | private Long toolId; 15 | private Long toolInstanceId; 16 | private String status; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ScanType.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class ScanType extends AbstractModel { 13 | private Boolean isStatic; 14 | private Boolean isWeb; 15 | private Boolean isWordpress; 16 | private Boolean isMobile; 17 | private Boolean isNetwork; 18 | private Boolean isHardCodeSecret; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ScanTypeCount.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class ScanTypeCount { 13 | private SeverityCount sourceCodeCount; 14 | private SeverityCount wordpressCount; 15 | private SeverityCount networkCount; 16 | private SeverityCount mobileCount; 17 | private SeverityCount webCount; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ScheduleType.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Setter 11 | @Getter 12 | public class ScheduleType extends AbstractModel { 13 | private int days; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/SeverityCount.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class SeverityCount { 13 | private long totalCount; 14 | private long criticalCount; 15 | private long highCount; 16 | private long mediumCount; 17 | private long lowCount; 18 | private long infoCount; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/SeverityCountChart.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | @Getter 11 | @Setter 12 | public class SeverityCountChart { 13 | private long count; 14 | private String severity; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/SeverityLevel.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Map; 9 | 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @Getter 13 | @Setter 14 | public class SeverityLevel extends AbstractModel { 15 | private Boolean enabled; 16 | private long threshHoldCount; 17 | private String mailIds; 18 | private Boolean requestFromNotificationMail; 19 | private Map notificationMailsConfiguration; 20 | private Map severitiesStatus; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/SuccessResponseModel.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.ToString; 4 | 5 | @ToString 6 | public class SuccessResponseModel extends AbstractResponse{ 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Tag.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | @Getter 13 | @Setter 14 | public class Tag extends AbstractModel { 15 | long findingId; 16 | long userId; 17 | List tagList; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Tool.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.io.InputStream; 9 | 10 | @Setter 11 | @Getter 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class Tool extends AbstractModel { 15 | private String manifestJson; 16 | private String status; 17 | private long instanceCount; 18 | private long languageId; 19 | InputStream uploadedInputStream; 20 | Boolean isEnabled; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ToolInstance.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | @Getter 11 | @Setter 12 | public class ToolInstance extends AbstractModel { 13 | private long toolId; 14 | private long maxAllowedScans; 15 | private long currentRunningScans; 16 | private int port; 17 | private String status; 18 | private String sessionId; 19 | private String platform; 20 | private String containerId; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/ToolManifest.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | @Setter 12 | @Getter 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class ToolManifest { 16 | private String id; 17 | private Double cpus; 18 | private Container container; 19 | private Double mem; 20 | private Integer initialInstances; 21 | private Integer minInstances; 22 | private Integer maxInstances; 23 | private List healthChecks; 24 | private Map env; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/TopVulnerabilityRepo.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class TopVulnerabilityRepo { 13 | private long repoId; 14 | private long count; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/TopVulnerableApplication.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class TopVulnerableApplication { 13 | private long groupId; 14 | private long count; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/TopVulnerableRepo.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class TopVulnerableRepo { 13 | private long repoId; 14 | private long count; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/TopVulnerableType.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class TopVulnerableType { 13 | private String vulnerabilityType; 14 | private String severity; 15 | private long count; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/Upload.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.glassfish.jersey.media.multipart.FormDataContentDisposition; 6 | 7 | import java.io.InputStream; 8 | 9 | @Getter 10 | @Setter 11 | public class Upload extends AbstractModel { 12 | long findingId; 13 | long userId; 14 | String userName; 15 | private InputStream uploadedInputStream; 16 | private FormDataContentDisposition fileDetail; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/User.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | 5 | import com.google.common.collect.Lists; 6 | import com.google.inject.Inject; 7 | import com.google.inject.name.Named; 8 | import com.olacabs.jackhammer.common.Constants; 9 | import lombok.Getter; 10 | import lombok.Setter; 11 | import lombok.AllArgsConstructor; 12 | import lombok.NoArgsConstructor; 13 | import lombok.extern.slf4j.Slf4j; 14 | import org.springframework.security.crypto.password.PasswordEncoder; 15 | 16 | import java.sql.Timestamp; 17 | import java.util.List; 18 | 19 | @Setter 20 | @Getter 21 | @AllArgsConstructor 22 | @NoArgsConstructor 23 | @JsonInclude(JsonInclude.Include.NON_NULL) 24 | @Slf4j 25 | public class User extends AbstractModel { 26 | 27 | private String email; 28 | private String password; 29 | private String newPassword; 30 | private Boolean allowedExecutiveDashboard; 31 | private Boolean allowedCorporateDashboard; 32 | private Boolean allowedTeamDashboard; 33 | private Boolean allowedPersonalDashboard; 34 | 35 | private List ownerTypes = Lists.newArrayList(); 36 | private List groups = Lists.newArrayList(); 37 | private List groupIds = Lists.newArrayList(); 38 | private List roles = Lists.newArrayList(); 39 | private List roleIds = Lists.newArrayList(); 40 | 41 | public void addGroup(Group g) { 42 | if (!groups.contains(g)) groups.add(g); 43 | } 44 | 45 | public void addRole(Role r) { 46 | if (!roles.contains(r)) { 47 | roles.add(r); 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/UserResponse.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import com.google.common.collect.Lists; 4 | import lombok.*; 5 | 6 | import java.util.List; 7 | 8 | @Builder 9 | @NoArgsConstructor 10 | @AllArgsConstructor 11 | @Setter 12 | @Getter 13 | public class UserResponse extends AbstractResponse { 14 | private String username; 15 | private String email; 16 | private String userToken; 17 | private Boolean allowedExecutiveDashboard; 18 | private Boolean allowedCorporateDashboard; 19 | private Boolean allowedTeamDashboard; 20 | private Boolean allowedPersonalDashboard; 21 | private List ownerTypes; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/VulnerabilityTrend.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import java.util.Map; 9 | 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | @Setter 13 | @Getter 14 | public class VulnerabilityTrend extends SeverityCountChart { 15 | private String month; 16 | private Map> vulnerabilityTrendResult; 17 | private String groupName; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/VulnerableType.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models; 2 | 3 | public class VulnerableType extends AbstractModel { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ActionMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Action; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class ActionMapper implements ResultSetMapper { 11 | public Action map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | Action action = new Action(); 13 | action.setId(resultSet.getLong("id")); 14 | action.setName(resultSet.getString("name")); 15 | action.setIconClass(resultSet.getString("iconClass")); 16 | action.setIsScanTypeModule(resultSet.getBoolean("isScanTypeModule")); 17 | return action; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ApplicationMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Application; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class ApplicationMapper implements ResultSetMapper { 11 | public Application map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | Application application = new Application(); 13 | application.setId(resultSet.getLong("id")); 14 | application.setName(resultSet.getString("name")); 15 | application.setTotalCount(resultSet.getLong("totalCount")); 16 | application.setCriticalCount(resultSet.getLong("criticalCount")); 17 | application.setCriticalCount(resultSet.getLong("highCount")); 18 | application.setMediumCount(resultSet.getLong("mediumCount")); 19 | application.setLowCount(resultSet.getLong("lowCount")); 20 | application.setInfoCount(resultSet.getLong("infoCount")); 21 | return application; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/BranchMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Branch; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class BranchMapper implements ResultSetMapper { 12 | public Branch map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | Branch branch = new Branch(); 14 | branch.setId(resultSet.getLong("id")); 15 | branch.setName(resultSet.getString("name")); 16 | branch.setRepoId(resultSet.getLong("repoId")); 17 | return branch; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/CommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Comment; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class CommentMapper implements ResultSetMapper { 11 | 12 | public Comment map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | Comment comment = new Comment(); 14 | comment.setId(resultSet.getLong("id")); 15 | comment.setName(resultSet.getString("name")); 16 | comment.setFindingId(resultSet.getLong("findingId")); 17 | comment.setUserId(resultSet.getLong("userId")); 18 | comment.setCreatedAt(resultSet.getTimestamp("createdAt")); 19 | comment.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 20 | return comment; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/DefaultRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.DefaultRole; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class DefaultRoleMapper implements ResultSetMapper { 11 | 12 | public DefaultRole map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | DefaultRole defaultRole = new DefaultRole(); 14 | defaultRole.setId(resultSet.getLong("id")); 15 | defaultRole.setRoleId(resultSet.getLong("roleId")); 16 | return defaultRole; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/FindingTagMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.FindingTag; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class FindingTagMapper implements ResultSetMapper { 11 | public FindingTag map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | FindingTag findingTag = new FindingTag(); 13 | findingTag.setFindingId(resultSet.getLong("findingId")); 14 | findingTag.setTagId(resultSet.getLong("tagId")); 15 | return findingTag; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/GitMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Git; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class GitMapper implements ResultSetMapper { 11 | public Git map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | Git git = new Git(); 13 | git.setId(resultSet.getLong("id")); 14 | git.setUserName(resultSet.getString("userName")); 15 | git.setGitEndPoint(resultSet.getString("gitEndPoint")); 16 | git.setApiAccessToken(resultSet.getString("apiAccessToken")); 17 | git.setGitType(resultSet.getString("gitType")); 18 | git.setOrganizationName(resultSet.getString("organizationName")); 19 | return git; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/GroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Group; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class GroupMapper implements ResultSetMapper { 12 | public Group map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException 13 | { 14 | Group group = new Group(); 15 | group.setId(resultSet.getLong("id")); 16 | group.setName(resultSet.getString("name")); 17 | group.setScanTypeId(resultSet.getLong("scanTypeId")); 18 | group.setCreatedAt(resultSet.getTimestamp("createdAt")); 19 | group.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 20 | return group; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/GroupRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.GroupRole; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class GroupRoleMapper implements ResultSetMapper { 12 | 13 | public GroupRole map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException 14 | { 15 | GroupRole groupRole = new GroupRole(); 16 | groupRole.setGroupId(resultSet.getLong("groupId")); 17 | groupRole.setRoleId(resultSet.getLong("roleId")); 18 | return groupRole; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/GroupUserMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.GroupUser; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class GroupUserMapper implements ResultSetMapper { 12 | public GroupUser map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | return new GroupUser(resultSet.getLong("groupId"), 14 | resultSet.getLong("userId")); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/HardcodeSecretMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.HardcodeSecret; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class HardcodeSecretMapper implements ResultSetMapper { 11 | 12 | public HardcodeSecret map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | HardcodeSecret hardcodeSecret = new HardcodeSecret(); 14 | hardcodeSecret.setCommitsDepth(resultSet.getLong("commitsDepth")); 15 | hardcodeSecret.setCommitsStartDate(resultSet.getDate("commitsStartDate")); 16 | hardcodeSecret.setRegex(resultSet.getString("regex")); 17 | return hardcodeSecret; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/JiraDetailMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.JiraDetail; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class JiraDetailMapper implements ResultSetMapper { 11 | 12 | public JiraDetail map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | JiraDetail jiraDetail = new JiraDetail(); 14 | jiraDetail.setHost(resultSet.getString("host")); 15 | jiraDetail.setUserName(resultSet.getString("userName")); 16 | jiraDetail.setPassword(resultSet.getString("password")); 17 | jiraDetail.setDefaultProject(resultSet.getString("defaultProject")); 18 | return jiraDetail; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/JwtTokenMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.JwtToken; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class JwtTokenMapper implements ResultSetMapper { 12 | public JwtToken map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException 13 | { 14 | JwtToken jwtToken = new JwtToken(); 15 | jwtToken.setId(resultSet.getLong("id")); 16 | jwtToken.setTokenValidFrom(resultSet.getDate("tokenValidFrom")); 17 | jwtToken.setTokenValidUntil(resultSet.getDate("tokenValidUntil")); 18 | jwtToken.setCreatedAt(resultSet.getTimestamp("createdAt")); 19 | jwtToken.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 20 | jwtToken.setDeleted(resultSet.getBoolean("deleted")); 21 | jwtToken.setVersion(resultSet.getLong("version")); 22 | return jwtToken; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/LanguageMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Language; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class LanguageMapper implements ResultSetMapper { 11 | 12 | public Language map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | Language language = new Language(); 14 | language.setId(resultSet.getLong("id")); 15 | language.setName(resultSet.getString("name")); 16 | language.setCreatedAt(resultSet.getTimestamp("createdAt")); 17 | language.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 18 | language.setFileExtension(resultSet.getString("fileExtension")); 19 | return language; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/OwnerTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.OwnerType; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class OwnerTypeMapper implements ResultSetMapper { 11 | public OwnerType map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | OwnerType ownerType = new OwnerType(); 13 | ownerType.setId(resultSet.getLong("id")); 14 | ownerType.setName(resultSet.getString("name")); 15 | ownerType.setIsDefault(resultSet.getBoolean("isDefault")); 16 | return ownerType; 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/PermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Permission; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class PermissionMapper implements ResultSetMapper { 12 | public Permission map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | Permission permission = new Permission(); 14 | permission.setId(resultSet.getLong("id")); 15 | permission.setName(resultSet.getString("name")); 16 | permission.setCreatedAt(resultSet.getTimestamp("createdAt")); 17 | permission.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 18 | return permission; 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/RepoMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Repo; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class RepoMapper implements ResultSetMapper { 12 | public Repo map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | Repo repo = new Repo(); 14 | repo.setId(resultSet.getLong("id")); 15 | repo.setName(resultSet.getString("name")); 16 | repo.setTarget(resultSet.getString("target")); 17 | repo.setGroupId(resultSet.getLong("groupId")); 18 | repo.setUserId(resultSet.getLong("userId")); 19 | repo.setOwnerTypeId(resultSet.getLong("ownerTypeId")); 20 | repo.setScanTypeId(resultSet.getLong("scanTypeId")); 21 | return repo; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/RepoToolResultMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.RepoToolResult; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class RepoToolResultMapper implements ResultSetMapper { 11 | public RepoToolResult map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | RepoToolResult repoToolResult = new RepoToolResult(); 13 | repoToolResult.setCount(resultSet.getLong("count")); 14 | repoToolResult.setToolName(resultSet.getString("toolName")); 15 | return repoToolResult; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Role; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class RoleMapper implements ResultSetMapper { 12 | public Role map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException 13 | { 14 | Role role = new Role(); 15 | role.setId(resultSet.getLong("id")); 16 | role.setName(resultSet.getString("name")); 17 | role.setCreatedAt(resultSet.getTimestamp("createdAt")); 18 | role.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 19 | return role; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/RolePermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.PermissionRole; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class RolePermissionMapper implements ResultSetMapper { 12 | public PermissionRole map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | PermissionRole rolePermission = new PermissionRole(); 14 | rolePermission.setRoleId(resultSet.getLong("roleId")); 15 | rolePermission.setPermissionId(resultSet.getLong("permissionId")); 16 | return rolePermission; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/RoleTaskMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.RoleTask; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | 11 | public class RoleTaskMapper implements ResultSetMapper { 12 | public RoleTask map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | RoleTask roleTask = new RoleTask(); 14 | roleTask.setRoleId(resultSet.getLong("roleId")); 15 | roleTask.setTaskId(resultSet.getLong("taskId")); 16 | return roleTask; 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/RoleUserMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.RoleUser; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class RoleUserMapper implements ResultSetMapper { 12 | 13 | public RoleUser map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 14 | return new RoleUser(resultSet.getLong("roleId"), resultSet.getLong("userId")); 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/SMTPDetailMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.SMTPDetail; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class SMTPDetailMapper implements ResultSetMapper { 11 | 12 | public SMTPDetail map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | SMTPDetail smtpDetail = new SMTPDetail(); 14 | smtpDetail.setApplicationUrl(resultSet.getString("applicationUrl")); 15 | smtpDetail.setSmtpHost(resultSet.getString("smtpHost")); 16 | smtpDetail.setSmtpUserName(resultSet.getString("smtpUserName")); 17 | smtpDetail.setSmtpPassword(resultSet.getString("smtpPassword")); 18 | smtpDetail.setSmtpPort(resultSet.getInt("smtpPort")); 19 | return smtpDetail; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ScanToolMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import org.skife.jdbi.v2.StatementContext; 4 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 5 | 6 | import java.sql.ResultSet; 7 | import java.sql.SQLException; 8 | 9 | import com.olacabs.jackhammer.models.ScanTool; 10 | 11 | public class ScanToolMapper implements ResultSetMapper { 12 | 13 | public ScanTool map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 14 | ScanTool scanTool = new ScanTool(); 15 | scanTool.setToolId(resultSet.getLong("toolId")); 16 | scanTool.setScanId(resultSet.getLong("scanId")); 17 | scanTool.setStatus(resultSet.getString("status")); 18 | scanTool.setToolInstanceId(resultSet.getLong("toolInstanceId")); 19 | return scanTool; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ScanTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.ScanType; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class ScanTypeMapper implements ResultSetMapper { 11 | 12 | public ScanType map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | ScanType scanType = new ScanType(); 14 | scanType.setId(resultSet.getLong("id")); 15 | scanType.setName(resultSet.getString("name")); 16 | scanType.setIsStatic(resultSet.getBoolean("isStatic")); 17 | scanType.setIsWeb(resultSet.getBoolean("isWeb")); 18 | scanType.setIsMobile(resultSet.getBoolean("isMobile")); 19 | scanType.setIsWordpress(resultSet.getBoolean("isWordpress")); 20 | scanType.setIsNetwork(resultSet.getBoolean("isNetwork")); 21 | scanType.setIsHardCodeSecret(resultSet.getBoolean("isHardCodeSecret")); 22 | scanType.setCreatedAt(resultSet.getTimestamp("createdAt")); 23 | scanType.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 24 | return scanType; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ScheduleTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.ScheduleType; 4 | 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | public class ScheduleTypeMapper implements ResultSetMapper { 12 | public ScheduleType map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 13 | ScheduleType scheduleType = new ScheduleType(); 14 | scheduleType.setId(resultSet.getLong("id")); 15 | scheduleType.setName(resultSet.getString("name")); 16 | scheduleType.setDays(resultSet.getInt("days")); 17 | return scheduleType; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/SeverityCountChartMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.SeverityCountChart; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class SeverityCountChartMapper implements ResultSetMapper { 11 | public SeverityCountChart map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | SeverityCountChart severityCountDashboard = new SeverityCountChart(); 13 | severityCountDashboard.setCount(resultSet.getLong("count")); 14 | severityCountDashboard.setSeverity(resultSet.getString("severity")); 15 | return severityCountDashboard; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/SeverityLevelMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.SeverityLevel; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | 11 | public class SeverityLevelMapper implements ResultSetMapper { 12 | 13 | public SeverityLevel map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 14 | SeverityLevel severityLevel = new SeverityLevel(); 15 | severityLevel.setId(resultSet.getLong("id")); 16 | severityLevel.setName(resultSet.getString("name")); 17 | severityLevel.setEnabled(resultSet.getBoolean("enabled")); 18 | severityLevel.setThreshHoldCount(resultSet.getLong("threshHoldCount")); 19 | severityLevel.setMailIds(resultSet.getString("mailIds")); 20 | return severityLevel; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/TagMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Tag; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class TagMapper implements ResultSetMapper { 11 | public Tag map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | Tag tag = new Tag(); 13 | tag.setId(resultSet.getLong("id")); 14 | tag.setName(resultSet.getString("name")); 15 | return tag; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/TaskMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Task; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class TaskMapper implements ResultSetMapper { 11 | public Task map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | Task task = new Task(); 13 | task.setId(resultSet.getLong("id")); 14 | task.setName(resultSet.getString("name")); 15 | task.setTaskRoute(resultSet.getString("taskRoute")); 16 | task.setActionId(resultSet.getLong("actionId")); 17 | task.setParentId(resultSet.getLong("parentId")); 18 | task.setOwnerTypeId(resultSet.getLong("ownerTypeId")); 19 | task.setApiUrl(resultSet.getString("apiUrl")); 20 | task.setMethod(resultSet.getString("method")); 21 | task.setAccessToAll(resultSet.getBoolean("accessToAll")); 22 | return task; 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ToolInstanceMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.ToolInstance; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class ToolInstanceMapper implements ResultSetMapper { 11 | public ToolInstance map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | ToolInstance toolInstance = new ToolInstance(); 13 | toolInstance.setId(resultSet.getLong("id")); 14 | toolInstance.setToolId(resultSet.getLong("toolId")); 15 | toolInstance.setMaxAllowedScans(resultSet.getLong("maxAllowedScans")); 16 | toolInstance.setCurrentRunningScans(resultSet.getLong("currentRunningScans")); 17 | toolInstance.setStatus(resultSet.getString("status")); 18 | toolInstance.setSessionId(resultSet.getString("sessionId")); 19 | toolInstance.setPlatform(resultSet.getString("platform")); 20 | toolInstance.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 21 | toolInstance.setCreatedAt(resultSet.getTimestamp("createdAt")); 22 | toolInstance.setContainerId(resultSet.getString("containerId")); 23 | toolInstance.setPort(resultSet.getInt("port")); 24 | return toolInstance; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/ToolMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Tool; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.skife.jdbi.v2.StatementContext; 6 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 7 | 8 | import java.sql.ResultSet; 9 | import java.sql.SQLException; 10 | 11 | @Slf4j 12 | public class ToolMapper implements ResultSetMapper { 13 | 14 | public Tool map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 15 | Tool tool = new Tool(); 16 | tool.setId(resultSet.getLong("id")); 17 | tool.setName(resultSet.getString("name")); 18 | tool.setCreatedAt(resultSet.getTimestamp("createdAt")); 19 | tool.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 20 | tool.setLanguageId(resultSet.getLong("languageId")); 21 | tool.setScanTypeId(resultSet.getLong("scanTypeId")); 22 | tool.setIsEnabled(resultSet.getBoolean("isEnabled")); 23 | tool.setManifestJson(resultSet.getString("manifestJson")); 24 | tool.setStatus(resultSet.getString("status")); 25 | tool.setInstanceCount(resultSet.getLong("instanceCount")); 26 | return tool; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/TopVulnerabilityApplicationMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.TopVulnerableApplication; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class TopVulnerabilityApplicationMapper implements ResultSetMapper { 11 | public TopVulnerableApplication map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | TopVulnerableApplication topVulnerableApplication = new TopVulnerableApplication(); 13 | topVulnerableApplication.setCount(resultSet.getLong("count")); 14 | topVulnerableApplication.setGroupId(resultSet.getLong("groupId")); 15 | return topVulnerableApplication; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/TopVulnerabilityRepoMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.TopVulnerableRepo; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class TopVulnerabilityRepoMapper implements ResultSetMapper { 11 | public TopVulnerableRepo map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | TopVulnerableRepo topVulnerabilityRepo = new TopVulnerableRepo(); 13 | topVulnerabilityRepo.setCount(resultSet.getLong("count")); 14 | topVulnerabilityRepo.setRepoId(resultSet.getLong("repoId")); 15 | return topVulnerabilityRepo; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/TopVulnerableTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.TopVulnerableType; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class TopVulnerableTypeMapper implements ResultSetMapper { 11 | public TopVulnerableType map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | TopVulnerableType topVulnerableType = new TopVulnerableType(); 13 | topVulnerableType.setCount(resultSet.getLong("count")); 14 | topVulnerableType.setVulnerabilityType(resultSet.getString( "vulnerabilityType")); 15 | topVulnerableType.setSeverity(resultSet.getString( "severity")); 16 | return topVulnerableType; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/UploadMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.Upload; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class UploadMapper implements ResultSetMapper { 11 | public Upload map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | Upload upload = new Upload(); 13 | upload.setId(resultSet.getLong("id")); 14 | upload.setName(resultSet.getString("name")); 15 | upload.setFindingId(resultSet.getLong("findingId")); 16 | upload.setUserId(resultSet.getLong("userId")); 17 | upload.setCreatedAt(resultSet.getTimestamp("createdAt")); 18 | upload.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 19 | return upload; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | 4 | 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | import org.skife.jdbi.v2.StatementContext; 7 | 8 | import com.olacabs.jackhammer.models.User; 9 | 10 | import java.sql.ResultSet; 11 | import java.sql.SQLException; 12 | 13 | import lombok.extern.slf4j.Slf4j; 14 | 15 | @Slf4j 16 | public class UserMapper implements ResultSetMapper { 17 | 18 | public User map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException 19 | { 20 | User user = new User(); 21 | user.setId(resultSet.getLong("id")); 22 | user.setName(resultSet.getString("name")); 23 | user.setEmail(resultSet.getString("email")); 24 | user.setPassword(resultSet.getString("password")); 25 | user.setCreatedAt(resultSet.getTimestamp("createdAt")); 26 | user.setUpdatedAt(resultSet.getTimestamp("updatedAt")); 27 | return user; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/VulnerabilityTrendMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.VulnerabilityTrend; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class VulnerabilityTrendMapper implements ResultSetMapper { 11 | public VulnerabilityTrend map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | VulnerabilityTrend vulnerabilityTrend = new VulnerabilityTrend(); 13 | vulnerabilityTrend.setMonth(resultSet.getString("month")); 14 | vulnerabilityTrend.setCount(resultSet.getLong("count")); 15 | vulnerabilityTrend.setSeverity(resultSet.getString("severity")); 16 | return vulnerabilityTrend; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/models/mapper/VulnerableTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.models.mapper; 2 | 3 | import com.olacabs.jackhammer.models.VulnerableType; 4 | import org.skife.jdbi.v2.StatementContext; 5 | import org.skife.jdbi.v2.tweak.ResultSetMapper; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | public class VulnerableTypeMapper implements ResultSetMapper { 11 | public VulnerableType map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { 12 | VulnerableType vulnerableType = new VulnerableType(); 13 | vulnerableType.setName(resultSet.getString("name")); 14 | return vulnerableType; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ActionResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.Action; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class ActionResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(Action action) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(action).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/AnalyticsResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Analytics; 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | @Slf4j 10 | public class AnalyticsResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Analytics analytics) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(analytics).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ApplicationResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Group; 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | @Slf4j 10 | public class ApplicationResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Group group) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(group).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ChangePasswordResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 4 | import com.olacabs.jackhammer.models.User; 5 | 6 | import javax.ws.rs.core.Response; 7 | 8 | public class ChangePasswordResponseBuilder extends AbstractResponseBuilder { 9 | @Override 10 | public Response buildFetchRecordResponse(User model) throws OperationFailedException { 11 | return null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/CommentResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Comment; 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | @Slf4j 10 | public class CommentResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Comment comment) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(comment).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/DashboardResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Dashboard; 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | @Slf4j 10 | public class DashboardResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Dashboard dashboard) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(dashboard).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/DefaultRoleResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.DefaultRole; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class DefaultRoleResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(DefaultRole defaultRole) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(defaultRole).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/FindingResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Finding; 5 | 6 | import javax.ws.rs.core.Response; 7 | 8 | public class FindingResponseBuilder extends AbstractResponseBuilder { 9 | 10 | @Override 11 | public Response buildFetchRecordResponse(Finding finding) { 12 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(finding).build(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/GitResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.Git; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class GitResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(Git git) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(git).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/GroupResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Group; 5 | import com.olacabs.jackhammer.models.PagedResponse; 6 | 7 | import javax.ws.rs.core.GenericEntity; 8 | import javax.ws.rs.core.Response; 9 | import java.util.List; 10 | 11 | public class GroupResponseBuilder extends AbstractResponseBuilder { 12 | @Override 13 | public Response buildFetchRecordResponse(Group group) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(group).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/HardcodeSecretResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.HardcodeSecret; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class HardcodeSecretResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(HardcodeSecret hardcodeSecret) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(hardcodeSecret).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/JiraDetailResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.JiraDetail; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class JiraDetailResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(JiraDetail jiraDetail) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(jiraDetail).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/LanguageResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.HttpResponseCodes; 4 | import com.olacabs.jackhammer.models.Tool; 5 | 6 | import javax.ws.rs.core.Response; 7 | 8 | public class LanguageResponseBuilder extends AbstractResponseBuilder { 9 | 10 | @Override 11 | public Response buildFetchRecordResponse(Tool tool) { 12 | return Response.status(HttpResponseCodes.HTTP_RESPONSE_SUCCESS).entity(tool).build(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/PermissionResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.HttpResponseCodes; 4 | import com.olacabs.jackhammer.models.Permission; 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import javax.ws.rs.core.GenericEntity; 8 | import javax.ws.rs.core.Response; 9 | import java.util.List; 10 | 11 | @Slf4j 12 | public class PermissionResponseBuilder extends AbstractResponseBuilder { 13 | 14 | @Override 15 | public Response buildFetchRecordResponse(Permission permission) { 16 | return Response.status(HttpResponseCodes.HTTP_RESPONSE_SUCCESS).entity(permission).build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/RepoResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.HttpResponseCodes; 4 | import com.olacabs.jackhammer.models.Repo; 5 | 6 | import javax.ws.rs.core.GenericEntity; 7 | import javax.ws.rs.core.Response; 8 | import java.util.List; 9 | 10 | public class RepoResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Repo repo) { 14 | return Response.status(HttpResponseCodes.HTTP_RESPONSE_SUCCESS).entity(repo).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ResetPasswordResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 4 | import com.olacabs.jackhammer.models.User; 5 | 6 | import javax.ws.rs.core.Response; 7 | 8 | public class ResetPasswordResponseBuilder extends AbstractResponseBuilder { 9 | @Override 10 | public Response buildFetchRecordResponse(User model) throws OperationFailedException { 11 | return null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/RoleResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Role; 5 | 6 | import lombok.extern.slf4j.Slf4j; 7 | 8 | import javax.ws.rs.core.GenericEntity; 9 | 10 | import javax.ws.rs.core.Response; 11 | import java.util.List; 12 | 13 | @Slf4j 14 | public class RoleResponseBuilder extends AbstractResponseBuilder { 15 | 16 | @Override 17 | public Response buildFetchRecordResponse(Role role) { 18 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(role).build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/SMTPDetailResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.SMTPDetail; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class SMTPDetailResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(SMTPDetail smtpDetail) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(smtpDetail).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ScanResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Scan; 5 | 6 | import javax.ws.rs.core.GenericEntity; 7 | import javax.ws.rs.core.Response; 8 | import java.util.List; 9 | 10 | public class ScanResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Scan scan) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(scan).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ScanTypeResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.HttpResponseCodes; 4 | import com.olacabs.jackhammer.models.ScanType; 5 | import com.olacabs.jackhammer.models.Tool; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class ScanTypeResponseBuilder extends AbstractResponseBuilder { 10 | 11 | @Override 12 | public Response buildFetchRecordResponse(ScanType scanType) { 13 | return Response.status(HttpResponseCodes.HTTP_RESPONSE_SUCCESS).entity(scanType).build(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ScheduleTypeResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.HttpResponseCodes; 4 | import com.olacabs.jackhammer.models.ScheduleType; 5 | 6 | import javax.ws.rs.core.GenericEntity; 7 | import javax.ws.rs.core.Response; 8 | import java.util.List; 9 | 10 | public class ScheduleTypeResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(ScheduleType scheduleType) { 14 | return Response.status(HttpResponseCodes.HTTP_RESPONSE_SUCCESS).entity(scheduleType).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/SeverityLevelResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.SeverityLevel; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class SeverityLevelResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(SeverityLevel severityLevel) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(severityLevel).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/TagResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.models.Tag; 5 | import lombok.extern.slf4j.Slf4j; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | @Slf4j 10 | public class TagResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Tag tag) { 14 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(tag).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/TaskResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.CustomErrorCodes; 4 | import com.olacabs.jackhammer.exceptions.OperationFailedException; 5 | import com.olacabs.jackhammer.models.Task; 6 | 7 | import javax.ws.rs.core.Response; 8 | 9 | public class TaskResponseBuilder extends AbstractResponseBuilder { 10 | public Response buildFetchRecordResponse(Task task) throws OperationFailedException { 11 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(task).build(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/ToolResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.common.HttpResponseCodes; 4 | import com.olacabs.jackhammer.models.Tool; 5 | 6 | import javax.ws.rs.core.Response; 7 | 8 | public class ToolResponseBuilder extends AbstractResponseBuilder { 9 | 10 | @Override 11 | public Response buildFetchRecordResponse(Tool tool) { 12 | return Response.status(HttpResponseCodes.HTTP_RESPONSE_SUCCESS).entity(tool).build(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/UploadResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | import com.olacabs.jackhammer.models.Upload; 4 | import lombok.extern.slf4j.Slf4j; 5 | 6 | import javax.ws.rs.core.HttpHeaders; 7 | import javax.ws.rs.core.Response; 8 | 9 | @Slf4j 10 | public class UploadResponseBuilder extends AbstractResponseBuilder { 11 | 12 | @Override 13 | public Response buildFetchRecordResponse(Upload upload) { 14 | return Response.ok(upload) 15 | .header(HttpHeaders.CONTENT_DISPOSITION, 16 | "attachment; filename=" + "\"" + upload.getName() + "\"") 17 | .build(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/response/builder/UserResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.response.builder; 2 | 3 | 4 | import javax.ws.rs.core.Response; 5 | 6 | import com.olacabs.jackhammer.common.*; 7 | import com.olacabs.jackhammer.models.*; 8 | 9 | import lombok.AllArgsConstructor; 10 | import lombok.extern.slf4j.Slf4j; 11 | 12 | 13 | @Slf4j 14 | @AllArgsConstructor 15 | public class UserResponseBuilder extends AbstractResponseBuilder { 16 | 17 | @Override 18 | public Response buildFetchRecordResponse(User user) { 19 | User responseUser = new User(); 20 | responseUser.setGroups(user.getGroups()); 21 | responseUser.setRoles(user.getRoles()); 22 | responseUser.setEmail(user.getEmail()); 23 | return Response.status(CustomErrorCodes.HTTP_RESPONSE_SUCCESS.getValue()).entity(responseUser).build(); 24 | } 25 | 26 | } 27 | 28 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/scan/manager/ScanPicker.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.scan.manager; 2 | 3 | 4 | import com.google.inject.Inject; 5 | import com.google.inject.name.Named; 6 | 7 | import com.olacabs.jackhammer.db.ScanDAO; 8 | 9 | import lombok.extern.slf4j.Slf4j; 10 | 11 | import java.util.List; 12 | 13 | import com.olacabs.jackhammer.common.Constants; 14 | import com.olacabs.jackhammer.models.Scan; 15 | import com.olacabs.jackhammer.utilities.ScanUtil; 16 | 17 | @Slf4j 18 | public class ScanPicker implements Runnable { 19 | 20 | @Inject 21 | ScanUtil scanUtil; 22 | 23 | @Inject 24 | @Named(Constants.SCAN_DAO) 25 | ScanDAO scanDAO; 26 | 27 | public void run() { 28 | List scanList = scanDAO.getQueuedScans(); 29 | log.info("Pending scans count ==>{} {} ", scanList.size()); 30 | for (Scan scan : scanList) { 31 | scanUtil.startScan(scan); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/scan/manager/ScheduledScanPooler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.scan.manager; 2 | 3 | import com.google.inject.Inject; 4 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 5 | import io.dropwizard.lifecycle.Managed; 6 | 7 | import java.util.concurrent.ScheduledThreadPoolExecutor; 8 | import java.util.concurrent.TimeUnit; 9 | 10 | public class ScheduledScanPooler implements Managed { 11 | @Inject 12 | JackhammerConfiguration jackhammerConfiguration; 13 | 14 | @Inject 15 | ScheduledScanPicker scheduledScanPicker; 16 | 17 | public void start() throws Exception { 18 | 19 | //setting thread pool 20 | int threadPoolSize = jackhammerConfiguration.getScanMangerConfiguration().getThreadPoolSize(); 21 | int initialDelay = jackhammerConfiguration.getScanMangerConfiguration().getInitialDelay(); 22 | int period = jackhammerConfiguration.getScanMangerConfiguration().getPeriod(); 23 | ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadPoolSize); 24 | executor.scheduleAtFixedRate(scheduledScanPicker, initialDelay, period, TimeUnit.SECONDS); 25 | } 26 | 27 | public void stop() throws Exception { 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/scan/manager/WpScanSchedulerPicker.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.scan.manager; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.ScanDAO; 7 | import com.olacabs.jackhammer.db.ScanTypeDAO; 8 | import com.olacabs.jackhammer.models.Scan; 9 | import com.olacabs.jackhammer.models.ScanType; 10 | import com.olacabs.jackhammer.utilities.ScanUtil; 11 | import lombok.extern.slf4j.Slf4j; 12 | 13 | import java.util.List; 14 | 15 | @Slf4j 16 | public class WpScanSchedulerPicker implements Runnable { 17 | 18 | @Inject 19 | @Named(Constants.SCAN_DAO) 20 | ScanDAO scanDAO; 21 | 22 | @Inject 23 | ScanUtil scanUtil; 24 | 25 | @Inject 26 | @Named(Constants.SCAN_TYPE_DAO) 27 | ScanTypeDAO scanTypeDAO; 28 | 29 | public void run() { 30 | ScanType scanType = scanTypeDAO.getWpScanType(); 31 | List scanList = scanDAO.getWordpressScans(scanType.getId()); 32 | log.info("Total scheduled scans count ..{} {} ", scanList.size()); 33 | for (Scan scan : scanList) { 34 | scanUtil.startScan(scan); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/scan/manager/WpScanSchedulerPooler.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.scan.manager; 2 | 3 | import com.google.inject.Inject; 4 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 5 | import io.dropwizard.lifecycle.Managed; 6 | 7 | import java.util.concurrent.ScheduledThreadPoolExecutor; 8 | import java.util.concurrent.TimeUnit; 9 | 10 | public class WpScanSchedulerPooler implements Managed { 11 | 12 | @Inject 13 | JackhammerConfiguration jackhammerConfiguration; 14 | 15 | @Inject 16 | WpScanSchedulerPicker wpScanSchedulerPicker; 17 | 18 | public void start() throws Exception { 19 | //setting thread pool 20 | int threadPoolSize = jackhammerConfiguration.getScanMangerConfiguration().getThreadPoolSize(); 21 | int initialDelay = jackhammerConfiguration.getScanMangerConfiguration().getInitialDelay(); 22 | ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadPoolSize); 23 | executor.scheduleAtFixedRate(wpScanSchedulerPicker, initialDelay, 1, TimeUnit.DAYS); 24 | } 25 | 26 | public void stop() throws Exception { 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/ChangePasswordDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.UserDAO; 7 | import com.olacabs.jackhammer.models.PagedResponse; 8 | import com.olacabs.jackhammer.models.User; 9 | 10 | public class ChangePasswordDataService extends AbstractDataService { 11 | 12 | @Inject 13 | @Named(Constants.USER_DAO) 14 | UserDAO userDAO; 15 | 16 | @Override 17 | public PagedResponse getAllRecords(User model) { 18 | return null; 19 | } 20 | 21 | @Override 22 | public User createRecord(User model) { 23 | return null; 24 | } 25 | 26 | @Override 27 | public User fetchRecordByname(User model) { 28 | return null; 29 | } 30 | 31 | @Override 32 | public User fetchRecordById(long id) { 33 | return null; 34 | } 35 | 36 | @Override 37 | public void updateRecord(User user) { 38 | userDAO.updatePassword(user); 39 | } 40 | 41 | @Override 42 | public void deleteRecord(long id) { 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/CommentDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.CommentDAO; 7 | import com.olacabs.jackhammer.models.*; 8 | 9 | import java.util.List; 10 | 11 | 12 | public class CommentDataService extends AbstractDataService { 13 | 14 | @Inject 15 | @Named(Constants.COMMENT_DAO) 16 | CommentDAO commentDAO; 17 | 18 | @Override 19 | public PagedResponse getAllRecords(Comment comment) { 20 | List commentList = commentDAO.getAll(comment); 21 | for(Comment eachComment : commentList) { 22 | User user = userDAOJdbi.get(eachComment.getUserId()); 23 | eachComment.setUserName(user.getName()); 24 | } 25 | paginationRecords.setItems(commentList); 26 | return paginationRecords; 27 | } 28 | 29 | @Override 30 | public Comment fetchRecordByname(Comment comment){ 31 | return null; 32 | } 33 | 34 | @Override 35 | public Comment fetchRecordById(long id){ 36 | return commentDAO.get(id); 37 | } 38 | 39 | @Override 40 | public Comment createRecord(Comment comment) { 41 | long id = commentDAO.insert(comment); 42 | return commentDAO.get(id); 43 | } 44 | @Override 45 | public void updateRecord(Comment comment){ 46 | commentDAO.update(comment); 47 | } 48 | @Override 49 | public void deleteRecord(long id){ 50 | roleDAOJdbi.delete(id); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/DefaultRoleDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.DefaultRoleDAO; 7 | import com.olacabs.jackhammer.models.DefaultRole; 8 | import com.olacabs.jackhammer.models.PagedResponse; 9 | 10 | public class DefaultRoleDataService extends AbstractDataService { 11 | 12 | @Inject 13 | @Named(Constants.DEFAULT_ROLE_DAO) 14 | DefaultRoleDAO defaultRoleDAO; 15 | 16 | 17 | public PagedResponse getAllRecords(DefaultRole defaultRole) { 18 | return null; 19 | } 20 | 21 | public DefaultRole createRecord(DefaultRole defaultRole) { 22 | DefaultRole dbDefaultRole = defaultRoleDAO.get(); 23 | if (dbDefaultRole == null) { 24 | defaultRoleDAO.insert(defaultRole); 25 | } 26 | return dbDefaultRole; 27 | } 28 | 29 | public DefaultRole fetchRecordByname(DefaultRole model) { 30 | return null; 31 | } 32 | 33 | public DefaultRole fetchRecordById(long id) { 34 | DefaultRole defaultRole = defaultRoleDAO.get(); 35 | return defaultRole; 36 | } 37 | 38 | public void updateRecord(DefaultRole defaultRole) { 39 | defaultRoleDAO.update(defaultRole); 40 | } 41 | 42 | public void deleteRecord(long id) { 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/HardcodeSecretDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 7 | import com.olacabs.jackhammer.db.HardcodeSecretDAO; 8 | import com.olacabs.jackhammer.models.PagedResponse; 9 | import com.olacabs.jackhammer.models.HardcodeSecret; 10 | 11 | public class HardcodeSecretDataService extends AbstractDataService { 12 | 13 | @Inject 14 | @Named(Constants.HARDCODE_SECRET_DAO) 15 | HardcodeSecretDAO hardcodeSecretDAO; 16 | 17 | @Inject 18 | JackhammerConfiguration jackhammerConfiguration; 19 | 20 | public PagedResponse getAllRecords(HardcodeSecret hardcodeSecret) { 21 | return null; 22 | } 23 | 24 | public HardcodeSecret createRecord(HardcodeSecret hardcodeSecret) { 25 | HardcodeSecret dbHardcodeSecret = hardcodeSecretDAO.get(); 26 | if (dbHardcodeSecret == null) { 27 | hardcodeSecretDAO.insert(hardcodeSecret); 28 | } 29 | return dbHardcodeSecret; 30 | } 31 | 32 | public HardcodeSecret fetchRecordByname(HardcodeSecret model) { 33 | return null; 34 | } 35 | 36 | public HardcodeSecret fetchRecordById(long id) { 37 | HardcodeSecret hardcodeSecret = hardcodeSecretDAO.get(); 38 | return hardcodeSecret; 39 | } 40 | 41 | public void updateRecord(HardcodeSecret hardcodeSecret) { 42 | hardcodeSecretDAO.update(hardcodeSecret); 43 | } 44 | 45 | public void deleteRecord(long id) { 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/ResetPasswordDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.UserDAO; 7 | import com.olacabs.jackhammer.models.PagedResponse; 8 | import com.olacabs.jackhammer.models.User; 9 | 10 | public class ResetPasswordDataService extends AbstractDataService { 11 | @Inject 12 | @Named(Constants.USER_DAO) 13 | UserDAO userDAO; 14 | @Override 15 | public PagedResponse getAllRecords(User user) { return null; } 16 | 17 | @Override 18 | public User createRecord(User user) { 19 | userDAOJdbi.updateResetPasswordToken(user); 20 | return user; 21 | } 22 | 23 | @Override 24 | public User fetchRecordByname(User model) { 25 | return null; 26 | } 27 | 28 | @Override 29 | public User fetchRecordById(long id) { 30 | return null; 31 | } 32 | 33 | @Override 34 | public void updateRecord(User user) { 35 | user.setNewPassword(user.getPassword()); 36 | userDAO.updatePassword(user); 37 | } 38 | 39 | @Override 40 | public void deleteRecord(long id) { 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/ScheduleTypeDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.ScheduleTypeDAO; 7 | import com.olacabs.jackhammer.models.PagedResponse; 8 | import com.olacabs.jackhammer.models.ScheduleType; 9 | 10 | import java.util.List; 11 | 12 | public class ScheduleTypeDataService extends AbstractDataService { 13 | 14 | @Inject 15 | @Named(Constants.SCHEDULE_TYPE_DAO) 16 | ScheduleTypeDAO scheduleTypeDAO; 17 | @Override 18 | public PagedResponse getAllRecords(ScheduleType scheduleType) { 19 | paginationRecords.setItems(scheduleTypeDAO.getAll()); 20 | // setCRUDPermissions(paginationRecords,scheduleType,null); 21 | setOwnerAndScanType(paginationRecords,scheduleType); 22 | return paginationRecords; 23 | } 24 | @Override 25 | public ScheduleType fetchRecordByname(ScheduleType scheduleType){ 26 | return scheduleTypeDAO.findScheduleByName(scheduleType.getName()); 27 | } 28 | @Override 29 | public ScheduleType fetchRecordById(long id){ 30 | return scheduleTypeDAO.get(id); 31 | } 32 | @Override 33 | public ScheduleType createRecord(ScheduleType scheduleType) { 34 | return scheduleTypeDAO.save(scheduleType); 35 | } 36 | @Override 37 | public void updateRecord(ScheduleType scheduleType){ 38 | scheduleTypeDAO.update(scheduleType); 39 | } 40 | @Override 41 | public void deleteRecord(long id){ 42 | scheduleTypeDAO.delete(id); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/service/UploadDataService.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.service; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.UploadDAO; 7 | import com.olacabs.jackhammer.models.PagedResponse; 8 | import com.olacabs.jackhammer.models.Upload; 9 | import com.olacabs.jackhammer.models.User; 10 | import lombok.extern.slf4j.Slf4j; 11 | 12 | import java.util.List; 13 | 14 | 15 | @Slf4j 16 | public class UploadDataService extends AbstractDataService { 17 | 18 | @Inject 19 | @Named(Constants.UPLOAD_DAO) 20 | UploadDAO uploadDAO; 21 | 22 | @Override 23 | public PagedResponse getAllRecords(Upload upload) { 24 | 25 | List uploadList = uploadDAO.getAll(upload); 26 | for(Upload eachUpload : uploadList) { 27 | User user = userDAOJdbi.get(eachUpload.getUserId()); 28 | eachUpload.setUserName(user.getName()); 29 | } 30 | paginationRecords.setItems(uploadList); 31 | return paginationRecords; 32 | } 33 | 34 | @Override 35 | public Upload fetchRecordByname(Upload upload){ 36 | return null; 37 | } 38 | 39 | @Override 40 | public Upload fetchRecordById(long id){ 41 | return uploadDAO.get(id); 42 | } 43 | 44 | @Override 45 | public Upload createRecord(Upload upload) { 46 | int id = uploadDAO.insert(upload); 47 | return uploadDAO.get(id); 48 | } 49 | 50 | @Override 51 | public void updateRecord(Upload upload){ 52 | 53 | } 54 | @Override 55 | public void deleteRecord(long id){ 56 | uploadDAO.delete(id); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/tool/interfaces/container/manager/ActiveToolInstanceManager.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.tool.interfaces.container.manager; 2 | 3 | import com.google.inject.Inject; 4 | import lombok.extern.slf4j.Slf4j; 5 | 6 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 7 | import io.dropwizard.lifecycle.Managed; 8 | 9 | import java.util.concurrent.ScheduledThreadPoolExecutor; 10 | import java.util.concurrent.TimeUnit; 11 | 12 | @Slf4j 13 | public class ActiveToolInstanceManager implements Managed { 14 | 15 | @Inject 16 | JackhammerConfiguration jackhammerConfiguration; 17 | 18 | @Inject 19 | ActiveToolInstanceHealthCheck activeToolInstanceHealthCheck; 20 | 21 | 22 | public void start() throws Exception { 23 | try { 24 | //setting thread pool 25 | int threadPoolSize = jackhammerConfiguration.getToolManagerConfiguration().getThreadPoolSize(); 26 | int initialDelay = jackhammerConfiguration.getToolManagerConfiguration().getInitialDelay(); 27 | int period = jackhammerConfiguration.getToolManagerConfiguration().getPeriod(); 28 | ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadPoolSize); 29 | executor.scheduleAtFixedRate(activeToolInstanceHealthCheck, initialDelay, period, TimeUnit.SECONDS); 30 | } catch (Throwable th) { 31 | log.error("Error in Tool Pooler while pooling", th); 32 | } 33 | } 34 | 35 | public void stop() throws Exception { 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/tool/interfaces/container/manager/AutoScalingManager.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.tool.interfaces.container.manager; 2 | 3 | import com.google.inject.Inject; 4 | import lombok.extern.slf4j.Slf4j; 5 | 6 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 7 | import io.dropwizard.lifecycle.Managed; 8 | 9 | import java.util.concurrent.ScheduledThreadPoolExecutor; 10 | import java.util.concurrent.TimeUnit; 11 | 12 | @Slf4j 13 | public class AutoScalingManager implements Managed { 14 | 15 | @Inject 16 | private JackhammerConfiguration jackhammerConfiguration; 17 | 18 | @Inject 19 | private AutoScalingTool autoScalingTool; 20 | 21 | public void start() throws Exception { 22 | try { 23 | //setting thread pool 24 | int threadPoolSize = jackhammerConfiguration.getToolManagerConfiguration().getThreadPoolSize(); 25 | int initialDelay = jackhammerConfiguration.getToolManagerConfiguration().getInitialDelay(); 26 | int period = jackhammerConfiguration.getToolManagerConfiguration().getPeriod(); 27 | ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadPoolSize); 28 | executor.scheduleAtFixedRate(autoScalingTool, 0, period/4, TimeUnit.MINUTES); 29 | } catch (Throwable th) { 30 | log.error("Error in ToolPooler while pooling", th); 31 | } 32 | } 33 | 34 | public void stop() throws Exception { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/tool/interfaces/container/manager/HangedToolInstanceManager.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.tool.interfaces.container.manager; 2 | 3 | import com.google.inject.Inject; 4 | import com.olacabs.jackhammer.configuration.JackhammerConfiguration; 5 | import io.dropwizard.lifecycle.Managed; 6 | import lombok.extern.slf4j.Slf4j; 7 | 8 | import java.util.concurrent.ScheduledThreadPoolExecutor; 9 | import java.util.concurrent.TimeUnit; 10 | 11 | @Slf4j 12 | public class HangedToolInstanceManager implements Managed { 13 | 14 | 15 | @Inject 16 | JackhammerConfiguration jackhammerConfiguration; 17 | 18 | @Inject 19 | HangedToolInstanceCheck hangedToolInstanceCheck; 20 | 21 | 22 | public void start() throws Exception { 23 | try { 24 | //setting thread pool 25 | int threadPoolSize = jackhammerConfiguration.getToolManagerConfiguration().getThreadPoolSize(); 26 | int initialDelay = jackhammerConfiguration.getToolManagerConfiguration().getInitialDelay(); 27 | int period = jackhammerConfiguration.getToolManagerConfiguration().getPeriod(); 28 | ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadPoolSize); 29 | executor.scheduleAtFixedRate(hangedToolInstanceCheck, initialDelay, period/2, TimeUnit.MINUTES); 30 | } catch (Throwable th) { 31 | log.error("Error in ToolPooler while pooling", th); 32 | } 33 | } 34 | 35 | public void stop() throws Exception { 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/tool/interfaces/request/ScanRequest.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.tool.interfaces.request; 2 | 3 | import com.google.inject.Inject; 4 | import com.google.inject.name.Named; 5 | import com.olacabs.jackhammer.common.Constants; 6 | import com.olacabs.jackhammer.db.ScanDAO; 7 | import com.olacabs.jackhammer.models.Scan; 8 | 9 | 10 | public class ScanRequest { 11 | 12 | 13 | @Inject 14 | @Named(Constants.SCAN_DAO) 15 | ScanDAO scanDAO; 16 | 17 | public void changeScanStatus(Scan scan,String status) { 18 | scan.setStatus(Constants.SCAN_PROGRESS_STATUS); 19 | scan.setStatus(status); 20 | scanDAO.updateScanStatus(scan); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/tool/interfaces/request/ScanRequestEncoder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.tool.interfaces.request; 2 | 3 | 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import com.olacabs.jackhammer.models.Scan; 6 | 7 | import javax.websocket.EncodeException; 8 | import javax.websocket.Encoder; 9 | import javax.websocket.EndpointConfig; 10 | import java.io.IOException; 11 | 12 | public class ScanRequestEncoder implements Encoder.Text { 13 | 14 | private static final ObjectMapper MAPPER = new ObjectMapper(); 15 | 16 | public void destroy() { 17 | // TODO Auto-generated method stub 18 | 19 | } 20 | 21 | public void init(EndpointConfig arg0) { 22 | // TODO Auto-generated method stub 23 | 24 | } 25 | 26 | public String encode(Scan scan) throws EncodeException { 27 | try { 28 | return MAPPER.writeValueAsString(scan); 29 | } catch (IOException e) { 30 | throw new EncodeException(scan, "Could not encode.", e); 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/tool/interfaces/response/ScanResponseDecoder.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.tool.interfaces.response; 2 | 3 | import com.fasterxml.jackson.core.JsonFactory; 4 | import com.fasterxml.jackson.core.type.TypeReference; 5 | import com.fasterxml.jackson.databind.ObjectMapper; 6 | import lombok.extern.slf4j.Slf4j; 7 | 8 | import javax.websocket.DecodeException; 9 | import javax.websocket.Decoder; 10 | import javax.websocket.EndpointConfig; 11 | import java.io.StringReader; 12 | import java.util.HashMap; 13 | import java.util.Map; 14 | 15 | 16 | @Slf4j 17 | public class ScanResponseDecoder implements Decoder.Text { 18 | 19 | public Map decode(String scanResponse) throws DecodeException { 20 | try { 21 | ObjectMapper mapper = new ObjectMapper(); 22 | return mapper.readValue(scanResponse, new TypeReference>() {}); 23 | } catch (Exception e) { 24 | log.info("Problem with Decoder: " + e.getMessage()); 25 | return new HashMap(); 26 | } 27 | } 28 | 29 | public boolean willDecode(String scanResponse) { 30 | try { 31 | JsonFactory factory = new JsonFactory(); 32 | factory.createParser(new StringReader(scanResponse)); 33 | return true; 34 | } catch (Exception e) { 35 | return false; 36 | } 37 | } 38 | 39 | public void init(EndpointConfig config) { 40 | log.info("Scan Response Decoder -init method called"); 41 | } 42 | 43 | public void destroy() { 44 | log.info("Scan Response Decoder - destroy method called"); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/utilities/ToolUtil.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.utilities; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import com.olacabs.jackhammer.common.Constants; 5 | import com.olacabs.jackhammer.models.Tool; 6 | import com.olacabs.jackhammer.models.ToolManifest; 7 | import lombok.extern.slf4j.Slf4j; 8 | 9 | import java.io.IOException; 10 | 11 | @Slf4j 12 | public class ToolUtil { 13 | 14 | public ToolManifest buildToolManifestRecord(Tool tool) { 15 | ToolManifest toolManifest = null; 16 | try { 17 | ObjectMapper mapper = new ObjectMapper(); 18 | String manifest = tool.getManifestJson(); 19 | toolManifest = mapper.readValue(manifest, ToolManifest.class); 20 | toolManifest.getEnv().put(Constants.TOOL_ID,String.valueOf(tool.getId())); 21 | if(toolManifest.getContainer().getVolumes()!=null && toolManifest.getContainer().getVolumes().size() > 0) { 22 | toolManifest.getEnv().put(Constants.CONTAINER_VOLUME_PATH,toolManifest.getContainer().getVolumes().get(0).getContainerPath()); 23 | } 24 | return toolManifest; 25 | } catch (IOException io) { 26 | log.error("Error while reading tool manifest info json",io); 27 | } 28 | return toolManifest; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/AbstractValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | import com.google.inject.Inject; 4 | import com.olacabs.jackhammer.common.CustomErrorCodes; 5 | import com.olacabs.jackhammer.common.ExceptionMessages; 6 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 7 | import com.olacabs.jackhammer.exceptions.InvalidcredentialException; 8 | import com.olacabs.jackhammer.models.AbstractModel; 9 | import com.olacabs.jackhammer.service.factories.DataServiceBuilderFactory; 10 | 11 | public abstract class AbstractValidator { 12 | 13 | @Inject 14 | DataServiceBuilderFactory dataServiceBuilderFactory; 15 | 16 | public abstract void dataValidations(T model) throws ValidationFailedException; 17 | public abstract void uniquenessValidations(T model) throws ValidationFailedException; 18 | public void userAuthValidations(T loggingUser,T dbUser) throws InvalidcredentialException { 19 | throw new InvalidcredentialException(ExceptionMessages.INVALID_CREDENTIALS,null, CustomErrorCodes.INVALID_CREDENTIALS); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/DefaultRoleValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | import com.google.common.base.Preconditions; 4 | import com.olacabs.jackhammer.common.CustomErrorCodes; 5 | import com.olacabs.jackhammer.common.ExceptionMessages; 6 | import com.olacabs.jackhammer.exceptions.InvalidHostException; 7 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 8 | import com.olacabs.jackhammer.models.DefaultRole; 9 | import com.olacabs.jackhammer.models.SMTPDetail; 10 | import org.apache.commons.validator.routines.DomainValidator; 11 | 12 | public class DefaultRoleValidator extends AbstractValidator { 13 | 14 | public void dataValidations(DefaultRole defaultRole) throws ValidationFailedException { 15 | try { 16 | Preconditions.checkNotNull(defaultRole.getRoleId()); 17 | } catch (NullPointerException npe) { 18 | throw new ValidationFailedException(ExceptionMessages.INVALID_DATA, npe, CustomErrorCodes.INVALID_DATA); 19 | } 20 | } 21 | 22 | public void uniquenessValidations(DefaultRole model) throws ValidationFailedException { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/HardcodeSecretValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 4 | import com.olacabs.jackhammer.models.HardcodeSecret; 5 | 6 | public class HardcodeSecretValidator extends AbstractValidator { 7 | 8 | public void dataValidations(HardcodeSecret model) throws ValidationFailedException { 9 | 10 | } 11 | 12 | public void uniquenessValidations(HardcodeSecret model) throws ValidationFailedException { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/RoleValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | 4 | import com.google.common.base.Preconditions; 5 | 6 | 7 | import com.olacabs.jackhammer.exceptions.DataServiceNotFoundException; 8 | import lombok.extern.slf4j.Slf4j; 9 | 10 | import com.olacabs.jackhammer.common.CustomErrorCodes; 11 | import com.olacabs.jackhammer.common.ExceptionMessages; 12 | import com.olacabs.jackhammer.enums.Handler; 13 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 14 | import com.olacabs.jackhammer.models.Role; 15 | 16 | @Slf4j 17 | public class RoleValidator extends AbstractValidator { 18 | 19 | @Override 20 | public void dataValidations(Role role) throws ValidationFailedException { 21 | try { 22 | Preconditions.checkNotNull(role.getName()); 23 | } catch (NullPointerException npe) { 24 | throw new ValidationFailedException(ExceptionMessages.INVALID_DATA, npe, CustomErrorCodes.INVALID_DATA); 25 | } 26 | } 27 | 28 | @Override 29 | public void uniquenessValidations(Role role) throws ValidationFailedException { 30 | Role rolePresent = null; 31 | try { 32 | rolePresent = (Role) dataServiceBuilderFactory.getService(Handler.ROLE_SERVICE).fetchRecordByname(role); 33 | } catch(DataServiceNotFoundException dne) { 34 | log.error("Handler not found while validating role",dne); 35 | } 36 | if (rolePresent != null) 37 | throw new ValidationFailedException(ExceptionMessages.ROLE_ALREADY_EXISTS, null, CustomErrorCodes.ROLE_ALREADY_EXISTS); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/SMTPDetailValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | import com.google.common.base.Preconditions; 4 | import com.olacabs.jackhammer.common.CustomErrorCodes; 5 | import com.olacabs.jackhammer.common.ExceptionMessages; 6 | import com.olacabs.jackhammer.exceptions.InvalidSmtpHost; 7 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 8 | import com.olacabs.jackhammer.models.SMTPDetail; 9 | import org.apache.commons.validator.routines.DomainValidator; 10 | 11 | public class SMTPDetailValidator extends AbstractValidator { 12 | 13 | public void dataValidations(SMTPDetail smtpDetail) throws ValidationFailedException { 14 | try { 15 | Preconditions.checkNotNull(smtpDetail.getApplicationUrl()); 16 | Preconditions.checkNotNull(smtpDetail.getSmtpHost()); 17 | Preconditions.checkNotNull(smtpDetail.getSmtpPort()); 18 | Preconditions.checkNotNull(smtpDetail.getSmtpPassword()); 19 | Boolean validDomain = DomainValidator.getInstance().isValid(smtpDetail.getSmtpHost()); 20 | if (!validDomain) 21 | throw new InvalidSmtpHost(ExceptionMessages.INVALID_DATA, null, CustomErrorCodes.INVALID_DATA); 22 | } catch (NullPointerException npe) { 23 | throw new ValidationFailedException(ExceptionMessages.INVALID_DATA, npe, CustomErrorCodes.INVALID_DATA); 24 | } 25 | catch (InvalidSmtpHost is) { 26 | throw new ValidationFailedException(ExceptionMessages.INVALID_SMTP_HOST, is, CustomErrorCodes.INVALID_SMTP_HOST); 27 | } 28 | } 29 | 30 | public void uniquenessValidations(SMTPDetail model) throws ValidationFailedException { 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/ScanTypeValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | import com.google.common.base.Preconditions; 4 | import com.olacabs.jackhammer.common.CustomErrorCodes; 5 | import com.olacabs.jackhammer.common.ExceptionMessages; 6 | import com.olacabs.jackhammer.enums.Handler; 7 | import com.olacabs.jackhammer.exceptions.DataServiceNotFoundException; 8 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 9 | import com.olacabs.jackhammer.models.ScanType; 10 | import lombok.extern.slf4j.Slf4j; 11 | 12 | @Slf4j 13 | public class ScanTypeValidator extends AbstractValidator { 14 | @Override 15 | public void dataValidations(ScanType scanType) throws ValidationFailedException { 16 | try { 17 | Preconditions.checkNotNull(scanType.getName()); 18 | } catch (NullPointerException npe) { 19 | throw new ValidationFailedException(ExceptionMessages.INVALID_DATA, npe, CustomErrorCodes.INVALID_DATA); 20 | } 21 | } 22 | 23 | @Override 24 | public void uniquenessValidations(ScanType scanType) throws ValidationFailedException { 25 | ScanType dbScanType = null; 26 | try { 27 | dbScanType = (ScanType) dataServiceBuilderFactory.getService(Handler.SCAN_TYPE_SERVICE).fetchRecordByname(scanType); 28 | } catch(DataServiceNotFoundException dne) { 29 | log.error("Handler not found while validating scanType",dne); 30 | } 31 | if (dbScanType != null) 32 | throw new ValidationFailedException(ExceptionMessages.SCAN_TYPE_ALREADY_EXISTS, null, CustomErrorCodes.SCAN_TYPE_ALREADY_EXISTS); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/olacabs/jackhammer/validations/SeverityLevelValidator.java: -------------------------------------------------------------------------------- 1 | package com.olacabs.jackhammer.validations; 2 | 3 | import com.olacabs.jackhammer.exceptions.ValidationFailedException; 4 | import com.olacabs.jackhammer.models.SeverityLevel; 5 | 6 | public class SeverityLevelValidator extends AbstractValidator { 7 | 8 | public void dataValidations(SeverityLevel model) throws ValidationFailedException { 9 | 10 | } 11 | 12 | public void uniquenessValidations(SeverityLevel model) throws ValidationFailedException { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/test/java/com/olacabs/jackhammer/AppTest.java: -------------------------------------------------------------------------------- 1 | //package com.olacabs.jackhammer; 2 | // 3 | //import junit.framework.Test; 4 | //import junit.framework.TestCase; 5 | //import junit.framework.TestSuite; 6 | // 7 | ///** 8 | // * Unit test for simple App. 9 | // */ 10 | //public class AppTest 11 | // extends TestCase 12 | //{ 13 | // /** 14 | // * Create the test case 15 | // * 16 | // * @param testName name of the test case 17 | // */ 18 | // public AppTest( String testName ) 19 | // { 20 | // super( testName ); 21 | // } 22 | // 23 | // /** 24 | // * @return the suite of tests being tested 25 | // */ 26 | // public static Test suite() 27 | // { 28 | // return new TestSuite( AppTest.class ); 29 | // } 30 | // 31 | // /** 32 | // * Rigourous Test :-) 33 | // */ 34 | // public void testApp() 35 | // { 36 | // assertTrue( true ); 37 | // } 38 | //} 39 | --------------------------------------------------------------------------------