gitextract_wuofd07t/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── bug_report.yml │ └── config.yml ├── .gitignore ├── .package/ │ └── script/ │ ├── log.sh │ ├── restart.sh │ ├── start.sh │ ├── status.sh │ ├── stop.sh │ └── 双击我启动.bat ├── Dockerfile ├── LICENSE ├── README.md ├── pom.xml └── src/ └── main/ ├── java/ │ └── im/ │ └── zhaojun/ │ └── zfile/ │ ├── ZfileApplication.java │ ├── core/ │ │ ├── annotation/ │ │ │ ├── ApiLimit.java │ │ │ └── DemoDisable.java │ │ ├── aspect/ │ │ │ ├── ApiLimitAspect.java │ │ │ ├── CommonResultControllerAdvice.java │ │ │ └── DemoDisableAspect.java │ │ ├── cache/ │ │ │ └── ZFileCacheManager.java │ │ ├── config/ │ │ │ ├── ZFileProperties.java │ │ │ ├── datasource/ │ │ │ │ └── DataSourceBeanPostProcessor.java │ │ │ ├── docs/ │ │ │ │ └── Knife4jConfiguration.java │ │ │ ├── jackson/ │ │ │ │ ├── JSONStringDeserializer.java │ │ │ │ └── JSONStringSerializer.java │ │ │ ├── mybatis/ │ │ │ │ ├── CollectionIntegerTypeHandler.java │ │ │ │ ├── CollectionStrTypeHandler.java │ │ │ │ ├── CollectionTypeHandler.java │ │ │ │ ├── MyBatisPlusConfig.java │ │ │ │ ├── MyDatabaseIdProvider.java │ │ │ │ └── MyMetaObjectHandler.java │ │ │ ├── security/ │ │ │ │ ├── SaSessionForJacksonCustomized.java │ │ │ │ ├── SaTokenConfigure.java │ │ │ │ ├── SaTokenDaoRedisJackson.java │ │ │ │ └── StpInterfaceImpl.java │ │ │ ├── spring/ │ │ │ │ ├── JacksonEnumDeserializer.java │ │ │ │ ├── SpringCacheConfig.java │ │ │ │ ├── StringToEnumConverterFactory.java │ │ │ │ └── WebMvcConfig.java │ │ │ └── totp/ │ │ │ ├── TotpAutoConfiguration.java │ │ │ └── TotpProperties.java │ │ ├── constant/ │ │ │ ├── MdcConstant.java │ │ │ ├── RuleTypeConstant.java │ │ │ ├── ZFileConstant.java │ │ │ └── ZFileHttpHeaderConstant.java │ │ ├── controller/ │ │ │ ├── FrontIndexController.java │ │ │ └── LogController.java │ │ ├── exception/ │ │ │ ├── ErrorCode.java │ │ │ ├── GlobalExceptionHandler.java │ │ │ ├── biz/ │ │ │ │ ├── APIHttpRequestBizException.java │ │ │ │ ├── CorsBizException.java │ │ │ │ ├── FilePathSecurityBizException.java │ │ │ │ ├── GetPreviewTextContentBizException.java │ │ │ │ ├── InitializeStorageSourceBizException.java │ │ │ │ ├── InvalidStorageSourceBizException.java │ │ │ │ ├── StorageSourceFileForbiddenAccessBizException.java │ │ │ │ └── StorageSourceIllegalOperationBizException.java │ │ │ ├── core/ │ │ │ │ ├── BizException.java │ │ │ │ ├── ErrorPageBizException.java │ │ │ │ └── SystemException.java │ │ │ ├── status/ │ │ │ │ ├── BadRequestAccessException.java │ │ │ │ ├── ForbiddenAccessException.java │ │ │ │ ├── MethodNotAllowedAccessException.java │ │ │ │ ├── NotFoundAccessException.java │ │ │ │ └── UnauthorizedAccessException.java │ │ │ └── system/ │ │ │ ├── UploadFileFailSystemException.java │ │ │ └── ZFileAuthorizationSystemException.java │ │ ├── filter/ │ │ │ ├── CorsFilter.java │ │ │ ├── MDCFilter.java │ │ │ └── SecurityFilter.java │ │ ├── io/ │ │ │ └── EnsureContentLengthInputStreamResource.java │ │ ├── model/ │ │ │ └── request/ │ │ │ └── PageQueryRequest.java │ │ ├── util/ │ │ │ ├── AjaxJson.java │ │ │ ├── ArrayUtils.java │ │ │ ├── CharPool.java │ │ │ ├── CharSequenceUtil.java │ │ │ ├── ClassUtils.java │ │ │ ├── CollectionUtils.java │ │ │ ├── DnsUtil.java │ │ │ ├── EnumConvertUtils.java │ │ │ ├── FileComparator.java │ │ │ ├── FileResponseUtil.java │ │ │ ├── FileSizeConverter.java │ │ │ ├── FileUtils.java │ │ │ ├── HttpUtil.java │ │ │ ├── NaturalOrderComparator.java │ │ │ ├── NumberUtils.java │ │ │ ├── OnlyOfficeKeyCacheUtils.java │ │ │ ├── PatternMatcherUtils.java │ │ │ ├── PlaceholderUtils.java │ │ │ ├── ProxyDownloadUrlUtils.java │ │ │ ├── RequestHolder.java │ │ │ ├── RequestUtils.java │ │ │ ├── SizeToStrUtils.java │ │ │ ├── SpringMvcUtils.java │ │ │ ├── StrPool.java │ │ │ ├── StringUtils.java │ │ │ ├── UrlUtils.java │ │ │ ├── ZFileAuthUtil.java │ │ │ └── matcher/ │ │ │ ├── AbstractRuleMatcher.java │ │ │ ├── IRuleMatcher.java │ │ │ ├── RuleMatcherFactory.java │ │ │ └── impl/ │ │ │ ├── AntPathRuleMatcher.java │ │ │ ├── IpRuleMatcher.java │ │ │ ├── RegexRuleMatcher.java │ │ │ └── SpringSimpleRuleMatcher.java │ │ └── validation/ │ │ ├── StringListValue.java │ │ └── StringListValueConstraintValidator.java │ └── module/ │ ├── admin/ │ │ ├── controller/ │ │ │ ├── IpHelperController.java │ │ │ └── RuleMatcherTestController.java │ │ └── model/ │ │ └── request/ │ │ └── TestRuleMatcherRequest.java │ ├── config/ │ │ ├── annotation/ │ │ │ └── JSONStringParse.java │ │ ├── constant/ │ │ │ └── SystemConfigConstant.java │ │ ├── controller/ │ │ │ ├── SettingController.java │ │ │ └── SiteController.java │ │ ├── event/ │ │ │ ├── DirectLinkPrefixModifyHandler.java │ │ │ ├── ISystemConfigModifyHandler.java │ │ │ ├── SecureLoginEntryModifyHandler.java │ │ │ └── SystemConfigModifyHandlerChain.java │ │ ├── mapper/ │ │ │ └── SystemConfigMapper.java │ │ ├── model/ │ │ │ ├── dto/ │ │ │ │ ├── LinkExpireDTO.java │ │ │ │ └── SystemConfigDTO.java │ │ │ ├── entity/ │ │ │ │ └── SystemConfig.java │ │ │ ├── enums/ │ │ │ │ └── FileClickModeEnum.java │ │ │ ├── request/ │ │ │ │ ├── UpdateAccessSettingRequest.java │ │ │ │ ├── UpdateLinkSettingRequest.java │ │ │ │ ├── UpdateSecuritySettingRequest.java │ │ │ │ ├── UpdateSiteSettingRequest.java │ │ │ │ ├── UpdateUserNameAndPasswordRequest.java │ │ │ │ └── UpdateViewSettingRequest.java │ │ │ └── result/ │ │ │ └── FrontSiteConfigResult.java │ │ └── service/ │ │ └── SystemConfigService.java │ ├── filter/ │ │ ├── controller/ │ │ │ └── StorageSourceFilterController.java │ │ ├── mapper/ │ │ │ └── FilterConfigMapper.java │ │ ├── model/ │ │ │ ├── entity/ │ │ │ │ └── FilterConfig.java │ │ │ └── enums/ │ │ │ └── FilterConfigHiddenModeEnum.java │ │ └── service/ │ │ └── FilterConfigService.java │ ├── install/ │ │ ├── controller/ │ │ │ └── InstallController.java │ │ ├── model/ │ │ │ └── request/ │ │ │ └── InstallSystemRequest.java │ │ └── service/ │ │ └── InstallService.java │ ├── link/ │ │ ├── aspect/ │ │ │ ├── LinkRateLimiterAspect.java │ │ │ └── RefererCheckAspect.java │ │ ├── cache/ │ │ │ └── LinkRateLimiterCache.java │ │ ├── controller/ │ │ │ ├── DirectLinkController.java │ │ │ ├── ShortLinkController.java │ │ │ └── ShortLinkManagerController.java │ │ ├── convert/ │ │ │ └── ShortLinkConvert.java │ │ ├── dto/ │ │ │ └── DynamicRegisterMappingHandlerDTO.java │ │ ├── event/ │ │ │ └── DeleteExpireLinkEvent.java │ │ ├── mapper/ │ │ │ └── ShortLinkMapper.java │ │ ├── model/ │ │ │ ├── dto/ │ │ │ │ └── CacheInfo.java │ │ │ ├── entity/ │ │ │ │ └── ShortLink.java │ │ │ ├── enums/ │ │ │ │ └── RefererTypeEnum.java │ │ │ ├── request/ │ │ │ │ ├── BatchDeleteRequest.java │ │ │ │ ├── BatchGenerateLinkRequest.java │ │ │ │ ├── QueryDownloadLogRequest.java │ │ │ │ ├── QueryLoginLogRequest.java │ │ │ │ ├── QueryShortLinkLogRequest.java │ │ │ │ ├── ShortLinkResult.java │ │ │ │ └── ShortLinkSearchRequest.java │ │ │ └── result/ │ │ │ └── BatchGenerateLinkResponse.java │ │ └── service/ │ │ ├── DynamicDirectLinkPrefixService.java │ │ ├── LinkDownloadService.java │ │ └── ShortLinkService.java │ ├── log/ │ │ ├── controller/ │ │ │ ├── DownloadLogManagerController.java │ │ │ └── LoginLogController.java │ │ ├── convert/ │ │ │ └── DownloadLogConvert.java │ │ ├── mapper/ │ │ │ ├── DownloadLogMapper.java │ │ │ └── LoginLogMapper.java │ │ ├── model/ │ │ │ ├── entity/ │ │ │ │ ├── DownloadLog.java │ │ │ │ └── LoginLog.java │ │ │ └── result/ │ │ │ └── DownloadLogResult.java │ │ └── service/ │ │ ├── DownloadLogService.java │ │ └── LoginLogService.java │ ├── onlyoffice/ │ │ ├── controller/ │ │ │ └── OnlyOfficeController.java │ │ └── model/ │ │ ├── OnlyOfficeCallback.java │ │ └── OnlyOfficeFile.java │ ├── password/ │ │ ├── controller/ │ │ │ └── StorageSourcePasswordController.java │ │ ├── mapper/ │ │ │ └── PasswordConfigMapper.java │ │ ├── model/ │ │ │ ├── dto/ │ │ │ │ └── VerifyResultDTO.java │ │ │ └── entity/ │ │ │ └── PasswordConfig.java │ │ └── service/ │ │ └── PasswordConfigService.java │ ├── permission/ │ │ ├── controller/ │ │ │ ├── PermissionController.java │ │ │ └── StorageSourcePermissionController.java │ │ ├── convert/ │ │ │ └── PermissionConfigConvert.java │ │ ├── mapper/ │ │ │ └── PermissionConfigMapper.java │ │ ├── model/ │ │ │ ├── entity/ │ │ │ │ └── PermissionConfig.java │ │ │ └── result/ │ │ │ ├── PermissionConfigResult.java │ │ │ └── PermissionInfoResult.java │ │ └── service/ │ │ └── PermissionConfigService.java │ ├── readme/ │ │ ├── controller/ │ │ │ └── StorageSourceReadmeController.java │ │ ├── mapper/ │ │ │ └── ReadmeConfigMapper.java │ │ ├── model/ │ │ │ ├── entity/ │ │ │ │ └── ReadmeConfig.java │ │ │ └── enums/ │ │ │ ├── ReadmeDisplayModeEnum.java │ │ │ └── ReadmePathModeEnum.java │ │ └── service/ │ │ └── ReadmeConfigService.java │ ├── share/ │ │ ├── context/ │ │ │ └── ShareAccessContext.java │ │ ├── controller/ │ │ │ ├── ShareFileManagerController.java │ │ │ └── ShareLinkController.java │ │ ├── mapper/ │ │ │ └── ShareLinkMapper.java │ │ ├── model/ │ │ │ ├── dto/ │ │ │ │ └── ShareEntryDTO.java │ │ │ ├── entity/ │ │ │ │ └── ShareLink.java │ │ │ ├── enums/ │ │ │ │ ├── ShareEntryTypeEnum.java │ │ │ │ └── ShareTypeEnum.java │ │ │ ├── request/ │ │ │ │ ├── CreateShareLinkRequest.java │ │ │ │ ├── ShareFileListRequest.java │ │ │ │ ├── ShareLinkListRequest.java │ │ │ │ └── VerifySharePasswordRequest.java │ │ │ └── result/ │ │ │ ├── CreateShareLinkResult.java │ │ │ ├── ShareFileInfoResult.java │ │ │ └── ShareLinkResult.java │ │ └── service/ │ │ ├── ShareLinkFileService.java │ │ └── ShareLinkService.java │ ├── sso/ │ │ ├── controller/ │ │ │ ├── SsoAPIController.java │ │ │ ├── SsoController.java │ │ │ └── SsoManagerController.java │ │ ├── mapper/ │ │ │ └── SsoConfigMapper.java │ │ ├── model/ │ │ │ ├── entity/ │ │ │ │ └── SsoConfig.java │ │ │ ├── request/ │ │ │ │ └── CheckProviderDuplicateRequest.java │ │ │ └── response/ │ │ │ ├── SsoLoginItemResponse.java │ │ │ └── TokenResponse.java │ │ └── service/ │ │ └── SsoService.java │ ├── storage/ │ │ ├── annotation/ │ │ │ ├── CheckPassword.java │ │ │ ├── CheckPasswords.java │ │ │ ├── LinkRateLimiter.java │ │ │ ├── ProCheck.java │ │ │ ├── RefererCheck.java │ │ │ ├── StorageParamItem.java │ │ │ ├── StorageParamSelect.java │ │ │ ├── StorageParamSelectOption.java │ │ │ ├── StoragePermissionCheck.java │ │ │ └── impl/ │ │ │ └── EncodingStorageParamSelect.java │ │ ├── aspect/ │ │ │ ├── CheckPasswordAspect.java │ │ │ └── FileOperatorCheckAspect.java │ │ ├── chain/ │ │ │ ├── FileChain.java │ │ │ ├── FileContext.java │ │ │ └── command/ │ │ │ ├── FileAccessPermissionVerifyCommand.java │ │ │ ├── FileDownloadPermissionCommand.java │ │ │ ├── FileHiddenCommand.java │ │ │ ├── FileSortCommand.java │ │ │ └── FolderPasswordVerifyCommand.java │ │ ├── constant/ │ │ │ ├── S3SignerTypeConstant.java │ │ │ ├── StorageConfigConstant.java │ │ │ └── StorageSourceConnectionProperties.java │ │ ├── context/ │ │ │ ├── StorageSourceContext.java │ │ │ └── StorageSourceInitializer.java │ │ ├── controller/ │ │ │ ├── base/ │ │ │ │ ├── StorageMetaDataController.java │ │ │ │ └── StorageSourceController.java │ │ │ ├── callback/ │ │ │ │ ├── GoogleDriveCallbackController.java │ │ │ │ └── OneDriveCallbackController.java │ │ │ ├── file/ │ │ │ │ ├── FileController.java │ │ │ │ └── FileOperatorController.java │ │ │ ├── helper/ │ │ │ │ ├── GoogleDriveHelperController.java │ │ │ │ ├── Open115HelperController.java │ │ │ │ ├── Open115UploadUtils.java │ │ │ │ ├── S3HelperController.java │ │ │ │ └── SharePointHelperController.java │ │ │ └── proxy/ │ │ │ ├── Open115UrlController.java │ │ │ ├── ProxyDownloadController.java │ │ │ └── ProxyUploadController.java │ │ ├── convert/ │ │ │ └── StorageSourceConvert.java │ │ ├── enums/ │ │ │ └── StorageParamItemAnnoEnum.java │ │ ├── event/ │ │ │ ├── StorageSourceCopyEvent.java │ │ │ └── StorageSourceDeleteEvent.java │ │ ├── function/ │ │ │ ├── AllowAdminFileOperatorTypeEnumDefaultValueFunc.java │ │ │ ├── AllowAllFileOperatorTypeEnumDefaultValueFunc.java │ │ │ ├── BasicFileOperatorTypeEnumDefaultValueFunc.java │ │ │ ├── DisableAllFileOperatorTypeEnumDefaultValueFunc.java │ │ │ ├── LinkFileOperatorTypeEnumDefaultValueFunc.java │ │ │ ├── SearchFileOperatorTypeEnumDefaultValueFunc.java │ │ │ └── ShortLinkFileOperatorTypeEnumDefaultValueFunc.java │ │ ├── mapper/ │ │ │ ├── StorageSourceConfigMapper.java │ │ │ └── StorageSourceMapper.java │ │ ├── model/ │ │ │ ├── bo/ │ │ │ │ ├── AuthModel.java │ │ │ │ ├── RefreshTokenCacheBO.java │ │ │ │ ├── StorageSourceMetadata.java │ │ │ │ ├── StorageSourceParamDef.java │ │ │ │ └── UploadSignParam.java │ │ │ ├── dto/ │ │ │ │ ├── FileOperatorTypeDefaultValueDTO.java │ │ │ │ ├── OAuth2TokenDTO.java │ │ │ │ ├── RefreshTokenInfoDTO.java │ │ │ │ ├── StorageSourceAllParamDTO.java │ │ │ │ ├── StorageSourceDTO.java │ │ │ │ ├── StorageSourceInitDTO.java │ │ │ │ └── ZFileCORSRule.java │ │ │ ├── entity/ │ │ │ │ ├── StorageSource.java │ │ │ │ └── StorageSourceConfig.java │ │ │ ├── enums/ │ │ │ │ ├── FileOperatorTypeEnum.java │ │ │ │ ├── FileTypeEnum.java │ │ │ │ ├── SearchFolderModeEnum.java │ │ │ │ ├── SearchModeEnum.java │ │ │ │ ├── StorageParamTypeEnum.java │ │ │ │ └── StorageTypeEnum.java │ │ │ ├── param/ │ │ │ │ ├── AliyunParam.java │ │ │ │ ├── DogeCloudParam.java │ │ │ │ ├── FtpParam.java │ │ │ │ ├── GoogleDriveParam.java │ │ │ │ ├── HuaweiParam.java │ │ │ │ ├── IStorageParam.java │ │ │ │ ├── LocalParam.java │ │ │ │ ├── MicrosoftDriveParam.java │ │ │ │ ├── MinIOParam.java │ │ │ │ ├── OneDriveChinaParam.java │ │ │ │ ├── OneDriveParam.java │ │ │ │ ├── Open115Param.java │ │ │ │ ├── OptionalProxyTransferParam.java │ │ │ │ ├── ProxyTransferParam.java │ │ │ │ ├── QiniuParam.java │ │ │ │ ├── S3BaseParam.java │ │ │ │ ├── S3Param.java │ │ │ │ ├── SftpParam.java │ │ │ │ ├── SharePointChinaParam.java │ │ │ │ ├── SharePointParam.java │ │ │ │ ├── TencentParam.java │ │ │ │ ├── UpYunParam.java │ │ │ │ └── WebdavParam.java │ │ │ ├── request/ │ │ │ │ ├── GetGoogleDriveListRequest.java │ │ │ │ ├── GetS3BucketListRequest.java │ │ │ │ ├── GetS3CorsListRequest.java │ │ │ │ ├── SharePointInfoRequest.java │ │ │ │ ├── SharePointSearchSitesRequest.java │ │ │ │ ├── SharePointSiteListsRequest.java │ │ │ │ ├── admin/ │ │ │ │ │ ├── CopyStorageSourceRequest.java │ │ │ │ │ ├── UpdateStorageIdRequest.java │ │ │ │ │ └── UpdateStorageSortRequest.java │ │ │ │ ├── base/ │ │ │ │ │ ├── FileItemRequest.java │ │ │ │ │ ├── FileListConfigRequest.java │ │ │ │ │ ├── FileListRequest.java │ │ │ │ │ ├── SaveStorageSourceRequest.java │ │ │ │ │ └── SearchStorageRequest.java │ │ │ │ └── operator/ │ │ │ │ ├── BatchDeleteRequest.java │ │ │ │ ├── BatchMoveOrCopyFileRequest.java │ │ │ │ ├── NewFolderRequest.java │ │ │ │ ├── RenameFileRequest.java │ │ │ │ ├── RenameFolderRequest.java │ │ │ │ └── UploadFileRequest.java │ │ │ └── result/ │ │ │ ├── FileInfoResult.java │ │ │ ├── FileItemResult.java │ │ │ ├── GoogleDriveInfoResult.java │ │ │ ├── Open115AuthDeviceCodeResult.java │ │ │ ├── Open115GetStatusResult.java │ │ │ ├── S3BucketNameResult.java │ │ │ ├── SharepointSiteListResult.java │ │ │ ├── SharepointSiteResult.java │ │ │ ├── StorageSourceAdminResult.java │ │ │ ├── StorageSourceConfigResult.java │ │ │ ├── StorageSourceResult.java │ │ │ └── operator/ │ │ │ └── BatchOperatorResult.java │ │ ├── oauth2/ │ │ │ └── service/ │ │ │ ├── AbstractMicrosoftOAuth2Service.java │ │ │ ├── GoogleDriveOAuth2ServiceImpl.java │ │ │ ├── IOAuth2Service.java │ │ │ ├── OneDriveChinaOAuth2ServiceImpl.java │ │ │ └── OneDriveOAuth2ServiceImpl.java │ │ ├── service/ │ │ │ ├── StorageSourceConfigService.java │ │ │ ├── StorageSourceService.java │ │ │ ├── base/ │ │ │ │ ├── AbstractBaseFileService.java │ │ │ │ ├── AbstractMicrosoftDriveService.java │ │ │ │ ├── AbstractOneDriveServiceBase.java │ │ │ │ ├── AbstractProxyTransferService.java │ │ │ │ ├── AbstractS3BaseFileService.java │ │ │ │ ├── AbstractSharePointServiceBase.java │ │ │ │ ├── BaseFileService.java │ │ │ │ └── RefreshTokenService.java │ │ │ └── impl/ │ │ │ ├── AliyunServiceImpl.java │ │ │ ├── DogeCloudServiceImpl.java │ │ │ ├── FtpServiceImpl.java │ │ │ ├── GoogleDriveServiceImpl.java │ │ │ ├── HuaweiServiceImpl.java │ │ │ ├── LocalServiceImpl.java │ │ │ ├── MinIOServiceImpl.java │ │ │ ├── OneDriveChinaServiceImpl.java │ │ │ ├── OneDriveServiceImpl.java │ │ │ ├── Open115ServiceImpl.java │ │ │ ├── QiniuServiceImpl.java │ │ │ ├── S3ServiceImpl.java │ │ │ ├── SftpServiceImpl.java │ │ │ ├── SharePointChinaServiceImpl.java │ │ │ ├── SharePointServiceImpl.java │ │ │ ├── TencentServiceImpl.java │ │ │ ├── UpYunServiceImpl.java │ │ │ └── WebdavServiceImpl.java │ │ └── support/ │ │ ├── Open115IdCacheService.java │ │ ├── StorageSourceSupport.java │ │ ├── ftp/ │ │ │ ├── FtpClientFactory.java │ │ │ └── FtpClientPool.java │ │ ├── sftp/ │ │ │ ├── SFtpClientFactory.java │ │ │ └── SFtpClientPool.java │ │ └── webdav/ │ │ └── CustomSardine.java │ └── user/ │ ├── aspect/ │ │ └── LoginLogAspect.java │ ├── controller/ │ │ ├── AdminTwoFAController.java │ │ ├── UserController.java │ │ └── UserManagerController.java │ ├── event/ │ │ ├── UserCopyEvent.java │ │ └── UserDeleteEvent.java │ ├── manager/ │ │ └── UserManager.java │ ├── mapper/ │ │ ├── UserMapper.java │ │ └── UserStorageSourceMapper.java │ ├── model/ │ │ ├── constant/ │ │ │ └── UserConstant.java │ │ ├── dto/ │ │ │ └── UserStorageSourceDetailDTO.java │ │ ├── entity/ │ │ │ ├── User.java │ │ │ └── UserStorageSource.java │ │ ├── enums/ │ │ │ ├── LoginLogModeEnum.java │ │ │ └── LoginVerifyModeEnum.java │ │ ├── request/ │ │ │ ├── CheckUserDuplicateRequest.java │ │ │ ├── CopyUserRequest.java │ │ │ ├── QueryUserRequest.java │ │ │ ├── ResetAdminUserNameAndPasswordRequest.java │ │ │ ├── SaveUserRequest.java │ │ │ ├── UpdateUserPwdRequest.java │ │ │ ├── UserLoginRequest.java │ │ │ └── VerifyLoginTwoFactorAuthenticatorRequest.java │ │ ├── response/ │ │ │ └── UserDetailResponse.java │ │ └── result/ │ │ ├── CheckLoginResult.java │ │ ├── LoginResult.java │ │ ├── LoginTwoFactorAuthenticatorResult.java │ │ └── LoginVerifyImgResult.java │ ├── service/ │ │ ├── DynamicLoginEntryService.java │ │ ├── UserService.java │ │ ├── UserStorageSourceService.java │ │ └── login/ │ │ ├── ImgVerifyCodeService.java │ │ ├── LoginService.java │ │ ├── TwoFactorAuthenticatorVerifyService.java │ │ └── verify/ │ │ ├── LoginVerifyService.java │ │ └── impl/ │ │ ├── ImgCodeLoginVerifyService.java │ │ ├── PasswordVerifyService.java │ │ └── TwoFactorAuthLoginVerifyService.java │ ├── util/ │ │ └── LoginEntryPathUtils.java │ └── utils/ │ └── PasswordVerifyUtils.java └── resources/ ├── META-INF/ │ └── additional-spring-configuration-metadata.json ├── application-default.properties ├── application-dev.properties ├── application-prod.properties ├── application.properties ├── banner.txt ├── db/ │ ├── migration-mysql/ │ │ ├── R__data.sql │ │ ├── V10__system_config_add_field_webdav.sql │ │ ├── V11__system_config_modify_field_only_office_url_to_https.sql │ │ ├── V12__system_config_modify_field_value_to_text.sql │ │ ├── V13__system_config_add_field_allow_path_link_anon_access.sql │ │ ├── V14__system_config_add_field_load_more_size.sql │ │ ├── V15__system_config_add_field_site_home_name.sql │ │ ├── V16__system_config_add_field_default_sort_field.sql │ │ ├── V17__system_config_add_field_link_limit_field.sql │ │ ├── V18__download_log_add_field_download_type.sql │ │ ├── V19__short_link_add_field_expire_date.sql │ │ ├── V1__Base_version.sql │ │ ├── V20__system_config_add_field_favicon_url_field.sql │ │ ├── V21__system_config_add_field_expire_times_field.sql │ │ ├── V22__system_config_add_field_default_save_pwd_field.sql │ │ ├── V23__system_config_add_field_only_office_secret_field.sql │ │ ├── V24__system_config_add_field_enable_hover_menu_field.sql │ │ ├── V25__system_config_add_field_site_access_field.sql │ │ ├── V26__system_config_add_field_login_verify.sql │ │ ├── V27__add_table_login_log.sql │ │ ├── V28__add_multi_user.sql │ │ ├── V29__system_config_add_field_login_verify.sql │ │ ├── V2__download_log_modify_storage_key_field_length.sql │ │ ├── V30__delete_storage_source_auto_cors_config.sql │ │ ├── V31__system_config_add_field_webdav.sql │ │ ├── V32__system_config_delete_domain_field.sql │ │ ├── V33__storage_source_config_update_field.sql │ │ ├── V34__storage_source_config_update_field.sql │ │ ├── V35__system_config_add_field_login_log_mode.sql │ │ ├── V36__user_add_field_salt.sql │ │ ├── V37__set_login_log_model_default_off.sql │ │ ├── V38__update_login_log_ip_field_length.sql │ │ ├── V3__system_config_add_field_file_click_mode.sql │ │ ├── V40__system_config_add_field_mobile_layout.sql │ │ ├── V41__system_config_add_custom_office_suffix.sql │ │ ├── V42__system_config_add_guest_index_html.sql │ │ ├── V43__set_2fa_default_value.sql │ │ ├── V44__system_config_add_mobile_.sql │ │ ├── V45__add_sso_config.sql │ │ ├── V46__add_template_user.sql │ │ ├── V47__system_config_add_force_backend_address.sql │ │ ├── V48__system_config_add_field_kkfileview_url.sql │ │ ├── V49__system_config_add_custom_kkfileview_suffix.sql │ │ ├── V4__download_log_modify_ip_field_length.sql │ │ ├── V50__system_config_add_kkfileview_open_mode.sql │ │ ├── V51__storage_source_config_add_refresh_token_expired_at.sql │ │ ├── V52__ststem_config_add_mobile_show_file_size.sql │ │ ├── V53__readme_config_add_path_mode_field.sql │ │ ├── V54__add_share_link_table.sql │ │ ├── V55__system_config_add_secure_login_entry.sql │ │ ├── V56__system_config_add_download_confirm_flags.sql │ │ ├── V57__user_add_default_share_permissions.sql │ │ ├── V5__add_permission_config_table.sql │ │ ├── V6__system_config_add_field_auth_code.sql │ │ ├── V7__system_config_add_field_max_file_uploads.sql │ │ ├── V8__storage_source_add_field_compatibility_readme.sql │ │ └── V9__system_config_add_field_only_office_url.sql │ └── migration-sqlite/ │ ├── R__data.sql │ ├── V10__system_config_add_field_webdav.sql │ ├── V11__system_config_modify_field_only_office_url_to_https.sql │ ├── V12__system_config_modify_field_value_to_text.sql │ ├── V13__system_config_add_field_allow_path_link_anon_access.sql │ ├── V14__system_config_add_field_load_more_size.sql │ ├── V15__system_config_add_field_site_home_name.sql │ ├── V16__system_config_add_field_default_sort_field.sql │ ├── V17__system_config_add_field_link_limit_field.sql │ ├── V18__download_log_add_field_download_type.sql │ ├── V19__short_link_add_field_expire_date.sql │ ├── V1__Base_version.sql │ ├── V20__system_config_add_field_favicon_url_field.sql │ ├── V21__system_config_add_field_expire_times_field.sql │ ├── V22__system_config_add_field_default_save_pwd_field.sql │ ├── V23__system_config_add_field_only_office_secret_field.sql │ ├── V24__system_config_add_field_enable_hover_menu_field.sql │ ├── V25__system_config_add_field_site_access_field.sql │ ├── V26__system_config_add_field_login_verify.sql │ ├── V27__add_table_login_log.sql │ ├── V28__add_multi_user.sql │ ├── V29__system_config_add_field_login_verify.sql │ ├── V2__download_log_modify_storage_key_field_length.sql │ ├── V30__delete_storage_source_auto_cors_config.sql │ ├── V31__system_config_add_field_webdav.sql │ ├── V32__system_config_delete_domain_field.sql │ ├── V33__storage_source_config_update_field.sql │ ├── V34__storage_source_config_update_field.sql │ ├── V35__system_config_add_field_login_log_mode.sql │ ├── V36__user_add_field_salt.sql │ ├── V37__fix_user_create_time_field_to_timestamp.sql │ ├── V38__set_login_log_model_default_off.sql │ ├── V3__system_config_add_field_file_click_mode.sql │ ├── V40__system_config_add_field_mobile_layout.sql │ ├── V41__system_config_add_custom_office_suffix.sql │ ├── V42__system_config_add_guest_index_html.sql │ ├── V43__set_2fa_default_value.sql │ ├── V44__system_config_add_mobile_.sql │ ├── V45__add_sso_config.sql │ ├── V46__add_template_user.sql │ ├── V47__system_config_add_force_backend_address.sql │ ├── V48__system_config_add_field_kkfileview_url.sql │ ├── V49__system_config_add_custom_kkfileview_suffix.sql │ ├── V4__download_log_modify_ip_field_length.sql │ ├── V50__system_config_add_kkfileview_open_mode.sql │ ├── V51__storage_source_config_add_refresh_token_expired_at.sql │ ├── V52__ststem_config_add_mobile_show_file_size.sql │ ├── V53__readme_config_add_path_mode_field.sql │ ├── V54__add_share_link_table.sql │ ├── V55__system_config_add_secure_login_entry.sql │ ├── V56__system_config_add_download_confirm_flags.sql │ ├── V57__user_add_default_share_permissions.sql │ ├── V5__add_permission_config_table.sql │ ├── V6__system_config_add_field_auth_code.sql │ ├── V7__system_config_add_field_max_file_uploads.sql │ ├── V8__storage_source_add_field_compatibility_readme.sql │ └── V9__system_config_add_field_only_office_url.sql ├── logback-spring.xml ├── mapper/ │ ├── DownloadLogMapper.xml │ ├── FilterConfigMapper.xml │ ├── LoginLogMapper.xml │ ├── PasswordConfigMapper.xml │ ├── PermissionConfigMapper.xml │ ├── ReadmeConfigMapper.xml │ ├── ShareLinkMapper.xml │ ├── ShortLinkMapper.xml │ ├── SsoConfigMapper.xml │ ├── StorageConfigMapper.xml │ ├── StorageSourceMapper.xml │ ├── SystemConfigMapper.xml │ ├── UserMapper.xml │ └── UserStorageSourceMapper.xml └── templates/ ├── callback.html └── error/ └── 404.html