gitextract_h6oaxvsz/ ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── config/ │ ├── example.fleet.properties │ ├── log4j2.local.xml │ └── log4j2.release.xml ├── gradle/ │ └── wrapper/ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src/ ├── main/ │ ├── java/ │ │ └── io/ │ │ └── linuxserver/ │ │ └── fleet/ │ │ ├── auth/ │ │ │ ├── AuthenticatedUser.java │ │ │ ├── AuthenticationDelegate.java │ │ │ ├── AuthenticationResult.java │ │ │ ├── DefaultAuthenticationDelegate.java │ │ │ ├── UserCredentials.java │ │ │ ├── authenticator/ │ │ │ │ ├── DefaultUserAuthenticator.java │ │ │ │ └── UserAuthenticator.java │ │ │ └── security/ │ │ │ ├── PBKDF2PasswordEncoder.java │ │ │ ├── PasswordEncoder.java │ │ │ └── util/ │ │ │ └── SaltGenerator.java │ │ ├── core/ │ │ │ ├── AbstractAppController.java │ │ │ ├── BaseRuntimeLoader.java │ │ │ ├── FleetAppController.java │ │ │ ├── FleetRuntime.java │ │ │ ├── Main.java │ │ │ ├── PropertiesLoader.java │ │ │ ├── ServiceProvider.java │ │ │ ├── config/ │ │ │ │ ├── AppProperties.java │ │ │ │ ├── DatabaseConnectionProperties.java │ │ │ │ ├── Version.java │ │ │ │ ├── VersionProperties.java │ │ │ │ └── WebConfiguration.java │ │ │ └── db/ │ │ │ ├── DatabaseConnection.java │ │ │ ├── DatabaseProvider.java │ │ │ └── DefaultDatabaseProvider.java │ │ ├── db/ │ │ │ ├── DefaultDatabaseConnection.java │ │ │ ├── PoolingDatabaseConnection.java │ │ │ ├── dao/ │ │ │ │ └── Utils.java │ │ │ ├── migration/ │ │ │ │ └── DatabaseVersion.java │ │ │ └── query/ │ │ │ ├── InsertUpdateResult.java │ │ │ ├── InsertUpdateStatus.java │ │ │ ├── LimitOffset.java │ │ │ └── LimitedResult.java │ │ ├── dockerhub/ │ │ │ ├── DockerHubException.java │ │ │ ├── model/ │ │ │ │ ├── DockerHubV2Image.java │ │ │ │ ├── DockerHubV2ImageListResult.java │ │ │ │ ├── DockerHubV2NamespaceLookupResult.java │ │ │ │ ├── DockerHubV2ScanResult.java │ │ │ │ ├── DockerHubV2Tag.java │ │ │ │ ├── DockerHubV2TagDigest.java │ │ │ │ └── DockerHubV2TagListResult.java │ │ │ └── util/ │ │ │ └── DockerTagFinder.java │ │ ├── exception/ │ │ │ └── SaveException.java │ │ └── v2/ │ │ ├── LoggerOwner.java │ │ ├── Utils.java │ │ ├── cache/ │ │ │ ├── AbstractItemCache.java │ │ │ ├── BasicItemCache.java │ │ │ ├── ImageCache.java │ │ │ ├── ItemCache.java │ │ │ ├── RepositoryCache.java │ │ │ └── ScheduleCache.java │ │ ├── client/ │ │ │ ├── docker/ │ │ │ │ ├── AbstractDockerApiClient.java │ │ │ │ ├── DockerApiClient.java │ │ │ │ ├── DockerImageNotFoundException.java │ │ │ │ ├── converter/ │ │ │ │ │ ├── AbstractDockerResponseConverter.java │ │ │ │ │ └── DockerResponseConverter.java │ │ │ │ ├── dockerhub/ │ │ │ │ │ ├── DockerHubApiClient.java │ │ │ │ │ ├── DockerHubAuthenticator.java │ │ │ │ │ ├── DockerHubCredentials.java │ │ │ │ │ ├── DockerHubImageConverter.java │ │ │ │ │ ├── DockerHubTagConverter.java │ │ │ │ │ ├── IDockerHubAuthenticator.java │ │ │ │ │ └── NoOpDockerHubAuthenticator.java │ │ │ │ ├── github/ │ │ │ │ │ ├── GitHubContainerRegistryClient.java │ │ │ │ │ ├── GitHubImageConverter.java │ │ │ │ │ ├── GitHubTagConverter.java │ │ │ │ │ └── model/ │ │ │ │ │ ├── GitHubImage.java │ │ │ │ │ └── GitHubTag.java │ │ │ │ └── queue/ │ │ │ │ ├── AsyncDockerApiRequest.java │ │ │ │ ├── AsyncDockerApiResponse.java │ │ │ │ ├── DockerApiDelegate.java │ │ │ │ ├── DockerApiTaskConsumer.java │ │ │ │ ├── DockerImageMissingUpdateResponse.java │ │ │ │ ├── DockerImageUpdateRequest.java │ │ │ │ ├── DockerImageUpdateResponse.java │ │ │ │ └── TaskQueue.java │ │ │ └── rest/ │ │ │ ├── HttpException.java │ │ │ ├── RestClient.java │ │ │ ├── RestResponse.java │ │ │ ├── marshalling/ │ │ │ │ ├── JacksonMarshallingStrategy.java │ │ │ │ └── MarshallingStrategy.java │ │ │ └── proxy/ │ │ │ ├── LazyLoadPayloadProxy.java │ │ │ └── PayloadProxy.java │ │ ├── db/ │ │ │ ├── AbstractDAO.java │ │ │ ├── DbUpdateStatus.java │ │ │ ├── DefaultImageDAO.java │ │ │ ├── DefaultScheduleDAO.java │ │ │ ├── DefaultUserDAO.java │ │ │ ├── ImageDAO.java │ │ │ ├── ImageTemplateFactory.java │ │ │ ├── ScheduleDAO.java │ │ │ ├── UserDAO.java │ │ │ └── Utils.java │ │ ├── file/ │ │ │ └── FileManager.java │ │ ├── key/ │ │ │ ├── AbstractDatabaseKey.java │ │ │ ├── AbstractHasKey.java │ │ │ ├── AbstractLookupKey.java │ │ │ ├── AlertKey.java │ │ │ ├── HasKey.java │ │ │ ├── ImageKey.java │ │ │ ├── ImageLookupKey.java │ │ │ ├── Key.java │ │ │ ├── RepositoryKey.java │ │ │ ├── ScheduleKey.java │ │ │ ├── TagBranchKey.java │ │ │ └── UserKey.java │ │ ├── service/ │ │ │ ├── AbstractAppService.java │ │ │ ├── ImageService.java │ │ │ ├── ScheduleService.java │ │ │ ├── SynchronisationService.java │ │ │ ├── UserService.java │ │ │ └── util/ │ │ │ └── TemplateMerger.java │ │ ├── thread/ │ │ │ ├── AbstractAppTask.java │ │ │ ├── AbstractAppThread.java │ │ │ ├── AbstractTaskQueueConsumer.java │ │ │ ├── AsyncTask.java │ │ │ ├── AsyncTaskDelegate.java │ │ │ ├── AsyncTaskResponse.java │ │ │ ├── TaskExecutionException.java │ │ │ ├── TaskResponseControllerProxy.java │ │ │ ├── ThreadStatus.java │ │ │ └── schedule/ │ │ │ ├── AbstractAppSchedule.java │ │ │ ├── AppSchedule.java │ │ │ ├── CheckAppVersionSchedule.java │ │ │ ├── ScheduleSpec.java │ │ │ ├── TidyHistoricDataSchedule.java │ │ │ ├── TimeWithUnit.java │ │ │ ├── cache/ │ │ │ │ └── RefreshCacheSchedule.java │ │ │ └── sync/ │ │ │ ├── AllImagesSyncSchedule.java │ │ │ ├── CleanRemovedImagesSchedule.java │ │ │ └── GetMissingImagesSchedule.java │ │ ├── types/ │ │ │ ├── AbstractSyncItem.java │ │ │ ├── AppAlert.java │ │ │ ├── FilePathDetails.java │ │ │ ├── HasSyncSpec.java │ │ │ ├── Image.java │ │ │ ├── ImageCountData.java │ │ │ ├── Repository.java │ │ │ ├── Tag.java │ │ │ ├── TagBranch.java │ │ │ ├── TagDigest.java │ │ │ ├── User.java │ │ │ ├── api/ │ │ │ │ ├── AbstractApiWrapper.java │ │ │ │ ├── ApiImagePullHistoryWrapper.java │ │ │ │ ├── ApiImageWrapper.java │ │ │ │ ├── ApiRepositoryWrapper.java │ │ │ │ ├── ApiScheduleWrapper.java │ │ │ │ └── external/ │ │ │ │ ├── AllImagesExternalApiResponse.java │ │ │ │ ├── ExternalApiImage.java │ │ │ │ ├── ExternalApiResponse.java │ │ │ │ └── templates/ │ │ │ │ ├── ApiDeviceTemplate.java │ │ │ │ ├── ApiEnvTemplate.java │ │ │ │ ├── ApiPortTemplate.java │ │ │ │ ├── ApiTemplateHolder.java │ │ │ │ └── ApiVolumeTemplate.java │ │ │ ├── docker/ │ │ │ │ ├── DockerCapability.java │ │ │ │ ├── DockerImage.java │ │ │ │ ├── DockerTag.java │ │ │ │ └── DockerTagManifestDigest.java │ │ │ ├── internal/ │ │ │ │ ├── AbstractParamRequest.java │ │ │ │ ├── ImageAppLogo.java │ │ │ │ ├── ImageGeneralInfoUpdateRequest.java │ │ │ │ ├── ImageOutlineRequest.java │ │ │ │ ├── ImageTemplateRequest.java │ │ │ │ ├── ImageUrlsUpdateRequest.java │ │ │ │ ├── RepositoryOutlineRequest.java │ │ │ │ ├── TagBranchOutlineRequest.java │ │ │ │ └── UserOutlineRequest.java │ │ │ └── meta/ │ │ │ ├── ExternalUrl.java │ │ │ ├── ExternalUrlKey.java │ │ │ ├── ImageCoreMeta.java │ │ │ ├── ImageMetaData.java │ │ │ ├── ItemSyncSpec.java │ │ │ ├── history/ │ │ │ │ ├── ImagePullHistory.java │ │ │ │ └── ImagePullStatistic.java │ │ │ └── template/ │ │ │ ├── AbstractTemplateItem.java │ │ │ ├── DeviceTemplateItem.java │ │ │ ├── EnvironmentTemplateItem.java │ │ │ ├── ImageTemplateHolder.java │ │ │ ├── PortTemplateItem.java │ │ │ ├── TemplateItem.java │ │ │ └── VolumeTemplateItem.java │ │ └── web/ │ │ ├── ApiException.java │ │ ├── AppRole.java │ │ ├── LocationUtils.java │ │ ├── Locations.java │ │ ├── PageModelAttributes.java │ │ ├── PageModelSpec.java │ │ ├── SessionAttributes.java │ │ ├── WebRouteController.java │ │ ├── freemarker/ │ │ │ ├── CustomFreemarkerTemplate.java │ │ │ └── Java8DateTimeMethod.java │ │ ├── request/ │ │ │ └── json/ │ │ │ ├── NewRepositoryRequest.java │ │ │ ├── UpdateImageSpecRequest.java │ │ │ └── UpdateRepositoryRequest.java │ │ └── routes/ │ │ ├── AbstractPageHandler.java │ │ ├── AdminImageController.java │ │ ├── AdminImageEditController.java │ │ ├── AdminRepositoryController.java │ │ ├── AdminScheduleController.java │ │ ├── AdminUserController.java │ │ ├── DefaultAccessManager.java │ │ ├── HomeController.java │ │ ├── ImageController.java │ │ ├── InternalApiController.java │ │ ├── LegacyExternalApiController.java │ │ └── LoginController.java │ └── resources/ │ ├── db/ │ │ └── migration/ │ │ ├── V1.0__CreateTables.sql │ │ ├── V1.10__UpdateImageViewWithRepository.sql │ │ ├── V1.1__CreateSprocs.sql │ │ ├── V1.2__CreateUserTable.sql │ │ ├── V1.3__CreateUserSprocs.sql │ │ ├── V1.4__AddDeprecationFields.sql │ │ ├── V1.5__UpdateImageSprocs.sql │ │ ├── V1.6__ExtendVersionColumn.sql │ │ ├── V1.7__RemoveCoalesce.sql │ │ ├── V1.8__PullHistoryAndImageMeta.sql │ │ ├── V1.9__ExtraTagFields.sql │ │ ├── V2.0__CreateV2TablesAndSprocs.sql │ │ ├── V2.1__MigrateToNewTables.sql │ │ ├── V2.2__MetaDataTables.sql │ │ ├── V2.3__UpdateImageViewForCoreMeta.sql │ │ ├── V2.4__UpdateUserSprocs.sql │ │ ├── V2.5__BranchRemovalSproc.sql │ │ ├── V2.6__AddCleanSchedule.sql │ │ ├── V2.7__UpdateImageTemplateSprocs.sql │ │ └── V2.8__FixStoreCoreMetaOutputBug.sql │ ├── static/ │ │ └── assets/ │ │ ├── css/ │ │ │ ├── app.css │ │ │ ├── bootstrap.css │ │ │ └── prism.css │ │ └── js/ │ │ ├── admin.js │ │ ├── app.js │ │ ├── fontawesome-all.js │ │ ├── jquery.tablesorter.js │ │ └── prism.js │ ├── version.properties │ └── views/ │ ├── pages/ │ │ ├── admin/ │ │ │ ├── image-edit.ftl │ │ │ ├── images.ftl │ │ │ ├── repositories.ftl │ │ │ ├── schedules.ftl │ │ │ ├── template-components/ │ │ │ │ ├── image-template-devices.ftl │ │ │ │ ├── image-template-environment.ftl │ │ │ │ ├── image-template-misc.ftl │ │ │ │ ├── image-template-ports.ftl │ │ │ │ └── image-template-volumes.ftl │ │ │ └── users.ftl │ │ ├── error.ftl │ │ ├── home.ftl │ │ ├── image.ftl │ │ └── login.ftl │ ├── prebuilt/ │ │ ├── base.ftl │ │ ├── docker-example.ftl │ │ ├── fleet-title.ftl │ │ ├── image-list-item.ftl │ │ ├── image-list-table-item.ftl │ │ └── system-alert.ftl │ └── ui/ │ ├── components/ │ │ ├── dropdown.ftl │ │ ├── message.ftl │ │ ├── modal.ftl │ │ ├── navbar.ftl │ │ └── pagination.ftl │ ├── elements/ │ │ ├── box.ftl │ │ ├── button.ftl │ │ ├── display-field.ftl │ │ ├── media.ftl │ │ ├── notification.ftl │ │ ├── table.ftl │ │ └── tag.ftl │ ├── form/ │ │ └── input.ftl │ └── layout/ │ ├── container.ftl │ ├── footer.ftl │ ├── hero.ftl │ └── section.ftl └── test/ └── java/ └── io/ └── linuxserver/ └── fleet/ ├── auth/ │ └── security/ │ └── PBKDF2PasswordEncoderTest.java ├── dockerhub/ │ └── util/ │ └── DockerTagFinderTest.java └── v2/ └── thread/ └── schedule/ └── TimeWithUnitTest.java